efficient-shell 5.1.0 → 5.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +229 -31
- package/THIRD_PARTY_NOTICES.md +32 -0
- package/dist/{Browser-WUVL7ZSM.js → Browser-6QB2QTO7.js} +18 -18
- package/dist/Calculator-KOWRV2VK.js +29 -0
- package/dist/ConfirmDialog-32NLLK4K.js +1 -0
- package/dist/{CurrencyConverter-LF2WHJW4.js → CurrencyConverter-YJ47A3L5.js} +7 -7
- package/dist/{Documents-MB4TJGNY.js → Documents-TGGI2QBV.js} +26 -26
- package/dist/Files-KSDK3EO4.js +87 -0
- package/dist/{Notepad-UQSG5BE3.js → Notepad-EKB6FJPR.js} +11 -11
- package/dist/PdfViewer-KW5B44AX.js +1 -0
- package/dist/{PomodoroTimer-XARF7DO3.js → PomodoroTimer-RD5GRRA5.js} +20 -20
- package/dist/{Preview-LETK6AJS.js → Preview-AQVXKT2I.js} +32 -32
- package/dist/Sidebar-VYXN5YIJ.js +44 -0
- package/dist/{Spreadsheet-RCHOM2RE.js → Spreadsheet-INXG5UMI.js} +8 -8
- package/dist/{Stock-25FQMI2G.js → Stock-CBQN2IJF.js} +3 -3
- package/dist/{Weather-KLQ55R64.js → Weather-2EVUTIXX.js} +16 -16
- package/dist/{WorldClock-RMPU7D2M.js → WorldClock-TZUF7MOB.js} +6 -6
- package/dist/apps/index.js +1 -1
- package/dist/bin/ui-check.js +1 -1
- package/dist/brand.css +1 -1
- package/dist/{chunk-LTGIQ7HO.js → chunk-3GPU3JOW.js} +14 -14
- package/dist/{chunk-DBB4DB7J.js → chunk-3HJTOINK.js} +1 -1
- package/dist/{chunk-MDI265RK.js → chunk-4SWPNARR.js} +4 -4
- package/dist/{chunk-XUF7VW4U.js → chunk-6LTDJKIL.js} +72 -70
- package/dist/chunk-AP2QEJXQ.js +1 -0
- package/dist/{chunk-FA6E75W5.js → chunk-CLPJDJH4.js} +1 -1
- package/dist/{chunk-2TP4GK53.js → chunk-FROOMUJ7.js} +6 -6
- package/dist/{chunk-H5NEXQTX.js → chunk-GG7AE6OC.js} +1 -1
- package/dist/{chunk-6TCHOT4R.js → chunk-HRLPFUPB.js} +1 -1
- package/dist/{chunk-N3W6PH55.js → chunk-JEM73E4C.js} +11 -11
- package/dist/{chunk-P4SGJTK3.js → chunk-JXAAZGLJ.js} +1 -1
- package/dist/{chunk-4KLBITSY.js → chunk-KXAUDC3A.js} +28 -28
- package/dist/{chunk-TMZVVRTA.js → chunk-L5XA5MLK.js} +43 -43
- package/dist/{chunk-5LCZFVE4.js → chunk-MLYC5VQI.js} +2 -2
- package/dist/{chunk-HKLW5KTW.js → chunk-N3A3GWJI.js} +8 -8
- package/dist/{chunk-LY2G6LHW.js → chunk-PKEQ7XOH.js} +1 -1
- package/dist/{chunk-2KTBZE5F.js → chunk-R4XSSHDI.js} +1 -1
- package/dist/{chunk-XNHYCOPO.js → chunk-RCHCT7AO.js} +1 -1
- package/dist/chunk-RDQ7OXUA.js +1026 -0
- package/dist/{chunk-LMIQV3NB.js → chunk-RL626E7Q.js} +2 -2
- package/dist/{chunk-ZDF5AR5W.js → chunk-RMJZOKHY.js} +9 -9
- package/dist/{chunk-DXNCJBGY.js → chunk-SKB6L53D.js} +11 -11
- package/dist/{chunk-JK2KQ4PF.js → chunk-TFETN2GI.js} +1 -1
- package/dist/chunk-TNBCUZVE.js +1 -0
- package/dist/chunk-WOEFPBQF.js +1 -0
- package/dist/chunk-WRBXEZFN.js +1 -0
- package/dist/chunk-XWSWYMGM.js +2 -0
- package/dist/{chunk-GPNNQIRY.js → chunk-Z2353HNE.js} +5 -5
- package/dist/{chunk-VOY6TCS2.js → chunk-ZUCYJAQH.js} +18 -18
- package/dist/file-intake/index.js +1 -1
- package/dist/format/index.d.ts +1 -1
- package/dist/format/index.js +1 -1
- package/dist/i18n/index.d.ts +1 -1
- package/dist/icons/efficient-looks.d.ts +28 -0
- package/dist/icons/efficient-looks.js +920 -0
- package/dist/icons/efficient.d.ts +746 -298
- package/dist/icons/efficient.js +336 -470
- package/dist/icons/heroicons.d.ts +1 -1
- package/dist/icons/index.d.ts +10 -4
- package/dist/icons/index.js +1 -1
- package/dist/icons/lucide.d.ts +1 -1
- package/dist/{index-CzMz_Y9A.d.ts → index-BgM75MC6.d.ts} +617 -68
- package/dist/{index-DpUDK9zG.d.ts → index-CHufemKB.d.ts} +69 -1
- package/dist/index.d.ts +5 -5
- package/dist/index.js +504 -504
- package/dist/locales/zh-Hans.d.ts +1 -1
- package/dist/locales/zh-Hans.js +1 -1
- package/dist/map/index.js +5 -5
- package/dist/markdown/index.js +1 -1
- package/dist/page-tabs/index.js +5 -5
- package/dist/pdf/index.js +1 -1
- package/dist/{registry-FHdUeVww.d.ts → registry-J-TU7zKx.d.ts} +14 -4
- package/dist/{strings-BEuOOURI.d.ts → strings-BVB64Nck.d.ts} +61 -0
- package/dist/ui/index.d.ts +4 -4
- package/dist/ui/index.js +1 -1
- package/dist/ui.css +124 -1
- package/package.json +8 -2
- package/dist/Calculator-E2CBADVF.js +0 -29
- package/dist/ConfirmDialog-ZM364NPI.js +0 -1
- package/dist/Files-JQYIBZEP.js +0 -87
- package/dist/PdfViewer-4VGNBBED.js +0 -1
- package/dist/Sidebar-VR4QYFQU.js +0 -44
- package/dist/chunk-3JK2LSFU.js +0 -1
- package/dist/chunk-FWOPZB6I.js +0 -1
- package/dist/chunk-LOXV3J6X.js +0 -1005
- package/dist/chunk-OBMR6BEP.js +0 -1
- package/dist/chunk-YKZHOXI4.js +0 -2
package/dist/locales/zh-Hans.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{formatPlain as e,formatGrouped as o,formatFixed as t,formatPercent as a}from"../chunk-C3QOHMR6.js";var i=[],n=/^[A-Za-z0-9]/,r=/[A-Za-z0-9]$/,l=e=>n.test(e)?` ${e}`:e,s=e=>r.test(e)?`${e} `:e,d=e=>s(l(e));function c(i="zh-Hans"){const n=o=>e(o,i),r=e=>o(e,i),c=(e,o)=>t(e,o,i),p=(e,o)=>a(e,o,i);return{window:{minimize:"最小化",restore:"还原",maximize:"最大化",windowed:"向下还原",pinOnTop:"置顶",unpin:"取消置顶",close:"关闭",windowSuffix:"窗口",prev:"上一条",next:"下一条",snapLayouts:"贴靠布局",snapLeft:"贴靠到左半屏",snapRight:"贴靠到右半屏",snapTopLeft:"贴靠到左上角",snapTopRight:"贴靠到右上角",snapBottomLeft:"贴靠到左下角",snapBottomRight:"贴靠到右下角"},taskbar:{closeWindow:"关闭窗口",offscreenHint:"此窗口位于屏幕之外,点击即可移回",offscreenDot:"位于屏幕之外,点击即可移回此窗口",expose:"窗口概览:以缩略图显示所有打开的窗口",addToDesktop:"添加到桌面",removeFromDesktop:"从桌面移除",minimizeAllWindows:"全部最小化",restoreAllWindows:"全部还原",closeAllWindows:"全部关闭"},logout:{goodbye:"再见",seeYou:"下次再见"},about:{aboutPrefix:"关于",thisApp:"本应用",openSourceLicenses:"开源许可",whatsNew:"更新内容",noChangelog:"暂无更新日志。"},table:{empty:"暂无数据",loading:"加载中",selectAll:"选择全部行",selectRow:"选择此行"},select:{none:"— 无 —",noMatches:"无匹配项",allSelected:"已选择全部选项",clear:"清除所选",remove:"移除",removeItem:e=>`移除${l(e)}`},notifications:{title:"通知",markAllRead:"全部标为已读",dnd:"勿扰模式",dndOn:"勿扰模式已开启",caughtUp:"全部已读",empty:"暂无通知",viewAll:"查看全部通知",cardLabel:"通知",dismiss:"关闭通知"},form:{errorSummaryTitle:"存在以下问题"},help:{title:"帮助",searchPlaceholder:"搜索帮助…",empty:"暂无帮助文章。",noResults:"没有符合搜索条件的文章。",loading:"加载中…",pickArticle:"请从左侧选择一篇帮助文章。",noBody:"这篇文章暂无内容。",draft:"草稿",newArticle:"+ 新建",edit:"编辑"},update:{available:"有新版本可用。",refreshNow:"立即刷新"},pageTabs:{label:"已打开的页面",close:"关闭",closeTab:e=>`关闭${l(e)}`,closeOthers:"关闭其他标签页",closeRight:"关闭右侧标签页",closeAll:"关闭全部标签页",unsaved:"有未保存的更改",copy:e=>`复制${l(e)}`,copied:"已复制",tabMenu:"窗口菜单",discardTitle:"放弃未保存的更改?",discardOne:"此页面有尚未保存的更改。仍要关闭吗?",discardMany:"个页面有尚未保存的更改。仍要关闭吗?",discardCount:e=>`有 ${n(e)} 个页面的更改尚未保存。仍要关闭吗?`,discardConfirm:"放弃并关闭",keepEditing:"继续编辑"},dialog:{close:"关闭",cancel:"取消",ok:"确定",confirmTitle:"确认",destructiveTitle:"确认操作",destructiveCancel:"返回",destructiveConfirm:"删除",typeToConfirm:e=>`请输入 ${e} 以确认:`,promptTitle:"请输入内容"},calendar:{previousMonth:"上个月",nextMonth:"下个月",previousYear:"上一年",nextYear:"下一年",previousYears:"上一组年份",nextYears:"下一组年份",monthPanel:"选择月份",yearPanel:"选择年份",chooseMonth:e=>`选择月份,当前为${l(e)}`,chooseYear:e=>`选择年份,当前为 ${e} 年`},datePicker:{placeholder:"选择日期",dialog:"选择日期",clear:"清除",today:"今天",required:"必填"},dateRange:{placeholder:"日期范围",clearRange:"清除日期范围",dialog:"日期范围",from:"从",to:"至",start:"开始日期",end:"结束日期",fromOnly:e=>`自 ${e} 起`,toOnly:e=>`截至 ${e}`,range:(e,o)=>`${e} 至 ${o}`,required:"必填",last2Weeks:"过去 2 周",lastMonth:"上个月",last3Months:"过去 3 个月",last6Months:"过去 6 个月",last12Months:"过去 12 个月",custom:"自定义",clear:"清除",cancel:"取消",apply:"应用"},pagination:{label:"分页",first:"第一页",previous:"上一页",next:"下一页",last:"最后一页"},list:{selected:e=>`已选 ${n(e)} 项`,selectedNotShown:(e,o)=>`已选 ${n(e)} 项,${n(o)} 项未显示`,allLoaded:(e,o)=>`已加载全部 ${r(e)} ${o}`,count:(e,o)=>`共 ${r(e)} ${o}`,loadedOf:(e,o,t)=>`已加载 ${r(e)} / ${r(o)} ${t}`,loadingMore:"正在加载更多…",loadError:"无法加载此列表",loadErrorMessage:"获取这些记录时出错。请检查网络连接后重试。",retry:"重试"},kanban:{loading:"加载中…",empty:"暂无条目。",dropHere:"拖放到此处",addItem:"添加条目"},files:{attach:"添加附件",drop:"松开即可添加附件",remove:e=>`移除${l(e)}`,chooseMany:"选择文件",chooseOne:"选择文件",dragMany:"或拖放到此处",dragOne:"或拖放到此处",notAccepted:(e,o)=>`${s(e)}的文件类型不受支持${o?`(${o})`:""}`,tooLarge:(e,o,t)=>`${s(e)}大小为 ${o},上限为 ${t}`,tooMany:(e,o)=>`未添加${l(e)}:最多只能添加 ${n(o)} 个文件`,bytes:e=>`${n(e)} B`,kilobytes:e=>`${n(e)} KB`,megabytes:e=>`${c(e,1)} MB`},media:{uploadImage:"上传图片",uploadVideo:"上传视频",uploadFile:"上传文件",upload:"上传媒体",cta:"从媒体库选择或上传",replace:"替换",remove:"移除",uploading:"上传中…",cover:"封面",add:"添加",addMedia:"添加媒体",empty:"暂无媒体。",removeItem:e=>`移除${l(e)}`,reorder:(e,o,t)=>`${e},第 ${n(o)} 项,共 ${n(t)} 项。使用方向键调整顺序。`},brandAsset:{save:(e,o)=>`保存${l(o)}`,remove:(e,o)=>`移除${l(o)}`,discard:"放弃更改",saveFailed:(e,o)=>`无法保存${l(o)}。`,removeFailed:(e,o)=>`无法移除${l(o)}。`,region:(e,o)=>`${s(o)}的${e}`,usedFor:e=>`用于${l(e)}。`,previews:e=>`${s(e)}预览`,preview:"预览",alt:(e,o)=>`${s(e)}${o}`},copy:{copy:"复制",copyLabel:e=>`复制${l(e)}`,copied:"已复制",copyValue:e=>`复制${l(e)}`,copiedValue:"已复制!",copiedLabel:e=>`已复制${l(e)}`,failed:"无法复制到剪贴板"},keypad:{backspace:"退格",enter:"确认"},banner:{dismiss:"关闭"},badge:{remove:"移除",removeItem:e=>`移除${l(e)}`},breadcrumbs:{label:"面包屑导航",hidden:"已隐藏的层级"},emptyState:{message:"暂无内容。"},errors:{notFound:"找不到页面",notFoundBody:"您访问的页面不存在或已被移动。",forbidden:"访问被拒绝",forbiddenBody:"您没有查看此页面的权限。",noAccess:"您无权访问此内容",serverError:"出错了",serverErrorBody:"发生意外错误,请重试。",retry:"重试",details:"错误详情"},search:{placeholder:"搜索…",escBadge:"ESC",searching:"搜索中…",noResults:"未找到结果。",minChars:e=>`请至少输入 ${n(e)} 个字符再搜索…`,navigate:"切换",open:"打开",close:"关闭",enterKey:"Enter",escKey:"Esc",recent:"最近",favorites:"收藏",actions:"操作",listLabel:"搜索结果",groupCount:(e,o)=>`${n(e)}${o?"+":""}`,groupLabel:(e,o,t)=>`${e},${n(o)}${t?"+":""} 项`,seeAll:e=>`查看全部${l(e)}`,searchFailed:"搜索失败,请检查网络连接后重试。",partialFailure:"部分结果未能加载。",tabKey:"Tab",nextGroup:"下一组"},grid:{selectAll:"全选",insertRowAbove:"在上方插入行",insertRowBelow:"在下方插入行",deleteRow:e=>`删除第 ${e} 行`,insertColumnLeft:"在左侧插入列",insertColumnRight:"在右侧插入列",deleteColumn:e=>`删除${d(e)}列`,resize:"拖动调整大小 · 双击自动适应",fill:"拖动填充"},sidebar:{resize:"拖动调整大小 · 双击重置"},resizeHandle:{label:"调整面板大小",hint:"拖动调整大小 · 双击重置"},number:{increase:"增加",decrease:"减少"},slider:{value:e=>`${s(e)}数值`},displayChips:{shown:"显示中",hidden:"已隐藏",shownHint:"显示中 · 点击隐藏",hiddenHint:"已隐藏 · 点击显示"},color:{swatch:(e,o)=>`${e}:${o}`,none:"无",panel:e=>`${s(e)}选择器`,square:"饱和度和亮度",squareValue:(e,o)=>`饱和度 ${p(e,0)},亮度 ${p(o,0)}`,hue:"色相",hex:e=>`${s(e)}十六进制色值`,presets:"预设",clear:"无颜色"},imageFocus:{picture:(e,o)=>`${e}:${o}`,hint:"拖动图片上的圆点,或用方向键移动。按住 Shift 可移动更多。",noImage:"请先选择图片,目前还没有可设置焦点的图片。"},tree:{empty:"暂无内容",dropHere:"拖放到此处",dragHint:"拖动以移动",moveHint:"按 Alt+向上键或 Alt+向下键可移动此项",insertHere:"在此处插入"},layout:{desktop:"桌面",sidebar:"侧边栏",switchToDesktop:"切换到桌面模式",switchToSidebar:"切换到侧边栏模式",collapseSidebar:"收起侧边栏",expandSidebar:"展开侧边栏",search:"搜索…",navLabel:"主菜单",openWindows:"已打开的窗口",pageResult:"页面",accountMenu:e=>`${s(e)}的账户菜单`,profile:"个人资料",notifications:"通知",reportIssue:"建议与问题反馈",signOut:"退出登录",signOutTitle:"退出登录",signOutMessage:"您确定要退出登录吗?重新登录后将重新打开所有窗口。"},markdown:{screenshot:"截图"},severity:{success:"正常",warning:"警告",danger:"严重",unrecognised:e=>`未识别的严重级别${l(e)}`},meter:{noData:"无数据",warningAt:e=>`警告 ≥ ${n(e)}`,criticalAt:e=>`严重 ≥ ${n(e)}`,noReading:"无读数",noBudget:"无预算",ofBudget:e=>`预算的 ${e}`,budget:"预算",hoursMinutes:(e,o)=>`${n(e)} 小时 ${n(o)} 分`,minutesSeconds:(e,o)=>`${n(e)} 分 ${n(o)} 秒`,seconds:e=>`${n(e)} 秒`},charts:{showTable:"以表格显示数据",loading:"正在加载图表数据",noData:"此时间段内无数据。",windowStart:"时间段起点",windowEnd:"时间段终点",window:(e,o,t)=>`时间段:正在显示 ${e} 至 ${o},共 ${n(t)} 个区间`,overIntervals:(e,o)=>`${e.join("、")},共 ${n(o)} 个区间`,acrossCategories:(e,o)=>`${e.join("、")},共 ${n(o)} 个类别`,acrossMeasures:(e,o)=>`${e.join("、")},共 ${n(o)} 项指标`,breakdown:(e,o)=>`${s(e)}的构成,共 ${n(o)} 个部分`,funnel:(e,o,t)=>`漏斗图,共 ${n(e)} 个阶段,从${d(o)}到${l(t)}`,radialTrack:e=>`${n(e)} 个类别,以同心环占比显示`,radialCycle:e=>`${n(e)} 个类别,按环形周期排列`,tableFrom:"来源",tableTo:"去向",tableItem:"项目",tableLevel:"层级",tableSeries:"系列",inBucket:e=>`此区间内共 ${e}`,inCategory:e=>`此类别内共 ${e}`,value:"数值",share:"占比",count:"数量",flow:"流量",totalFlow:"总流量",throughput:"通过量",open:"开盘",high:"最高",low:"最低",close:"收盘",maximum:"最大值",q3:"Q3",median:"中位数",q1:"Q1",minimum:"最小值",distribution:"分布",fiveNumber:(e,o)=>`${e}:${n(o)} 个类别的五数概括`,outliers:e=>`${n(e)} 个离群值超出须线范围`,price:"价格",ohlc:(e,o)=>`${e}:${n(o)} 个周期的开盘、最高、最低和收盘`,closedAbove:"收盘高于开盘",closedBelow:"收盘低于开盘",noFlows:"没有可绘制的流量。",chord:e=>`${n(e)} 个参与方之间的流量`,noStages:"没有可绘制的阶段。",ofFirstStage:"占首阶段",droppedHere:"此处流失",intensity:"强度",noActivity:"此时间段内无活动。",heatmap:(e,o,t)=>`${e},${n(o)} 行 ${n(t)} 列`,countAxis:"数量",histogram:(e,o,t)=>`${e}:${n(t)} 个观测值,分为 ${n(o)} 组`,observations:"观测值",notEnough:"符合条件的请求不足,无法判断。",objectiveMet:e=>`已达到目标 ${e}`,objectiveMissed:e=>`未达到目标 ${e}`,nothingToPlot:"没有可绘制的数据。",nothingToCompare:"没有可比较的数据。",other:"其他",nothingToBreakDown:"没有可细分的数据。",range:"范围",rangeLabel:(e,o)=>`${e}:${n(o)} 个类别的最低值和最高值`,nothingToRank:"此时间段内没有可排名的数据。",emphasised:"(重点)",sankey:(e,o)=>`${n(e)} 个节点之间的流量,共 ${n(o)} 条连接`,noObservations:"此时间段内无观测值。",xAxis:"x",yAxis:"y",size:"大小",scatter:(e,o,t)=>`${e.join("、")}:${s(o)}与${d(t)}的关系`,outsideRange:e=>`${n(e)} 个点超出显示范围`,waterfall:(e,o,t)=>`瀑布图,共 ${n(e)} 步,从${d(o)}到${l(t)}`,balance:"余额",increase:"增加",decrease:"减少",runningTotal:"累计",sunburst:(e,o)=>`${s(e)}的层级构成,共 ${n(o)} 层`,treemap:e=>`矩形树图,共 ${n(e)} 项`,trendUp:"上升",trendDown:"下降",trendFlat:"持平"},timeline:{days:e=>`${r(e)} 天`,daysToToday:e=>`距今 ${r(e)} 天`,notReached:"尚未达成",next:"下一项",more:e=>`还有 ${n(e)} 项`,today:"今天",todayTitle:e=>`今天:${e}`,open:e=>`打开${l(e)}`,openButton:"打开",scrub:"拖动浏览时间线",alsoToCome:e=>`后续还有:${e.join("、")}`,start:e=>`开始 · ${e}`,events:(e,o)=>`${n(e)} 个事件 · ${o.join("、")}`,started:e=>`开始于 ${e}`,duration:e=>`${r(e)} 天`,reached:(e,o)=>`已达成 ${n(e)} / ${n(o)} 个里程碑`,milestones:e=>`${s(e)}里程碑`},production:{heading:"生产进度",start:"开始",estimated:"预计",estimatedCompletion:"预计完成",estDone:"预计完工",play:"播放",pause:"暂停",playTitle:"逐份报告播放时间线",backTo:e=>`返回${l(e)}`,showing:e=>`正在显示 ${e}`,overall:e=>`总体 ${p(e,0)}`,inStock:e=>`库存 ${r(e)} 件`,noReport:"尚未提交生产报告",leadTime:e=>`交货周期 ${r(e)} 天`,report:"生产报告",shipment:"发货",inspection:"检验",invoice:"发票",scrub:"拖动浏览生产时间线",label:(e,o)=>`生产报告和事件,${e} 至 ${o}`},containers:{items:e=>`${n(e)} 项`,pieces:e=>`${n(e)} 件`,split:(e,o)=>`(指令 ${n(e)} / 已装 ${n(o)})`,added:(e,o)=>`新增 ${n(e)} 项(${n(o)} 件)`,fill:(e,o)=>`${c(e,1)} / ${n(o)} m³`,total:"合计:",instructed:e=>`指令 ${c(e,2)} m³`,loaded:e=>`已装 ${c(e,2)} m³`,volume:e=>`${c(e,2)} m³`,noVolume:"体积:暂无(这些料号没有体积数据)"},toast:{notification:"通知"},map:{failed:"无法在此处绘制地图。列表中包含地图显示的全部内容。",approximate:e=>`${e},大致位置`,approximateTitle:e=>`${e}(大致位置)`,places:()=>"地点",group:(e,o)=>`此处有 ${n(e)} 个${l(o)}`,stops:e=>`第 ${e} 站`,closeBy:(e,o)=>`附近还有 ${n(e)} 个${l(o)},放大地图后显示`,spread:"点按以分开查看",cycle:"这些地点位于同一位置:点按查看下一个",fullScreen:"全屏",leaveFullScreen:"退出全屏",chosen:e=>`${e},已在地图上选中`,closeCard:"关闭",openRecord:"打开"},pdf:{previousPage:"上一页",nextPage:"下一页",pageOf:(e,o)=>`${n(e)} / ${n(o)}`,zoomOut:"缩小",zoomIn:"放大",zoom:"缩放",fitWidth:"适合宽度",fitPage:"适合页面",fit:"适应",fitHint:"适应窗格:随窗格大小变化,直到您手动缩放",print:"打印",download:"下载",email:"发送邮件",loading:"正在加载 PDF…",loadFailed:"PDF 加载失败",allowPopups:"请允许弹出窗口以便打印"},loading:{label:"加载中…"},language:{title:"语言",description:"菜单、标签和消息所使用的语言。",reloadNote:"更改语言后页面将重新加载。"},entityList:{open:"打开",copy:"复制",copyColumn:e=>`复制${l(e)}`,copyRows:e=>1===e?"复制此行":`复制 ${n(e)} 行`,exportSelected:"将所选导出为 CSV",selectAll:"全选",selectAllLoaded:e=>`全选已加载的 ${n(e)} 项`,clearSelection:"清除所选",refresh:"刷新",copiedText:"文本",copiedRows:e=>1===e?"该行":`${n(e)} 行`,exported:e=>`已导出 ${n(e)} 行。`,exportTruncated:(e,o)=>`仅导出了 ${n(o)} 行中的 ${n(e)} 行。服务器限制了本次导出,文件不完整。`,exportTruncatedUnknown:e=>`仅导出了 ${n(e)} 行中的一部分。服务器限制了本次导出,文件不完整。`,exportFailed:"CSV 导出失败。"},columns:{choose:"选择列",heading:"列",reset:"重置",saveDefault:"保存为所有用户的默认设置",savedDefault:"已保存为默认设置",select:"选择",selectDone:"完成",showSelection:"显示选择列",hideSelection:"隐藏选择列"},record:{loading:"正在加载记录…",signInRequired:"需要登录",signInBody:"您的会话可能已过期。请重新登录以打开此记录。",notFound:"未找到记录",loadFailed:"无法加载记录",checkConnection:"请检查网络连接后重试。",rejected:"服务器拒绝了此请求。",retry:"重试"},password:{current:"当前密码",newPassword:"新密码",confirm:"确认密码",submit:"修改密码",submitting:"修改中…",done:"完成",currentRequired:"请输入当前密码。",tooShort:e=>`新密码至少需要 ${n(e)} 个字符。`,mismatch:"两次输入的密码不一致。",failed:"修改密码失败。",changed:"您的密码已修改成功。"},pdfAction:{label:"PDF",loading:"加载中…",preview:"预览",download:"下载",email:"通过邮件发送",downloaded:e=>`${s(e)}已下载。`,tookTooLong:e=>`${s(e)}加载时间过长,请重试。`,previewLoading:"正在加载 PDF",previewTookTooLong:"此文档加载时间过长。请关闭此窗口后重试。",previewFailed:"PDF 加载失败。"},undo:{undo:"撤销",redo:"重做",undoStep:(e,o)=>`撤销${l(e)}(${o})`,redoStep:(e,o)=>`重做${l(e)}(${o})`,nothingToUndo:"没有可撤销的操作",nothingToRedo:"没有可重做的操作"},sounds:{title:"声音",enable:"音效",autosave:"更改会自动保存",choice:(e,o)=>`${e}:${o}`,packClassic:"经典",packMinimal:"极简",packRetro:"复古",packSoft:"柔和",packArcade:"街机",packSilent:"静音",eventClick:"点击",eventSuccess:"成功",eventError:"错误",eventNotification:"通知",eventStartup:"启动",eventTimerDone:"计时结束",eventLogout:"退出登录"},serverStatus:{connected:"已连接",disconnected:"已断开",checking:"检测中…",lastOkTitle:(e,o)=>`${e} · 上次正常 ${o}`,details:"服务器连接详情",lastPoll:e=>`上次轮询:${e}。`,lastFailure:e=>`上次失败:${e}。`,firstPoll:"首次轮询进行中…",server:"服务器",protocol:"协议",browser:"浏览器",online:"在线",offline:"离线",lastOk:"上次正常",lastFail:"上次失败",latency:"延迟",poll:"轮询",pollEvery:e=>`每 ${n(e)} 秒`,session:"会话",user:"用户",notSignedIn:"未登录",role:"角色",build:"构建",app:"应用",userAgent:"用户代理",pingHint:"点击 ↻ 立即检测",refresh:"刷新"},bulkImport:{description:"可从电子表格粘贴、直接输入或上传 CSV。行无需按顺序排列,系统会自动匹配。列表中没有的值将添加到末尾。留空的字段不受影响。",lines:e=>`${n(e)} 行`,total:(e,o)=>`${e}:${o}`,clear:"清除",upload:"上传 CSV",importLines:e=>`导入 ${n(e)} 行`,importing:"导入中…",importFailed:"导入失败。",enterAtLeastOne:(e,o)=>`请至少输入一个${l(o)||"值"}。`,allSkipped:"所有行均已跳过。",cancel:"取消",mapTitle:"将 CSV 列映射到字段",skip:"— 跳过 —",columnOption:(e,o)=>`第 ${n(e)} 列(例如 ${o})`,rowsDetected:e=>`检测到 ${n(e)} 行`,confirmMapping:"确认映射",duplicatesTitle:"检测到重复项",duplicatesFound:e=>`导入内容中有 ${n(e)} 个值出现了多次。请先选择每个值的处理方式,然后再继续。`,occurrences:e=>`出现 ${n(e)} 次`,keepFirst:"保留第一个",keepLast:"保留最后一个",keepAll:"全部保留",skipAll:"全部跳过",keptDropped:(e,o)=>`保留 ${n(e)} · 丢弃 ${n(o)}`,proceed:"继续",duplicatesMerged:e=>`有 ${n(e)} 个值出现了多次。每个值已合并为一行,数量已累加,请检查后再继续。`,mergedFrom:"合并自",mergedRows:e=>`${n(e)} 行`,mergeSummary:(e,o)=>`${n(e)} 个重复行 → 合并为 ${n(o)} 行`},preview:{windowTitle:e=>`${e} - 预览`,untitled:"未命名",open:"打开",formats:"PDF · DXF · 3D · 图片",dropHere:e=>`将文件拖放到此处,或点击${e}。`,supportedFormats:"支持的格式",formatPdf:"多页文档查看器",formatDxf:e=>`矢量 CAD 图纸(可选依赖 ${e})`,format3d:e=>`3D 模型(可选依赖 ${e})`,formatImage:"位图图片",dwgNote:"DWG 文件需先在服务器端转换为 PDF 或 DXF。",dropToOpen:"松开以打开",dwgUnsupported:"DWG 文件需要在服务器端转换。请先转换为 PDF 或 DXF。",unsupportedType:e=>e?`不支持的文件类型:.${e}`:"不支持的文件类型:未知",converting:"正在转换文件",download:"下载",email:"发送邮件",howToNavigate:"操作方法",stopMeasuring:"停止测量(Esc)",scrollToZoom:"滚动缩放",closePanel:"关闭",annotate:"标注",annotateHint:"标注此图片",view:"查看",viewHint:"返回查看器",copy:"复制",save:"保存",imageFailed:"图片加载失败。",downloadFailed:"下载失败:无法访问该文件。"},drawing:{loading:"正在加载图纸…",notInstalled:"此应用未安装 dxf-viewer。",renderFailed:"DXF 渲染失败。",layers:"图层",layersHint:"切换图层可见性",allLayers:"全部",noLayers:"无",measure:"测量",measureHint:"测量距离:在图纸上点击两点,或在下方输入 DI / DIM",auto:"自动",autoHint:"自动:等同 AutoCAD 的 DIMLINEAR,测量两个拾取点之间 ΔX 与 ΔY 中较大的一个",horizontalHint:"水平:两个拾取点之间沿 X 轴的距离(AutoCAD DIMLINEAR 水平)",verticalHint:"垂直:两个拾取点之间沿 Y 轴的距离(AutoCAD DIMLINEAR 垂直)",point:"两点",pointHint:"两点:两个拾取点之间的直线(欧氏)距离(AutoCAD DIST)",fixX:"固定 Δx",fixY:"固定 Δy",fixHint:"将第二个拾取点在该轴上的坐标锁定为第一个拾取点加上此值(mm)。此时显示的测量值为正交方向的距离。",clearFixed:"清除固定距离",horizontalDistance:e=>"两个拾取点之间的水平距离(Δx)"+(e?":自动模式已判定为 X 轴":""),verticalDistance:e=>"两个拾取点之间的垂直距离(Δy)"+(e?":自动模式已判定为 Y 轴":""),straightDistance:"两个拾取点之间的直线距离",fit:"适应",fitHint:"使图纸适应视图",dragToPan:"拖动平移",fitToReset:"点“适应”重置",typeToMeasure:e=>`输入 ${e} 进行测量`,commandPlaceholder:"输入命令:DI、DIM、H、V、Z、LA(输入 ? 查看帮助)",commandHelp:"命令:DI 距离 · DIM/DLI 线性标注 · H / V 强制轴向 · <数值> 锁定 Δ · U 撤销拾取 · Z 适应 · LA 图层 · Esc 退出",echoDistance:(e,o,t)=>`距离 = ${e} ΔX = ${o} ΔY = ${t}`,echoLinear:(e,o)=>`线性标注 = ${e}(${o})`,echoLocked:(e,o,t,a)=>`${e} = ${o},${t} 锁定为 ${a}`,axisLocked:(e,o)=>`${e} 已锁定为 ${o},标签显示的是正交方向的距离`,fixedCleared:"已清除固定距离。",fixedNeedsAxis:"固定距离仅适用于 H 或 V 模式,请先输入 H 或 V。",echoDist:"DIST:点击两点;直线距离(按 Esc 退出)",echoDimLinear:"DIMLINEAR:点击两点;测量 ΔX 与 ΔY 中较大的一个(输入 H / V 可强制轴向)",echoHorizontal:"水平:两个拾取点之间的 ΔX",echoVertical:"垂直:两个拾取点之间的 ΔY",echoAuto:"自动(DIMLINEAR):沿两个拾取点的主轴方向测量",measureOn:"测量已开启,请点击两点。",measureOff:"测量已关闭。",pickRemoved:"已移除上一个拾取点。",zoomExtents:"已缩放至全图。",layersToggled:"已切换图层面板。",measurementCleared:"已清除测量结果。",readOnly:e=>`${e} 是绘图命令,而“预览”是只读查看器。测量命令:DI、DIM、H、V(输入 ? 查看帮助)`,unknownCommand:e=>`未知命令“${e}”,请尝试 DI、DIM、H、V、Z、LA(输入 ? 查看帮助)`,cancelled:"*取消*"},model:{loading:"正在加载 3D 模型…",stepNote:"STEP 文件首次使用时需加载 OpenCascade WASM(约 5 MB)。",notInstalled:"此应用未安装 online-3d-viewer。安装后即可查看 3D 文件。",loadFailed:"3D 模型加载失败。",rootNode:"根节点",node:"节点",collapse:"收起",expand:"展开",fitToView:"适应视图",hide:"隐藏",show:"显示",isometric:"轴测",isometricView:"等轴测视图",top:"俯视",topView:"俯视图",front:"前视",frontView:"前视图",side:"侧视",sideView:"侧视图",perspective:"透视",orthographic:"正交",toPerspective:"切换到透视视图",toOrthographic:"切换到正交视图",snapshot:"将快照保存为 PNG",measureHint:"测量距离:在模型上点击两点",point:"两点",pointHint:"两点:测量两个拾取点之间的直线距离",perpendicularHint:"垂直:拾取两个面,测量它们之间的垂直间距",straightDistance:"两个拾取点之间的直线距离",perpendicularDistance:"两个拾取面之间的垂直距离",meshesHint:"显示或隐藏网格面板",displayHint:"显示或隐藏显示设置面板",downloadOriginal:"下载原始文件",meshes:"网格",readingModel:"正在读取模型…",noStructure:"无可用结构",allVisible:"全部可见",hiddenCount:e=>`已隐藏 ${n(e)} 个`,dragToRotate:"拖动旋转",rightDragToPan:"右键拖动平移",display:"模型显示",backgroundColor:"背景颜色",showEdges:"显示边线",edgeColor:"边线颜色",edgeThreshold:"边线阈值",sectionView:"剖面视图",angle:"角度",axis:"轴",flipHint:"翻转剖切方向",flip:"翻转 →",flipped:"← 已翻转",position:"位置",resetDisplay:"恢复默认"},annotator:{toolSelect:"选择 / 移动",toolDraw:"画笔 / 手绘",toolRect:"矩形",toolEllipse:"椭圆",toolArrow:"箭头",toolMosaic:"马赛克",toolText:"文字",toolCrop:"裁剪",weight:"粗细",radius:"圆角",size:"大小",padding:"边距",fontSystem:"系统",fontSerif:"衬线",fontMono:"等宽",fontCursive:"手写",bold:"加粗",boldLetter:"B",italic:"斜体",italicLetter:"I",underline:"下划线",underlineLetter:"U",border:"边框",borderColor:"文本框边框颜色",addBorder:"添加边框",removeBorder:"移除边框",fill:"填充",fillColor:"文本框背景颜色",addFill:"添加背景填充",removeFill:"移除填充",add:"添加",zoomOut:"缩小",zoomIn:"放大",fit:"适应",fitHint:"适应区域",undo:"撤销",applyCrop:"应用裁剪",cancel:"取消",apply:"应用",hintSelected:"拖动可移动。拖动边角可调整大小。按 Delete / Backspace 可删除。点击外部可取消选择。",hintSelect:"点按形状即可选中。双击文字即可编辑。",hintText:"点击以放置文字标签。",hintCrop:"拖出一个矩形以设定裁剪区域。",hintDraw:"拖动以自由绘制。",hintShape:"在图片上拖动以绘制。",textPlaceholder:"输入后按 Enter…",loadFailed:"图片加载失败",exportFailed:"导出失败",clipboardUnsupported:"此浏览器不支持将图片复制到剪贴板",copyFailed:"复制失败",copied:"已复制到剪贴板",copyRefused:"复制失败(没有剪贴板权限?)"},attachment:{fallbackName:"附件",noLink:"此附件没有下载链接。",spreadsheetFailed:"无法打开电子表格,将改为直接打开文件。",workbookUnavailable:"此文件类型不支持电子表格预览,将改为直接打开文件。",noViewer:"没有可在此显示该文件的查看器,将在应用外打开。",loading:"正在加载文件",loadFailed:"文件加载失败。"},aboutApp:{title:e=>`关于${l(e)}`,version:e=>`版本 ${e}`,partOf:e=>`属于 ${e} 桌面环境`,shellVersion:e=>`外壳 v${e}`,spreadsheet:"多工作表电子表格编辑器,支持导入和导出 CSV / TSV。",notepad:"带颜色标记的便笺,支持清单、桌面便签和实体自动链接。",documents:"信纸版面的编辑器,适用于 Word 文档和纯文本文件,支持图片、列表和对齐。",preview:"PDF 文档、图片、DXF 图纸和 3D 模型的查看器,支持带对象捕捉的 CAD 式测量和类似 AutoCAD 的命令栏。",files:"个人文件管理器,支持文件夹、上传、配额、回收站和桌面快捷文件夹。",browser:"简洁的网页浏览器,带书签、历史记录和导航栏。"}}}var p=c;export{i as ZH_HANS_REVIEWED_SECTIONS,p as default,c as zhHansStrings};
|
|
1
|
+
import{formatPlain as e,formatGrouped as o,formatFixed as t,formatPercent as a}from"../chunk-C3QOHMR6.js";var i=[],n=/^[A-Za-z0-9]/,r=/[A-Za-z0-9]$/,l=e=>n.test(e)?` ${e}`:e,s=e=>r.test(e)?`${e} `:e,d=e=>s(l(e));function c(i="zh-Hans"){const n=o=>e(o,i),r=e=>o(e,i),c=(e,o)=>t(e,o,i),p=(e,o)=>a(e,o,i);return{window:{minimize:"最小化",restore:"还原",maximize:"最大化",windowed:"向下还原",pinOnTop:"置顶",unpin:"取消置顶",close:"关闭",windowSuffix:"窗口",prev:"上一条",next:"下一条",snapLayouts:"贴靠布局",snapLeft:"贴靠到左半屏",snapRight:"贴靠到右半屏",snapTopLeft:"贴靠到左上角",snapTopRight:"贴靠到右上角",snapBottomLeft:"贴靠到左下角",snapBottomRight:"贴靠到右下角"},taskbar:{closeWindow:"关闭窗口",offscreenHint:"此窗口位于屏幕之外,点击即可移回",offscreenDot:"位于屏幕之外,点击即可移回此窗口",expose:"窗口概览:以缩略图显示所有打开的窗口",addToDesktop:"添加到桌面",removeFromDesktop:"从桌面移除",minimizeAllWindows:"全部最小化",restoreAllWindows:"全部还原",closeAllWindows:"全部关闭"},logout:{goodbye:"再见",seeYou:"下次再见"},about:{aboutPrefix:"关于",thisApp:"本应用",openSourceLicenses:"开源许可",whatsNew:"更新内容",noChangelog:"暂无更新日志。"},table:{empty:"暂无数据",loading:"加载中",selectAll:"选择全部行",selectRow:"选择此行"},select:{none:"— 无 —",noMatches:"无匹配项",allSelected:"已选择全部选项",clear:"清除所选",remove:"移除",removeItem:e=>`移除${l(e)}`},notifications:{title:"通知",markAllRead:"全部标为已读",dnd:"勿扰模式",dndOn:"勿扰模式已开启",caughtUp:"全部已读",empty:"暂无通知",viewAll:"查看全部通知",cardLabel:"通知",dismiss:"关闭通知"},form:{errorSummaryTitle:"存在以下问题"},help:{title:"帮助",searchPlaceholder:"搜索帮助…",empty:"暂无帮助文章。",noResults:"没有符合搜索条件的文章。",loading:"加载中…",pickArticle:"请从左侧选择一篇帮助文章。",noBody:"这篇文章暂无内容。",draft:"草稿",newArticle:"+ 新建",edit:"编辑"},update:{available:"有新版本可用。",refreshNow:"立即刷新"},pageTabs:{label:"已打开的页面",close:"关闭",closeTab:e=>`关闭${l(e)}`,closeOthers:"关闭其他标签页",closeRight:"关闭右侧标签页",closeAll:"关闭全部标签页",unsaved:"有未保存的更改",copy:e=>`复制${l(e)}`,copied:"已复制",tabMenu:"窗口菜单",discardTitle:"放弃未保存的更改?",discardOne:"此页面有尚未保存的更改。仍要关闭吗?",discardMany:"个页面有尚未保存的更改。仍要关闭吗?",discardCount:e=>`有 ${n(e)} 个页面的更改尚未保存。仍要关闭吗?`,discardConfirm:"放弃并关闭",keepEditing:"继续编辑"},dialog:{close:"关闭",cancel:"取消",ok:"确定",confirmTitle:"确认",destructiveTitle:"确认操作",destructiveCancel:"返回",destructiveConfirm:"删除",typeToConfirm:e=>`请输入 ${e} 以确认:`,promptTitle:"请输入内容"},calendar:{previousMonth:"上个月",nextMonth:"下个月",previousYear:"上一年",nextYear:"下一年",previousYears:"上一组年份",nextYears:"下一组年份",monthPanel:"选择月份",yearPanel:"选择年份",chooseMonth:e=>`选择月份,当前为${l(e)}`,chooseYear:e=>`选择年份,当前为 ${e} 年`},datePicker:{placeholder:"选择日期",dialog:"选择日期",clear:"清除",today:"今天",required:"必填"},dateRange:{placeholder:"日期范围",clearRange:"清除日期范围",dialog:"日期范围",from:"从",to:"至",start:"开始日期",end:"结束日期",fromOnly:e=>`自 ${e} 起`,toOnly:e=>`截至 ${e}`,range:(e,o)=>`${e} 至 ${o}`,required:"必填",last2Weeks:"过去 2 周",lastMonth:"上个月",last3Months:"过去 3 个月",last6Months:"过去 6 个月",last12Months:"过去 12 个月",custom:"自定义",clear:"清除",cancel:"取消",apply:"应用"},pagination:{label:"分页",first:"第一页",previous:"上一页",next:"下一页",last:"最后一页"},list:{selected:e=>`已选 ${n(e)} 项`,selectedNotShown:(e,o)=>`已选 ${n(e)} 项,${n(o)} 项未显示`,allLoaded:(e,o)=>`已加载全部 ${r(e)} ${o}`,count:(e,o)=>`共 ${r(e)} ${o}`,loadedOf:(e,o,t)=>`已加载 ${r(e)} / ${r(o)} ${t}`,loadingMore:"正在加载更多…",loadError:"无法加载此列表",loadErrorMessage:"获取这些记录时出错。请检查网络连接后重试。",retry:"重试"},kanban:{loading:"加载中…",empty:"暂无条目。",dropHere:"拖放到此处",addItem:"添加条目"},files:{attach:"添加附件",drop:"松开即可添加附件",remove:e=>`移除${l(e)}`,chooseMany:"选择文件",chooseOne:"选择文件",dragMany:"或拖放到此处",dragOne:"或拖放到此处",notAccepted:(e,o)=>`${s(e)}的文件类型不受支持${o?`(${o})`:""}`,tooLarge:(e,o,t)=>`${s(e)}大小为 ${o},上限为 ${t}`,tooMany:(e,o)=>`未添加${l(e)}:最多只能添加 ${n(o)} 个文件`,bytes:e=>`${n(e)} B`,kilobytes:e=>`${n(e)} KB`,megabytes:e=>`${c(e,1)} MB`},media:{uploadImage:"上传图片",uploadVideo:"上传视频",uploadFile:"上传文件",upload:"上传媒体",cta:"从媒体库选择或上传",replace:"替换",remove:"移除",uploading:"上传中…",cover:"封面",add:"添加",addMedia:"添加媒体",empty:"暂无媒体。",removeItem:e=>`移除${l(e)}`,reorder:(e,o,t)=>`${e},第 ${n(o)} 项,共 ${n(t)} 项。使用方向键调整顺序。`},brandAsset:{save:(e,o)=>`保存${l(o)}`,remove:(e,o)=>`移除${l(o)}`,discard:"放弃更改",saveFailed:(e,o)=>`无法保存${l(o)}。`,removeFailed:(e,o)=>`无法移除${l(o)}。`,region:(e,o)=>`${s(o)}的${e}`,usedFor:e=>`用于${l(e)}。`,previews:e=>`${s(e)}预览`,preview:"预览",alt:(e,o)=>`${s(e)}${o}`},copy:{copy:"复制",copyLabel:e=>`复制${l(e)}`,copied:"已复制",copyValue:e=>`复制${l(e)}`,copiedValue:"已复制!",copiedLabel:e=>`已复制${l(e)}`,failed:"无法复制到剪贴板"},keypad:{backspace:"退格",enter:"确认"},banner:{dismiss:"关闭"},badge:{remove:"移除",removeItem:e=>`移除${l(e)}`},breadcrumbs:{label:"面包屑导航",hidden:"已隐藏的层级"},emptyState:{message:"暂无内容。"},errors:{notFound:"找不到页面",notFoundBody:"您访问的页面不存在或已被移动。",forbidden:"访问被拒绝",forbiddenBody:"您没有查看此页面的权限。",noAccess:"您无权访问此内容",serverError:"出错了",serverErrorBody:"发生意外错误,请重试。",retry:"重试",details:"错误详情"},search:{placeholder:"搜索…",escBadge:"ESC",searching:"搜索中…",noResults:"未找到结果。",minChars:e=>`请至少输入 ${n(e)} 个字符再搜索…`,navigate:"切换",open:"打开",close:"关闭",enterKey:"Enter",escKey:"Esc",recent:"最近",favorites:"收藏",actions:"操作",listLabel:"搜索结果",groupCount:(e,o)=>`${n(e)}${o?"+":""}`,groupLabel:(e,o,t)=>`${e},${n(o)}${t?"+":""} 项`,seeAll:e=>`查看全部${l(e)}`,searchFailed:"搜索失败,请检查网络连接后重试。",partialFailure:"部分结果未能加载。",tabKey:"Tab",nextGroup:"下一组"},grid:{selectAll:"全选",insertRowAbove:"在上方插入行",insertRowBelow:"在下方插入行",deleteRow:e=>`删除第 ${e} 行`,insertColumnLeft:"在左侧插入列",insertColumnRight:"在右侧插入列",deleteColumn:e=>`删除${d(e)}列`,resize:"拖动调整大小 · 双击自动适应",fill:"拖动填充"},sidebar:{resize:"拖动调整大小 · 双击重置"},resizeHandle:{label:"调整面板大小",hint:"拖动调整大小 · 双击重置"},number:{increase:"增加",decrease:"减少"},slider:{value:e=>`${s(e)}数值`},displayChips:{shown:"显示中",hidden:"已隐藏",shownHint:"显示中 · 点击隐藏",hiddenHint:"已隐藏 · 点击显示"},corners:{radius:"圆角半径",unit:"px",radiusMark:"R"},widths:{column:e=>`第 ${e} 栏`,divider:(e,o)=>`第 ${e} 栏和第 ${o} 栏之间的分隔线`,dividerValue:(e,o,t,a)=>`第 ${e} 栏 ${p(o,0)},第 ${t} 栏 ${p(a,0)}`,dragHint:"拖动来调整栏宽",hint:(e,o)=>`第 ${e} 栏自动占满剩下的宽度。每栏不少于 ${p(o,0)}。`,reset:"恢复等宽"},color:{swatch:(e,o)=>`${e}:${o}`,none:"无",panel:e=>`${s(e)}选择器`,square:"饱和度和亮度",squareValue:(e,o)=>`饱和度 ${p(e,0)},亮度 ${p(o,0)}`,hue:"色相",hex:e=>`${s(e)}十六进制色值`,presets:"预设",clear:"无颜色"},imageFocus:{picture:(e,o)=>`${e}:${o}`,hint:"拖动图片上的圆点,或用方向键移动。按住 Shift 可移动更多。",noImage:"请先选择图片,目前还没有可设置焦点的图片。"},link:{linkType:"链接类型",address:"链接地址",addressPlaceholder:"链接(本站页面 /… 或 https://…)",unsafe:"请使用网址(https://…)、本站页面(/…)、mailto: 或 tel:。",unavailable:e=>`${e}(不可用)`,filter:"筛选",noFilter:"不筛选(全部产品)",value:"值",filterHint:"筛选项来自产品类型。只列出本站目录中有的值。",title:"链接",apply:"应用",cancel:"取消",remove:"移除",addLink:"添加链接",text:e=>`${s(e)}文字`,linkOf:(e,o)=>`${s(e)}链接:${o||"无"}`},tree:{empty:"暂无内容",dropHere:"拖放到此处",dragHint:"拖动以移动",moveHint:"按 Alt+向上键或 Alt+向下键可移动此项",insertHere:"在此处插入"},layout:{desktop:"桌面",sidebar:"侧边栏",switchToDesktop:"切换到桌面模式",switchToSidebar:"切换到侧边栏模式",collapseSidebar:"收起侧边栏",expandSidebar:"展开侧边栏",search:"搜索…",navLabel:"主菜单",openWindows:"已打开的窗口",pageResult:"页面",accountMenu:e=>`${s(e)}的账户菜单`,profile:"个人资料",notifications:"通知",reportIssue:"建议与问题反馈",signOut:"退出登录",signOutTitle:"退出登录",signOutMessage:"您确定要退出登录吗?重新登录后将重新打开所有窗口。"},markdown:{screenshot:"截图"},severity:{success:"正常",warning:"警告",danger:"严重",unrecognised:e=>`未识别的严重级别${l(e)}`},meter:{noData:"无数据",warningAt:e=>`警告 ≥ ${n(e)}`,criticalAt:e=>`严重 ≥ ${n(e)}`,noReading:"无读数",noBudget:"无预算",ofBudget:e=>`预算的 ${e}`,budget:"预算",hoursMinutes:(e,o)=>`${n(e)} 小时 ${n(o)} 分`,minutesSeconds:(e,o)=>`${n(e)} 分 ${n(o)} 秒`,seconds:e=>`${n(e)} 秒`},charts:{showTable:"以表格显示数据",loading:"正在加载图表数据",noData:"此时间段内无数据。",windowStart:"时间段起点",windowEnd:"时间段终点",window:(e,o,t)=>`时间段:正在显示 ${e} 至 ${o},共 ${n(t)} 个区间`,overIntervals:(e,o)=>`${e.join("、")},共 ${n(o)} 个区间`,acrossCategories:(e,o)=>`${e.join("、")},共 ${n(o)} 个类别`,acrossMeasures:(e,o)=>`${e.join("、")},共 ${n(o)} 项指标`,breakdown:(e,o)=>`${s(e)}的构成,共 ${n(o)} 个部分`,funnel:(e,o,t)=>`漏斗图,共 ${n(e)} 个阶段,从${d(o)}到${l(t)}`,radialTrack:e=>`${n(e)} 个类别,以同心环占比显示`,radialCycle:e=>`${n(e)} 个类别,按环形周期排列`,tableFrom:"来源",tableTo:"去向",tableItem:"项目",tableLevel:"层级",tableSeries:"系列",inBucket:e=>`此区间内共 ${e}`,inCategory:e=>`此类别内共 ${e}`,value:"数值",share:"占比",count:"数量",flow:"流量",totalFlow:"总流量",throughput:"通过量",open:"开盘",high:"最高",low:"最低",close:"收盘",maximum:"最大值",q3:"Q3",median:"中位数",q1:"Q1",minimum:"最小值",distribution:"分布",fiveNumber:(e,o)=>`${e}:${n(o)} 个类别的五数概括`,outliers:e=>`${n(e)} 个离群值超出须线范围`,price:"价格",ohlc:(e,o)=>`${e}:${n(o)} 个周期的开盘、最高、最低和收盘`,closedAbove:"收盘高于开盘",closedBelow:"收盘低于开盘",noFlows:"没有可绘制的流量。",chord:e=>`${n(e)} 个参与方之间的流量`,noStages:"没有可绘制的阶段。",ofFirstStage:"占首阶段",droppedHere:"此处流失",intensity:"强度",noActivity:"此时间段内无活动。",heatmap:(e,o,t)=>`${e},${n(o)} 行 ${n(t)} 列`,countAxis:"数量",histogram:(e,o,t)=>`${e}:${n(t)} 个观测值,分为 ${n(o)} 组`,observations:"观测值",notEnough:"符合条件的请求不足,无法判断。",objectiveMet:e=>`已达到目标 ${e}`,objectiveMissed:e=>`未达到目标 ${e}`,nothingToPlot:"没有可绘制的数据。",nothingToCompare:"没有可比较的数据。",other:"其他",nothingToBreakDown:"没有可细分的数据。",range:"范围",rangeLabel:(e,o)=>`${e}:${n(o)} 个类别的最低值和最高值`,nothingToRank:"此时间段内没有可排名的数据。",emphasised:"(重点)",sankey:(e,o)=>`${n(e)} 个节点之间的流量,共 ${n(o)} 条连接`,noObservations:"此时间段内无观测值。",xAxis:"x",yAxis:"y",size:"大小",scatter:(e,o,t)=>`${e.join("、")}:${s(o)}与${d(t)}的关系`,outsideRange:e=>`${n(e)} 个点超出显示范围`,waterfall:(e,o,t)=>`瀑布图,共 ${n(e)} 步,从${d(o)}到${l(t)}`,balance:"余额",increase:"增加",decrease:"减少",runningTotal:"累计",sunburst:(e,o)=>`${s(e)}的层级构成,共 ${n(o)} 层`,treemap:e=>`矩形树图,共 ${n(e)} 项`,trendUp:"上升",trendDown:"下降",trendFlat:"持平"},timeline:{days:e=>`${r(e)} 天`,daysToToday:e=>`距今 ${r(e)} 天`,notReached:"尚未达成",next:"下一项",more:e=>`还有 ${n(e)} 项`,today:"今天",todayTitle:e=>`今天:${e}`,open:e=>`打开${l(e)}`,openButton:"打开",scrub:"拖动浏览时间线",alsoToCome:e=>`后续还有:${e.join("、")}`,start:e=>`开始 · ${e}`,events:(e,o)=>`${n(e)} 个事件 · ${o.join("、")}`,started:e=>`开始于 ${e}`,duration:e=>`${r(e)} 天`,reached:(e,o)=>`已达成 ${n(e)} / ${n(o)} 个里程碑`,milestones:e=>`${s(e)}里程碑`},production:{heading:"生产进度",start:"开始",estimated:"预计",estimatedCompletion:"预计完成",estDone:"预计完工",play:"播放",pause:"暂停",playTitle:"逐份报告播放时间线",backTo:e=>`返回${l(e)}`,showing:e=>`正在显示 ${e}`,overall:e=>`总体 ${p(e,0)}`,inStock:e=>`库存 ${r(e)} 件`,noReport:"尚未提交生产报告",leadTime:e=>`交货周期 ${r(e)} 天`,report:"生产报告",shipment:"发货",inspection:"检验",invoice:"发票",scrub:"拖动浏览生产时间线",label:(e,o)=>`生产报告和事件,${e} 至 ${o}`},containers:{items:e=>`${n(e)} 项`,pieces:e=>`${n(e)} 件`,split:(e,o)=>`(指令 ${n(e)} / 已装 ${n(o)})`,added:(e,o)=>`新增 ${n(e)} 项(${n(o)} 件)`,fill:(e,o)=>`${c(e,1)} / ${n(o)} m³`,total:"合计:",instructed:e=>`指令 ${c(e,2)} m³`,loaded:e=>`已装 ${c(e,2)} m³`,volume:e=>`${c(e,2)} m³`,noVolume:"体积:暂无(这些料号没有体积数据)"},toast:{notification:"通知"},map:{failed:"无法在此处绘制地图。列表中包含地图显示的全部内容。",approximate:e=>`${e},大致位置`,approximateTitle:e=>`${e}(大致位置)`,places:()=>"地点",group:(e,o)=>`此处有 ${n(e)} 个${l(o)}`,stops:e=>`第 ${e} 站`,closeBy:(e,o)=>`附近还有 ${n(e)} 个${l(o)},放大地图后显示`,spread:"点按以分开查看",cycle:"这些地点位于同一位置:点按查看下一个",fullScreen:"全屏",leaveFullScreen:"退出全屏",chosen:e=>`${e},已在地图上选中`,closeCard:"关闭",openRecord:"打开"},pdf:{previousPage:"上一页",nextPage:"下一页",pageOf:(e,o)=>`${n(e)} / ${n(o)}`,zoomOut:"缩小",zoomIn:"放大",zoom:"缩放",fitWidth:"适合宽度",fitPage:"适合页面",fit:"适应",fitHint:"适应窗格:随窗格大小变化,直到您手动缩放",print:"打印",download:"下载",email:"发送邮件",loading:"正在加载 PDF…",loadFailed:"PDF 加载失败",allowPopups:"请允许弹出窗口以便打印"},loading:{label:"加载中…"},language:{title:"语言",description:"菜单、标签和消息所使用的语言。",reloadNote:"更改语言后页面将重新加载。"},entityList:{open:"打开",copy:"复制",copyColumn:e=>`复制${l(e)}`,copyRows:e=>1===e?"复制此行":`复制 ${n(e)} 行`,exportSelected:"将所选导出为 CSV",selectAll:"全选",selectAllLoaded:e=>`全选已加载的 ${n(e)} 项`,clearSelection:"清除所选",refresh:"刷新",copiedText:"文本",copiedRows:e=>1===e?"该行":`${n(e)} 行`,exported:e=>`已导出 ${n(e)} 行。`,exportTruncated:(e,o)=>`仅导出了 ${n(o)} 行中的 ${n(e)} 行。服务器限制了本次导出,文件不完整。`,exportTruncatedUnknown:e=>`仅导出了 ${n(e)} 行中的一部分。服务器限制了本次导出,文件不完整。`,exportFailed:"CSV 导出失败。"},columns:{choose:"选择列",heading:"列",reset:"重置",saveDefault:"保存为所有用户的默认设置",savedDefault:"已保存为默认设置",select:"选择",selectDone:"完成",showSelection:"显示选择列",hideSelection:"隐藏选择列"},record:{loading:"正在加载记录…",signInRequired:"需要登录",signInBody:"您的会话可能已过期。请重新登录以打开此记录。",notFound:"未找到记录",loadFailed:"无法加载记录",checkConnection:"请检查网络连接后重试。",rejected:"服务器拒绝了此请求。",retry:"重试"},password:{current:"当前密码",newPassword:"新密码",confirm:"确认密码",submit:"修改密码",submitting:"修改中…",done:"完成",currentRequired:"请输入当前密码。",tooShort:e=>`新密码至少需要 ${n(e)} 个字符。`,mismatch:"两次输入的密码不一致。",failed:"修改密码失败。",changed:"您的密码已修改成功。"},pdfAction:{label:"PDF",loading:"加载中…",preview:"预览",download:"下载",email:"通过邮件发送",downloaded:e=>`${s(e)}已下载。`,tookTooLong:e=>`${s(e)}加载时间过长,请重试。`,previewLoading:"正在加载 PDF",previewTookTooLong:"此文档加载时间过长。请关闭此窗口后重试。",previewFailed:"PDF 加载失败。"},undo:{undo:"撤销",redo:"重做",undoStep:(e,o)=>`撤销${l(e)}(${o})`,redoStep:(e,o)=>`重做${l(e)}(${o})`,nothingToUndo:"没有可撤销的操作",nothingToRedo:"没有可重做的操作"},sounds:{title:"声音",enable:"音效",autosave:"更改会自动保存",choice:(e,o)=>`${e}:${o}`,packClassic:"经典",packMinimal:"极简",packRetro:"复古",packSoft:"柔和",packArcade:"街机",packSilent:"静音",eventClick:"点击",eventSuccess:"成功",eventError:"错误",eventNotification:"通知",eventStartup:"启动",eventTimerDone:"计时结束",eventLogout:"退出登录"},serverStatus:{connected:"已连接",disconnected:"已断开",checking:"检测中…",lastOkTitle:(e,o)=>`${e} · 上次正常 ${o}`,details:"服务器连接详情",lastPoll:e=>`上次轮询:${e}。`,lastFailure:e=>`上次失败:${e}。`,firstPoll:"首次轮询进行中…",server:"服务器",protocol:"协议",browser:"浏览器",online:"在线",offline:"离线",lastOk:"上次正常",lastFail:"上次失败",latency:"延迟",poll:"轮询",pollEvery:e=>`每 ${n(e)} 秒`,session:"会话",user:"用户",notSignedIn:"未登录",role:"角色",build:"构建",app:"应用",userAgent:"用户代理",pingHint:"点击 ↻ 立即检测",refresh:"刷新"},bulkImport:{description:"可从电子表格粘贴、直接输入或上传 CSV。行无需按顺序排列,系统会自动匹配。列表中没有的值将添加到末尾。留空的字段不受影响。",lines:e=>`${n(e)} 行`,total:(e,o)=>`${e}:${o}`,clear:"清除",upload:"上传 CSV",importLines:e=>`导入 ${n(e)} 行`,importing:"导入中…",importFailed:"导入失败。",enterAtLeastOne:(e,o)=>`请至少输入一个${l(o)||"值"}。`,allSkipped:"所有行均已跳过。",cancel:"取消",mapTitle:"将 CSV 列映射到字段",skip:"— 跳过 —",columnOption:(e,o)=>`第 ${n(e)} 列(例如 ${o})`,rowsDetected:e=>`检测到 ${n(e)} 行`,confirmMapping:"确认映射",duplicatesTitle:"检测到重复项",duplicatesFound:e=>`导入内容中有 ${n(e)} 个值出现了多次。请先选择每个值的处理方式,然后再继续。`,occurrences:e=>`出现 ${n(e)} 次`,keepFirst:"保留第一个",keepLast:"保留最后一个",keepAll:"全部保留",skipAll:"全部跳过",keptDropped:(e,o)=>`保留 ${n(e)} · 丢弃 ${n(o)}`,proceed:"继续",duplicatesMerged:e=>`有 ${n(e)} 个值出现了多次。每个值已合并为一行,数量已累加,请检查后再继续。`,mergedFrom:"合并自",mergedRows:e=>`${n(e)} 行`,mergeSummary:(e,o)=>`${n(e)} 个重复行 → 合并为 ${n(o)} 行`},preview:{windowTitle:e=>`${e} - 预览`,untitled:"未命名",open:"打开",formats:"PDF · DXF · 3D · 图片",dropHere:e=>`将文件拖放到此处,或点击${e}。`,supportedFormats:"支持的格式",formatPdf:"多页文档查看器",formatDxf:e=>`矢量 CAD 图纸(可选依赖 ${e})`,format3d:e=>`3D 模型(可选依赖 ${e})`,formatImage:"位图图片",dwgNote:"DWG 文件需先在服务器端转换为 PDF 或 DXF。",dropToOpen:"松开以打开",dwgUnsupported:"DWG 文件需要在服务器端转换。请先转换为 PDF 或 DXF。",unsupportedType:e=>e?`不支持的文件类型:.${e}`:"不支持的文件类型:未知",converting:"正在转换文件",download:"下载",email:"发送邮件",howToNavigate:"操作方法",stopMeasuring:"停止测量(Esc)",scrollToZoom:"滚动缩放",closePanel:"关闭",annotate:"标注",annotateHint:"标注此图片",view:"查看",viewHint:"返回查看器",copy:"复制",save:"保存",imageFailed:"图片加载失败。",downloadFailed:"下载失败:无法访问该文件。"},drawing:{loading:"正在加载图纸…",notInstalled:"此应用未安装 dxf-viewer。",renderFailed:"DXF 渲染失败。",layers:"图层",layersHint:"切换图层可见性",allLayers:"全部",noLayers:"无",measure:"测量",measureHint:"测量距离:在图纸上点击两点,或在下方输入 DI / DIM",auto:"自动",autoHint:"自动:等同 AutoCAD 的 DIMLINEAR,测量两个拾取点之间 ΔX 与 ΔY 中较大的一个",horizontalHint:"水平:两个拾取点之间沿 X 轴的距离(AutoCAD DIMLINEAR 水平)",verticalHint:"垂直:两个拾取点之间沿 Y 轴的距离(AutoCAD DIMLINEAR 垂直)",point:"两点",pointHint:"两点:两个拾取点之间的直线(欧氏)距离(AutoCAD DIST)",fixX:"固定 Δx",fixY:"固定 Δy",fixHint:"将第二个拾取点在该轴上的坐标锁定为第一个拾取点加上此值(mm)。此时显示的测量值为正交方向的距离。",clearFixed:"清除固定距离",horizontalDistance:e=>"两个拾取点之间的水平距离(Δx)"+(e?":自动模式已判定为 X 轴":""),verticalDistance:e=>"两个拾取点之间的垂直距离(Δy)"+(e?":自动模式已判定为 Y 轴":""),straightDistance:"两个拾取点之间的直线距离",fit:"适应",fitHint:"使图纸适应视图",dragToPan:"拖动平移",fitToReset:"点“适应”重置",typeToMeasure:e=>`输入 ${e} 进行测量`,commandPlaceholder:"输入命令:DI、DIM、H、V、Z、LA(输入 ? 查看帮助)",commandHelp:"命令:DI 距离 · DIM/DLI 线性标注 · H / V 强制轴向 · <数值> 锁定 Δ · U 撤销拾取 · Z 适应 · LA 图层 · Esc 退出",echoDistance:(e,o,t)=>`距离 = ${e} ΔX = ${o} ΔY = ${t}`,echoLinear:(e,o)=>`线性标注 = ${e}(${o})`,echoLocked:(e,o,t,a)=>`${e} = ${o},${t} 锁定为 ${a}`,axisLocked:(e,o)=>`${e} 已锁定为 ${o},标签显示的是正交方向的距离`,fixedCleared:"已清除固定距离。",fixedNeedsAxis:"固定距离仅适用于 H 或 V 模式,请先输入 H 或 V。",echoDist:"DIST:点击两点;直线距离(按 Esc 退出)",echoDimLinear:"DIMLINEAR:点击两点;测量 ΔX 与 ΔY 中较大的一个(输入 H / V 可强制轴向)",echoHorizontal:"水平:两个拾取点之间的 ΔX",echoVertical:"垂直:两个拾取点之间的 ΔY",echoAuto:"自动(DIMLINEAR):沿两个拾取点的主轴方向测量",measureOn:"测量已开启,请点击两点。",measureOff:"测量已关闭。",pickRemoved:"已移除上一个拾取点。",zoomExtents:"已缩放至全图。",layersToggled:"已切换图层面板。",measurementCleared:"已清除测量结果。",readOnly:e=>`${e} 是绘图命令,而“预览”是只读查看器。测量命令:DI、DIM、H、V(输入 ? 查看帮助)`,unknownCommand:e=>`未知命令“${e}”,请尝试 DI、DIM、H、V、Z、LA(输入 ? 查看帮助)`,cancelled:"*取消*"},model:{loading:"正在加载 3D 模型…",stepNote:"STEP 文件首次使用时需加载 OpenCascade WASM(约 5 MB)。",notInstalled:"此应用未安装 online-3d-viewer。安装后即可查看 3D 文件。",loadFailed:"3D 模型加载失败。",rootNode:"根节点",node:"节点",collapse:"收起",expand:"展开",fitToView:"适应视图",hide:"隐藏",show:"显示",isometric:"轴测",isometricView:"等轴测视图",top:"俯视",topView:"俯视图",front:"前视",frontView:"前视图",side:"侧视",sideView:"侧视图",perspective:"透视",orthographic:"正交",toPerspective:"切换到透视视图",toOrthographic:"切换到正交视图",snapshot:"将快照保存为 PNG",measureHint:"测量距离:在模型上点击两点",point:"两点",pointHint:"两点:测量两个拾取点之间的直线距离",perpendicularHint:"垂直:拾取两个面,测量它们之间的垂直间距",straightDistance:"两个拾取点之间的直线距离",perpendicularDistance:"两个拾取面之间的垂直距离",meshesHint:"显示或隐藏网格面板",displayHint:"显示或隐藏显示设置面板",downloadOriginal:"下载原始文件",meshes:"网格",readingModel:"正在读取模型…",noStructure:"无可用结构",allVisible:"全部可见",hiddenCount:e=>`已隐藏 ${n(e)} 个`,dragToRotate:"拖动旋转",rightDragToPan:"右键拖动平移",display:"模型显示",backgroundColor:"背景颜色",showEdges:"显示边线",edgeColor:"边线颜色",edgeThreshold:"边线阈值",sectionView:"剖面视图",angle:"角度",axis:"轴",flipHint:"翻转剖切方向",flip:"翻转 →",flipped:"← 已翻转",position:"位置",resetDisplay:"恢复默认"},annotator:{toolSelect:"选择 / 移动",toolDraw:"画笔 / 手绘",toolRect:"矩形",toolEllipse:"椭圆",toolArrow:"箭头",toolMosaic:"马赛克",toolText:"文字",toolCrop:"裁剪",weight:"粗细",radius:"圆角",size:"大小",padding:"边距",fontSystem:"系统",fontSerif:"衬线",fontMono:"等宽",fontCursive:"手写",bold:"加粗",boldLetter:"B",italic:"斜体",italicLetter:"I",underline:"下划线",underlineLetter:"U",border:"边框",borderColor:"文本框边框颜色",addBorder:"添加边框",removeBorder:"移除边框",fill:"填充",fillColor:"文本框背景颜色",addFill:"添加背景填充",removeFill:"移除填充",add:"添加",zoomOut:"缩小",zoomIn:"放大",fit:"适应",fitHint:"适应区域",undo:"撤销",applyCrop:"应用裁剪",cancel:"取消",apply:"应用",hintSelected:"拖动可移动。拖动边角可调整大小。按 Delete / Backspace 可删除。点击外部可取消选择。",hintSelect:"点按形状即可选中。双击文字即可编辑。",hintText:"点击以放置文字标签。",hintCrop:"拖出一个矩形以设定裁剪区域。",hintDraw:"拖动以自由绘制。",hintShape:"在图片上拖动以绘制。",textPlaceholder:"输入后按 Enter…",loadFailed:"图片加载失败",exportFailed:"导出失败",clipboardUnsupported:"此浏览器不支持将图片复制到剪贴板",copyFailed:"复制失败",copied:"已复制到剪贴板",copyRefused:"复制失败(没有剪贴板权限?)"},attachment:{fallbackName:"附件",noLink:"此附件没有下载链接。",spreadsheetFailed:"无法打开电子表格,将改为直接打开文件。",workbookUnavailable:"此文件类型不支持电子表格预览,将改为直接打开文件。",noViewer:"没有可在此显示该文件的查看器,将在应用外打开。",loading:"正在加载文件",loadFailed:"文件加载失败。"},aboutApp:{title:e=>`关于${l(e)}`,version:e=>`版本 ${e}`,partOf:e=>`属于 ${e} 桌面环境`,shellVersion:e=>`外壳 v${e}`,spreadsheet:"多工作表电子表格编辑器,支持导入和导出 CSV / TSV。",notepad:"带颜色标记的便笺,支持清单、桌面便签和实体自动链接。",documents:"信纸版面的编辑器,适用于 Word 文档和纯文本文件,支持图片、列表和对齐。",preview:"PDF 文档、图片、DXF 图纸和 3D 模型的查看器,支持带对象捕捉的 CAD 式测量和类似 AutoCAD 的命令栏。",files:"个人文件管理器,支持文件夹、上传、配额、回收站和桌面快捷文件夹。",browser:"简洁的网页浏览器,带书签、历史记录和导航栏。"}}}var p=c;export{i as ZH_HANS_REVIEWED_SECTIONS,p as default,c as zhHansStrings};
|
package/dist/map/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{Button_default as e}from"../chunk-OGXU7QFW.js";import{rootIsDark as t,ROOT_THEME_ATTRIBUTES as n}from"../chunk-HZZNJHRH.js";import"../chunk-X4FJ54PP.js";import"../chunk-D65T4H6J.js";import{CollapseFallback as r,ExpandFallback as o,CloseFallback as a}from"../chunk-XUF7VW4U.js";import{useShellStrings as l}from"../chunk-3JK2LSFU.js";import"../chunk-C3QOHMR6.js";import{Icon as i}from"../chunk-YKZHOXI4.js";import{useRef as s,useState as c,useEffect as u,useCallback as d,useMemo as p,useSyncExternalStore as m}from"react";import{createPortal as h}from"react-dom";import{jsxs as g,jsx as f,Fragment as y}from"react/jsx-runtime";import{useQuery as b}from"@tanstack/react-query";var x="maplibregl-compact-show";function v(e){if(!e)return()=>{};const t=()=>!!e.classList.contains(x)&&(e.classList.remove(x),!0);if(t())return()=>{};const n=new MutationObserver(()=>{t()&&n.disconnect()});return n.observe(e,{attributes:!0,attributeFilter:["class"]}),()=>n.disconnect()}var w=20,k=12,N=480,M={center:[0,0],left:[w,0],right:[-20,0],top:[0,w],"top-left":[0,w],"top-right":[0,w],bottom:[0,-20],"bottom-left":[0,-20],"bottom-right":[0,-20]},C=(e,t=12)=>Math.max(0,Math.floor(e-t-k-w-10-16));function L(e,t,n,r=12){const o=e.y-w-r,a=n.height-e.y-w-k,l=t.height<=o||t.height>a&&o>=a,i=l?Math.max(0,t.height-o):-Math.max(0,t.height-a);let s="",c=0;return e.x-t.width/2<k?(s="-left",c=Math.max(0,k-e.x)):e.x+t.width/2>n.width-k&&(s="-right",c=-Math.max(0,e.x-(n.width-k))),{anchor:`${l?"bottom":"top"}${s}`,move:{x:c,y:i}}}var $="maplibre-gl-worker.mjs",S=e=>`/maplibre-gl/${e}/${$}`,E=null;function j(){return E??=Promise.all([import("maplibre-gl"),import("maplibre-gl/dist/maplibre-gl.css")]).then(([e])=>(e.setWorkerUrl(S(e.getVersion())),e)).catch(e=>{throw E=null,e}),E}var z=24,A=28,O=29;function R(e){const t=[...e].sort((e,t)=>e-t),n=[];for(let e=0;e<t.length;){let r=e;for(;r+1<t.length&&t[r+1]===t[r]+1;)r++;n.push(r===e?String(t[e]):`${t[e]}–${t[r]}`),e=r+1}return n.join(", ")}function T(e){const t=Math.max(A,12+8*e.length);return t+t%2}var B=(e,t,n,r)=>({left:e-n/2,top:t-r/2,right:e+n/2,bottom:t+r/2});function F(e,t){return e.left<t.right+1&&t.left<e.right+1&&e.top<t.bottom+1&&t.top<e.bottom+1}var W=e=>B(e.x,e.y,e.width,e.height);function K(e){for(let t=0;t<e.length;t++)for(let n=t+1;n<e.length;n++)if(F(W(e[t]),W(e[n])))return[e[t],e[n]];return null}function q(e,t=[]){const n=[],r=e=>t.some(t=>F(t,e));let o=e.filter(e=>null!==e.stop).sort((e,t)=>e.stop-t.stop).map(e=>({keys:[e.key],stops:[e.stop],x:e.x,y:e.y,width:A,height:A,under:0}));for(let e=K(o);e;e=K(o)){const[t,n]=e;t.keys.push(...n.keys),t.stops.push(...n.stops),t.stops.sort((e,t)=>e-t),t.width=T(R(t.stops)),o=o.filter(e=>e!==n)}o=o.filter(e=>!r(W(e))||(n.push(...e.keys),!1));const a=[];for(const t of e){if(null!==t.stop)continue;const e=B(t.x,t.y,z,z),l=o.find(t=>F(W(t),e));if(l||r(e)){n.push(t.key),l&&l.under++;continue}const i=a.find(t=>F(W(t),e));i?i.keys.push(t.key):a.push({keys:[t.key],stops:[],x:t.x,y:t.y,width:z,height:z,under:0})}return{groups:[...o,...a],hidden:n}}function H(e,t,n){let r=-1/0;for(const o of t){const t=Math.max(Math.abs(o.x-e.x),Math.abs(o.y-e.y));r=Math.max(r,0===t?1/0:n+Math.log2(29/t))}return r}function _(e){const t=new MutationObserver(e);return t.observe(document.documentElement,{attributes:!0,attributeFilter:n}),()=>t.disconnect()}var P=t;var I="routes",Z=["routes-road","routes-estimate"];function D(e){const t=document.createElement("span");t.style.display="none",t.style.color=e,document.body.appendChild(t);const n=getComputedStyle(t).color||"#2563eb";return t.remove(),U(n)}function U(e){const t=document.createElement("canvas").getContext("2d");if(!t)return"#2563eb";t.fillStyle="#2563eb",t.fillStyle=e,t.fillRect(0,0,1,1);const[n,r,o]=t.getImageData(0,0,1,1).data;return`rgb(${n}, ${r}, ${o})`}var G={light:"https://tiles.openfreemap.org/styles/positron",dark:"https://tiles.openfreemap.org/styles/dark"},J={center:[30,20],zoom:1},X="ring-2 ring-gray-900 ring-offset-2";var V="var(--color-gray-600, #4b5563)",Q="http://www.w3.org/2000/svg",Y=()=>window.matchMedia("(prefers-reduced-motion: reduce)").matches,ee=/^(?:\d+|[xytrblse](?:-\d+)?|solid|dashed|dotted|double|hidden|none)$/;function te(e){return e.split(/\s+/).some(e=>{const t=e.search(/[[(]/),n=t<0?e:e.slice(0,t),r=e.slice(n.lastIndexOf(":")+1);return r.startsWith("border-")&&!ee.test(r.slice(7))})}var ne=(...e)=>e.filter(Boolean).join(" ");function re(e){const t=document.createElementNS(Q,"svg");t.setAttribute("viewBox","0 0 24 24"),t.setAttribute("fill","none"),t.setAttribute("stroke","currentColor"),t.setAttribute("stroke-width","2"),t.setAttribute("aria-hidden","true");for(const n of e){const e=document.createElementNS(Q,"path");e.setAttribute("stroke-linecap","round"),e.setAttribute("stroke-linejoin","round"),e.setAttribute("d",n),t.appendChild(e)}return t}function oe(e,t){for(const[n,r]of Object.entries(t??{}))e.dataset[n]=r}var ae=(e,t)=>ne("relative grid place-items-center rounded-full cursor-pointer",t&&(null!=e.stop?"h-7 w-7":"h-6 w-6"));function le(e,t,n,r){const o=t&&!r&&null==e.stop&&!e.dot;return ne("grid place-items-center rounded-full border-2 font-semibold leading-none shadow-md transition-transform motion-reduce:transition-none",!te(e.tone)&&"border-white",e.tone,e.dot?"h-4 w-4 opacity-80":null!=e.stop?"h-7 w-7 text-xs ring-2 ring-gray-900":o?"h-8 w-8 text-xs [&_svg]:h-4 [&_svg]:w-4":"h-6 w-6 text-[10px] [&_svg]:h-3.5 [&_svg]:w-3.5",t&&(o?"ring-2 ring-gray-900 ring-offset-1":X),e.approximate&&"border-dashed opacity-80",e.faded&&!t&&"opacity-40",n&&"scale-125 opacity-100")}var ie=e=>ne("grid place-items-center border-2 px-0.5 text-xs font-semibold leading-none shadow-sm",e.stop?"h-7 min-w-7":"h-6 min-w-6",!te(e.tone??"")&&"border-white",e.tone??"bg-gray-900 text-white");function se({pins:t,selectedKey:n,focus:r,onSelect:o,ariaLabel:a,className:i="",children:p,routes:y,fitTo:b,attribution:x,marks:w,groupCrowded:k=!1,noun:N,highlightKey:$=null,picking:S=!1,onPick:E,card:O,cardMinMapWidth:T=480,fullScreen:B,initialView:F=J,cooperativeGestures:W=!1}){const K=l().map,Q=s(null),ee=s(null),te=s(null),se=s(null),de=s([]),pe=s(/* @__PURE__ */new Map),me=s(/* @__PURE__ */new Map),he=s(/* @__PURE__ */new Map),ge=s(null),fe=s(/* @__PURE__ */new Map),ye=s(""),[be,xe]=c(!1),[ve,we]=c(!1),ke=m(_,P,()=>!1)?"dark":"light",Ne=s({onSelect:o,onPick:E,picking:S,pins:t,selectedKey:n,highlightKey:$,groupCrowded:k,strings:K,noun:N});u(()=>{Ne.current={onSelect:o,onPick:E,picking:S,pins:t,selectedKey:n,highlightKey:$,groupCrowded:k,strings:K,noun:N}});const Me=d(()=>{const e=te.current,{pins:t,selectedKey:n}=Ne.current,r=n?t.find(e=>e.key===n):void 0;e&&r&&!e.getBounds().contains([r.lng,r.lat])&&e.easeTo({center:[r.lng,r.lat],duration:Y()?0:400})},[]),Ce=s(!1),Le=d((e,t)=>{const n=te.current,r=se.current;if(!n||!r)return;const o=n.getZoom();if(o>=17.5){const t=e.indexOf(Ne.current.selectedKey??"");return void Ne.current.onSelect(e[(t+1)%e.length])}const a=e.map(e=>pe.current.get(e).pin),l=new r.LngLatBounds([a[0].lng,a[0].lat],[a[0].lng,a[0].lat]);for(const e of a)l.extend([e.lng,e.lat]);const i=a.map(e=>n.project([e.lng,e.lat])),s=Math.max(...i.map((e,t)=>H(e,i.filter((e,n)=>n!==t),o))),{clientWidth:c,clientHeight:u}=n.getContainer(),d=n.cameraForBounds(l,{padding:Math.min(64,c/4,u/4)})?.zoom??18,p=document.activeElement===t;Ce.current=!0,n.once("moveend",()=>{if(Ce.current=!1,!p)return;const e=a[0].key,t=pe.current.get(e)?.button,n=t&&"none"!==t.style.display?t:[...me.current.values()].find(t=>t.keys.includes(e))?.button;n?.focus({preventScroll:!0})}),n.easeTo({center:l.getCenter(),zoom:Math.min(18,Math.max(o+1,Math.min(d,s))),duration:Y()?0:600})},[]),$e=d(()=>{const e=te.current,t=se.current;if(!e||!t||!Q.current||Ce.current&&e.isMoving())return;const{selectedKey:n,highlightKey:r,groupCrowded:o,strings:a,noun:l}=Ne.current;for(const[e,t]of pe.current){const a=le(t.pin,e===n,e===r,o);t.mark.className!==a&&(t.mark.className=a);const l=e===n?"1":"";t.button.style.zIndex!==l&&(t.button.style.zIndex=l)}let i=null;if(o){const r=e.getContainer().getBoundingClientRect(),o=[...Q.current.querySelectorAll("a[href], button, input, select, textarea, summary, [role='button'], [tabindex]:not([tabindex='-1'])")].filter(e=>!e.closest("[data-pin], [data-pin-group], .maplibregl-canvas")).map(e=>{const t=e.getBoundingClientRect(),n=e.closest("[data-map-card]")?.getBoundingClientRect()??t;return{left:Math.max(t.left,n.left)-r.left,top:Math.max(t.top,n.top)-r.top,right:Math.min(t.right,n.right)-r.left,bottom:Math.min(t.bottom,n.bottom)-r.top}}).filter(e=>e.right>e.left&&e.bottom>e.top);i=q([...pe.current.values()].map(({pin:t})=>{const n=e.project([t.lng,t.lat]);return{key:t.key,x:n.x,y:n.y,stop:t.stop??null}}),o);const s=e=>(l??a.places)(e),c=e.getZoom()<17.5?a.spread:a.cycle,u=(e,t)=>{const n=t?"":"none";e.style.display!==n&&(e.style.display=n)},d=/* @__PURE__ */new Map;for(const r of i.groups){const o=r.under>0?a.closeBy(r.under,s(r.under)):null,l=1===r.keys.length?pe.current.get(r.keys[0]):null;if(l){u(l.button,!0),l.button.setAttribute("aria-label",o?`${l.name}; ${o}`:l.name),l.button.title=o?`${l.title}\n${o}`:l.title;continue}for(const e of r.keys)u(pe.current.get(e).button,!1);const i=r.keys.join(" ");let p=me.current.get(i);if(!p){const n=document.createElement("button");n.type="button",n.dataset.pinGroup="",n.className="grid place-items-center rounded-full cursor-pointer",n.append(document.createElement("span"));const o=pe.current.get(r.keys[0]).pin,a={button:n,keys:r.keys,marker:new t.Marker({element:n,anchor:"center"}).setLngLat([o.lng,o.lat]).addTo(e)};n.addEventListener("click",e=>{e.stopPropagation(),Le(a.keys,n)}),p=a}p.keys=r.keys;const m=r.keys.map(e=>pe.current.get(e)),h=r.stops.length>0?R(r.stops):String(m.length),g=r.stops.length>0?a.stops(h):a.group(m.length,s(m.length));p.button.style.width=`${r.width}px`,p.button.style.height=`${r.height}px`,p.button.setAttribute("aria-label",`${g}: ${m.map(e=>e.pin.label).join("; ")}. ${c}${o?`; ${o}`:""}.`),p.button.title=[`${g}:`,...m.map(e=>e.title),...o?[o]:[],c].join("\n");const f=p.button.firstElementChild;f.textContent=h;const y=ne("grid place-items-center rounded-full border-2 border-gray-700 bg-white font-semibold leading-none text-gray-900 shadow-sm",r.stops.length>0?"h-7 w-full px-1 text-xs ring-2 ring-gray-900":m.every(e=>e.pin.dot)?"h-5 w-5 text-[0.6rem]":"h-6 w-6 text-[0.7rem]",null!=n&&r.keys.includes(n)&&X);f.className!==y&&(f.className=y),d.set(i,p)}for(const e of i.hidden)u(pe.current.get(e).button,!1);for(const[e,t]of me.current)d.has(e)||t.marker.remove();me.current=d}if(ge.current){const e=r&&i?i.groups.find(e=>e.keys.includes(r)&&e.keys.length>1):void 0,t=r?pe.current.get(r):void 0,n=r?he.current.get(r):void 0,o=e?{at:pe.current.get(e.keys[0]).pin,width:e.width,height:e.height}:t?{at:t.pin,width:t.button.offsetWidth||(null!=t.pin.stop?A:z),height:t.button.offsetHeight||(null!=t.pin.stop?A:z)}:n?{at:n.mark,width:n.element.offsetWidth||A,height:n.element.offsetHeight||A}:null,a=ge.current.getElement();a.style.display=o?"":"none",o&&(ge.current.setLngLat([o.at.lng,o.at.lat]),a.style.width=`${o.width+22}px`,a.style.height=`${o.height+22}px`)}},[Le]);u(()=>{if($e(),!Q.current)return;const e=new ResizeObserver(()=>$e());e.observe(Q.current);for(const t of Q.current.children)t.contains(ee.current)||e.observe(t);return()=>e.disconnect()}),u(()=>{let e=!1,t=null,n=null,r=()=>{};return(async()=>{try{const o=await j();if(e||!ee.current)return;se.current=o,t=new o.Map({container:ee.current,style:G[ke],center:F.center,zoom:F.zoom,attributionControl:x?{compact:!0,customAttribution:x}:{compact:!0},dragRotate:!1,pitchWithRotate:!1,touchPitch:!1,maxPitch:0,cooperativeGestures:"coarse"===W?window.matchMedia("(pointer: coarse)").matches:W}),t.touchZoomRotate.disableRotation(),t.keyboard.disableRotation(),t.addControl(new o.NavigationControl({showCompass:!1}),"top-right");const a=document.createElement("div");a.dataset.pinRing="",a.setAttribute("aria-hidden","true"),a.className="pointer-events-none rounded-full border-2 border-gray-900 bg-gray-900/15 shadow-[0_0_0_2px_var(--color-white,#fff)]",a.style.display="none",ge.current=new o.Marker({element:a,anchor:"center"}).setLngLat(F.center).addTo(t),t.on("click",e=>{Ne.current.picking&&Ne.current.onPick?.({lat:e.lngLat.lat,lng:e.lngLat.lng})}),t.on("move",$e),t.on("moveend",$e),t.on("resize",$e),t.on("error",e=>console.warn("[map]",e.error?.message)),r=v(ee.current.querySelector(".maplibregl-ctrl-attrib"));const l=t;n=new ResizeObserver(()=>{l.resize(),Me()}),n.observe(ee.current),te.current=t,xe(!0)}catch(t){console.error("[map] could not start",t),e||we(!0)}})(),()=>{e=!0,n?.disconnect(),r(),de.current.forEach(e=>e.remove()),de.current=[],me.current.forEach(e=>e.marker.remove()),me.current.clear(),ge.current?.remove(),ge.current=null,t?.remove(),te.current=null}},[]);const Se=s(ke);u(()=>{be&&te.current&&Se.current!==ke&&(Se.current=ke,te.current.setStyle(G[ke]))},[be,ke]),u(()=>{const e=te.current,n=se.current;if(!be||!e||!n)return;de.current.forEach(e=>e.remove()),de.current=[],me.current.forEach(e=>e.marker.remove()),me.current.clear(),pe.current.clear(),he.current.clear();for(const e of fe.current.keys())t.some(t=>t.key===e)||fe.current.delete(e);const r=Ne.current.strings;for(const o of t){const t=document.createElement("button");t.type="button",t.dataset.pin=o.key,t.className=ae(o,k);const a=o.approximate?r.approximate(o.label):o.label,l=o.title??(o.approximate?r.approximateTitle(o.label):o.label);t.setAttribute("aria-label",a),t.title=l;const i=document.createElement("span");if(oe(i,o.data),o.dot);else if(null!=o.iconNode){const e=fe.current.get(o.key);e&&i.append(e)}else o.icon?.length?i.append(re(o.icon)):i.textContent=null!=o.stop?String(o.stop):o.glyph;if(t.append(i),o.badge){const e=document.createElement("span");e.setAttribute("aria-hidden","true"),e.className=ne("absolute -right-2 -top-2 grid h-4 min-w-4 place-items-center rounded-full px-0.5 text-[9px] font-semibold leading-none shadow",o.badgeTone??"bg-white text-gray-900"),e.textContent=o.badge,t.appendChild(e)}t.addEventListener("click",e=>{e.stopPropagation(),Ne.current.onSelect(o.key)}),de.current.push(new n.Marker({element:t,anchor:"center"}).setLngLat([o.lng,o.lat]).addTo(e)),pe.current.set(o.key,{pin:o,button:t,mark:i,name:a,title:l})}for(const t of w??[]){const r=document.createElement("div");r.dataset.mapMark=t.key,oe(r,t.data),r.className=ie(t),r.textContent=t.text,r.title=t.title??t.label,r.setAttribute("role","img"),r.setAttribute("aria-label",t.label),de.current.push(new n.Marker({element:r,anchor:"center"}).setLngLat([t.lng,t.lat]).addTo(e)),he.current.set(t.key,{mark:t,element:r})}$e()},[be,t,w,k,$e]),u(()=>{be&&$e()},[be,n,$,$e]),u(()=>{if(!be||!n)return;const e=requestAnimationFrame(Me);return()=>cancelAnimationFrame(e)},[be,n,Me]),u(()=>{const e=te.current,n=se.current,r=b?[...t,...w??[]].filter(e=>b.includes(e.key)):t;if(!be||!e||!n||0===r.length)return;const o=r.map(e=>`${e.key}@${e.lat},${e.lng}`).sort().join("|");if(ye.current===o)return;const a=""===ye.current;if(ye.current=o,1===r.length)return void e.jumpTo({center:[r[0].lng,r[0].lat],zoom:13});const l=new n.LngLatBounds([r[0].lng,r[0].lat],[r[0].lng,r[0].lat]);for(const e of r)l.extend([e.lng,e.lat]);e.fitBounds(l,{padding:48,maxZoom:14,animate:!a})},[be,t,w,b]),u(()=>{const e=te.current;if(!be||!e)return;const t=(y??[]).filter(e=>e.coordinates.length>=2),n=[...new Set(t.flatMap(e=>e.attribution?[e.attribution]:[]))].join(" · "),r=()=>{const r=function(){const e=document.createElement("span");e.className="text-blue-600",e.style.display="none",document.body.appendChild(e);const t=getComputedStyle(e).color||"#2563eb";return e.remove(),U(t)}(),o={type:"FeatureCollection",features:t.map(e=>({type:"Feature",properties:{key:e.key,estimate:e.estimate,faded:!!e.faded,color:e.color?D(e.color):r},geometry:{type:"LineString",coordinates:e.coordinates}}))},a=["case",["get","faded"],.25,.85],l=["get","color"],i=e.getSource(I);if(i&&(i.attribution||"")!==n){for(const t of Z)e.getLayer(t)&&e.removeLayer(t);e.removeSource(I)}const s=e.getSource(I);s?s.setData(o):e.addSource(I,{type:"geojson",data:o,...n?{attribution:n}:{}}),e.getLayer("routes-road")||e.addLayer({id:"routes-road",type:"line",source:I,filter:["!",["get","estimate"]],layout:{"line-join":"round","line-cap":"round"},paint:{"line-color":l,"line-width":4,"line-opacity":a}}),e.getLayer("routes-estimate")||e.addLayer({id:"routes-estimate",type:"line",source:I,filter:["get","estimate"],layout:{"line-join":"round","line-cap":"round"},paint:{"line-color":l,"line-width":3,"line-dasharray":[1.5,1.5],"line-opacity":a}})},o=()=>{try{r()}catch(e){console.debug("[map] routes wait for the style",e)}};return o(),e.on("style.load",o),e.once("idle",o),()=>{e.off("style.load",o),e.off("idle",o)}},[be,y,ke]),u(()=>{const e=te.current;if(!be||!e||!r)return;const n=t.find(e=>e.key===r.key);if(!n)return;const o=e.getZoom(),a=k?H(e.project([n.lng,n.lat]),t.filter(e=>e.key!==n.key).map(t=>e.project([t.lng,t.lat])),o):-1/0,l={center:[n.lng,n.lat],zoom:Math.min(18,Math.max(o,13,a))};Y()?e.jumpTo(l):e.flyTo({...l,duration:600})},[be,r?.n]);const[Ee,je]=c(!1);u(()=>{const e=Q.current;if(!e)return;const t=()=>je(e.clientWidth<T);t();const n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[T]);const ze=n?t.find(e=>e.key===n)??null:null,Ae=ze?.key??null,Oe=ze?.lng??0,Re=ze?.lat??0,Te=be&&!Ee&&null!=O&&!!ze,[Be,Fe]=c(null);u(()=>{const e=te.current,t=se.current;if(!(Te&&e&&t&&Ae))return;const n=document.createElement("div");n.dataset.mapCard="",n.className="w-[26rem] overflow-y-auto overscroll-contain";const r=new t.Popup({anchor:"bottom",offset:M,className:"rosh-map-card",maxWidth:"none",closeButton:!1,closeOnClick:!1,closeOnMove:!1,focusAfterOpen:!1}).setLngLat([Oe,Re]).setDOMContent(n).addTo(e),o=r.getElement(),a=o.querySelector(".maplibregl-popup-content");a&&Object.assign(a.style,{padding:"0",background:"transparent",borderRadius:"0",boxShadow:"none"});const l=o.querySelector(".maplibregl-popup-tip");l&&Object.assign(l.style,{borderTopColor:V,borderBottomColor:V}),Fe(n);let i=!1,s=!1;const c=(t=!0)=>{if(s)return;if(e.isMoving())return void(i||(i=!0,e.once("moveend",()=>{i=!1,c()})));const{clientWidth:o,clientHeight:a}=e.getContainer(),l=function(e,t){const n=e.getBoundingClientRect().top,r=[...e.querySelectorAll(".maplibregl-ctrl-top-left > *, .maplibregl-ctrl-top-right > *"),...t?.querySelectorAll(":scope > [data-map-control]")??[]];let o=0;for(const e of r){const t=e.getBoundingClientRect();t.height>0&&(o=Math.max(o,t.bottom-n))}return o}(e.getContainer(),Q.current)+8,u=`${C(a,l)}px`;n.style.maxHeight!==u&&(n.style.maxHeight=u);const d=r.getElement(),p=r.getLngLat(),{anchor:m,move:h}=L(e.project(p),{width:d.offsetWidth,height:d.offsetHeight},{width:o,height:a},l);r.options.anchor!==m&&(r.options.anchor=m,r.setLngLat(p)),!t||0===h.x&&0===h.y||e.panBy([-h.x,-h.y],{duration:Y()?0:250}),$e()},u=new ResizeObserver(()=>c());u.observe(n);const d=()=>c(),p=()=>{i||c(!1)};e.on("resize",d),e.on("moveend",p);let m=!1;const h=pe.current,g=e=>{m=n.contains(e.target)};return document.addEventListener("focusin",g),()=>{if(s=!0,u.disconnect(),e.off("resize",d),e.off("moveend",p),document.removeEventListener("focusin",g),r.remove(),Fe(null),m&&(!document.activeElement||document.activeElement===document.body)){const e=h.get(Ae)?.button;e&&"none"!==e.style.display&&e.focus({preventScroll:!0})}}},[Te,Ae,Oe,Re,$e]);const We=B?.active??!1,Ke=s(B?.onChange);u(()=>{Ke.current=B?.onChange}),u(()=>{if(!B)return;const e=document.documentElement;We&&!document.fullscreenElement&&e.requestFullscreen&&e.requestFullscreen().catch(()=>{}),!We&&document.fullscreenElement&&document.exitFullscreen().catch(()=>{})},[We]);const qe=!!B;return u(()=>{if(!qe)return;const e=()=>{document.fullscreenElement||Ke.current?.(!1)};return document.addEventListener("fullscreenchange",e),()=>document.removeEventListener("fullscreenchange",e)},[qe]),/* @__PURE__ */g("div",{ref:Q,className:ne("relative min-h-72 overflow-hidden rounded-lg border border-gray-200 bg-gray-100",S&&"[&_canvas]:cursor-crosshair",i),children:[
|
|
3
|
-
/* @__PURE__ */f("div",{className:"absolute inset-0",children:/* @__PURE__ */f("div",{ref:ee,className:"h-full w-full",role:"region","aria-label":a})}),ve&&/* @__PURE__ */f("p",{className:"absolute inset-0 grid place-items-center p-6 text-center text-sm text-gray-500",children:K.failed}),B&&/* @__PURE__ */f(e,{"data-map-control":"",variant:"secondary",size:"sm",className:"absolute left-3 top-3 z-10",onClick:()=>B.onChange(!B.active),leftIcon:/* @__PURE__ */f(ue,{leave:B.active}),children:B.active?K.leaveFullScreen:K.fullScreen}),p,null!=
|
|
2
|
+
import{Button_default as e}from"../chunk-OGXU7QFW.js";import{rootIsDark as t,ROOT_THEME_ATTRIBUTES as n}from"../chunk-HZZNJHRH.js";import"../chunk-X4FJ54PP.js";import"../chunk-D65T4H6J.js";import{CollapseFallback as r,ExpandFallback as o,CloseFallback as a}from"../chunk-6LTDJKIL.js";import{useShellStrings as l}from"../chunk-TNBCUZVE.js";import"../chunk-C3QOHMR6.js";import{Icon as i}from"../chunk-XWSWYMGM.js";import{useRef as s,useState as c,useEffect as u,useCallback as d,useMemo as p,useSyncExternalStore as m}from"react";import{createPortal as h}from"react-dom";import{jsxs as g,jsx as f,Fragment as y}from"react/jsx-runtime";import{useQuery as b}from"@tanstack/react-query";var x="maplibregl-compact-show";function v(e){if(!e)return()=>{};const t=()=>!!e.classList.contains(x)&&(e.classList.remove(x),!0);if(t())return()=>{};const n=new MutationObserver(()=>{t()&&n.disconnect()});return n.observe(e,{attributes:!0,attributeFilter:["class"]}),()=>n.disconnect()}var w=20,k=12,N=480,M={center:[0,0],left:[w,0],right:[-20,0],top:[0,w],"top-left":[0,w],"top-right":[0,w],bottom:[0,-20],"bottom-left":[0,-20],"bottom-right":[0,-20]},C=(e,t=12)=>Math.max(0,Math.floor(e-t-k-w-10-16));function L(e,t,n,r=12){const o=e.y-w-r,a=n.height-e.y-w-k,l=t.height<=o||t.height>a&&o>=a,i=l?Math.max(0,t.height-o):-Math.max(0,t.height-a);let s="",c=0;return e.x-t.width/2<k?(s="-left",c=Math.max(0,k-e.x)):e.x+t.width/2>n.width-k&&(s="-right",c=-Math.max(0,e.x-(n.width-k))),{anchor:`${l?"bottom":"top"}${s}`,move:{x:c,y:i}}}var $="maplibre-gl-worker.mjs",E=e=>`/maplibre-gl/${e}/${$}`,S=null;function j(){return S??=Promise.all([import("maplibre-gl"),import("maplibre-gl/dist/maplibre-gl.css")]).then(([e])=>(e.setWorkerUrl(E(e.getVersion())),e)).catch(e=>{throw S=null,e}),S}var z=24,A=28,R=29;function T(e){const t=[...e].sort((e,t)=>e-t),n=[];for(let e=0;e<t.length;){let r=e;for(;r+1<t.length&&t[r+1]===t[r]+1;)r++;n.push(r===e?String(t[e]):`${t[e]}–${t[r]}`),e=r+1}return n.join(", ")}function O(e){const t=Math.max(A,12+8*e.length);return t+t%2}var B=(e,t,n,r)=>({left:e-n/2,top:t-r/2,right:e+n/2,bottom:t+r/2});function W(e,t){return e.left<t.right+1&&t.left<e.right+1&&e.top<t.bottom+1&&t.top<e.bottom+1}var F=e=>B(e.x,e.y,e.width,e.height);function K(e){for(let t=0;t<e.length;t++)for(let n=t+1;n<e.length;n++)if(W(F(e[t]),F(e[n])))return[e[t],e[n]];return null}function q(e,t=[]){const n=[],r=e=>t.some(t=>W(t,e));let o=e.filter(e=>null!==e.stop).sort((e,t)=>e.stop-t.stop).map(e=>({keys:[e.key],stops:[e.stop],x:e.x,y:e.y,width:A,height:A,under:0}));for(let e=K(o);e;e=K(o)){const[t,n]=e;t.keys.push(...n.keys),t.stops.push(...n.stops),t.stops.sort((e,t)=>e-t),t.width=O(T(t.stops)),o=o.filter(e=>e!==n)}o=o.filter(e=>!r(F(e))||(n.push(...e.keys),!1));const a=[];for(const t of e){if(null!==t.stop)continue;const e=B(t.x,t.y,z,z),l=o.find(t=>W(F(t),e));if(l||r(e)){n.push(t.key),l&&l.under++;continue}const i=a.find(t=>W(F(t),e));i?i.keys.push(t.key):a.push({keys:[t.key],stops:[],x:t.x,y:t.y,width:z,height:z,under:0})}return{groups:[...o,...a],hidden:n}}function _(e,t,n){let r=-1/0;for(const o of t){const t=Math.max(Math.abs(o.x-e.x),Math.abs(o.y-e.y));r=Math.max(r,0===t?1/0:n+Math.log2(29/t))}return r}function H(e){const t=new MutationObserver(e);return t.observe(document.documentElement,{attributes:!0,attributeFilter:n}),()=>t.disconnect()}var P=t;var I="routes",Z=["routes-road","routes-estimate"];function D(e){const t=document.createElement("span");t.style.display="none",t.style.color=e,document.body.appendChild(t);const n=getComputedStyle(t).color||"#2563eb";return t.remove(),G(n)}function G(e){const t=document.createElement("canvas").getContext("2d");if(!t)return"#2563eb";t.fillStyle="#2563eb",t.fillStyle=e,t.fillRect(0,0,1,1);const[n,r,o]=t.getImageData(0,0,1,1).data;return`rgb(${n}, ${r}, ${o})`}var J={light:"https://tiles.openfreemap.org/styles/positron",dark:"https://tiles.openfreemap.org/styles/dark"},U={center:[30,20],zoom:1},V="ring-2 ring-gray-900 ring-offset-2";var X="var(--color-gray-600, #4b5563)",Q="http://www.w3.org/2000/svg",Y=()=>window.matchMedia("(prefers-reduced-motion: reduce)").matches,ee=/^(?:\d+|[xytrblse](?:-\d+)?|solid|dashed|dotted|double|hidden|none)$/;function te(e){return e.split(/\s+/).some(e=>{const t=e.search(/[[(]/),n=t<0?e:e.slice(0,t),r=e.slice(n.lastIndexOf(":")+1);return r.startsWith("border-")&&!ee.test(r.slice(7))})}var ne=(...e)=>e.filter(Boolean).join(" ");function re(e){const t=document.createElementNS(Q,"svg");t.setAttribute("viewBox","0 0 24 24"),t.setAttribute("fill","none"),t.setAttribute("stroke","currentColor"),t.setAttribute("stroke-width","2"),t.setAttribute("aria-hidden","true");for(const n of e){const e=document.createElementNS(Q,"path");e.setAttribute("stroke-linecap","round"),e.setAttribute("stroke-linejoin","round"),e.setAttribute("d",n),t.appendChild(e)}return t}function oe(e,t){for(const[n,r]of Object.entries(t??{}))e.dataset[n]=r}var ae=(e,t)=>ne("relative grid place-items-center rounded-full cursor-pointer",t&&(null!=e.stop?"h-7 w-7":"h-6 w-6"));function le(e,t,n,r){const o=t&&!r&&null==e.stop&&!e.dot;return ne("grid place-items-center rounded-full border-2 font-semibold leading-none shadow-md transition-transform motion-reduce:transition-none",!te(e.tone)&&"border-white",e.tone,e.dot?"h-4 w-4 opacity-80":null!=e.stop?"h-7 w-7 text-xs ring-2 ring-gray-900":o?"h-8 w-8 text-xs [&_svg]:h-4 [&_svg]:w-4":"h-6 w-6 text-[10px] [&_svg]:h-3.5 [&_svg]:w-3.5",t&&(o?"ring-2 ring-gray-900 ring-offset-1":V),e.approximate&&"border-dashed opacity-80",e.faded&&!t&&"opacity-40",n&&"scale-125 opacity-100")}var ie=e=>ne("grid place-items-center border-2 px-0.5 text-xs font-semibold leading-none shadow-sm",e.stop?"h-7 min-w-7":"h-6 min-w-6",!te(e.tone??"")&&"border-white",e.tone??"bg-gray-900 text-white");function se({pins:t,selectedKey:n,focus:r,onSelect:o,ariaLabel:a,className:i="",children:p,routes:y,fitTo:b,attribution:x,marks:w,groupCrowded:k=!1,noun:N,highlightKey:$=null,picking:E=!1,onPick:S,card:R,cardMinMapWidth:O=480,fullScreen:B,initialView:W=U,cooperativeGestures:F=!1}){const K=l().map,Q=s(null),ee=s(null),te=s(null),se=s(null),de=s([]),pe=s(/* @__PURE__ */new Map),me=s(/* @__PURE__ */new Map),he=s(/* @__PURE__ */new Map),ge=s(null),fe=s(/* @__PURE__ */new Map),ye=s(""),[be,xe]=c(!1),[ve,we]=c(!1),ke=m(H,P,()=>!1)?"dark":"light",Ne=s({onSelect:o,onPick:S,picking:E,pins:t,selectedKey:n,highlightKey:$,groupCrowded:k,strings:K,noun:N});u(()=>{Ne.current={onSelect:o,onPick:S,picking:E,pins:t,selectedKey:n,highlightKey:$,groupCrowded:k,strings:K,noun:N}});const Me=d(()=>{const e=te.current,{pins:t,selectedKey:n}=Ne.current,r=n?t.find(e=>e.key===n):void 0;e&&r&&!e.getBounds().contains([r.lng,r.lat])&&e.easeTo({center:[r.lng,r.lat],duration:Y()?0:400})},[]),Ce=s(!1),Le=d((e,t)=>{const n=te.current,r=se.current;if(!n||!r)return;const o=n.getZoom();if(o>=17.5){const t=e.indexOf(Ne.current.selectedKey??"");return void Ne.current.onSelect(e[(t+1)%e.length])}const a=e.map(e=>pe.current.get(e).pin),l=new r.LngLatBounds([a[0].lng,a[0].lat],[a[0].lng,a[0].lat]);for(const e of a)l.extend([e.lng,e.lat]);const i=a.map(e=>n.project([e.lng,e.lat])),s=Math.max(...i.map((e,t)=>_(e,i.filter((e,n)=>n!==t),o))),{clientWidth:c,clientHeight:u}=n.getContainer(),d=n.cameraForBounds(l,{padding:Math.min(64,c/4,u/4)})?.zoom??18,p=document.activeElement===t;Ce.current=!0,n.once("moveend",()=>{if(Ce.current=!1,!p)return;const e=a[0].key,t=pe.current.get(e)?.button,n=t&&"none"!==t.style.display?t:[...me.current.values()].find(t=>t.keys.includes(e))?.button;n?.focus({preventScroll:!0})}),n.easeTo({center:l.getCenter(),zoom:Math.min(18,Math.max(o+1,Math.min(d,s))),duration:Y()?0:600})},[]),$e=d(()=>{const e=te.current,t=se.current;if(!e||!t||!Q.current||Ce.current&&e.isMoving())return;const{selectedKey:n,highlightKey:r,groupCrowded:o,strings:a,noun:l}=Ne.current;for(const[e,t]of pe.current){const a=le(t.pin,e===n,e===r,o);t.mark.className!==a&&(t.mark.className=a);const l=e===n?"1":"";t.button.style.zIndex!==l&&(t.button.style.zIndex=l)}let i=null;if(o){const r=e.getContainer().getBoundingClientRect(),o=[...Q.current.querySelectorAll("a[href], button, input, select, textarea, summary, [role='button'], [tabindex]:not([tabindex='-1'])")].filter(e=>!e.closest("[data-pin], [data-pin-group], .maplibregl-canvas")).map(e=>{const t=e.getBoundingClientRect(),n=e.closest("[data-map-card]")?.getBoundingClientRect()??t;return{left:Math.max(t.left,n.left)-r.left,top:Math.max(t.top,n.top)-r.top,right:Math.min(t.right,n.right)-r.left,bottom:Math.min(t.bottom,n.bottom)-r.top}}).filter(e=>e.right>e.left&&e.bottom>e.top);i=q([...pe.current.values()].map(({pin:t})=>{const n=e.project([t.lng,t.lat]);return{key:t.key,x:n.x,y:n.y,stop:t.stop??null}}),o);const s=e=>(l??a.places)(e),c=e.getZoom()<17.5?a.spread:a.cycle,u=(e,t)=>{const n=t?"":"none";e.style.display!==n&&(e.style.display=n)},d=/* @__PURE__ */new Map;for(const r of i.groups){const o=r.under>0?a.closeBy(r.under,s(r.under)):null,l=1===r.keys.length?pe.current.get(r.keys[0]):null;if(l){u(l.button,!0),l.button.setAttribute("aria-label",o?`${l.name}; ${o}`:l.name),l.button.title=o?`${l.title}\n${o}`:l.title;continue}for(const e of r.keys)u(pe.current.get(e).button,!1);const i=r.keys.join(" ");let p=me.current.get(i);if(!p){const n=document.createElement("button");n.type="button",n.dataset.pinGroup="",n.className="grid place-items-center rounded-full cursor-pointer",n.append(document.createElement("span"));const o=pe.current.get(r.keys[0]).pin,a={button:n,keys:r.keys,marker:new t.Marker({element:n,anchor:"center"}).setLngLat([o.lng,o.lat]).addTo(e)};n.addEventListener("click",e=>{e.stopPropagation(),Le(a.keys,n)}),p=a}p.keys=r.keys;const m=r.keys.map(e=>pe.current.get(e)),h=r.stops.length>0?T(r.stops):String(m.length),g=r.stops.length>0?a.stops(h):a.group(m.length,s(m.length));p.button.style.width=`${r.width}px`,p.button.style.height=`${r.height}px`,p.button.setAttribute("aria-label",`${g}: ${m.map(e=>e.pin.label).join("; ")}. ${c}${o?`; ${o}`:""}.`),p.button.title=[`${g}:`,...m.map(e=>e.title),...o?[o]:[],c].join("\n");const f=p.button.firstElementChild;f.textContent=h;const y=ne("grid place-items-center rounded-full border-2 border-gray-700 bg-white font-semibold leading-none text-gray-900 shadow-sm",r.stops.length>0?"h-7 w-full px-1 text-xs ring-2 ring-gray-900":m.every(e=>e.pin.dot)?"h-5 w-5 text-[0.6rem]":"h-6 w-6 text-[0.7rem]",null!=n&&r.keys.includes(n)&&V);f.className!==y&&(f.className=y),d.set(i,p)}for(const e of i.hidden)u(pe.current.get(e).button,!1);for(const[e,t]of me.current)d.has(e)||t.marker.remove();me.current=d}if(ge.current){const e=r&&i?i.groups.find(e=>e.keys.includes(r)&&e.keys.length>1):void 0,t=r?pe.current.get(r):void 0,n=r?he.current.get(r):void 0,o=e?{at:pe.current.get(e.keys[0]).pin,width:e.width,height:e.height}:t?{at:t.pin,width:t.button.offsetWidth||(null!=t.pin.stop?A:z),height:t.button.offsetHeight||(null!=t.pin.stop?A:z)}:n?{at:n.mark,width:n.element.offsetWidth||A,height:n.element.offsetHeight||A}:null,a=ge.current.getElement();a.style.display=o?"":"none",o&&(ge.current.setLngLat([o.at.lng,o.at.lat]),a.style.width=`${o.width+22}px`,a.style.height=`${o.height+22}px`)}},[Le]);u(()=>{if($e(),!Q.current)return;const e=new ResizeObserver(()=>$e());e.observe(Q.current);for(const t of Q.current.children)t.contains(ee.current)||e.observe(t);return()=>e.disconnect()}),u(()=>{let e=!1,t=null,n=null,r=()=>{};return(async()=>{try{const o=await j();if(e||!ee.current)return;se.current=o,t=new o.Map({container:ee.current,style:J[ke],center:W.center,zoom:W.zoom,attributionControl:x?{compact:!0,customAttribution:x}:{compact:!0},dragRotate:!1,pitchWithRotate:!1,touchPitch:!1,maxPitch:0,cooperativeGestures:"coarse"===F?window.matchMedia("(pointer: coarse)").matches:F}),t.touchZoomRotate.disableRotation(),t.keyboard.disableRotation(),t.addControl(new o.NavigationControl({showCompass:!1}),"top-right");const a=document.createElement("div");a.dataset.pinRing="",a.setAttribute("aria-hidden","true"),a.className="pointer-events-none rounded-full border-2 border-gray-900 bg-gray-900/15 shadow-[0_0_0_2px_var(--color-white,#fff)]",a.style.display="none",ge.current=new o.Marker({element:a,anchor:"center"}).setLngLat(W.center).addTo(t),t.on("click",e=>{Ne.current.picking&&Ne.current.onPick?.({lat:e.lngLat.lat,lng:e.lngLat.lng})}),t.on("move",$e),t.on("moveend",$e),t.on("resize",$e),t.on("error",e=>console.warn("[map]",e.error?.message)),r=v(ee.current.querySelector(".maplibregl-ctrl-attrib"));const l=t;n=new ResizeObserver(()=>{l.resize(),Me()}),n.observe(ee.current),te.current=t,xe(!0)}catch(t){console.error("[map] could not start",t),e||we(!0)}})(),()=>{e=!0,n?.disconnect(),r(),de.current.forEach(e=>e.remove()),de.current=[],me.current.forEach(e=>e.marker.remove()),me.current.clear(),ge.current?.remove(),ge.current=null,t?.remove(),te.current=null}},[]);const Ee=s(ke);u(()=>{be&&te.current&&Ee.current!==ke&&(Ee.current=ke,te.current.setStyle(J[ke]))},[be,ke]),u(()=>{const e=te.current,n=se.current;if(!be||!e||!n)return;de.current.forEach(e=>e.remove()),de.current=[],me.current.forEach(e=>e.marker.remove()),me.current.clear(),pe.current.clear(),he.current.clear();for(const e of fe.current.keys())t.some(t=>t.key===e)||fe.current.delete(e);const r=Ne.current.strings;for(const o of t){const t=document.createElement("button");t.type="button",t.dataset.pin=o.key,t.className=ae(o,k);const a=o.approximate?r.approximate(o.label):o.label,l=o.title??(o.approximate?r.approximateTitle(o.label):o.label);t.setAttribute("aria-label",a),t.title=l;const i=document.createElement("span");if(oe(i,o.data),o.dot);else if(null!=o.iconNode){const e=fe.current.get(o.key);e&&i.append(e)}else o.icon?.length?i.append(re(o.icon)):i.textContent=null!=o.stop?String(o.stop):o.glyph;if(t.append(i),o.badge){const e=document.createElement("span");e.setAttribute("aria-hidden","true"),e.className=ne("absolute -right-2 -top-2 grid h-4 min-w-4 place-items-center rounded-full px-0.5 text-[9px] font-semibold leading-none shadow",o.badgeTone??"bg-white text-gray-900"),e.textContent=o.badge,t.appendChild(e)}t.addEventListener("click",e=>{e.stopPropagation(),Ne.current.onSelect(o.key)}),de.current.push(new n.Marker({element:t,anchor:"center"}).setLngLat([o.lng,o.lat]).addTo(e)),pe.current.set(o.key,{pin:o,button:t,mark:i,name:a,title:l})}for(const t of w??[]){const r=document.createElement("div");r.dataset.mapMark=t.key,oe(r,t.data),r.className=ie(t),r.textContent=t.text,r.title=t.title??t.label,r.setAttribute("role","img"),r.setAttribute("aria-label",t.label),de.current.push(new n.Marker({element:r,anchor:"center"}).setLngLat([t.lng,t.lat]).addTo(e)),he.current.set(t.key,{mark:t,element:r})}$e()},[be,t,w,k,$e]),u(()=>{be&&$e()},[be,n,$,$e]),u(()=>{if(!be||!n)return;const e=requestAnimationFrame(Me);return()=>cancelAnimationFrame(e)},[be,n,Me]),u(()=>{const e=te.current,n=se.current,r=b?[...t,...w??[]].filter(e=>b.includes(e.key)):t;if(!be||!e||!n||0===r.length)return;const o=r.map(e=>`${e.key}@${e.lat},${e.lng}`).sort().join("|");if(ye.current===o)return;const a=""===ye.current;if(ye.current=o,1===r.length)return void e.jumpTo({center:[r[0].lng,r[0].lat],zoom:13});const l=new n.LngLatBounds([r[0].lng,r[0].lat],[r[0].lng,r[0].lat]);for(const e of r)l.extend([e.lng,e.lat]);e.fitBounds(l,{padding:48,maxZoom:14,animate:!a})},[be,t,w,b]),u(()=>{const e=te.current;if(!be||!e)return;const t=(y??[]).filter(e=>e.coordinates.length>=2),n=[...new Set(t.flatMap(e=>e.attribution?[e.attribution]:[]))].join(" · "),r=()=>{const r=function(){const e=document.createElement("span");e.className="text-blue-600",e.style.display="none",document.body.appendChild(e);const t=getComputedStyle(e).color||"#2563eb";return e.remove(),G(t)}(),o={type:"FeatureCollection",features:t.map(e=>({type:"Feature",properties:{key:e.key,estimate:e.estimate,faded:!!e.faded,color:e.color?D(e.color):r},geometry:{type:"LineString",coordinates:e.coordinates}}))},a=["case",["get","faded"],.25,.85],l=["get","color"],i=e.getSource(I);if(i&&(i.attribution||"")!==n){for(const t of Z)e.getLayer(t)&&e.removeLayer(t);e.removeSource(I)}const s=e.getSource(I);s?s.setData(o):e.addSource(I,{type:"geojson",data:o,...n?{attribution:n}:{}}),e.getLayer("routes-road")||e.addLayer({id:"routes-road",type:"line",source:I,filter:["!",["get","estimate"]],layout:{"line-join":"round","line-cap":"round"},paint:{"line-color":l,"line-width":4,"line-opacity":a}}),e.getLayer("routes-estimate")||e.addLayer({id:"routes-estimate",type:"line",source:I,filter:["get","estimate"],layout:{"line-join":"round","line-cap":"round"},paint:{"line-color":l,"line-width":3,"line-dasharray":[1.5,1.5],"line-opacity":a}})},o=()=>{try{r()}catch(e){console.debug("[map] routes wait for the style",e)}};return o(),e.on("style.load",o),e.once("idle",o),()=>{e.off("style.load",o),e.off("idle",o)}},[be,y,ke]),u(()=>{const e=te.current;if(!be||!e||!r)return;const n=t.find(e=>e.key===r.key);if(!n)return;const o=e.getZoom(),a=k?_(e.project([n.lng,n.lat]),t.filter(e=>e.key!==n.key).map(t=>e.project([t.lng,t.lat])),o):-1/0,l={center:[n.lng,n.lat],zoom:Math.min(18,Math.max(o,13,a))};Y()?e.jumpTo(l):e.flyTo({...l,duration:600})},[be,r?.n]);const[Se,je]=c(!1);u(()=>{const e=Q.current;if(!e)return;const t=()=>je(e.clientWidth<O);t();const n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[O]);const ze=n?t.find(e=>e.key===n)??null:null,Ae=ze?.key??null,Re=ze?.lng??0,Te=ze?.lat??0,Oe=be&&!Se&&null!=R&&!!ze,[Be,We]=c(null);u(()=>{const e=te.current,t=se.current;if(!(Oe&&e&&t&&Ae))return;const n=document.createElement("div");n.dataset.mapCard="",n.className="w-[26rem] overflow-y-auto overscroll-contain";const r=new t.Popup({anchor:"bottom",offset:M,className:"rosh-map-card",maxWidth:"none",closeButton:!1,closeOnClick:!1,closeOnMove:!1,focusAfterOpen:!1}).setLngLat([Re,Te]).setDOMContent(n).addTo(e),o=r.getElement(),a=o.querySelector(".maplibregl-popup-content");a&&Object.assign(a.style,{padding:"0",background:"transparent",borderRadius:"0",boxShadow:"none"});const l=o.querySelector(".maplibregl-popup-tip");l&&Object.assign(l.style,{borderTopColor:X,borderBottomColor:X}),We(n);let i=!1,s=!1;const c=(t=!0)=>{if(s)return;if(e.isMoving())return void(i||(i=!0,e.once("moveend",()=>{i=!1,c()})));const{clientWidth:o,clientHeight:a}=e.getContainer(),l=function(e,t){const n=e.getBoundingClientRect().top,r=[...e.querySelectorAll(".maplibregl-ctrl-top-left > *, .maplibregl-ctrl-top-right > *"),...t?.querySelectorAll(":scope > [data-map-control]")??[]];let o=0;for(const e of r){const t=e.getBoundingClientRect();t.height>0&&(o=Math.max(o,t.bottom-n))}return o}(e.getContainer(),Q.current)+8,u=`${C(a,l)}px`;n.style.maxHeight!==u&&(n.style.maxHeight=u);const d=r.getElement(),p=r.getLngLat(),{anchor:m,move:h}=L(e.project(p),{width:d.offsetWidth,height:d.offsetHeight},{width:o,height:a},l);r.options.anchor!==m&&(r.options.anchor=m,r.setLngLat(p)),!t||0===h.x&&0===h.y||e.panBy([-h.x,-h.y],{duration:Y()?0:250}),$e()},u=new ResizeObserver(()=>c());u.observe(n);const d=()=>c(),p=()=>{i||c(!1)};e.on("resize",d),e.on("moveend",p);let m=!1;const h=pe.current,g=e=>{m=n.contains(e.target)};return document.addEventListener("focusin",g),()=>{if(s=!0,u.disconnect(),e.off("resize",d),e.off("moveend",p),document.removeEventListener("focusin",g),r.remove(),We(null),m&&(!document.activeElement||document.activeElement===document.body)){const e=h.get(Ae)?.button;e&&"none"!==e.style.display&&e.focus({preventScroll:!0})}}},[Oe,Ae,Re,Te,$e]);const Fe=B?.active??!1,Ke=s(B?.onChange);u(()=>{Ke.current=B?.onChange}),u(()=>{if(!B)return;const e=document.documentElement;Fe&&!document.fullscreenElement&&e.requestFullscreen&&e.requestFullscreen().catch(()=>{}),!Fe&&document.fullscreenElement&&document.exitFullscreen().catch(()=>{})},[Fe]);const qe=!!B;return u(()=>{if(!qe)return;const e=()=>{document.fullscreenElement||Ke.current?.(!1)};return document.addEventListener("fullscreenchange",e),()=>document.removeEventListener("fullscreenchange",e)},[qe]),/* @__PURE__ */g("div",{ref:Q,className:ne("relative min-h-72 overflow-hidden rounded-lg border border-gray-200 bg-gray-100",E&&"[&_canvas]:cursor-crosshair",i),children:[
|
|
3
|
+
/* @__PURE__ */f("div",{className:"absolute inset-0",children:/* @__PURE__ */f("div",{ref:ee,className:"h-full w-full",role:"region","aria-label":a})}),ve&&/* @__PURE__ */f("p",{className:"absolute inset-0 grid place-items-center p-6 text-center text-sm text-gray-500",children:K.failed}),B&&/* @__PURE__ */f(e,{"data-map-control":"",variant:"secondary",size:"sm",className:"absolute left-3 top-3 z-10",onClick:()=>B.onChange(!B.active),leftIcon:/* @__PURE__ */f(ue,{leave:B.active}),children:B.active?K.leaveFullScreen:K.fullScreen}),p,null!=R&&!Oe&&/* @__PURE__ */f("div",{"data-map-card":"",className:"absolute bottom-3 left-3 right-3 z-10 max-h-[calc(100%-1.5rem)] max-w-md overflow-y-auto overscroll-contain",children:R}),Oe&&Be?h(R,Be):null,be&&/* @__PURE__ */f(ce,{pins:t,hosts:fe.current})]})}function ce({pins:e,hosts:t}){/* @__PURE__ */
|
|
4
4
|
return f(y,{children:e.map(e=>{if(null==e.iconNode||e.dot)return null;let n=t.get(e.key);return n||(n=document.createElement("span"),n.className="contents",t.set(e.key,n)),h(e.iconNode,n,e.key)})})}function ue({leave:e}){/* @__PURE__ */
|
|
5
|
-
return f(i,e?{name:"collapse",fallback:r,"aria-hidden":"true",className:"h-4 w-4",strokeWidth:2}:{name:"expand",fallback:o,"aria-hidden":"true",className:"h-4 w-4",strokeWidth:2})}function de(){const[e,t]=c(null);return{highlightKey:e,pointAt:d(e=>{const n=()=>t(e),r=()=>t(t=>t===e?null:t);return{onMouseEnter:n,onMouseLeave:r,onFocus:n,onBlur:r}},[])}}var pe=3e3,me=e=>!!e?.pending&&3e3,he=e=>`${e.kind}:${e.id}`,ge=e=>("located"===e.placement||"approximate"===e.placement)&&null!=e.lat&&null!=e.lng;function fe(e){switch(e){case"located":return null;case"approximate":return"Approximate: only the suburb or postcode matched";case"pending":return"Locating…";case"not_found":return"Not on the map: address not found";case"failed":return"Not on the map: the map service could not be reached";case"no_address":return"Not on the map: no city or postcode"}}var ye={importer:{label:"Importer",tone:"bg-sky-600 text-white"},dealer:{label:"Dealer",tone:"bg-purple-600 text-white"},retail:{label:"Retail",tone:"bg-green-600 text-white"},supplier:{label:"Supplier",tone:"bg-sky-600 text-white"},delivery_location:{label:"Delivery location",tone:"bg-amber-600 text-white"},warehouse:{label:"Warehouse",tone:"bg-amber-600 text-white"}},be=["importer","dealer","retail","supplier","delivery_location","warehouse"];function xe(e){return"supplier"===e.kind?"supplier":"customer"===e.kind?e.category||"importer":e.kind}var ve=(e,t=ye)=>t[e]?.tone??"bg-gray-700 text-white",we=(e,t=ye)=>t[e]?.label??e,ke=(e,t)=>ve(xe(e),t);function Ne(e,t,n=ye){return null!=t?String(t):(n[xe(e)]?.label??"").charAt(0).toUpperCase()}var Me=["delivery_location","warehouse"];function Ce(e,t=Me){const n=/* @__PURE__ */new Map;let r=0;for(const o of e)t.includes(o.kind)&&n.set(he(o),++r);return n}function Le(e){const t={onMap:0,approximate:0,pending:0,off:0};for(const n of e)ge(n)?(t.onMap+=1,"approximate"===n.placement&&(t.approximate+=1)):"pending"===n.placement?t.pending+=1:t.off+=1;return t}function $e(e){const t=[`${e.onMap} on the map`];return e.approximate&&t.push(`${e.approximate} approximate`),e.pending&&t.push(`${e.pending} locating`),e.off&&t.push(`${e.off} not on the map`),t.join(" · ")}function
|
|
5
|
+
return f(i,e?{name:"collapse",fallback:r,"aria-hidden":"true",className:"h-4 w-4",strokeWidth:2}:{name:"expand",fallback:o,"aria-hidden":"true",className:"h-4 w-4",strokeWidth:2})}function de(){const[e,t]=c(null);return{highlightKey:e,pointAt:d(e=>{const n=()=>t(e),r=()=>t(t=>t===e?null:t);return{onMouseEnter:n,onMouseLeave:r,onFocus:n,onBlur:r}},[])}}var pe=3e3,me=e=>!!e?.pending&&3e3,he=e=>`${e.kind}:${e.id}`,ge=e=>("located"===e.placement||"approximate"===e.placement)&&null!=e.lat&&null!=e.lng;function fe(e){switch(e){case"located":return null;case"approximate":return"Approximate: only the suburb or postcode matched";case"pending":return"Locating…";case"not_found":return"Not on the map: address not found";case"failed":return"Not on the map: the map service could not be reached";case"no_address":return"Not on the map: no city or postcode"}}var ye={importer:{label:"Importer",tone:"bg-sky-600 text-white"},dealer:{label:"Dealer",tone:"bg-purple-600 text-white"},retail:{label:"Retail",tone:"bg-green-600 text-white"},supplier:{label:"Supplier",tone:"bg-sky-600 text-white"},delivery_location:{label:"Delivery location",tone:"bg-amber-600 text-white"},warehouse:{label:"Warehouse",tone:"bg-amber-600 text-white"}},be=["importer","dealer","retail","supplier","delivery_location","warehouse"];function xe(e){return"supplier"===e.kind?"supplier":"customer"===e.kind?e.category||"importer":e.kind}var ve=(e,t=ye)=>t[e]?.tone??"bg-gray-700 text-white",we=(e,t=ye)=>t[e]?.label??e,ke=(e,t)=>ve(xe(e),t);function Ne(e,t,n=ye){return null!=t?String(t):(n[xe(e)]?.label??"").charAt(0).toUpperCase()}var Me=["delivery_location","warehouse"];function Ce(e,t=Me){const n=/* @__PURE__ */new Map;let r=0;for(const o of e)t.includes(o.kind)&&n.set(he(o),++r);return n}function Le(e){const t={onMap:0,approximate:0,pending:0,off:0};for(const n of e)ge(n)?(t.onMap+=1,"approximate"===n.placement&&(t.approximate+=1)):"pending"===n.placement?t.pending+=1:t.off+=1;return t}function $e(e){const t=[`${e.onMap} on the map`];return e.approximate&&t.push(`${e.approximate} approximate`),e.pending&&t.push(`${e.pending} locating`),e.off&&t.push(`${e.off} not on the map`),t.join(" · ")}function Ee(e){const t=[...new Set(e.filter(ge).map(xe))];return[...be.filter(e=>t.includes(e)),...t.filter(e=>!be.includes(e))]}function Se(e,t){return e.filter(e=>!ge(e)&&"pending"!==e.placement).map(e=>{const n=t?.get(he(e)),r=fe(e.placement)?.replace(/^Not on the map: /,"")??"";return{key:he(e),text:`${null!=n?`${n}. `:""}${e.label}: ${r}`}})}function je({categories:e,palette:t=ye,floating:n=!0}){return e.length<2?null:/* @__PURE__ */f("div",{className:(n?"absolute left-3 top-3 z-10 ":"")+"flex flex-wrap gap-x-3 gap-y-1 rounded-lg border border-gray-200 bg-white px-2.5 py-1.5 text-xs text-gray-600 shadow-sm",children:e.map(e=>/* @__PURE__ */g("span",{className:"inline-flex items-center gap-1.5",children:[
|
|
6
6
|
/* @__PURE__ */f("span",{"aria-hidden":!0,className:`h-2.5 w-2.5 rounded-full ${ve(e,t)}`}),we(e,t)]},e))})}function ze({point:t,number:n,onOpen:r,onClose:o,palette:s=ye}){const c=fe(t.placement),u=xe(t),d=l().map;/* @__PURE__ */
|
|
7
7
|
return g("section",{"aria-label":d.chosen(t.label),className:"absolute bottom-3 left-3 right-3 z-10 max-w-md space-y-1.5 rounded-lg border border-gray-200 bg-white p-3 shadow-md",children:[
|
|
8
8
|
/* @__PURE__ */g("div",{className:"flex items-start justify-between gap-2",children:[
|
|
@@ -10,7 +10,7 @@ return g("section",{"aria-label":d.chosen(t.label),className:"absolute bottom-3
|
|
|
10
10
|
/* @__PURE__ */g("h3",{className:"text-sm font-semibold text-gray-900 [overflow-wrap:anywhere]",children:[null!=n&&/* @__PURE__ */g("span",{className:"mr-1 text-gray-400",children:[n,"."]}),t.label,t.code&&/* @__PURE__ */f("span",{className:"ml-1.5 text-xs font-normal text-gray-400",children:t.code})]}),
|
|
11
11
|
/* @__PURE__ */f("p",{className:"text-xs text-gray-500",children:s[u]?we(u,s):t.category})]}),
|
|
12
12
|
/* @__PURE__ */f("button",{type:"button",onClick:o,"aria-label":d.closeCard,className:"rounded p-0.5 text-gray-400 hover:text-gray-600",children:/* @__PURE__ */f(i,{name:"close",fallback:a,"aria-hidden":!0,className:"h-4 w-4",strokeWidth:2})})]}),
|
|
13
|
-
/* @__PURE__ */f("p",{className:"text-sm text-gray-700 [overflow-wrap:anywhere]",children:t.address||"—"}),c&&/* @__PURE__ */f("p",{className:"text-xs text-gray-500",children:c}),t.matched&&"approximate"===t.placement&&/* @__PURE__ */g("p",{className:"text-xs text-gray-400 [overflow-wrap:anywhere]",children:["Placed at: ",t.matched]}),r&&/* @__PURE__ */f("div",{className:"flex justify-end",children:/* @__PURE__ */f(e,{variant:"secondary",size:"sm",onClick:r,children:d.openRecord})})]})}function Ae(e,t,{staleTime:n}={}){return b({queryKey:e,queryFn:t,staleTime:n,refetchInterval:e=>me(e.state.data)})}function
|
|
13
|
+
/* @__PURE__ */f("p",{className:"text-sm text-gray-700 [overflow-wrap:anywhere]",children:t.address||"—"}),c&&/* @__PURE__ */f("p",{className:"text-xs text-gray-500",children:c}),t.matched&&"approximate"===t.placement&&/* @__PURE__ */g("p",{className:"text-xs text-gray-400 [overflow-wrap:anywhere]",children:["Placed at: ",t.matched]}),r&&/* @__PURE__ */f("div",{className:"flex justify-end",children:/* @__PURE__ */f(e,{variant:"secondary",size:"sm",onClick:r,children:d.openRecord})})]})}function Ae(e,t,{staleTime:n}={}){return b({queryKey:e,queryFn:t,staleTime:n,refetchInterval:e=>me(e.state.data)})}function Re({queryKey:e,queryFn:t,refreshSignal:n,onOpen:r,ariaLabel:o,title:a="Locations",palette:l=ye,numbers:i,className:d="",mapClassName:m="min-h-[240px] flex-1"}){const{data:h,isError:y,refetch:b}=Ae(e,t,{staleTime:0}),x=s(!1);u(()=>{x.current?b():x.current=!0},[n]);const[v,w]=c(null),k=p(()=>h?.points??[],[h]),N=p(()=>i??Ce(k),[i,k]),M=p(()=>k.filter(ge).map(e=>({key:he(e),label:e.label,lat:e.lat,lng:e.lng,glyph:Ne(e,N.get(he(e))??null,l),tone:ke(e,l),approximate:"approximate"===e.placement})),[k,N,l]),C=p(()=>Se(k,N),[k,N]),L=p(()=>Ee(k),[k]),$=h?.pending??0,E=k.find(e=>he(e)===v)??null,S=E&&r?r(E):null;/* @__PURE__ */
|
|
14
14
|
return g("section",{"aria-label":a,className:`flex min-w-0 flex-col ${d}`,children:[
|
|
15
15
|
/* @__PURE__ */g("div",{className:"flex min-h-[30px] items-center justify-between mb-2",children:[
|
|
16
16
|
/* @__PURE__ */f("h3",{className:"text-sm font-semibold text-gray-900",children:a}),h&&/* @__PURE__ */f("span",{className:"text-xs text-gray-500",children:$e(Le(k))})]}),
|
|
@@ -20,4 +20,4 @@ return g("section",{"aria-label":a,className:`flex min-w-0 flex-col ${d}`,childr
|
|
|
20
20
|
/* @__PURE__ */f("button",{type:"button",onClick:()=>{b()},className:"font-medium text-blue-600 hover:text-blue-800 hover:underline",children:"Try again"})]}),!y&&($>0||C.length>0)&&/* @__PURE__ */g("div",{className:"max-w-full space-y-0.5 rounded-lg border border-gray-200 bg-white px-2.5 py-1.5 text-xs shadow-sm","aria-live":"polite",children:[$>0&&/* @__PURE__ */g("p",{className:"flex items-center gap-1.5 text-gray-500",children:[
|
|
21
21
|
/* @__PURE__ */g("svg",{className:"h-3 w-3 animate-spin",fill:"none",viewBox:"0 0 24 24",children:[
|
|
22
22
|
/* @__PURE__ */f("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),
|
|
23
|
-
/* @__PURE__ */f("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8v4a4 4 0 00-4 4H4z"})]}),"Locating ",$," address",1===$?"":"es","…"]}),C.slice(0,3).map(e=>/* @__PURE__ */f("p",{className:"truncate text-amber-700",title:e.text,children:e.text},e.key)),C.length>3&&/* @__PURE__ */g("p",{className:"text-gray-500",children:["+",C.length-3," more not on the map"]})]})]}),
|
|
23
|
+
/* @__PURE__ */f("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8v4a4 4 0 00-4 4H4z"})]}),"Locating ",$," address",1===$?"":"es","…"]}),C.slice(0,3).map(e=>/* @__PURE__ */f("p",{className:"truncate text-amber-700",title:e.text,children:e.text},e.key)),C.length>3&&/* @__PURE__ */g("p",{className:"text-gray-500",children:["+",C.length-3," more not on the map"]})]})]}),E&&/* @__PURE__ */f(ze,{point:E,number:N.get(he(E))??null,onOpen:S,onClose:()=>w(null),palette:l})]})]})}export{N as CARD_MIN_MAP_WIDTH,x as COMPACT_SHOW,se as EntityMap,Re as LocationsMap,$ as MAPLIBRE_WORKER_FILE,R as MAP_APART_PX,ye as MAP_CATEGORIES,A as MAP_STOP_PX,z as MAP_TARGET_PX,je as MapLegend,pe as PENDING_POLL_MS,Me as SECONDARY_KINDS,ze as SelectedCard,C as cardMaxHeight,we as categoryLabel,ve as categoryTone,v as foldAttributionOnce,ge as isOnMap,q as layoutPins,Ee as legendCategories,j as loadMapLibre,Ce as locationNumbers,E as mapLibreWorkerUrl,me as mapPointsRefetchInterval,Se as offMapNotes,xe as pinCategory,Ne as pinGlyph,ke as pinTone,L as placeCard,fe as placementNote,he as pointKey,T as stopsLabel,Le as summarize,$e as summaryText,de as useMapHighlight,Ae as useMapPoints,_ as zoomApart};
|
package/dist/markdown/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{useBrowserLayoutEffect as e}from"../chunk-D65T4H6J.js";import{CameraFallback as t}from"../chunk-
|
|
2
|
+
import{useBrowserLayoutEffect as e}from"../chunk-D65T4H6J.js";import{CameraFallback as t}from"../chunk-6LTDJKIL.js";import{Icon as r}from"../chunk-XWSWYMGM.js";import{memo as a,useRef as o,useState as s,useMemo as l}from"react";import m from"react-markdown";import n from"remark-breaks";import d from"remark-gfm";import{jsx as c,jsxs as i}from"react/jsx-runtime";function b(){const e=this.data();(e.micromarkExtensions??=[]).push({disable:{null:["codeIndented","htmlFlow","htmlText","setextUnderline"]}})}var x={note:[d,n,b],article:[d,b]},g=({node:e,...t})=>/* @__PURE__ */c("a",{...t,target:"_blank",rel:"noopener noreferrer",className:"text-blue-600 hover:underline break-all"}),h=({node:e,...t})=>/* @__PURE__ */c("code",{className:"rounded bg-gray-200 px-1 py-0.5 font-mono text-[0.85em] text-gray-800",...t}),y=e=>({node:t,...r})=>/* @__PURE__ */c("pre",{className:`${e} overflow-x-auto rounded-lg border border-gray-200 bg-gray-50 font-mono text-xs [&>code]:bg-transparent [&>code]:p-0 [&>code]:[font-size:inherit]`,...r}),p={th:({node:e,...t})=>/* @__PURE__ */c("th",{className:"border border-gray-200 bg-gray-50 px-2 py-1 text-left font-semibold text-gray-700",...t}),td:({node:e,...t})=>/* @__PURE__ */c("td",{className:"border border-gray-200 px-2 py-1 align-top",...t})},f={a:g,h1:({node:e,...t})=>/* @__PURE__ */c("h1",{className:"text-base font-semibold text-gray-900",...t}),h2:({node:e,...t})=>/* @__PURE__ */c("h2",{className:"text-sm font-semibold text-gray-900",...t}),h3:({node:e,...t})=>/* @__PURE__ */c("h3",{className:"text-sm font-semibold text-gray-700",...t}),h4:({node:e,...t})=>/* @__PURE__ */c("h4",{className:"text-sm font-semibold text-gray-700",...t}),h5:({node:e,...t})=>/* @__PURE__ */c("h5",{className:"text-sm font-semibold text-gray-700",...t}),h6:({node:e,...t})=>/* @__PURE__ */c("h6",{className:"text-sm font-semibold text-gray-700",...t}),ul:({node:e,...t})=>/* @__PURE__ */c("ul",{className:"list-disc pl-5",...t}),ol:({node:e,...t})=>/* @__PURE__ */c("ol",{className:"list-decimal pl-5",...t}),code:h,pre:y("p-2"),blockquote:({node:e,...t})=>/* @__PURE__ */c("blockquote",{className:"border-l-2 border-gray-300 pl-2.5 text-gray-600",...t}),hr:({node:e,...t})=>/* @__PURE__ */c("hr",{className:"border-gray-200",...t}),table:({node:e,...t})=>/* @__PURE__ */c("div",{className:"overflow-x-auto",children:/* @__PURE__ */c("table",{className:"text-xs border-collapse",...t})}),...p,img:({node:e,alt:t,...r})=>/* @__PURE__ */c("img",{...r,alt:t??"",loading:"lazy",className:"max-w-full max-h-64 rounded-lg border border-gray-200"})};function u(e){return e?{...f,img:({node:t,src:r,alt:a,...o})=>{const s="string"==typeof r?r:void 0;/* @__PURE__ */
|
|
3
3
|
return c("img",{...o,src:s?e(s):s,alt:a??"",loading:"lazy",className:"max-w-full max-h-64 rounded-lg border border-gray-200"})}}:f}function N({src:e,alt:a}){const[o,l]=s(!1),m=(a??"").replace(/^screenshot:\s*/i,"");return!e||o?/* @__PURE__ */i("span",{className:"my-3 flex items-start gap-2 rounded-lg border border-dashed border-gray-300 bg-gray-50 px-3 py-2.5",children:[
|
|
4
4
|
/* @__PURE__ */c(r,{name:"camera",fallback:t,className:"mt-0.5 h-4 w-4 shrink-0 text-gray-400","aria-hidden":"true"}),
|
|
5
5
|
/* @__PURE__ */c("span",{className:"text-xs text-gray-500",children:m||"Screenshot"})]}):/* @__PURE__ */c("img",{src:e,alt:a??"",loading:"lazy",onError:()=>l(!0),className:"my-3 block max-w-full rounded-lg border border-gray-200"})}function k(e){return{a:g,h1:({node:e,...t})=>/* @__PURE__ */c("h1",{className:"mt-6 mb-3 text-xl font-semibold text-gray-900 first:mt-0",...t}),h2:({node:e,...t})=>/* @__PURE__ */c("h2",{className:"mt-6 mb-2.5 border-b border-gray-200 pb-1.5 text-lg font-semibold text-gray-900 first:mt-0",...t}),h3:({node:e,...t})=>/* @__PURE__ */c("h3",{className:"mt-5 mb-2 text-base font-semibold text-gray-900 first:mt-0",...t}),h4:({node:e,...t})=>/* @__PURE__ */c("h4",{className:"mt-4 mb-1.5 text-sm font-semibold text-gray-900 first:mt-0",...t}),h5:({node:e,...t})=>/* @__PURE__ */c("h5",{className:"mt-4 mb-1.5 text-sm font-semibold text-gray-700 first:mt-0",...t}),h6:({node:e,...t})=>/* @__PURE__ */c("h6",{className:"mt-4 mb-1.5 text-sm font-semibold text-gray-700 first:mt-0",...t}),p:({node:e,...t})=>/* @__PURE__ */c("p",{className:"my-2.5 leading-relaxed",...t}),ul:({node:e,...t})=>/* @__PURE__ */c("ul",{className:"my-2.5 list-disc space-y-1 pl-5",...t}),ol:({node:e,...t})=>/* @__PURE__ */c("ol",{className:"my-2.5 list-decimal space-y-1 pl-5",...t}),li:({node:e,...t})=>/* @__PURE__ */c("li",{className:"leading-relaxed [&>p]:my-1",...t}),code:h,pre:y("my-3 p-3"),blockquote:({node:e,...t})=>/* @__PURE__ */c("blockquote",{className:"my-3 rounded-r-lg border-l-4 border-blue-400/60 bg-blue-50 px-3 py-2 text-gray-700 [&>p]:my-1",...t}),hr:({node:e,...t})=>/* @__PURE__ */c("hr",{className:"my-4 border-gray-200",...t}),table:({node:e,...t})=>/* @__PURE__ */c("div",{className:"my-3 overflow-x-auto",children:/* @__PURE__ */c("table",{className:"border-collapse text-sm",...t})}),...p,img:({node:t,src:r,alt:a})=>{const o="string"==typeof r?r:void 0;/* @__PURE__ */
|
package/dist/page-tabs/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{TabStrip as e}from"../chunk-
|
|
3
|
-
return v(K.Provider,{value:le,children:e})}var
|
|
4
|
-
return v("div",{ref:y,role:c?"tabpanel":void 0,id:c,"aria-labelledby":a,hidden:!t,style:t?void 0:{display:"none"},className:l,"data-page-tab":e,children:/* @__PURE__ */v(F.Provider,{value:p,children:/* @__PURE__ */v(
|
|
5
|
-
return v("div",{className:t,children:e(r)}
|
|
6
|
-
return v(e,{tabs:a.map(e=>({key:e.key,title:e.title,pinned:e.pinned,dirty:s.dirty.includes(e.key),copy:l.copies[e.key],icon:f(
|
|
2
|
+
import{TabStrip as e}from"../chunk-JEM73E4C.js";import{useShellLanguage as t}from"../chunk-GG7AE6OC.js";import"../chunk-HRLPFUPB.js";import{confirm as n}from"../chunk-ZUCYJAQH.js";import"../chunk-RMJZOKHY.js";import"../chunk-AFYQTVZO.js";import"../chunk-HZZNJHRH.js";import"../chunk-X4FJ54PP.js";import{useBrowserLayoutEffect as r}from"../chunk-D65T4H6J.js";import"../chunk-6LTDJKIL.js";import{useShellStrings as i}from"../chunk-TNBCUZVE.js";import"../chunk-C3QOHMR6.js";import"../chunk-XWSWYMGM.js";import*as l from"react";import{createContext as c,memo as a,useRef as s,useEffect as o,useMemo as u,useId as y,useCallback as d,useReducer as f,useState as p,useContext as k}from"react";import{useLocation as m,useNavigate as b}from"react-router-dom";import{jsx as v,Fragment as h,jsxs as g}from"react/jsx-runtime";var K=c(null),F=c(null),T=12;var M=(e,t)=>e.filter(e=>e!==t);function N(e,t){return[...t.map(t=>e.find(e=>e.key===t)).filter(e=>Boolean(e)),...e.filter(e=>!t.includes(e.key))]}function A(e,t,n=12){const r=e.clock+1;let i;i=e.tabs.find(e=>e.key===t.key)?e.tabs.map(e=>e.key===t.key?{...e,path:t.path,title:"page"===e.titleFrom?e.title:t.title||e.title,lastActive:r}:e):[...e.tabs,{key:t.key,path:t.path,title:t.title,titleFrom:"route",pinned:!1,lastActive:r}];let l={...e,tabs:i,activeKey:t.key,mounted:(c=e.mounted,a=t.key,c.includes(a)?c:[...c,a]),clock:r};var c,a;return l.closing&&l.closing!==t.key?l=j(l,l.closing):l.closing===t.key&&(l={...l,closing:null}),function(e,t){let n=e;for(;n.tabs.length>t;){const e=n.tabs.filter(e=>!e.pinned&&e.key!==n.activeKey&&!n.dirty.includes(e.key)&&e.key!==n.closing).sort((e,t)=>e.lastActive-t.lastActive);if(0===e.length)break;n=j(n,e[0].key)}return n}(l,n)}function C(e){let t={...e,activeKey:null};return t.closing&&(t=j(t,t.closing)),t}function j(e,t){return{...e,tabs:e.tabs.filter(e=>e.key!==t),mounted:M(e.mounted,t),dirty:M(e.dirty,t),activeKey:e.activeKey===t?null:e.activeKey,closing:e.closing===t?null:e.closing}}function w(e,t){switch(t.type){case"visit":return A(e,t.entry,t.maxTabs);case"transient":return C(e);case"close":{let n=e;for(const e of t.keys)n=j(n,e);return t.closing?function(e,t){return{...e,closing:t}}(n,t.closing):n}case"title":return function(e,t,n){const r=e.tabs.find(e=>e.key===t);return!r||!n||r.title===n&&"page"===r.titleFrom?e:{...e,tabs:e.tabs.map(e=>e.key===t?{...e,title:n,titleFrom:"page"}:e)}}(e,t.key,t.title);case"dirty":return function(e,t,n){return n===e.dirty.includes(t)?e:{...e,dirty:n?[...e.dirty,t]:M(e.dirty,t)}}(e,t.key,t.dirty)}}var I=e=>`${e.pathname}${e.search}`;function O(e){const t=e.indexOf("#"),n=t>=0?e.slice(t):"",r=t>=0?e.slice(0,t):e,i=r.indexOf("?");return{pathname:i>=0?r.slice(0,i):r,search:i>=0?r.slice(i):"",hash:n}}function L({children:e,resolve:l,pinned:c=[],storageKey:a,maxTabs:k=12,enabled:h=!0,confirmDiscard:g}){const F=m(),T=b(),M=i().pageTabs,j=y(),L=s(l);L.current=l;const x=d(e=>{const t=L.current(e);return t?{key:t.key??e.pathname,path:I(e),title:t.title}:null},[]),{language:E}=t(),[J,H]=f(w,void 0,()=>{const e=function(e,t,n){if(!e)return[];let r;try{r=JSON.parse(e)}catch{return[]}const i=r;if(!i||1!==i.v||!Array.isArray(i.tabs))return[];const l=Boolean(n&&"string"==typeof i.lang&&i.lang!==n),c=[];for(const e of i.tabs){if(!e||"string"!=typeof e.path||!e.path.startsWith("/")||e.path.startsWith("//"))continue;const n=e.path.indexOf("#"),r=n>=0?e.path.slice(0,n):e.path,i=t(r);if(!i||c.some(e=>e.key===i.key))continue;const a=!l&&"page"===e.titleFrom&&"string"==typeof e.title&&e.title;c.push({key:i.key,path:r,title:a||i.title,titleFrom:a?"page":"route",pinned:!1,lastActive:0})}return c}(function(e){if(!e)return null;try{return localStorage.getItem(e)}catch{return null}}(a),e=>x(O(e)),E);let t=function(e,t){const n=t.map(e=>e.key);let r=e.tabs.map(e=>({...e,pinned:n.includes(e.key)}));for(const e of t)r.some(t=>t.key===e.key)||(r=[...r,{key:e.key,path:e.path,title:e.title,titleFrom:"route",pinned:!0,lastActive:0}]);return{...e,tabs:N(r,n)}}({tabs:[],activeKey:null,mounted:[],dirty:[],closing:null,clock:0,tabs:e},c.map(e=>x(O(e))).filter(e=>Boolean(e)));const n=h?x(F):null;return t=n?A(t,n,k):C(t),t}),R=s(J);R.current=J;const S=s(/* @__PURE__ */new Map),$=h?x(F):null,B=$?.key??null;r(()=>{if(!h)return;const e=x(F);e?(S.current.set(e.key,F),H({type:"visit",entry:e,maxTabs:k})):H({type:"transient"})},[F,h,k,x]),o(()=>{const e=new Set(J.tabs.map(e=>e.key));for(const t of S.current.keys())e.has(t)||S.current.delete(t)},[J.tabs]);const D=u(()=>function(e,t){const n={v:1,...t?{lang:t}:{},tabs:e.tabs.filter(t=>t.key!==e.closing).map(({key:e,path:t,title:n,titleFrom:r})=>({key:e,path:t,title:n,titleFrom:r}))};return JSON.stringify(n)}(J,E),[J,E]);o(()=>{if(a)try{localStorage.setItem(a,D)}catch{}},[D,a]);const P=J.dirty.length>0;o(()=>{if(!P)return;const e=e=>{e.preventDefault(),e.returnValue=""};return window.addEventListener("beforeunload",e),()=>window.removeEventListener("beforeunload",e)},[P]);const Z=s(/* @__PURE__ */new Map),W=d((e,t)=>{let n=Z.current.get(e);return void 0===n&&(n=Z.current.size,Z.current.set(e,n)),`${j}-page-${t}-${n}`},[j]),Y=d(e=>g?g(e):n({title:M.discardTitle,message:1===e.length?M.discardOne:M.discardCount?.(e.length)??`${e.length} ${M.discardMany}`,confirmLabel:M.discardConfirm,cancelLabel:M.keepEditing,variant:"warning"}),[g,M]),G=d(()=>{const e=R.current;return e.tabs.find(e=>e.pinned)?.path??"/"},[]),Q=d((e,t,n)=>{const r=R.current,i=r.activeKey;if(!i||!e.includes(i))return void H({type:"close",keys:e,closing:null});let l=t;if(!l){const t={...r,tabs:r.tabs.filter(t=>t.key===i||!e.includes(t.key))},c=n?r.tabs.find(t=>t.key===n&&!e.includes(t.key)):void 0;l=(c??function(e,t){const n=e.tabs.filter(n=>n.key!==e.closing||n.key===t),r=n.findIndex(e=>e.key===t);return r<0?null:n[r+1]??n[r-1]??null}(t,i))?.path??G()}H({type:"close",keys:e.filter(e=>e!==i),closing:i}),T(l)},[T,G]),U=d(async(e,t={})=>{const n=R.current.tabs.find(t=>t.key===e);return!n||n.pinned?(t.to&&T(t.to),!1):!(!t.force&&R.current.dirty.includes(e)&&!await Y([n]))&&(!!R.current.tabs.some(t=>t.key===e)&&(Q([e],t.to),!0))},[Y,Q,T]),V=d(async(e,t)=>{let n=function(e,t,n){const r=e.tabs.filter(e=>!e.pinned);if("all"===t)return r.map(e=>e.key);if("others"===t)return r.filter(e=>e.key!==n).map(e=>e.key);const i=e.tabs.findIndex(e=>e.key===n);return i<0?[]:e.tabs.slice(i+1).filter(e=>!e.pinned).map(e=>e.key)}(R.current,e,t);const r=R.current.tabs.filter(e=>n.includes(e.key)&&R.current.dirty.includes(e.key));r.length&&!await Y(r)&&(n=n.filter(e=>!r.some(t=>t.key===e)));const i=new Set(R.current.tabs.map(e=>e.key));n=n.filter(e=>i.has(e)),n.length&&Q(n,void 0,"all"===e?null:t)},[Y,Q]),X=d(e=>{const t=R.current.tabs.find(t=>t.key===e);t&&e!==R.current.activeKey&&T(t.path)},[T]),z=d((e,t)=>H({type:"title",key:e,title:t}),[]),q=d((e,t)=>H({type:"dirty",key:e,dirty:t}),[]),[_,ee]=p({}),te=d((e,t)=>{ee(n=>{if((n[e]??null)===t)return n;const r={...n};return t?r[e]=t:delete r[e],r})},[]),ne=d(e=>x(e)?.key??null,[x]),re=d(e=>S.current.get(e),[]),ie=u(()=>h?J.tabs.filter(e=>e.key!==J.closing):[],[h,J.tabs,J.closing]),le=u(()=>({enabled:h,state:J,currentKey:B,resolve:l,keyFor:ne,locationFor:re,idFor:W,activate:X,close:U,closeMany:V,setTitle:z,setDirty:q,copies:_,setCopy:te,visibleTabs:ie}),[h,J,B,l,ne,re,W,X,U,V,z,q,_,te,ie]);/* @__PURE__ */
|
|
3
|
+
return v(K.Provider,{value:le,children:e})}var x=l.Activity,E=Boolean(x);function J({active:e,children:t}){return x?/* @__PURE__ */v(x,{mode:e?"visible":"hidden",children:t}):/* @__PURE__ */v(h,{children:t})}var H=a(function({tabKey:e,active:t,location:n,render:i,className:l,panelId:c,tabId:a}){const y=s(null),d=s(t),f=s(/* @__PURE__ */new Map);r(()=>{const e=d.current;if(d.current=t,t&&!e)for(const[e,[t,n]]of f.current)e.isConnected?(e.scrollTop=t,e.scrollLeft=n):f.current.delete(e)},[t]),o(()=>{const e=y.current;if(!e)return;const t=e=>{if(!d.current)return;const t=e.target;t&&"number"==typeof t.scrollTop&&f.current.set(t,[t.scrollTop,t.scrollLeft])};return e.addEventListener("scroll",t,!0),()=>e.removeEventListener("scroll",t,!0)},[]);const p=u(()=>({key:e,activeRef:d}),[e]);/* @__PURE__ */
|
|
4
|
+
return v("div",{ref:y,role:c?"tabpanel":void 0,id:c,"aria-labelledby":a,hidden:!t,style:t?void 0:{display:"none"},className:l,"data-page-tab":e,children:/* @__PURE__ */v(F.Provider,{value:p,children:/* @__PURE__ */v(J,{active:t,children:i(n)})})})},(e,t)=>e.active===t.active&&e.location===t.location&&e.className===t.className&&e.panelId===t.panelId&&e.tabId===t.tabId&&(!t.active||e.render===t.render)),R="\0transient";function S({children:e,frameClassName:t}){const n=k(K),r=m();if(!n||!n.enabled)/* @__PURE__ */
|
|
5
|
+
return v("div",{className:t,children:e(r)},R);const{state:i,currentKey:l,locationFor:c,idFor:a}=n,s=i.tabs.filter(e=>i.mounted.includes(e.key)).map(e=>e.key);return l&&!s.includes(l)&&s.push(l),/* @__PURE__ */g(h,{children:[s.map(n=>{const i=n===l,s=i?r:c(n);return s?/* @__PURE__ */v(H,{tabKey:n,active:i,location:s,render:e,className:t,panelId:a(n,"panel"),tabId:a(n,"tab")},n):null}),!l&&/* @__PURE__ */v(H,{tabKey:R,active:!0,location:r,render:e,className:t},R)]})}function $({className:t,activeClassName:n,end:r}){const l=k(K),c=i().pageTabs;if(!l||!l.enabled)return null;const{visibleTabs:a,state:s,idFor:o,activate:u,close:y,closeMany:d,resolve:f}=l;/* @__PURE__ */
|
|
6
|
+
return v(e,{tabs:a.map(e=>({key:e.key,title:e.title,pinned:e.pinned,dirty:s.dirty.includes(e.key),copy:l.copies[e.key],icon:f(O(e.path))?.icon})),activeKey:l.currentKey??null,idFor:o,panelMounted:e=>s.mounted.includes(e),onActivate:u,onClose:e=>{y(e)},onCloseMany:(e,t)=>{d(e,t)},label:c.label,className:t,activeClassName:n,end:r})}var B={enabled:!1,tabs:[],activeKey:null,activate:()=>{},close:async()=>!1,closeOthers:async()=>{},closeRight:async()=>{},closeAll:async()=>{}};function D(){const e=k(K);return e&&e.enabled?{enabled:!0,tabs:e.visibleTabs,activeKey:e.currentKey,activate:e.activate,close:e.close,closeOthers:t=>e.closeMany("others",t),closeRight:t=>e.closeMany("right",t),closeAll:()=>e.closeMany("all",null)}:B}function P(){const e=k(K),t=k(F),n=b();return{key:e?.enabled&&t?t.key:null,close:d(async(r={})=>e?.enabled&&t&&e.state.tabs.some(e=>e.key===t.key)?e.close(t.key,r):(r.to&&n(r.to),!1),[e,t,n])}}function Z(e){const t=k(K),n=k(F),r=t?.enabled?t.setTitle:void 0,i=n?.key;o(()=>{r&&i&&e&&r(i,e)},[r,i,e])}function W(e){const t=k(K),n=k(F),r=t?.enabled?t.setCopy:void 0,i=n?.key;o(()=>{if(r&&i)return r(i,e||null),()=>r(i,null)},[r,i,e])}function Y(e){const t=k(K),n=k(F),r=t?.enabled?t.setDirty:void 0;o(()=>{if(r&&n)return r(n.key,e),()=>{n.activeRef.current&&r(n.key,!1)}},[r,n,e])}export{T as DEFAULT_MAX_TABS,E as PAGE_TABS_PAUSE_HIDDEN,$ as PageTabBar,S as PageTabsOutlet,L as PageTabsProvider,O as parseTabPath,P as usePageTab,W as usePageTabCopy,Y as usePageTabDirty,Z as usePageTabTitle,D as usePageTabs};
|
package/dist/pdf/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{lazy as r}from"react";var e=r(()=>import("../PdfViewer-
|
|
2
|
+
import{lazy as r}from"react";var e=r(()=>import("../PdfViewer-KW5B44AX.js"));export{e as PdfViewer};
|
|
@@ -7,9 +7,10 @@ import { ComponentType, SVGProps } from 'react';
|
|
|
7
7
|
* Harness UI-24: every icon comes through the shell. A component asks for an
|
|
8
8
|
* icon by what it MEANS (`<Icon name="trash" />`), and the registry answers
|
|
9
9
|
* with the drawing the active set has for that meaning. The sets themselves are
|
|
10
|
-
* separate subpaths (`efficient-shell/icons/
|
|
11
|
-
* `…/efficient
|
|
12
|
-
*
|
|
10
|
+
* separate subpaths (`efficient-shell/icons/efficient`, its other looks in
|
|
11
|
+
* `…/efficient-looks`, and the deprecated `…/heroicons` and `…/lucide`), so a
|
|
12
|
+
* host bundles only the ones it registers, and the icon packages behind the
|
|
13
|
+
* deprecated two stay optional peers.
|
|
13
14
|
*
|
|
14
15
|
* This module is the one piece of state every entry shares. It imports nothing
|
|
15
16
|
* at run time, not even React, so the kit can reach it without gaining a peer
|
|
@@ -25,6 +26,12 @@ interface IconSet {
|
|
|
25
26
|
label: string;
|
|
26
27
|
/** Meaning to drawing. A set need not draw every meaning. */
|
|
27
28
|
icons: Readonly<Record<string, IconDrawing>>;
|
|
29
|
+
/**
|
|
30
|
+
* The set's other looks of a meaning, by look: `{ solid: { trash: … } }`.
|
|
31
|
+
* `<Icon name="trash" look="solid" />` draws it; a meaning without that look
|
|
32
|
+
* draws its default. Registered with the set, or later under the same name.
|
|
33
|
+
*/
|
|
34
|
+
looks?: Readonly<Record<string, Readonly<Record<string, IconDrawing>>>>;
|
|
28
35
|
}
|
|
29
36
|
/** For `useSyncExternalStore`: called whenever a set, a drawing or the choice changes. */
|
|
30
37
|
declare function subscribeIcons(listener: () => void): () => void;
|
|
@@ -65,7 +72,10 @@ declare function iconSets(): {
|
|
|
65
72
|
* The drawing for a meaning. The active set first; then the default set, so a
|
|
66
73
|
* set that draws only some meanings never leaves a hole; then any set that has
|
|
67
74
|
* it, which is where an editor's own glyphs are found whatever the theme chose.
|
|
75
|
+
*
|
|
76
|
+
* With a `look` (`'solid'`), that look is looked for first in the same order;
|
|
77
|
+
* a meaning no set draws in that look gets its default drawing, never nothing.
|
|
68
78
|
*/
|
|
69
|
-
declare function resolveIcon(name: string): IconDrawing | undefined;
|
|
79
|
+
declare function resolveIcon(name: string, look?: string): IconDrawing | undefined;
|
|
70
80
|
|
|
71
81
|
export { type IconSet as I, type IconDrawing as a, activeIconSet as b, iconsVersion as c, registerIcons as d, resolveIcon as e, setIconSet as f, subscribeIcons as g, iconSets as i, registerIconSet as r, setDefaultIconSet as s };
|
|
@@ -443,6 +443,32 @@ interface ShellStrings {
|
|
|
443
443
|
/** A hidden chip's hover label. */
|
|
444
444
|
hiddenHint: string;
|
|
445
445
|
};
|
|
446
|
+
/** `CornersInput` — the Corners row's radius box. The corner names are the
|
|
447
|
+
* host's, as the caller wrote them. */
|
|
448
|
+
corners: {
|
|
449
|
+
/** The radius box's accessible name, when the host gives none. */
|
|
450
|
+
radius: string;
|
|
451
|
+
/** The unit drawn inside the radius box. */
|
|
452
|
+
unit: string;
|
|
453
|
+
/** The short mark drawn before the radius number ("R"). Silent: the box
|
|
454
|
+
* is named by `radius`, never by this. */
|
|
455
|
+
radiusMark: string;
|
|
456
|
+
};
|
|
457
|
+
/** `WidthsBar`. Columns arrive counted from 1; shares as whole percentages. */
|
|
458
|
+
widths: {
|
|
459
|
+
/** A column's typed box: "Column 2". */
|
|
460
|
+
column: (column: number) => string;
|
|
461
|
+
/** A handle's accessible name: "Divider between column 1 and column 2". */
|
|
462
|
+
divider: (left: number, right: number) => string;
|
|
463
|
+
/** What a handle announces: "Column 1 50%, column 2 25%". */
|
|
464
|
+
dividerValue: (left: number, leftShare: number, right: number, rightShare: number) => string;
|
|
465
|
+
/** A handle's tooltip. */
|
|
466
|
+
dragHint: string;
|
|
467
|
+
/** Under the boxes: the last column fills itself, and the floor. */
|
|
468
|
+
hint: (last: number, min: number) => string;
|
|
469
|
+
/** The button that clears the widths back to equal. */
|
|
470
|
+
reset: string;
|
|
471
|
+
};
|
|
446
472
|
/** `ColorPicker`, `ColorPickerPanel` and `ColorSwatch`. The label arrives
|
|
447
473
|
* as the caller wrote it; a colour arrives as the hex that is printed. */
|
|
448
474
|
color: {
|
|
@@ -474,6 +500,41 @@ interface ShellStrings {
|
|
|
474
500
|
/** Shown instead of the picture while there is none. */
|
|
475
501
|
noImage: string;
|
|
476
502
|
};
|
|
503
|
+
/** `LinkPicker`, its window and `TextLinkField`. The kinds, their targets,
|
|
504
|
+
* hints and filters are the host's; these are the part's own words. A
|
|
505
|
+
* label arrives as the caller wrote it; an address as it is saved. */
|
|
506
|
+
link: {
|
|
507
|
+
/** The Link type list's accessible name. */
|
|
508
|
+
linkType: string;
|
|
509
|
+
/** The typed address box's accessible name. */
|
|
510
|
+
address: string;
|
|
511
|
+
/** What the empty address box says. */
|
|
512
|
+
addressPlaceholder: string;
|
|
513
|
+
/** Why a typed address cannot be saved. */
|
|
514
|
+
unsafe: string;
|
|
515
|
+
/** A saved target, filter or value the host no longer offers: "/gone (unavailable)". */
|
|
516
|
+
unavailable: (value: string) => string;
|
|
517
|
+
/** The Filter box's accessible name. */
|
|
518
|
+
filter: string;
|
|
519
|
+
/** The Filter box's first option: the listing with no filter. */
|
|
520
|
+
noFilter: string;
|
|
521
|
+
/** The Value box's accessible name. */
|
|
522
|
+
value: string;
|
|
523
|
+
/** Under the boxes while a Filter is offered. */
|
|
524
|
+
filterHint: string;
|
|
525
|
+
/** The window's name, and the word over its boxes. */
|
|
526
|
+
title: string;
|
|
527
|
+
apply: string;
|
|
528
|
+
cancel: string;
|
|
529
|
+
/** Takes the link off; the words stay. */
|
|
530
|
+
remove: string;
|
|
531
|
+
/** `TextLinkField`'s link row while there is no link. */
|
|
532
|
+
addLink: string;
|
|
533
|
+
/** `TextLinkField`'s text box: "Button text". */
|
|
534
|
+
text: (label: string) => string;
|
|
535
|
+
/** `TextLinkField`'s link row: "Button link: /wheels", or with no link "Button link: none". */
|
|
536
|
+
linkOf: (label: string, url: string) => string;
|
|
537
|
+
};
|
|
477
538
|
/** `TreeEmptySlot`, a draggable `TreeRow`'s grip and `TreeSeam`. */
|
|
478
539
|
tree: {
|
|
479
540
|
/** What an empty list says at rest. */
|