book-index-ui 0.55.0 → 0.55.1
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/dist/index.cjs +2 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.js +3 -1
- package/dist/storage.d.ts +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -675,7 +675,7 @@ button.bim-rd-pg:hover { border-color: ${r("accent")}; }
|
|
|
675
675
|
}
|
|
676
676
|
`;function oo(e,n){var i;return n?e.key===n?!0:!!((i=e.children)!=null&&i.some(o=>oo(o,n))):!1}const Ym=()=>t.jsx("svg",{width:"10",height:"10",viewBox:"0 0 10 10","aria-hidden":"true",children:t.jsx("path",{d:"M3 1.5 6.5 5 3 8.5",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})});function qm({item:e,activeKey:n,onSelect:i,tabKey:o}){const s=oo(e,n),[a,l]=g.useState(s||!!e.defaultExpanded);return g.useEffect(()=>{s&&l(!0)},[s]),g.useEffect(()=>{e.defaultExpanded&&l(!0)},[e.defaultExpanded]),t.jsxs("li",{children:[t.jsxs("button",{type:"button",className:"bim-rd-ti bim-rd-ti-group","aria-expanded":a,"data-rd-toc-key":e.key,tabIndex:o===e.key?0:-1,onClick:()=>l(d=>!d),children:[t.jsx(Ym,{}),t.jsx("span",{children:e.label}),e.hint!=null&&t.jsx("span",{className:"bim-rd-hint",children:e.hint})]}),a&&t.jsx(Wl,{items:e.children,activeKey:n,onSelect:i,tabKey:o})]})}function Wl({items:e,activeKey:n,onSelect:i,tabKey:o}){return t.jsx("ul",{children:e.map(s=>s.children&&s.children.length>0?t.jsx(qm,{item:s,activeKey:n,onSelect:i,tabKey:o},s.key):t.jsx("li",{children:t.jsxs("button",{type:"button",className:"bim-rd-ti","aria-current":s.key===n?"true":void 0,disabled:s.disabled,"data-rd-toc-key":s.key,tabIndex:o===s.key?0:-1,onClick:()=>i(s.key),children:[t.jsx("span",{children:s.label}),s.hint!=null&&t.jsx("span",{className:"bim-rd-hint",children:s.hint})]})},s.key))})}function Fs(e,n){var i;for(const o of e)if(o.key===n||oo(o,n))return o.key;return((i=e[0])==null?void 0:i.key)??null}function Fl({items:e,activeKey:n,onSelect:i,label:o}){const{t:s}=ne(),a=o??s("reader.toc"),l=g.useRef(null),[d,c]=g.useState(null);g.useEffect(()=>{c(null)},[n]);const p=g.useMemo(()=>d||(n??Fs(e,n)),[d,n,e]);g.useEffect(()=>{const u=l.current;if(!u)return;const m=Array.from(u.querySelectorAll("[data-rd-toc-key]"));if(m.length===0)return;const f=m.find(x=>x.dataset.rdTocKey===p)??m.find(x=>x.dataset.rdTocKey===Fs(e,n))??m.find(x=>!x.disabled)??m[0];for(const x of m)x.tabIndex=x===f?0:-1}),g.useEffect(()=>{const u=l.current,m=u==null?void 0:u.closest(".bim-rd-toc");if(!u||!m||!n)return;const f=Array.from(u.querySelectorAll("[data-rd-toc-key]")).find(v=>v.dataset.rdTocKey===n);if(!f)return;const x=f.getBoundingClientRect().top-m.getBoundingClientRect().top+m.scrollTop;(x<m.scrollTop+80||x>m.scrollTop+m.clientHeight-40)&&(m.scrollTop=Math.max(0,x-m.clientHeight/3))},[n]);const h=g.useCallback(u=>{if(!["ArrowDown","ArrowUp","Home","End"].includes(u.key))return;const f=l.current;if(!f)return;const x=Array.from(f.querySelectorAll("[data-rd-toc-key]")).filter(b=>!b.disabled),v=x.indexOf(document.activeElement);let y=v;if(u.key==="ArrowDown"?y=Math.min(x.length-1,v+1):u.key==="ArrowUp"?y=Math.max(0,v-1):u.key==="Home"?y=0:u.key==="End"&&(y=x.length-1),y<0||y===v)return;u.preventDefault();const $=x[y];for(const b of x)b.tabIndex=-1;$.tabIndex=0,$.focus(),c($.dataset.rdTocKey??null)},[]);return t.jsx("div",{ref:l,role:"navigation","aria-label":a,onKeyDown:h,children:t.jsx(Wl,{items:e,activeKey:n,onSelect:i,tabKey:p})})}function Hs({page:e,crop:n}){var i;return!((i=e.boxes)!=null&&i.length)||!e.width||!e.height||e.boxFormat&&e.boxFormat!=="bim-charbox-v0"?null:t.jsx("svg",{viewBox:n?`${n.x} ${n.y} ${n.w} ${n.h}`:`0 0 ${e.width} ${e.height}`,preserveAspectRatio:"none","aria-hidden":"true",children:e.boxes.map((o,s)=>t.jsx("rect",{x:o.x,y:o.y,width:o.w,height:o.h,fill:"none",stroke:r("accent"),strokeOpacity:.55,vectorEffect:"non-scaling-stroke",strokeWidth:1},s))})}function Km(e){const{boxes:n,width:i,height:o}=e;if(!(n!=null&&n.length)||!i||!o||e.boxFormat&&e.boxFormat!=="bim-charbox-v0")return null;let s=1/0,a=1/0,l=-1/0,d=-1/0;for(const f of n)[f.x,f.y,f.w,f.h].every(Number.isFinite)&&(s=Math.min(s,f.x),a=Math.min(a,f.y),l=Math.max(l,f.x+f.w),d=Math.max(d,f.y+f.h));if(!(l>s)||!(d>a))return null;const c=Math.min(i,o)*.03,p=Math.min(i,Math.max(0,s-c)),h=Math.min(o,Math.max(0,a-c)),u=Math.min(i,Math.max(0,l+c))-p,m=Math.min(o,Math.max(0,d+c))-h;return!(u>0)||!(m>0)||u>=i*.98&&m>=o*.98?null:{x:p,y:h,w:u,h:m}}function _r({pages:e,loading:n,page:i,onPageChange:o,renderOverlay:s,preserveMargins:a=!0}){const{t:l}=ne(),[d,c]=g.useState(0),p=i??d,h=v=>{o?o(v):c(v)};if(g.useEffect(()=>{i===void 0&&c(0)},[e,i]),n)return t.jsx("div",{className:"bim-rd-img-box",children:t.jsx("div",{className:"bim-rd-img-empty",children:l("reader.imagesLoading")})});if(!e||e.length===0)return t.jsx("div",{className:"bim-rd-img-box",children:t.jsxs("div",{className:"bim-rd-img-empty",children:[t.jsx("div",{className:"bim-rd-img-frame","aria-hidden":"true"}),t.jsx("b",{children:l("reader.noImages")}),t.jsx("span",{children:l("reader.noImagesHint")})]})});const u=Math.max(0,Math.min(e.length-1,p)),m=e[u],f=m.label??`${u+1}`,x=!a&&!s?Km(m):null;return t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"bim-rd-img-box",children:x?t.jsxs("figure",{className:"bim-rd-img-fig bim-rd-img-trimmed","data-trim":`${Math.round(x.x)},${Math.round(x.y)},${Math.round(x.w)},${Math.round(x.h)}`,style:{aspectRatio:`${x.w} / ${x.h}`,overflow:"hidden",width:"100%",maxWidth:`calc((100vh - 200px) * ${x.w/x.h})`},children:[t.jsx("img",{src:m.url,alt:m.alt??l("reader.imageAlt",{label:f}),decoding:"async",style:{position:"absolute",maxWidth:"none",maxHeight:"none",width:`${m.width/x.w*100}%`,left:`${-x.x/x.w*100}%`,top:`${-x.y/x.h*100}%`}}),t.jsx(Hs,{page:m,crop:x})]}):t.jsxs("figure",{className:"bim-rd-img-fig",children:[t.jsx("img",{src:m.url,alt:m.alt??l("reader.imageAlt",{label:f}),width:m.width,height:m.height,loading:"lazy",decoding:"async"}),t.jsx(Hs,{page:m}),s==null?void 0:s(m,u)]})}),e.length>1&&t.jsxs("div",{className:"bim-rd-img-pager",children:[t.jsx("button",{type:"button",className:"bim-rd-t","aria-label":l("reader.prevImage"),disabled:u===0,onClick:()=>h(u-1),children:"‹"}),t.jsx("span",{"aria-live":"polite",children:m.label??`${u+1} / ${e.length}`}),t.jsx("button",{type:"button",className:"bim-rd-t","aria-label":l("reader.nextImage"),disabled:u===e.length-1,onClick:()=>h(u+1),children:"›"})]})]})}function Xm(e){return e==="lite"||e==="full"}const On=[.1,.9],Hl=[{key:"song",stack:null},{key:"kai",stack:'"Kaiti SC", "Kaiti TC", STKaiti, "KaiTi", "AR PL UKai CN", "Noto Serif CJK SC", serif'},{key:"system",stack:"var(--bim-font-ui)"}];function Zm(e){var n;return((n=Hl.find(i=>i.key===e))==null?void 0:n.stack)??null}const so={fontSize:null,readingMode:"line",properNameMode:null,writingMode:"horizontal",workLinks:!0,fontFamily:"song",pageBreaks:!0,pageIndicatorY:.33,bookTitleStyle:"wavy",showWorks:!0,quoteStyle:"original",scriptMode:null,preserveMargins:!0},At=[15,16,17,18,20,22,24],$r=18,Dl="bim-reader-prefs",Jm="bim-reading-mode";function Qm(){const e={...so};try{const n=localStorage.getItem(Dl),i=n?JSON.parse(n):{};typeof i.fontSize=="number"&&At.includes(i.fontSize)&&(e.fontSize=i.fontSize),(i.readingMode??localStorage.getItem(Jm))==="paragraph"&&(e.readingMode="paragraph"),i.properNameMode==="off"||i.properNameMode==="lite"||i.properNameMode==="full"?e.properNameMode=i.properNameMode:i.properNames===!0?e.properNameMode="full":i.properNames===!1&&(e.properNameMode="off"),i.writingMode==="vertical"&&(e.writingMode="vertical"),i.workLinks===!1&&(e.workLinks=!1),(i.fontFamily==="kai"||i.fontFamily==="system")&&(e.fontFamily=i.fontFamily),i.pageBreaks===!1&&(e.pageBreaks=!1),typeof i.pageIndicatorY=="number"&&Number.isFinite(i.pageIndicatorY)&&i.pageIndicatorY>=On[0]&&i.pageIndicatorY<=On[1]&&(e.pageIndicatorY=i.pageIndicatorY),i.bookTitleStyle==="bracket"&&(e.bookTitleStyle="bracket"),i.showWorks===!1&&(e.showWorks=!1),(i.quoteStyle==="modern"||i.quoteStyle==="classic")&&(e.quoteStyle=i.quoteStyle),(i.scriptMode==="orig"||i.scriptMode==="hant"||i.scriptMode==="hans")&&(e.scriptMode=i.scriptMode),i.preserveMargins===!1&&(e.preserveMargins=!1)}catch{}return e}function eh(e){try{localStorage.setItem(Dl,JSON.stringify(e))}catch{}}function si(e,n){const i=e??$r,o=At;let s=o.indexOf(i);return s<0&&(s=o.indexOf($r)),o[Math.max(0,Math.min(o.length-1,s+n))]}function Ul(){const[e,n]=g.useState(so);g.useEffect(()=>{n(Qm())},[]);const i=g.useCallback(o=>{n(s=>{const a={...s,...o};return eh(a),a})},[]);return[e,i]}function Cr(e){if(e.optionLabel)return e.optionLabel;const n=e.label||e.key;return!e.sourceName||n.includes(e.sourceName)?n:`${n} · ${e.sourceName}`}function Vl(e,n){if(!(!e||e.length===0))return(n!=null?e.find(i=>i.key===n):void 0)??e.find(i=>i.primary)??e[0]}function Gl(e){const n=[],i=o=>{for(const s of o)s.children&&s.children.length>0?i(s.children):n.push(s)};return i(e),n}const Ds=()=>t.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round","aria-hidden":"true",children:t.jsx("path",{d:"M4 6h16M4 12h10M4 18h16"})}),th=()=>t.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:t.jsx("path",{d:"M15 5l-7 7 7 7"})}),nh=()=>t.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:t.jsx("path",{d:"M9 5l7 7-7 7"})}),Us=()=>t.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round","aria-hidden":"true",children:[t.jsx("path",{d:"M4 7h10M18 7h2M4 17h2M10 17h10"}),t.jsx("circle",{cx:"16",cy:"7",r:"2"}),t.jsx("circle",{cx:"8",cy:"17",r:"2"})]}),Vs=()=>t.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[t.jsx("rect",{x:"4",y:"3",width:"16",height:"18",rx:"1.5"}),t.jsx("path",{d:"M9 3v18M13 7v10M16.5 7v10"})]});function Gs(e,n){if(!n)return;const i=Array.from(n.querySelectorAll('button:not([disabled]), input:not([disabled]), a[href], [tabindex]:not([tabindex="-1"])')).filter(l=>l.tabIndex>=0);if(i.length===0)return;const o=i[0],s=i[i.length-1],a=document.activeElement;e.shiftKey&&(a===o||!n.contains(a))?(e.preventDefault(),s.focus()):!e.shiftKey&&(a===s||!n.contains(a))&&(e.preventDefault(),o.focus())}function Ys(e,n){const[i,o]=g.useState(n);return g.useEffect(()=>{var l;if(typeof window>"u"||!window.matchMedia)return;const s=window.matchMedia(e);o(s.matches);const a=()=>o(s.matches);return(l=s.addEventListener)==null||l.call(s,"change",a),()=>{var d;return(d=s.removeEventListener)==null?void 0:d.call(s,"change",a)}},[e]),i}function ih({prefs:e,onPrefsChange:n,origAvailable:i}){const o=g.useContext(Nt),{t:s}=ne();if(!o)return null;const a=o.locale==="zh-Hans"?"hans":"hant",l=e.scriptMode==="orig"?"orig":a,d=[{key:"orig",short:s("reader.scriptOrigShort"),title:s(i?"reader.scriptOrig":"reader.scriptOrigUnavailable"),disabled:!i},{key:"hant",short:s("common.localeShortHant"),title:s("reader.scriptHant")},{key:"hans",short:s("common.localeShortHans"),title:s("reader.scriptHans")}];return t.jsx("span",{className:"bim-rd-script-sw",role:"group","aria-label":s("reader.scriptQuick"),children:d.map((c,p)=>t.jsxs(g.Fragment,{children:[p>0&&t.jsx("span",{className:"bim-rd-off","aria-hidden":"true",children:"|"}),t.jsx("button",{type:"button",className:"bim-rd-t","aria-pressed":l===c.key,title:c.title,"aria-label":c.title,disabled:c.disabled,onClick:()=>{c.disabled||(n({scriptMode:c.key}),c.key==="hant"?o.setLocale("zh-Hant"):c.key==="hans"&&o.setLocale("zh-Hans"))},children:c.short})]},c.key))})}function ui({label:e,value:n,options:i,onPick:o,title:s}){return t.jsxs("div",{className:"bim-rd-sp-row",role:"group","aria-label":e,title:s,children:[t.jsx("span",{className:"bim-rd-sp-l",children:e}),t.jsx("span",{className:"bim-rd-sp-fs",children:i.map(a=>t.jsx("button",{type:"button",className:"bim-rd-t","aria-pressed":n===a.key,title:a.title,disabled:a.disabled,onClick:()=>{a.disabled||o(a.key)},children:a.label},a.key))})]})}function rh({prefs:e,onPrefsChange:n,origAvailable:i}){const o=g.useContext(Nt),{t:s}=ne(),a=(o==null?void 0:o.locale)==="zh-Hans"?"hans":"hant",l=e.scriptMode==="orig"?"orig":a;return t.jsx(ui,{label:s("reader.script"),value:l,options:[{key:"orig",label:s("reader.scriptOrig"),title:i?void 0:s("reader.scriptOrigUnavailable"),disabled:!i},{key:"hant",label:s("reader.scriptHant")},{key:"hans",label:s("reader.scriptHans")}],onPick:d=>{n({scriptMode:d}),d==="hant"?o==null||o.setLocale("zh-Hant"):d==="hans"&&(o==null||o.setLocale("zh-Hans"))}})}function oh(e,n){if(!e)return;let i;for(const o of Array.from(e.querySelectorAll('[id^="rd-e-"]')))if(o.getBoundingClientRect().top<=n+8)i=o.id;else break;return i}function sh(e){var a;if(typeof window>"u"||!e)return;const n=(a=window.getSelection)==null?void 0:a.call(window);if(!n||n.isCollapsed||n.rangeCount===0)return;const i=e.querySelector(".bim-rd-col"),o=l=>{const d=(l==null?void 0:l.nodeType)===1?l:l==null?void 0:l.parentElement;return!!l&&!!(i!=null&&i.contains(l))&&!(d!=null&&d.closest(".bim-rd-src, .bim-rd-pager"))};if(!o(n.anchorNode)||!o(n.focusNode))return;const s=n.toString().replace(/\s+/g," ").trim();return s?s.slice(0,500):void 0}function Yl({title:e,subtitle:n,toc:i,activeKey:o,onSelect:s,tocHeader:a,tocCaption:l,images:d,imagesLoading:c,renderImageOverlay:p,imagePanel:h="auto",prefs:u,onPrefsChange:m,paragraphToggle:f,properNameToggle:x=!0,allowVertical:v,origScriptAvailable:y=!0,byline:$,current:b,workLinkToggle:w,rail:j,onReportError:k,revisedAt:C,backHref:S,backLabel:_,bottomBar:L=!0,pager:z=!0,contentLoading:T=!1,pagerUnit:B,versions:W,currentVersionKey:N,onVersionChange:R,versionSource:H=!0,keepChapterOnVersionChange:q=!1,customImagePanel:te,toolbarExtra:ae,settingsAnnotate:V,settingsLayout:G,isWarpMode:me,children:K,className:le,style:Se}){const{t:A,convert:je}=ne(),ce=_??A("reader.back"),ze=je(B??A("reader.unitJuan")),$e=g.useId().replace(/:/g,""),Fe=`bim-rd-toc-${$e}`,ee=`bim-rd-text-${$e}`,F=g.useRef(null),U=g.useRef(null),he=g.useRef(null),X=g.useRef(null),O=Ys(Ml,!0),J=Ys(Bl,!1),oe=L&&J,[re,D]=g.useState(null),[se,_e]=g.useState(!1),Ae=g.useRef(null),M=`bim-rd-set-${$e}`,ie=g.useRef(null),ve=g.useRef(null),we=(Z,Ve)=>{ve.current=Ve,D(st=>st===Z?null:Z)},P=g.useCallback(()=>{var Z;D(null),(Z=ve.current)==null||Z.focus()},[]);g.useEffect(()=>{oe||D(null)},[oe]),g.useEffect(()=>{var Z,Ve;re&&((Ve=(Z=ie.current)==null?void 0:Z.querySelector("button:not([disabled])"))==null||Ve.focus())},[re]);const[fe,de]=g.useState("auto"),xe=fe==="auto"?O:fe==="open",Ce=!O,Ue=!!te||!!d&&d.length>0,[Ke,Je]=g.useState(h);g.useEffect(()=>{Je(h)},[h]);const qe=Ke==="auto"?Ue||!!c:Ke==="open",I=g.useCallback(Z=>{var Ve;de("auto"),Z&&((Ve=X.current)==null||Ve.focus())},[]),Y=()=>de(xe?"closed":"open");g.useEffect(()=>{if(!Ce||fe!=="open")return;const Z=he.current,Ve=Z==null?void 0:Z.querySelector('input, [data-rd-toc-key][tabindex="0"]');Ve==null||Ve.focus()},[Ce,fe]);const pe=g.useCallback(Z=>{s(Z),Ce&&I(!1);const Ve=U.current,st=F.current;if(Ve&&st&&typeof window<"u"){const _t=Ve.getBoundingClientRect().top-st.getBoundingClientRect().bottom;_t<0&&window.scrollBy({top:_t})}},[s,Ce,I]),be=g.useMemo(()=>Gl(i),[i]),[Re,ge]=g.useState(null),Me=Vl(W,N!==void 0?N:Re),Q=(Me==null?void 0:Me.key)??null,ye=g.useMemo(()=>be.map(Z=>Z.key).join(`
|
|
677
677
|
`),[be]),We=g.useRef(null),He=Z=>{Z!==Q&&(q||(We.current={key:Z,sig:ye,done:!1}),N===void 0&&ge(Z),R==null||R(Z))};g.useEffect(()=>{const Z=We.current;if(!Z||Z.key!==Q)return;const Ve=be.find(_t=>!_t.disabled);if(!Ve)return;const st=ye!==Z.sig;!st&&Z.done||(st?We.current=null:Z.done=!0,Ve.key!==o&&pe(Ve.key))},[Q,ye,be,o,pe]);const Ne=be.find(Z=>Z.key===o),Pe=()=>{var Z;k==null||k({chapterKey:o,chapterLabel:typeof(Ne==null?void 0:Ne.label)=="string"?Ne.label:void 0,anchor:oh(U.current,((Z=F.current)==null?void 0:Z.getBoundingClientRect().bottom)??0),selectedText:sh(U.current)})},Le=be.findIndex(Z=>Z.key===o),Be=Le>0?be.slice(0,Le).reverse().find(Z=>!Z.disabled):void 0,Ie=Le>=0?be.slice(Le+1).find(Z=>!Z.disabled):void 0,De=u.fontSize??$r,Qe=Zm(u.fontFamily),Ft={...Se,...u.fontSize?{"--bimrd-fs":`${u.fontSize}px`}:null,...Qe?{"--bimrd-ff":Qe}:null},yt={song:A("reader.fontSong"),kai:A("reader.fontKai"),system:A("reader.fontSystem")},Kt=x||!!V,Ye=t.jsxs("div",{className:"bim-rd-sp",children:[t.jsxs("section",{className:"bim-rd-sp-g","aria-labelledby":`${M}-g1`,children:[t.jsx("h3",{id:`${M}-g1`,className:"bim-rd-sp-h",children:A("reader.groupText")}),t.jsxs("div",{className:"bim-rd-sp-row",children:[t.jsx("span",{className:"bim-rd-sp-l",children:A("reader.font")}),t.jsx("select",{className:"bim-rd-sp-sel","aria-label":A("reader.font"),value:u.fontFamily,onChange:Z=>m({fontFamily:Z.target.value}),children:Hl.map(Z=>t.jsx("option",{value:Z.key,children:yt[Z.key]},Z.key))})]}),t.jsxs("div",{className:"bim-rd-sp-row",children:[t.jsx("span",{className:"bim-rd-sp-l",children:A("reader.fontSize")}),t.jsxs("span",{className:"bim-rd-sp-fs",children:[t.jsx("button",{type:"button",className:"bim-rd-t","aria-label":A("reader.fontSmaller"),disabled:De<=At[0],onClick:()=>m({fontSize:si(u.fontSize,-1)}),children:"A−"}),t.jsxs("output",{"aria-live":"polite",children:[De,"px"]}),t.jsx("button",{type:"button",className:"bim-rd-t","aria-label":A("reader.fontLarger"),disabled:De>=At[At.length-1],onClick:()=>m({fontSize:si(u.fontSize,1)}),children:"A+"})]})]}),t.jsx(rh,{prefs:u,onPrefsChange:m,origAvailable:y}),t.jsx(ui,{label:A("reader.quoteStyle"),value:u.quoteStyle,options:[{key:"modern",label:A("reader.quoteModern")},{key:"classic",label:A("reader.quoteClassic")},{key:"original",label:A("reader.quoteOriginal")}],onPick:Z=>m({quoteStyle:Z})})]}),Kt&&t.jsxs("section",{className:"bim-rd-sp-g","aria-labelledby":`${M}-g2`,children:[t.jsx("h3",{id:`${M}-g2`,className:"bim-rd-sp-h",children:A("reader.groupMark")}),x&&t.jsxs(t.Fragment,{children:[t.jsx(ui,{label:A("reader.properName"),value:u.properNameMode,title:A("reader.properNameTitle"),options:[{key:"off",label:A("reader.properNameOff")},{key:"lite",label:A("reader.properNameLite"),title:A("reader.properNameLiteTitle")},{key:"full",label:A("reader.properNameFull")}],onPick:Z=>m({properNameMode:Z})}),t.jsxs("label",{className:"bim-rd-t bim-rd-chk bim-rd-sp-tg",children:[t.jsx("input",{type:"checkbox",checked:u.showWorks,onChange:Z=>m({showWorks:Z.target.checked})}),t.jsx("span",{children:A("reader.showWorks")})]}),t.jsx(ui,{label:A("reader.bookTitleStyle"),value:u.bookTitleStyle,options:[{key:"wavy",label:A("reader.bookTitleWavy")},{key:"bracket",label:A("reader.bookTitleBracket")}],onPick:Z=>m({bookTitleStyle:Z})})]}),V]}),t.jsxs("section",{className:"bim-rd-sp-g","aria-labelledby":`${M}-g3`,children:[t.jsx("h3",{id:`${M}-g3`,className:"bim-rd-sp-h",children:A("reader.groupLayout")}),f&&t.jsx("button",{type:"button",className:"bim-rd-t bim-rd-sp-tg","aria-pressed":u.readingMode==="paragraph",title:A("reader.paragraphTitle"),onClick:()=>m({readingMode:u.readingMode==="paragraph"?"line":"paragraph"}),children:A("reader.paragraph")}),w&&t.jsxs("label",{className:"bim-rd-t bim-rd-chk bim-rd-sp-tg",children:[t.jsx("input",{type:"checkbox",checked:u.workLinks,onChange:Z=>m({workLinks:Z.target.checked})}),t.jsx("span",{children:A("reader.workLinks")})]}),v&&t.jsx("button",{type:"button",className:"bim-rd-t bim-rd-sp-tg","aria-pressed":u.writingMode==="vertical",onClick:()=>m({writingMode:u.writingMode==="vertical"?"horizontal":"vertical"}),children:A("reader.vertical")}),t.jsxs("label",{className:"bim-rd-t bim-rd-chk bim-rd-sp-tg",children:[t.jsx("input",{type:"checkbox",checked:u.pageBreaks,onChange:Z=>m({pageBreaks:Z.target.checked})}),t.jsx("span",{children:A("reader.pageBreaks")})]}),t.jsxs("label",{className:"bim-rd-t bim-rd-chk bim-rd-sp-tg",children:[t.jsx("input",{type:"checkbox",checked:u.preserveMargins,onChange:Z=>m({preserveMargins:Z.target.checked})}),t.jsx("span",{children:A("reader.preserveMargins")})]}),G]})]});return t.jsxs("div",{className:["bim-rd",u.writingMode==="vertical"&&v?"bim-rd-vertical":"",le].filter(Boolean).join(" "),"data-toc":fe,"data-img":qe?"open":"closed","data-bb":oe?"":void 0,"data-set":!oe&&se?"open":void 0,"data-warp":me?"true":void 0,style:Ft,children:[t.jsx("style",{children:Ol}),t.jsx("a",{className:"bim-rd-skip",href:`#${ee}`,onClick:Z=>{var Ve,st,_t;Z.preventDefault(),(Ve=U.current)==null||Ve.focus(),(_t=(st=U.current)==null?void 0:st.scrollIntoView)==null||_t.call(st,{block:"start"})},children:A("reader.skipToText")}),t.jsxs("div",{className:"bim-rd-bar",ref:F,children:[S&&t.jsxs("a",{className:"bim-rd-back",href:S,"aria-label":A("reader.backAria",{label:ce}),children:[t.jsx("span",{"aria-hidden":"true",children:"‹"}),t.jsx("span",{className:"bim-rd-tlabel","aria-hidden":"true",children:ce})]}),(e||n||$||b)&&t.jsxs("p",{className:"bim-rd-ttl",style:{margin:0},children:[e&&t.jsx("b",{children:e}),$&&t.jsx("span",{className:"bim-rd-by",children:$}),b&&t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"bim-rd-dot","aria-hidden":"true"}),t.jsx("span",{className:"bim-rd-cur",children:b})]}),n&&t.jsx("span",{className:"bim-rd-ttl-src",children:n})]}),t.jsxs("div",{className:"bim-rd-tools",role:"group","aria-label":A("reader.settings"),children:[W&&W.length>1&&t.jsxs(t.Fragment,{children:[t.jsxs("label",{className:"bim-rd-ver",title:Me?je(Cr(Me)):void 0,children:[t.jsx("span",{className:"bim-rd-tlabel",children:A("reader.version")}),t.jsx("span",{className:"bim-rd-ver-short","aria-hidden":"true",children:A("reader.versionShort")}),t.jsx("select",{"aria-label":A("reader.version"),value:Q??"",onChange:Z=>He(Z.target.value),children:W.map(Z=>t.jsx("option",{value:Z.key,children:je(Cr(Z))},Z.key))})]}),t.jsx("span",{className:"bim-rd-sep","aria-hidden":"true"})]}),z&&(Be||Ie)&&t.jsxs("span",{className:"bim-rd-nav bim-rd-hide-narrow",role:"group","aria-label":A("reader.pagerGroup",{unit:ze}),children:[t.jsx("button",{type:"button",className:"bim-rd-t","aria-label":A("reader.prevUnit",{unit:ze}),title:Be?typeof Be.label=="string"&&Be.label?A("reader.prevUnitTitle",{unit:ze,label:Be.label}):A("reader.prevUnit",{unit:ze}):A("reader.firstUnit",{unit:ze}),disabled:!Be,onClick:()=>Be&&pe(Be.key),children:t.jsx(th,{})}),t.jsx("button",{type:"button",className:"bim-rd-t","aria-label":A("reader.nextUnit",{unit:ze}),title:Ie?typeof Ie.label=="string"&&Ie.label?A("reader.nextUnitTitle",{unit:ze,label:Ie.label}):A("reader.nextUnit",{unit:ze}):A("reader.lastUnit",{unit:ze}),disabled:!Ie,onClick:()=>Ie&&pe(Ie.key),children:t.jsx(nh,{})})]}),z&&(Be||Ie)&&t.jsx("span",{className:"bim-rd-sep bim-rd-hide-narrow","aria-hidden":"true"}),t.jsxs("button",{ref:X,type:"button",className:"bim-rd-t bim-rd-bb-dup","aria-expanded":xe,"aria-controls":Fe,onClick:Y,children:[t.jsx(Ds,{}),t.jsx("span",{className:"bim-rd-tlabel",children:A("reader.toc")})]}),t.jsxs("button",{type:"button",className:"bim-rd-t bim-rd-hide-narrow","aria-pressed":qe,onClick:()=>Je(qe?"closed":"open"),children:[t.jsx(Vs,{}),A("reader.images")]}),t.jsx("span",{className:"bim-rd-sep","aria-hidden":"true"}),t.jsx(ih,{prefs:u,onPrefsChange:m,origAvailable:y}),t.jsx("span",{className:"bim-rd-sep","aria-hidden":"true"}),t.jsx("button",{type:"button",className:"bim-rd-t bim-rd-fs bim-rd-bb-dup","aria-label":A("reader.fontSmaller"),disabled:De<=At[0],onClick:()=>m({fontSize:si(u.fontSize,-1)}),children:"A−"}),t.jsx("button",{type:"button",className:"bim-rd-t bim-rd-fs bim-rd-bb-dup","aria-label":A("reader.fontLarger"),disabled:De>=At[At.length-1],onClick:()=>m({fontSize:si(u.fontSize,1)}),children:"A+"}),t.jsx("span",{className:"bim-rd-sep","aria-hidden":"true"}),t.jsxs("button",{ref:Ae,type:"button",className:"bim-rd-t bim-rd-bb-dup","aria-expanded":se,"aria-controls":M,onClick:()=>_e(Z=>!Z),children:[t.jsx(Us,{}),t.jsx("span",{className:"bim-rd-tlabel",children:A("reader.settings")})]}),ae]})]}),t.jsxs("div",{className:"bim-rd-body",children:[t.jsxs("div",{className:"bim-rd-toc",id:Fe,ref:he,role:Ce&&xe?"dialog":void 0,"aria-modal":Ce&&xe?!0:void 0,"aria-label":Ce&&xe?A("reader.toc"):void 0,onKeyDown:Z=>{if(!(!Ce||!xe)){if(Z.key==="Escape"){Z.stopPropagation(),I(!0);return}Z.key==="Tab"&&Gs(Z,he.current)}},children:[t.jsxs("div",{className:"bim-rd-toc-top",children:[t.jsxs("div",{className:"bim-rd-toc-head",children:[t.jsx("span",{children:l??A("reader.toc")}),Ce&&t.jsx("button",{type:"button",className:"bim-rd-t","aria-label":A("reader.closeToc"),onClick:()=>I(!0),children:"✕"})]}),a]}),t.jsx(Fl,{items:i,activeKey:o,onSelect:pe})]}),t.jsx("div",{className:"bim-rd-scrim","aria-hidden":"true",onClick:()=>I(!0)}),t.jsx("aside",{className:"bim-rd-img","aria-label":A("reader.images"),children:qe&&(te||t.jsx(_r,{pages:d??null,loading:c,renderOverlay:p,preserveMargins:u.preserveMargins}))}),!oe&&se&&t.jsxs("aside",{className:"bim-rd-set",id:M,"aria-label":A("reader.settings"),onKeyDown:Z=>{var Ve;Z.key==="Escape"&&(Z.stopPropagation(),_e(!1),(Ve=Ae.current)==null||Ve.focus())},children:[t.jsxs("div",{className:"bim-rd-sp-top",children:[t.jsx("span",{children:A("reader.settings")}),t.jsx("button",{type:"button",className:"bim-rd-t","aria-label":A("reader.closeSettings"),onClick:()=>{var Z;_e(!1),(Z=Ae.current)==null||Z.focus()},children:"✕"})]}),Ye]}),t.jsxs("div",{className:"bim-rd-text",id:ee,ref:U,tabIndex:-1,"data-rail":(j||k)&&!me?"true":void 0,children:[t.jsxs("div",{className:"bim-rd-col",children:[K,H&&Me&&(Me.sourceName||Me.license)&&t.jsxs("p",{className:"bim-rd-src","data-version":Me.key,children:[Me.sourceName&&t.jsxs(t.Fragment,{children:[A("reader.sourceLabel")," ",Me.sourceUrl?t.jsx("a",{className:"bim-rd-link",href:Me.sourceUrl,target:"_blank",rel:"noreferrer",children:je(Me.sourceName)}):je(Me.sourceName)]}),Me.sourceName&&Me.license&&t.jsx("span",{className:"bim-rd-dot"}),Me.license&&t.jsx(t.Fragment,{children:A("reader.licenseOf",{license:Me.license})})]}),C&&t.jsx("p",{className:"bim-rd-src bim-rd-rev",children:A("reader.revisedAt",{date:C})}),k&&t.jsx("p",{className:"bim-rd-src bim-rd-report-foot",children:t.jsx("button",{type:"button",className:"bim-rd-rail-report",onMouseDown:Z=>Z.preventDefault(),onClick:Pe,children:A("reader.reportError")})}),z&&!T&&(Be||Ie)&&t.jsxs("nav",{className:"bim-rd-pager","aria-label":A("reader.pagerNav"),children:[Be?t.jsxs("button",{type:"button",className:"bim-rd-pg",onClick:()=>pe(Be.key),children:[t.jsxs("span",{className:"bim-rd-pgcap",children:[t.jsx("span",{"aria-hidden":"true",children:"← "}),A("reader.prevUnit",{unit:ze})]}),t.jsx("span",{className:"bim-rd-pglabel",children:Be.label})]}):t.jsxs("span",{className:"bim-rd-pg bim-rd-pg-end","aria-hidden":"true",children:["← ",A("reader.firstUnit",{unit:ze})]}),Ie?t.jsxs("button",{type:"button",className:"bim-rd-pg bim-rd-pg-next",onClick:()=>pe(Ie.key),children:[t.jsxs("span",{className:"bim-rd-pgcap",children:[A("reader.nextUnit",{unit:ze}),t.jsx("span",{"aria-hidden":"true",children:" →"})]}),t.jsx("span",{className:"bim-rd-pglabel",children:Ie.label})]}):t.jsxs("span",{className:"bim-rd-pg bim-rd-pg-next bim-rd-pg-end","aria-hidden":"true",children:[A("reader.lastUnit",{unit:ze})," →"]})]})]}),(j||k)&&!me&&t.jsxs("aside",{className:"bim-rd-rail","aria-label":A("reader.rail"),children:[j,k&&t.jsx("div",{className:"bim-rd-rail-acts",children:t.jsx("button",{type:"button",className:"bim-rd-rail-report",onMouseDown:Z=>Z.preventDefault(),onClick:Pe,children:A("reader.reportError")})})]})]})]}),oe&&t.jsxs("nav",{className:"bim-rd-bb","aria-label":A("reader.bottomBar"),children:[t.jsxs("button",{type:"button","aria-expanded":xe,"aria-controls":Fe,onClick:()=>{D(null),Y()},children:[t.jsx(Ds,{}),t.jsx("span",{children:A("reader.tocShort")})]}),t.jsxs("button",{type:"button","aria-expanded":re==="img","aria-haspopup":"dialog",onClick:Z=>we("img",Z.currentTarget),children:[t.jsx(Vs,{}),t.jsx("span",{children:A("reader.images")})]}),t.jsxs("button",{type:"button","aria-expanded":re==="set","aria-haspopup":"dialog",onClick:Z=>we("set",Z.currentTarget),children:[t.jsx(Us,{}),t.jsx("span",{children:A("reader.settingsShort")})]}),k&&t.jsxs("button",{type:"button",onMouseDown:Z=>Z.preventDefault(),onClick:()=>{D(null),Pe()},children:[t.jsx("span",{className:"bim-rd-bb-ic","aria-hidden":"true",children:"!"}),t.jsx("span",{children:A("reader.reportError")})]})]}),oe&&re&&t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"bim-rd-sheet-scrim","aria-hidden":"true",onClick:P}),t.jsxs("div",{className:"bim-rd-sheet",ref:ie,role:"dialog","aria-modal":"true","aria-label":A(re==="img"?"reader.images":"reader.settings"),onKeyDown:Z=>{if(Z.key==="Escape"){Z.stopPropagation(),P();return}Z.key==="Tab"&&Gs(Z,ie.current)},children:[t.jsxs("div",{className:"bim-rd-sheet-head",children:[t.jsx("span",{children:A(re==="img"?"reader.images":"reader.settings")}),t.jsx("button",{type:"button",className:"bim-rd-t","aria-label":A("reader.close"),onClick:P,children:"✕"})]}),re==="img"?t.jsx("div",{className:"bim-rd-sheet-img",children:t.jsx(_r,{pages:d??null,loading:c,renderOverlay:p,preserveMargins:u.preserveMargins})}):Ye]})]})]})}function ah(e,n,i){return i?ql(e).includes("\r")?"lone-cr":Array.from(e).length!==Array.from(n).length?"convert-length":n.includes(":::")?"tables":null:"quoteStyle"}function ql(e){return e.replace(/\r\n/g,`
|
|
678
|
-
`)}const qs=2,lh=400,ch=6,Kl=e=>e==="*"||e==="#"||e==="<"||e===">"||/\s/.test(e);function Xl(e,n){if(e[n]!=="<"||e[n+1]!=="!"||e[n+2]!=="-"||e[n+3]!=="-")return-1;for(let i=n+4;i+2<e.length;i++)if(e[i]==="-"&&e[i+1]==="-"&&e[i+2]===">")return i+2;return-1}function dh(e,n,i){let o=n;for(let s=0;s<i.length;){if(o>=e.length)return-1;if(i[s]===e[o]){s++,o++;continue}const a=Xl(e,o);if(a>=0){o=a+1;continue}if(Kl(e[o])){o++;continue}if(i[s]===" "){s++;continue}return-1}return o}function ph(e){const n=Array.from(ql(e));let i=0;return{align(o){if(!o)return;const s=Array.from(o);if(s.every(d=>d===" "||/\s/.test(d)))return;const a=s.length>=ch;let l=0;for(let d=i;d<n.length&&d-i<=(a?lh:qs+64);d++){const c=Xl(n,d);if(c>=0){d=c;continue}if(!Kl(n[d])){const h=dh(n,d,s);if(h>=0)return i=h,d;if(l++,!a&&l>qs)return}}}}}const Zl=["西漢","東漢","三國","西晉","東晉","南北朝","南朝","北朝","隋","唐","五代","北宋","南宋","宋","遼","西夏","金","元","南明","明","清","民國","日本","朝鮮","高麗","越南","琉球","西汉","东汉","西晋","东晋","南北朝","南朝","北朝","辽","民国","朝鲜","高丽"],uh={北宋:"宋",南宋:"宋",西漢:"漢",東漢:"漢",西汉:"漢",东汉:"漢",西晉:"晉",東晉:"晉",西晋:"晉",东晋:"晉",南明:"明",民国:"民國",辽:"遼",朝鲜:"朝鮮",高丽:"高麗",南北朝:"南北朝",南朝:"南北朝",北朝:"南北朝"};function rt(e){return uh[e]??e}const gn=[{pattern:/欽定四庫全書薈要|摛藻堂/,era:"清",reign:"乾隆"},{pattern:/欽定四庫全書|四庫全書|文淵閣|文瀾閣|文溯閣|文津閣|文匯閣|文宗閣|文瀾閣/,era:"清",reign:"乾隆"},{pattern:/钦定四库全书|四库全书|文渊阁|文澜阁|文溯阁|文津阁/,era:"清",reign:"乾隆"},{pattern:/武英殿聚珍|聚珍版/,era:"清",reign:"乾隆"},{pattern:/武英殿/,era:"清"},{pattern:/百衲本|涵芬樓|涵芬楼|商務印書館|商务印书馆|中華書局|中华书局/,era:"民國"},{pattern:/汲古閣|汲古阁/,era:"明",reign:"崇禎"}],fn={熹平:172,建安:196,黃初:220,正始:240,廣政:938,太康:280,永和:345,開皇:581,貞觀:627,開元:713,天寶:742,貞元:785,元和:806,開成:836,會昌:841,咸通:860,建隆:960,太平興國:976,咸平:998,天禧:1017,慶曆:1041,皇祐:1049,嘉祐:1056,治平:1064,熙寧:1068,元豐:1078,元祐:1086,紹聖:1094,崇寧:1102,大觀:1107,政和:1111,宣和:1119,建炎:1127,紹興:1131,隆興:1163,乾道:1165,淳熙:1174,紹熙:1190,慶元:1195,嘉泰:1201,開禧:1205,嘉定:1208,寶慶:1225,紹定:1228,端平:1234,嘉熙:1237,淳祐:1241,寶祐:1253,開慶:1259,景定:1260,咸淳:1265,大定:1161,明昌:1190,至元:1264,大德:1297,皇慶:1312,延祐:1314,泰定:1324,天曆:1328,至順:1330,至正:1341,洪武:1368,永樂:1403,宣德:1426,正統:1436,景泰:1450,天順:1457,成化:1465,弘治:1488,正德:1506,嘉靖:1522,隆慶:1567,萬曆:1573,泰昌:1620,天啟:1621,崇禎:1628,弘光:1645,隆武:1645,紹武:1646,永曆:1647,順治:1644,康熙:1662,雍正:1723,乾隆:1736,嘉慶:1796,道光:1821,咸豐:1851,同治:1862,光緒:1875,宣統:1909,慶長:1596,寬永:1624,正保:1644,慶安:1648,承應:1652,明曆:1655,萬治:1658,寬文:1661,延寶:1673,天和:1681,貞享:1684,元祿:1688,寶永:1704,享保:1716,元文:1736,寬保:1741,延享:1744,寬延:1748,寶曆:1751,明和:1764,安永:1772,天明:1781,寬政:1789,享和:1801,文化:1804,文政:1818,天保:1830,弘化:1844,嘉永:1848,安政:1854,萬延:1860,文久:1861,元治:1864,慶應:1865,明治:1868,大正:1912,昭和:1926,天正:1573,文祿:1592,永祿:1558,天文:1532},Jl={"唐|元和":806,"日本|元和":1615,"明|正德":1506,"日本|正德":1711};function Ii(e){const n=e.match(/^\s*(\d{3,4})(?:\s*[-–—~至]\s*(\d{3,4}))?/);if(!n)return;const i=parseInt(n[1],10);if(i<100||i>2100)return;const o=n[2]?parseInt(n[2],10):void 0;return{from:i,to:o!=null&&o>=i&&o<=2100?o:void 0}}function mh(e){return e>=1950?"":e>=1912?"民國":e>=1645?"清":e>=1368?"明":e>=1279?"元":e>=960?"宋":e>=907?"五代":e>=618?"唐":e>=581?"隋":e>=420?"南北朝":e>=265?"晉":e>=220?"三國":e>=-202?"漢":""}const hh=/末[宋元明清]初|[約约]|推定|推算|前後|前后|左右|[前中後后末]期/,Ks={曹魏:"三國",蜀漢:"三國",東吳:"三國",前蜀:"五代",後蜀:"五代"};function ao(e){const n=e.trim().replace(/[代朝]$/,"");for(const s of Object.keys(Ks))if(n.startsWith(s))return Ks[s];const i=rt(n);if(en[i]!=null)return i;const o=Pt(n);if(o&&n.length<=o.length+1)return rt(o)}function Qt(e,n){if(n){const i=Jl[`${n}|${e}`];if(i!=null)return i}return fn[e]}const gh=1911;function fh(e){const n=fn[e];if(n==null)return;const i=zt[e];let o;for(const[s,a]of Object.entries(fn))zt[s]===i&&a>n&&(o==null||a<o)&&(o=a);return o!=null?o-1:void 0}const xh={零:0,"〇":0,一:1,二:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9,十:10,廿:20,卅:30,元:1};function bi(e){if(!e)return;if(/^\d+$/.test(e))return parseInt(e,10);let n=0,i=0,o=!1;for(const a of e){const l=xh[a];if(l===void 0)return;o=!0,a==="十"?i=(i||1)*10:a==="廿"||a==="卅"?(n+=l,i=0):i>=10?(n+=i+l,i=0):i=i*10+l}const s=n+i;return o&&s>0?s:void 0}function Pt(e){for(const n of Zl)if(e.startsWith(n))return n}const zt={};{const e=(n,i)=>{for(const o of i)zt[o]=n};e("東漢",["熹平","建安"]),e("三國",["黃初","正始"]),e("五代",["廣政"]),e("西晉",["太康"]),e("東晉",["永和"]),e("隋",["開皇"]),e("唐",["貞觀","開元","天寶","貞元","元和","開成","會昌","咸通"]),e("宋",["建隆","太平興國","咸平","天禧","慶曆","皇祐","嘉祐","治平","熙寧","元豐","元祐","紹聖","崇寧","大觀","政和","宣和","建炎","紹興","隆興","乾道","淳熙","紹熙","慶元","嘉泰","開禧","嘉定","寶慶","紹定","端平","嘉熙","淳祐","寶祐","開慶","景定","咸淳"]),e("金",["大定","明昌"]),e("元",["至元","大德","皇慶","延祐","泰定","天曆","至順","至正"]),e("明",["洪武","永樂","宣德","正統","景泰","天順","成化","弘治","正德","嘉靖","隆慶","萬曆","泰昌","天啟","崇禎","弘光","隆武","紹武","永曆"]),e("清",["順治","康熙","雍正","乾隆","嘉慶","道光","咸豐","同治","光緒","宣統"]),e("日本",["慶長","寬永","正保","慶安","承應","明曆","萬治","寬文","延寶","天和","貞享","元祿","寶永","享保","元文","寬保","延享","寬延","寶曆","明和","安永","天明","寬政","享和","文化","文政","天保","弘化","嘉永","安政","萬延","文久","元治","慶應","明治","大正","昭和","天正","文祿","永祿","天文"])}function tn(e,n){const i=n==="北宋"||n==="南宋"?"宋":n;for(const o of Object.keys(fn))if(e.includes(o)&&!(i&&zt[o]&&zt[o]!==i&&Jl[`${i}|${o}`]==null))return o}function Fn(e){var l,d,c;const n={era:"",reign:"",source:"none"},i=e.dating;if(i!=null&&i.era||i!=null&&i.reign)return{era:i.era??"",reign:i.reign??"",source:i.certainty==="attested"?"catalog":"edition"};const o=(l=e.lineage)==null?void 0:l.year_text;if(o){const p=Pt(o)??"";return{era:rt(p),reign:tn(o,p)??"",source:"lineage"}}const s=(d=e.publication_info)==null?void 0:d.year;if(s){const p=Ii(s);if(p)return{era:mh(p.from),reign:"",source:"publication"};const h=Pt(s)??ao(s)??((c=gn.find(f=>f.pattern.test(s)))==null?void 0:c.era)??"",u=tn(s,h)??"",m=h||(u?zt[u]??"":"");if(m||u)return{era:rt(m),reign:u,source:"publication"}}const a=e.edition||e.title||"";if(a){const p=Pt(a);if(p)return{era:rt(p),reign:tn(a,p)??"",source:"edition"};const h=gn.find(u=>u.pattern.test(a));if(h)return{era:rt(h.era),reign:tn(a,h.era)??h.reign??"",source:"edition"}}return n}function Ei(e){var o,s,a,l,d,c,p,h,u;if(((o=e.dating)==null?void 0:o.year)!=null)return e.dating.year;if(typeof((s=e.lineage)==null?void 0:s.year)=="number")return e.lineage.year;const n=(a=e.publication_info)==null?void 0:a.year;if(n){const m=Ii(n);if(m)return m.from}const i=[(l=e.lineage)==null?void 0:l.year_text,(d=e.publication_info)==null?void 0:d.year,e.edition,e.edition?void 0:e.title].filter(Boolean);for(const m of i){const f=((c=e.publication_info)==null?void 0:c.year)||((p=e.lineage)==null?void 0:p.year_text);if(f&&m!==f&&(Pt(f)||ao(f)))break;const x=m.match(/(?:^|[^\d第卷冊册頁页])(\d{3,4})\s*年/)??m.match(/[((](\d{3,4})\s*(?:[-–—~至]\s*\d{3,4})?\s*年?[))]/);if(x){const w=parseInt(x[1],10);if(w>=100&&w<=2100)return w}const v=m.match(/民[國国]\s*([零〇一二三四五六七八九十廿卅百元\d]+)\s*年/);if(v){const w=Pt(m);if(!w||rt(w)==="民國"){const k=bi(v[1]);if(k!=null&&k>=1&&k<=120)return gh+k}}const y=Pt(m)??((h=gn.find(w=>w.pattern.test(m)))==null?void 0:h.era),$=y?rt(y):void 0,b=tn(m,$)??(Pt(m)||(u=gn.find(w=>w.pattern.test(m)))==null?void 0:u.reign);if(b){const w=Qt(b,$);if(w==null)continue;const j=m.indexOf(b),k=j>=0?m.slice(j+b.length):"",C=k.match(/^([零〇一二三四五六七八九十廿卅元]+)年/)??k.match(/^[甲乙丙丁戊己庚辛壬癸][子丑寅卯辰巳午未申酉戌亥]\s*[((]\s*([零〇一二三四五六七八九十廿卅元]+)\s*年?\s*[))]/),S=C?bi(C[1]):void 0;return w+(S?S-1:0)}}}function lo(e){var l,d,c,p,h,u;const n=(l=e.dating)==null?void 0:l.year_range;if(n&&n.length===2)return{from:n[0],to:n[1]};const i=(d=e.lineage)==null?void 0:d.year_range;if(i&&i.length===2)return{from:i[0],to:i[1]};const o=(c=e.lineage)==null?void 0:c.year_text;if(o){const m=o.match(/([宋元明清])\s*末\s*([宋元明清])\s*初/);if(m){const f=Tr[rt(m[1])],x=en[rt(m[2])];if(f!=null&&x!=null)return{from:Math.min(f,x)-20,to:Math.max(f,x)+40}}}const s=(p=e.publication_info)==null?void 0:p.year;if(s){const m=Ii(s);if((m==null?void 0:m.to)!=null)return{from:m.from,to:m.to};const f=s.match(/([宋元明清])\s*末\s*([宋元明清])\s*初/);if(f){const x=Tr[rt(f[1])],v=en[rt(f[2])];if(x!=null&&v!=null)return{from:Math.min(x,v)-20,to:Math.max(x,v)+40}}}const a=[(h=e.publication_info)==null?void 0:h.year,e.edition,e.title].filter(Boolean);for(const m of a){if(!/[間间]/.test(m))continue;const f=Pt(m)??ao(m)??((u=gn.find(y=>y.pattern.test(m)))==null?void 0:u.era),x=f?rt(f):void 0,v=[];for(const y of Object.keys(fn))m.includes(y)&&(x&&zt[y]&&zt[y]!==x||Qt(y,x)!=null&&v.push(y));if(v.length===0){const y=m.match(/([一-鿿])([一-鿿])[間间]/);if(y&&x){for(const $ of[y[1],y[2]])for(const b of Object.keys(fn))if(zt[b]===x&&!(b[0]!==$&&b[b.length-1]!==$)&&Qt(b,x)!=null){v.push(b);break}}}if(v.length>0){const y=v.map(j=>Qt(j,x)).filter(j=>j!=null),$=Math.min(...y),b=v.reduce((j,k)=>Qt(j,x)>=Qt(k,x)?j:k),w=fh(b)??dr(x??"")??Math.max(...y);return{from:$,to:w>$?w:dr(x??zt[b]??"")??$}}if(x&&en[x]!=null)return{from:en[x],to:dr(x)??en[x]}}}const en={漢:-202,三國:220,晉:265,南北朝:420,隋:581,唐:618,五代:907,宋:960,遼:916,西夏:1038,金:1115,元:1271,明:1368,清:1644,民國:1912,日本:1600,朝鮮:1392,高麗:918,越南:1400,琉球:1400},bh=[{re:/影印|景印|影鈔|影钞|景鈔|景钞/,relation:"影印"},{re:/翻刻|覆刻|覆刊|翻雕|重刊|重雕/,relation:"翻刻"},{re:/傳鈔|传钞|傳抄|传抄/,relation:"傳鈔"},{re:/配補|配补|百衲/,relation:"配補"},{re:/據.{0,12}本|据.{0,12}本/,relation:"據刊"}],yh=/修補|修补|遞修|递修|[明清元宋]修本|後代修|后代修/,Xs=/約|约|疑|傳為|传为|舊題|旧题|相傳|相传|待考|未詳|未详|\(疑\)|(疑)/;function Zs(e,n){for(const i of Zl){const o=e.indexOf(i);if(o<0)continue;if(i.length===1){const c=e[o+1]??"";if(!/[刻刊寫写鈔钞抄印本間间初末年時时代人臧藏]/.test(c)&&!tn(e.slice(o),rt(i)))continue}const s=rt(i);if(s===n)continue;const a=e.slice(o),l=tn(a,s)??"";let d;if(l){const c=Qt(l,s);if(c!=null){const h=a.slice(a.indexOf(l)+l.length).match(/^([零〇一二三四五六七八九十廿卅元]+)年/),u=h?bi(h[1]):void 0;d=c+(u?u-1:0)}}return{era:s,reign:l,year:d}}for(const i of gn)if(i.pattern.test(e))return{era:rt(i.era),reign:i.reign??""}}function jh(e){var $,b,w,j,k;const n=Fn(e),i=(($=e.publication_info)==null?void 0:$.year)??"",o=i?Ii(i):void 0;if(!n.era&&!n.reign&&!o)return;const s=e.edition||e.title||"",a=/[間间]/.test(s),l=((b=e.lineage)==null?void 0:b.year_text)??"",d=/末[宋元明清]初|[約约]|推定|前後|前后|左右/.test(l),c=n.source==="publication"&&hh.test(i),p=n.source==="publication"&&/[間间]/.test(i),h=l.match(/([宋元明清])[^、,,]*?[((](\d{3,4})[))][^、,,]*?原刻/);let u;a||d||c||p?u=void 0:h?u=parseInt(h[2],10):u=Ei(e);const m=u==null?lo(e):void 0;let f;n.source==="publication"&&(c||Xs.test(i))?f="uncertain":n.source==="lineage"||n.source==="publication"?f="attested":Xs.test(s)||!n.reign&&u==null?f="uncertain":f="inferred";const x=n.source==="edition"?`題名「${s}」`:n.source==="lineage"?`版本傳承著錄「${((w=e.lineage)==null?void 0:w.year_text)??((j=e.lineage)==null?void 0:j.year)??""}」`:`出版著錄「${((k=e.publication_info)==null?void 0:k.year)??""}」`,v={era:n.era,reign:n.reign,year:u,yearRange:m,certainty:f,source:n.source==="edition"?"edition":"catalog",basis:x};if(h){const C=l.match(/[、,,]\s*([宋元明清])/);C&&C[1]!==v.era&&(v.laterRepair={era:C[1]})}if(!v.laterRepair&&yh.test(s)){const C=s.match(/([宋元明清])\s*(?:初|末)?\s*(?:修補|修补|遞修|递修|修)/);C&&C[1]!==n.era&&(v.laterRepair={era:C[1]})}const y=bh.find(C=>C.re.test(s));if(y){const C=s.search(y.re),S=s.slice(C),_=Zs(S,n.era)??Zs(s,n.era);_&&(v.basedOn={era:_.era,reign:_.reign,year:_.year,relation:y.relation})}return v}const Tr={漢:220,三國:280,晉:420,南北朝:589,隋:618,唐:907,五代:960,宋:1279,遼:1125,西夏:1227,金:1234,元:1368,明:1662,清:1911,民國:1975,日本:1912,朝鮮:1897,高麗:1392,越南:1945,琉球:1879};function dr(e){return Tr[e]}function yi(e){const n=Ei(e);if(n!=null)return n;const i=lo(e);if(i)return i.from;const o=Fn(e).era;return o?en[o]:void 0}const Js=["漢","三國","晉","南北朝","隋","唐","五代","宋","遼","西夏","金","元","明","清","民國","日本","朝鮮","高麗","越南","琉球"];function zr(e){const n=Js.indexOf(e);return n===-1?Js.length:n}function vh(e){const n={belongsTo:[],collected:[],contains:[],derivative:[],studies:[],related:[]};for(const s of e){const a=s.relation;a==="part_of"?n.belongsTo.push(s):a==="collected_in"?n.collected.push(s):a==="has_part"||a==="contains_text_of"?n.contains.push(s):a==="text_carried_by"||a==="studied_by"||a==="derived_from"||a==="followed_by"||a==="has_adaptation"?n.derivative.push(s):a==="studies"||a==="preceded_by"?n.studies.push(s):n.related.push(s)}const i=[],o=(s,a)=>{n[s].length&&i.push({key:s,labelKey:a,items:n[s]})};return o("belongsTo","belongsToWork"),o("collected","collectedIn"),o("contains","containedWorks"),o("derivative","derivativeWorks"),o("studies","studies"),o("related","relatedWorks"),i}function co(e,n){const i=Kr(e||[]),o=new Map,s=[];for(const p of i)p.group?(o.has(p.group)||o.set(p.group,[]),o.get(p.group).push(p)):s.push(p);for(const p of o.values())p.sort((h,u)=>{const m=f=>f.group_role==="origin"?0:f.group_role==="mirror"?1:2;return m(h)-m(u)});const a={text:[],image:[],textImage:[],physical:[]};for(const p of s){const h=Bt(p),u=h.includes("text"),m=h.includes("image");u&&m?a.textImage.push(p):u?a.text.push(p):m?a.image.push(p):a.physical.push(p)}const d=["text","image","textImage","physical"].filter(p=>a[p].length>0).map(p=>({key:p,items:a[p]})),c=[...o.entries()].map(([p,h])=>{var u,m;return{key:p,label:((u=n==null?void 0:n[p])==null?void 0:u.label)||p,description:(m=n==null?void 0:n[p])==null?void 0:m.description,items:h}});return{buckets:d,mirrors:c,total:i.length}}function Ri(e,n=vn("zh-Hant")){const i=[],o=e.metadata||{};o.edition&&i.push(String(o.edition)),e.source_label&&i.push(e.source_label),e.details&&i.push(e.details);const s=Si(e);return s&&s.expected>0&&i.push(s.missing>0?n("detail.volumeStatsMissing",{found:s.found,expected:s.expected,missing:s.missing}):n("detail.volumeStats",{found:s.found,expected:s.expected})),o.version&&i.push(String(o.version)),i.join(" · ")}function Ql(e,n){if(Ri(e)||n.filter(o=>o.name===e.name).length<2)return"";try{const o=new URL(e.url),s=o.searchParams.get("res")||o.searchParams.get("id");if(s)return s;const a=o.pathname.split("/").filter(Boolean).pop();if(a)return decodeURIComponent(a)}catch{}return""}function ec(e,n){var a,l;const i=e.resources||[],o=[],s=[];for(const d of i){const c=Bt(d);c.includes("image")&&o.push(d),c.includes("physical")&&s.push(d)}return{id:e.id,name:e.edition||e.title||e.id,era:Fn(e),year:Ei(e),sortYear:yi(e),images:o,holders:s,locationName:(a=e.current_location)==null?void 0:a.name,important:kh(e.id,n),group:(l=n==null?void 0:n.node_groups)==null?void 0:l[e.id],hasImage:o.length>0}}function kh(e,n){var d,c;if(!n)return!1;const i=n.default_collection;if(!i)return!1;const o=(d=n.collections)==null?void 0:d[i];if(((o==null?void 0:o.book_ids)??(i==="core"?n.core_books??[]:[])).includes(e))return!0;const a=(o==null?void 0:o.groups)??[],l=(c=n.node_groups)==null?void 0:c[e];return!!l&&a.includes(l)}function tc(e,n,i={}){const o=new Set((n==null?void 0:n.excluded_books)??[]),s=e.filter(c=>!o.has(c.id)).map(c=>ec(c,n));let a=s;i.era&&(a=a.filter(c=>c.era.era===i.era)),i.scanOnly&&(a=a.filter(c=>c.hasImage)),i.sort==="year"?a=a.map((c,p)=>({r:c,i:p})).sort((c,p)=>{const h=c.r.sortYear,u=p.r.sortYear;return h!=null&&u!=null?h-u||c.i-p.i:h!=null?-1:u!=null?1:c.i-p.i}).map(c=>c.r):a=a.map((c,p)=>({r:c,i:p})).sort((c,p)=>{const h=u=>(u.important?0:1)*2+(u.hasImage?0:1);return h(c.r)-h(p.r)||c.i-p.i}).map(c=>c.r);const d=[...new Set(s.map(c=>c.era.era).filter(Boolean))].sort((c,p)=>zr(c)-zr(p));return{rows:a,allRows:s,eras:d,hasInferredEra:s.some(c=>c.era.source==="edition")}}function wh(e,n){var y,$;if(!n||!n.default_collection||!n.node_groups)return{useGrouping:!1,coreIds:e,groupedIds:[]};const i=(y=n.collections)==null?void 0:y[n.default_collection],o=(i==null?void 0:i.groups)??[],s=(i==null?void 0:i.book_ids)??[],a=o.length>0||s.length>0,l=!a&&n.default_collection==="core"&&Array.isArray(n.core_books)?n.core_books:[];if(!a&&l.length===0)return{useGrouping:!1,coreIds:e,groupedIds:[]};const d=new Set(o),c=new Set([...s,...l]),p=b=>{if(c.has(b))return!0;const w=n.node_groups[b];return w!=null&&d.has(w)},h=[],u=new Map,m=[];for(const b of e)if(!(($=n.excluded_books)!=null&&$.includes(b)))if(p(b))h.push(b);else{const w=n.node_groups[b];w?(u.has(w)||u.set(w,[]),u.get(w).push(b)):m.push(b)}if(m.length+[...u.values()].reduce((b,w)=>b+w.length,0)<3)return{useGrouping:!1,coreIds:e,groupedIds:[]};const x=new Map((n.groups??[]).map(b=>[b.id,b])),v=[...u.entries()].map(([b,w])=>{const j=x.get(b);return{id:b,label:(j==null?void 0:j.label)??b,description:j==null?void 0:j.description,ids:w}});return m.length>0&&v.push({id:"__other__",label:"其他版本",description:void 0,ids:m}),{useGrouping:!0,coreIds:h,groupedIds:v}}const nc=["撰","編","注","校","譯","繪","其他"],Sh=[{cls:"譯",re:/譯|译/},{cls:"繪",re:/繪|绘|畫|画|圖|图|篆|摹/},{cls:"校",re:/^(?!.*[編编輯辑纂])(?=.*(校|訂|订|勘|審|审|考異)).*/},{cls:"注",re:/注|註|疏|箋|笺|解|釋|释|音|義疏|章句|評|评|批|論|论|答/},{cls:"編",re:/編|编|輯|辑|纂|集|選|选|錄|录|彙|汇|續|续|補|补|刪|删|修|次|定/},{cls:"撰",re:/撰|譔|作|著|述|製|制|書|书|記|记|傳|传|題|题|序|跋|讚|贊|赞|頌|颂/}];function po(e){if(!e||!e.trim())return"撰";const n=e.replace(/[\s-]/g,"");if(!n)return"撰";for(const{cls:i,re:o}of Sh)if(o.test(n))return i;return"其他"}function uo(e){if(!e)return"";const n=e.trim();return!n||!/[一-鿿]/.test(n)?"":n}function ic(e,n="全部"){const i=new Map;for(const s of e){const a=po(s);i.set(a,(i.get(a)??0)+1)}const o=[{cls:"全部",label:n,count:e.length}];for(const s of nc){const a=i.get(s);a&&o.push({cls:s,label:s,count:a})}return o.length>2?o:[]}function mo(e){return(e._books??[]).map(n=>n.id).filter(n=>typeof n=="string")}function ho(e){const n=e._classifications??[],i=n.find(o=>o.scheme==="zongmu")??n[0];if(i)return{l1:i.l1??"",l2:i.l2??"",l3:i.l3??"",l4:i.l4??"",...i.source?{source:i.source}:{}}}function rc(e){const n=e._members??[],i=typeof e._member_count=="number"?e._member_count:n.length;return{works:n.filter(o=>o.t==="work").map(o=>({id:o.id,title:o.title??"",volumes:Mn(o.vol)})),bookIds:n.filter(o=>o.t!=="work").map(o=>o.id).filter(o=>typeof o=="string"),total:i,truncated:i>n.length}}function _h(e){var n;return(e==null?void 0:e._member_count)||((n=e==null?void 0:e._members)==null?void 0:n.length)||0}function oc(e,n,i){if(n&&n.books&&n.books.length>0){const l=n.books.map(c=>({id:c.work_id||c.book_id||void 0,title:c.title,section:c.section,volumes:c.volumes||[],subItems:c.sub_items,edition:c.edition,found:c.found_volumes,expected:c.expected_volumes})),d=[...new Set(l.map(c=>c.section).filter(Boolean))];return{rows:l,source:"catalog",sections:d,totalVolumes:n.total_volumes}}const{works:o,bookIds:s}=rc(e);return o.length>0?{rows:o.map(d=>({id:d.id,title:d.title,volumes:d.volumes})),source:"works",sections:[]}:{rows:s.map(l=>{var d,c;return{id:l,title:((d=i==null?void 0:i.get(l))==null?void 0:d.title)||l,edition:(c=i==null?void 0:i.get(l))==null?void 0:c.edition,volumes:[]}}),source:"books",sections:[]}}function Mn(e){if(e==null)return[];if(typeof e=="number")return[e];if(Array.isArray(e))return e.filter(n=>typeof n=="number");if(typeof e=="string"){const n=e.match(/^(\d+)\s*[-–~]\s*(\d+)$/);if(n){const[i,o]=[parseInt(n[1]),parseInt(n[2])];return Array.from({length:Math.max(0,o-i+1)},(s,a)=>i+a)}return e.split(/[,、]/).map(i=>parseInt(i.trim())).filter(i=>!isNaN(i))}return[]}function Li(e,n="冊"){if(e.length===0)return"";if(e.length===1)return`${e[0]}`;const i=[...e].sort((a,l)=>a-l),o=i[0],s=i[i.length-1];return s-o+1===i.length?`${o}–${s}`:i.length<=3?i.join(", "):`${o}–${s} (${i.length}${n})`}const $h=["〇","一","二","三","四","五","六","七","八","九"],Qs=["","十","百","千"];function sc(e){if(e<=0)return"";if(e>=1e4)return String(e);const n=String(e),i=n.length;let o="",s=!1;for(let a=0;a<i;a++){const l=parseInt(n[a]),d=i-1-a;l===0?s=!0:(s&&o&&(o+="〇"),s=!1,l===1&&d===1&&a===0?o+=Qs[d]:o+=$h[l]+Qs[d])}return o}function Ch(e){return e==null?"":typeof e=="string"?e:"name"in e&&e.name?e.name:"title"in e&&e.title||""}function Th(e){if(e==null||typeof e=="string")return;const n="url"in e&&e.url?e.url:"type"in e&&e.type==="url"?e.details:void 0;return n&&/^https?:\/\//i.test(n)?n:void 0}function Wt(e,n="卷"){var o,s;const i=e;return i.measure_info?i.measure_info:(o=i.juan_count)!=null&&o.number?sc(i.juan_count.number)+n:(s=i.juan_count)!=null&&s.description?i.juan_count.description:""}function ac(e){var o;if(e.edition_type)return e.edition_type;if((o=e.lineage)!=null&&o.category)return e.lineage.category;const n=e.edition||e.title||"",i=[[/活字|聚珍/,"活字本"],[/石印/,"石印本"],[/影印|景印/,"影印本"],[/寫本|写本|繕寫|缮写/,"寫本"],[/鈔本|抄本/,"抄本"],[/拓本/,"拓本"],[/批校|評本|评本|校本/,"校本"],[/刻本|刊本|梓行|開雕/,"刻本"],[/排印|鉛印|铅印/,"排印本"]];for(const[s,a]of i)if(s.test(n))return a;return""}const zh=65536,Nh="guji_markdown";function Ih(e){const n=e==null?void 0:e.guji_markdown;if(typeof n!="string")return!1;const i=/^(\d+)\.(\d+)(?:\.\d+)?$/.exec(n.trim());if(!i)return!1;const o=parseInt(i[1],10),s=parseInt(i[2],10);return o>0||s>=2}const Eh=/^□\{guess=([^\s{}]+)\}/;function Rh(e,n){const i=e[n+1];return i!==void 0&&!/[A-Za-z/!?>\s]/.test(i)}function lc(e,n){let i=0;for(let o=n;o<e.length;o++){const s=e[o];if(s===`
|
|
678
|
+
`)}const qs=2,lh=400,ch=6,Kl=e=>e==="*"||e==="#"||e==="<"||e===">"||/\s/.test(e);function Xl(e,n){if(e[n]!=="<"||e[n+1]!=="!"||e[n+2]!=="-"||e[n+3]!=="-")return-1;for(let i=n+4;i+2<e.length;i++)if(e[i]==="-"&&e[i+1]==="-"&&e[i+2]===">")return i+2;return-1}function dh(e,n,i){let o=n;for(let s=0;s<i.length;){if(o>=e.length)return-1;if(i[s]===e[o]){s++,o++;continue}const a=Xl(e,o);if(a>=0){o=a+1;continue}if(Kl(e[o])){o++;continue}if(i[s]===" "){s++;continue}return-1}return o}function ph(e){const n=Array.from(ql(e));let i=0;return{align(o){if(!o)return;const s=Array.from(o);if(s.every(d=>d===" "||/\s/.test(d)))return;const a=s.length>=ch;let l=0;for(let d=i;d<n.length&&d-i<=(a?lh:qs+64);d++){const c=Xl(n,d);if(c>=0){d=c;continue}if(!Kl(n[d])){const h=dh(n,d,s);if(h>=0)return i=h,d;if(l++,!a&&l>qs)return}}}}}const Zl=["西漢","東漢","三國","西晉","東晉","南北朝","南朝","北朝","隋","唐","五代","北宋","南宋","宋","遼","西夏","金","元","南明","明","清","民國","日本","朝鮮","高麗","越南","琉球","西汉","东汉","西晋","东晋","南北朝","南朝","北朝","辽","民国","朝鲜","高丽"],uh={北宋:"宋",南宋:"宋",西漢:"漢",東漢:"漢",西汉:"漢",东汉:"漢",西晉:"晉",東晉:"晉",西晋:"晉",东晋:"晉",南明:"明",民国:"民國",辽:"遼",朝鲜:"朝鮮",高丽:"高麗",南北朝:"南北朝",南朝:"南北朝",北朝:"南北朝"};function rt(e){return uh[e]??e}const gn=[{pattern:/欽定四庫全書薈要|摛藻堂/,era:"清",reign:"乾隆"},{pattern:/欽定四庫全書|四庫全書|文淵閣|文瀾閣|文溯閣|文津閣|文匯閣|文宗閣|文瀾閣/,era:"清",reign:"乾隆"},{pattern:/钦定四库全书|四库全书|文渊阁|文澜阁|文溯阁|文津阁/,era:"清",reign:"乾隆"},{pattern:/武英殿聚珍|聚珍版/,era:"清",reign:"乾隆"},{pattern:/武英殿/,era:"清"},{pattern:/百衲本|涵芬樓|涵芬楼|商務印書館|商务印书馆|中華書局|中华书局/,era:"民國"},{pattern:/汲古閣|汲古阁/,era:"明",reign:"崇禎"}],fn={熹平:172,建安:196,黃初:220,正始:240,廣政:938,太康:280,永和:345,開皇:581,貞觀:627,開元:713,天寶:742,貞元:785,元和:806,開成:836,會昌:841,咸通:860,建隆:960,太平興國:976,咸平:998,天禧:1017,慶曆:1041,皇祐:1049,嘉祐:1056,治平:1064,熙寧:1068,元豐:1078,元祐:1086,紹聖:1094,崇寧:1102,大觀:1107,政和:1111,宣和:1119,建炎:1127,紹興:1131,隆興:1163,乾道:1165,淳熙:1174,紹熙:1190,慶元:1195,嘉泰:1201,開禧:1205,嘉定:1208,寶慶:1225,紹定:1228,端平:1234,嘉熙:1237,淳祐:1241,寶祐:1253,開慶:1259,景定:1260,咸淳:1265,大定:1161,明昌:1190,至元:1264,大德:1297,皇慶:1312,延祐:1314,泰定:1324,天曆:1328,至順:1330,至正:1341,洪武:1368,永樂:1403,宣德:1426,正統:1436,景泰:1450,天順:1457,成化:1465,弘治:1488,正德:1506,嘉靖:1522,隆慶:1567,萬曆:1573,泰昌:1620,天啟:1621,崇禎:1628,弘光:1645,隆武:1645,紹武:1646,永曆:1647,順治:1644,康熙:1662,雍正:1723,乾隆:1736,嘉慶:1796,道光:1821,咸豐:1851,同治:1862,光緒:1875,宣統:1909,慶長:1596,寬永:1624,正保:1644,慶安:1648,承應:1652,明曆:1655,萬治:1658,寬文:1661,延寶:1673,天和:1681,貞享:1684,元祿:1688,寶永:1704,享保:1716,元文:1736,寬保:1741,延享:1744,寬延:1748,寶曆:1751,明和:1764,安永:1772,天明:1781,寬政:1789,享和:1801,文化:1804,文政:1818,天保:1830,弘化:1844,嘉永:1848,安政:1854,萬延:1860,文久:1861,元治:1864,慶應:1865,明治:1868,大正:1912,昭和:1926,天正:1573,文祿:1592,永祿:1558,天文:1532},Jl={"唐|元和":806,"日本|元和":1615,"明|正德":1506,"日本|正德":1711};function Ii(e){const n=e.match(/^\s*(\d{3,4})(?:\s*[-–—~至]\s*(\d{3,4}))?/);if(!n)return;const i=parseInt(n[1],10);if(i<100||i>2100)return;const o=n[2]?parseInt(n[2],10):void 0;return{from:i,to:o!=null&&o>=i&&o<=2100?o:void 0}}function mh(e){return e>=1950?"":e>=1912?"民國":e>=1645?"清":e>=1368?"明":e>=1279?"元":e>=960?"宋":e>=907?"五代":e>=618?"唐":e>=581?"隋":e>=420?"南北朝":e>=265?"晉":e>=220?"三國":e>=-202?"漢":""}const hh=/末[宋元明清]初|[約约]|推定|推算|前後|前后|左右|[前中後后末]期/,Ks={曹魏:"三國",蜀漢:"三國",東吳:"三國",前蜀:"五代",後蜀:"五代"};function ao(e){const n=e.trim().replace(/[代朝]$/,"");for(const s of Object.keys(Ks))if(n.startsWith(s))return Ks[s];const i=rt(n);if(en[i]!=null)return i;const o=Pt(n);if(o&&n.length<=o.length+1)return rt(o)}function Qt(e,n){if(n){const i=Jl[`${n}|${e}`];if(i!=null)return i}return fn[e]}const gh=1911;function fh(e){const n=fn[e];if(n==null)return;const i=zt[e];let o;for(const[s,a]of Object.entries(fn))zt[s]===i&&a>n&&(o==null||a<o)&&(o=a);return o!=null?o-1:void 0}const xh={零:0,"〇":0,一:1,二:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9,十:10,廿:20,卅:30,元:1};function bi(e){if(!e)return;if(/^\d+$/.test(e))return parseInt(e,10);let n=0,i=0,o=!1;for(const a of e){const l=xh[a];if(l===void 0)return;o=!0,a==="十"?i=(i||1)*10:a==="廿"||a==="卅"?(n+=l,i=0):i>=10?(n+=i+l,i=0):i=i*10+l}const s=n+i;return o&&s>0?s:void 0}function Pt(e){for(const n of Zl)if(e.startsWith(n))return n}const zt={};{const e=(n,i)=>{for(const o of i)zt[o]=n};e("東漢",["熹平","建安"]),e("三國",["黃初","正始"]),e("五代",["廣政"]),e("西晉",["太康"]),e("東晉",["永和"]),e("隋",["開皇"]),e("唐",["貞觀","開元","天寶","貞元","元和","開成","會昌","咸通"]),e("宋",["建隆","太平興國","咸平","天禧","慶曆","皇祐","嘉祐","治平","熙寧","元豐","元祐","紹聖","崇寧","大觀","政和","宣和","建炎","紹興","隆興","乾道","淳熙","紹熙","慶元","嘉泰","開禧","嘉定","寶慶","紹定","端平","嘉熙","淳祐","寶祐","開慶","景定","咸淳"]),e("金",["大定","明昌"]),e("元",["至元","大德","皇慶","延祐","泰定","天曆","至順","至正"]),e("明",["洪武","永樂","宣德","正統","景泰","天順","成化","弘治","正德","嘉靖","隆慶","萬曆","泰昌","天啟","崇禎","弘光","隆武","紹武","永曆"]),e("清",["順治","康熙","雍正","乾隆","嘉慶","道光","咸豐","同治","光緒","宣統"]),e("日本",["慶長","寬永","正保","慶安","承應","明曆","萬治","寬文","延寶","天和","貞享","元祿","寶永","享保","元文","寬保","延享","寬延","寶曆","明和","安永","天明","寬政","享和","文化","文政","天保","弘化","嘉永","安政","萬延","文久","元治","慶應","明治","大正","昭和","天正","文祿","永祿","天文"])}function tn(e,n){const i=n==="北宋"||n==="南宋"?"宋":n;for(const o of Object.keys(fn))if(e.includes(o)&&!(i&&zt[o]&&zt[o]!==i&&Jl[`${i}|${o}`]==null))return o}function Fn(e){var l,d,c;const n={era:"",reign:"",source:"none"},i=e.dating;if(i!=null&&i.era||i!=null&&i.reign)return{era:i.era??"",reign:i.reign??"",source:i.certainty==="attested"?"catalog":"edition"};const o=(l=e.lineage)==null?void 0:l.year_text;if(o){const p=Pt(o)??"";return{era:rt(p),reign:tn(o,p)??"",source:"lineage"}}const s=(d=e.publication_info)==null?void 0:d.year;if(s){const p=Ii(s);if(p)return{era:mh(p.from),reign:"",source:"publication"};const h=Pt(s)??ao(s)??((c=gn.find(f=>f.pattern.test(s)))==null?void 0:c.era)??"",u=tn(s,h)??"",m=h||(u?zt[u]??"":"");if(m||u)return{era:rt(m),reign:u,source:"publication"}}const a=e.edition||e.title||"";if(a){const p=Pt(a);if(p)return{era:rt(p),reign:tn(a,p)??"",source:"edition"};const h=gn.find(u=>u.pattern.test(a));if(h)return{era:rt(h.era),reign:tn(a,h.era)??h.reign??"",source:"edition"}}return n}function Ei(e){var o,s,a,l,d,c,p,h,u;if(((o=e.dating)==null?void 0:o.year)!=null)return e.dating.year;if(typeof((s=e.lineage)==null?void 0:s.year)=="number")return e.lineage.year;const n=(a=e.publication_info)==null?void 0:a.year;if(n){const m=Ii(n);if(m)return m.from}const i=[(l=e.lineage)==null?void 0:l.year_text,(d=e.publication_info)==null?void 0:d.year,e.edition,e.edition?void 0:e.title].filter(Boolean);for(const m of i){const f=((c=e.publication_info)==null?void 0:c.year)||((p=e.lineage)==null?void 0:p.year_text);if(f&&m!==f&&(Pt(f)||ao(f)))break;const x=m.match(/(?:^|[^\d第卷冊册頁页])(\d{3,4})\s*年/)??m.match(/[((](\d{3,4})\s*(?:[-–—~至]\s*\d{3,4})?\s*年?[))]/);if(x){const w=parseInt(x[1],10);if(w>=100&&w<=2100)return w}const v=m.match(/民[國国]\s*([零〇一二三四五六七八九十廿卅百元\d]+)\s*年/);if(v){const w=Pt(m);if(!w||rt(w)==="民國"){const k=bi(v[1]);if(k!=null&&k>=1&&k<=120)return gh+k}}const y=Pt(m)??((h=gn.find(w=>w.pattern.test(m)))==null?void 0:h.era),$=y?rt(y):void 0,b=tn(m,$)??(Pt(m)||(u=gn.find(w=>w.pattern.test(m)))==null?void 0:u.reign);if(b){const w=Qt(b,$);if(w==null)continue;const j=m.indexOf(b),k=j>=0?m.slice(j+b.length):"",C=k.match(/^([零〇一二三四五六七八九十廿卅元]+)年/)??k.match(/^[甲乙丙丁戊己庚辛壬癸][子丑寅卯辰巳午未申酉戌亥]\s*[((]\s*([零〇一二三四五六七八九十廿卅元]+)\s*年?\s*[))]/),S=C?bi(C[1]):void 0;return w+(S?S-1:0)}}}function lo(e){var l,d,c,p,h,u;const n=(l=e.dating)==null?void 0:l.year_range;if(n&&n.length===2)return{from:n[0],to:n[1]};const i=(d=e.lineage)==null?void 0:d.year_range;if(i&&i.length===2)return{from:i[0],to:i[1]};const o=(c=e.lineage)==null?void 0:c.year_text;if(o){const m=o.match(/([宋元明清])\s*末\s*([宋元明清])\s*初/);if(m){const f=Tr[rt(m[1])],x=en[rt(m[2])];if(f!=null&&x!=null)return{from:Math.min(f,x)-20,to:Math.max(f,x)+40}}}const s=(p=e.publication_info)==null?void 0:p.year;if(s){const m=Ii(s);if((m==null?void 0:m.to)!=null)return{from:m.from,to:m.to};const f=s.match(/([宋元明清])\s*末\s*([宋元明清])\s*初/);if(f){const x=Tr[rt(f[1])],v=en[rt(f[2])];if(x!=null&&v!=null)return{from:Math.min(x,v)-20,to:Math.max(x,v)+40}}}const a=[(h=e.publication_info)==null?void 0:h.year,e.edition,e.title].filter(Boolean);for(const m of a){if(!/[間间]/.test(m))continue;const f=Pt(m)??ao(m)??((u=gn.find(y=>y.pattern.test(m)))==null?void 0:u.era),x=f?rt(f):void 0,v=[];for(const y of Object.keys(fn))m.includes(y)&&(x&&zt[y]&&zt[y]!==x||Qt(y,x)!=null&&v.push(y));if(v.length===0){const y=m.match(/([一-鿿])([一-鿿])[間间]/);if(y&&x){for(const $ of[y[1],y[2]])for(const b of Object.keys(fn))if(zt[b]===x&&!(b[0]!==$&&b[b.length-1]!==$)&&Qt(b,x)!=null){v.push(b);break}}}if(v.length>0){const y=v.map(j=>Qt(j,x)).filter(j=>j!=null),$=Math.min(...y),b=v.reduce((j,k)=>Qt(j,x)>=Qt(k,x)?j:k),w=fh(b)??dr(x??"")??Math.max(...y);return{from:$,to:w>$?w:dr(x??zt[b]??"")??$}}if(x&&en[x]!=null)return{from:en[x],to:dr(x)??en[x]}}}const en={漢:-202,三國:220,晉:265,南北朝:420,隋:581,唐:618,五代:907,宋:960,遼:916,西夏:1038,金:1115,元:1271,明:1368,清:1644,民國:1912,日本:1600,朝鮮:1392,高麗:918,越南:1400,琉球:1400},bh=[{re:/影印|景印|影鈔|影钞|景鈔|景钞/,relation:"影印"},{re:/翻刻|覆刻|覆刊|翻雕|重刊|重雕/,relation:"翻刻"},{re:/傳鈔|传钞|傳抄|传抄/,relation:"傳鈔"},{re:/配補|配补|百衲/,relation:"配補"},{re:/據.{0,12}本|据.{0,12}本/,relation:"據刊"}],yh=/修補|修补|遞修|递修|[明清元宋]修本|後代修|后代修/,Xs=/約|约|疑|傳為|传为|舊題|旧题|相傳|相传|待考|未詳|未详|\(疑\)|(疑)/;function Zs(e,n){for(const i of Zl){const o=e.indexOf(i);if(o<0)continue;if(i.length===1){const c=e[o+1]??"";if(!/[刻刊寫写鈔钞抄印本間间初末年時时代人臧藏]/.test(c)&&!tn(e.slice(o),rt(i)))continue}const s=rt(i);if(s===n)continue;const a=e.slice(o),l=tn(a,s)??"";let d;if(l){const c=Qt(l,s);if(c!=null){const h=a.slice(a.indexOf(l)+l.length).match(/^([零〇一二三四五六七八九十廿卅元]+)年/),u=h?bi(h[1]):void 0;d=c+(u?u-1:0)}}return{era:s,reign:l,year:d}}for(const i of gn)if(i.pattern.test(e))return{era:rt(i.era),reign:i.reign??""}}function jh(e){var $,b,w,j,k;const n=Fn(e),i=(($=e.publication_info)==null?void 0:$.year)??"",o=i?Ii(i):void 0;if(!n.era&&!n.reign&&!o)return;const s=e.edition||e.title||"",a=/[間间]/.test(s),l=((b=e.lineage)==null?void 0:b.year_text)??"",d=/末[宋元明清]初|[約约]|推定|前後|前后|左右/.test(l),c=n.source==="publication"&&hh.test(i),p=n.source==="publication"&&/[間间]/.test(i),h=l.match(/([宋元明清])[^、,,]*?[((](\d{3,4})[))][^、,,]*?原刻/);let u;a||d||c||p?u=void 0:h?u=parseInt(h[2],10):u=Ei(e);const m=u==null?lo(e):void 0;let f;n.source==="publication"&&(c||Xs.test(i))?f="uncertain":n.source==="lineage"||n.source==="publication"?f="attested":Xs.test(s)||!n.reign&&u==null?f="uncertain":f="inferred";const x=n.source==="edition"?`題名「${s}」`:n.source==="lineage"?`版本傳承著錄「${((w=e.lineage)==null?void 0:w.year_text)??((j=e.lineage)==null?void 0:j.year)??""}」`:`出版著錄「${((k=e.publication_info)==null?void 0:k.year)??""}」`,v={era:n.era,reign:n.reign,year:u,yearRange:m,certainty:f,source:n.source==="edition"?"edition":"catalog",basis:x};if(h){const C=l.match(/[、,,]\s*([宋元明清])/);C&&C[1]!==v.era&&(v.laterRepair={era:C[1]})}if(!v.laterRepair&&yh.test(s)){const C=s.match(/([宋元明清])\s*(?:初|末)?\s*(?:修補|修补|遞修|递修|修)/);C&&C[1]!==n.era&&(v.laterRepair={era:C[1]})}const y=bh.find(C=>C.re.test(s));if(y){const C=s.search(y.re),S=s.slice(C),_=Zs(S,n.era)??Zs(s,n.era);_&&(v.basedOn={era:_.era,reign:_.reign,year:_.year,relation:y.relation})}return v}const Tr={漢:220,三國:280,晉:420,南北朝:589,隋:618,唐:907,五代:960,宋:1279,遼:1125,西夏:1227,金:1234,元:1368,明:1662,清:1911,民國:1975,日本:1912,朝鮮:1897,高麗:1392,越南:1945,琉球:1879};function dr(e){return Tr[e]}function yi(e){const n=Ei(e);if(n!=null)return n;const i=lo(e);if(i)return i.from;const o=Fn(e).era;return o?en[o]:void 0}const Js=["漢","三國","晉","南北朝","隋","唐","五代","宋","遼","西夏","金","元","明","清","民國","日本","朝鮮","高麗","越南","琉球"];function zr(e){const n=Js.indexOf(e);return n===-1?Js.length:n}function vh(e){const n={belongsTo:[],collected:[],contains:[],derivative:[],studies:[],related:[]};for(const s of e){const a=s.relation;a==="part_of"?n.belongsTo.push(s):a==="collected_in"?n.collected.push(s):a==="has_part"||a==="contains_text_of"?n.contains.push(s):a==="text_carried_by"||a==="studied_by"||a==="derived_from"||a==="followed_by"||a==="has_adaptation"?n.derivative.push(s):a==="studies"||a==="preceded_by"?n.studies.push(s):n.related.push(s)}const i=[],o=(s,a)=>{n[s].length&&i.push({key:s,labelKey:a,items:n[s]})};return o("belongsTo","belongsToWork"),o("collected","collectedIn"),o("contains","containedWorks"),o("derivative","derivativeWorks"),o("studies","studies"),o("related","relatedWorks"),i}function co(e,n){const i=Kr(e||[]),o=new Map,s=[];for(const p of i)p.group?(o.has(p.group)||o.set(p.group,[]),o.get(p.group).push(p)):s.push(p);for(const p of o.values())p.sort((h,u)=>{const m=f=>f.group_role==="origin"?0:f.group_role==="mirror"?1:2;return m(h)-m(u)});const a={text:[],image:[],textImage:[],physical:[]};for(const p of s){const h=Bt(p),u=h.includes("text"),m=h.includes("image");u&&m?a.textImage.push(p):u?a.text.push(p):m?a.image.push(p):a.physical.push(p)}const d=["text","image","textImage","physical"].filter(p=>a[p].length>0).map(p=>({key:p,items:a[p]})),c=[...o.entries()].map(([p,h])=>{var u,m;return{key:p,label:((u=n==null?void 0:n[p])==null?void 0:u.label)||p,description:(m=n==null?void 0:n[p])==null?void 0:m.description,items:h}});return{buckets:d,mirrors:c,total:i.length}}function Ri(e,n=vn("zh-Hant")){const i=[],o=e.metadata||{};o.edition&&i.push(String(o.edition)),e.source_label&&i.push(e.source_label),e.details&&i.push(e.details);const s=Si(e);return s&&s.expected>0&&i.push(s.missing>0?n("detail.volumeStatsMissing",{found:s.found,expected:s.expected,missing:s.missing}):n("detail.volumeStats",{found:s.found,expected:s.expected})),o.version&&i.push(String(o.version)),i.join(" · ")}function Ql(e,n){if(Ri(e)||n.filter(o=>o.name===e.name).length<2)return"";try{const o=new URL(e.url),s=o.searchParams.get("res")||o.searchParams.get("id");if(s)return s;const a=o.pathname.split("/").filter(Boolean).pop();if(a)return decodeURIComponent(a)}catch{}return""}function ec(e,n){var a,l;const i=e.resources||[],o=[],s=[];for(const d of i){const c=Bt(d);c.includes("image")&&o.push(d),c.includes("physical")&&s.push(d)}return{id:e.id,name:e.edition||e.title||e.id,era:Fn(e),year:Ei(e),sortYear:yi(e),images:o,holders:s,locationName:(a=e.current_location)==null?void 0:a.name,important:kh(e.id,n),group:(l=n==null?void 0:n.node_groups)==null?void 0:l[e.id],hasImage:o.length>0}}function kh(e,n){var d,c;if(!n)return!1;const i=n.default_collection;if(!i)return!1;const o=(d=n.collections)==null?void 0:d[i];if(((o==null?void 0:o.book_ids)??(i==="core"?n.core_books??[]:[])).includes(e))return!0;const a=(o==null?void 0:o.groups)??[],l=(c=n.node_groups)==null?void 0:c[e];return!!l&&a.includes(l)}function tc(e,n,i={}){const o=new Set((n==null?void 0:n.excluded_books)??[]),s=e.filter(c=>!o.has(c.id)).map(c=>ec(c,n));let a=s;i.era&&(a=a.filter(c=>c.era.era===i.era)),i.scanOnly&&(a=a.filter(c=>c.hasImage)),i.sort==="year"?a=a.map((c,p)=>({r:c,i:p})).sort((c,p)=>{const h=c.r.sortYear,u=p.r.sortYear;return h!=null&&u!=null?h-u||c.i-p.i:h!=null?-1:u!=null?1:c.i-p.i}).map(c=>c.r):a=a.map((c,p)=>({r:c,i:p})).sort((c,p)=>{const h=u=>(u.important?0:1)*2+(u.hasImage?0:1);return h(c.r)-h(p.r)||c.i-p.i}).map(c=>c.r);const d=[...new Set(s.map(c=>c.era.era).filter(Boolean))].sort((c,p)=>zr(c)-zr(p));return{rows:a,allRows:s,eras:d,hasInferredEra:s.some(c=>c.era.source==="edition")}}function wh(e,n){var y,$;if(!n||!n.default_collection||!n.node_groups)return{useGrouping:!1,coreIds:e,groupedIds:[]};const i=(y=n.collections)==null?void 0:y[n.default_collection],o=(i==null?void 0:i.groups)??[],s=(i==null?void 0:i.book_ids)??[],a=o.length>0||s.length>0,l=!a&&n.default_collection==="core"&&Array.isArray(n.core_books)?n.core_books:[];if(!a&&l.length===0)return{useGrouping:!1,coreIds:e,groupedIds:[]};const d=new Set(o),c=new Set([...s,...l]),p=b=>{if(c.has(b))return!0;const w=n.node_groups[b];return w!=null&&d.has(w)},h=[],u=new Map,m=[];for(const b of e)if(!(($=n.excluded_books)!=null&&$.includes(b)))if(p(b))h.push(b);else{const w=n.node_groups[b];w?(u.has(w)||u.set(w,[]),u.get(w).push(b)):m.push(b)}if(m.length+[...u.values()].reduce((b,w)=>b+w.length,0)<3)return{useGrouping:!1,coreIds:e,groupedIds:[]};const x=new Map((n.groups??[]).map(b=>[b.id,b])),v=[...u.entries()].map(([b,w])=>{const j=x.get(b);return{id:b,label:(j==null?void 0:j.label)??b,description:j==null?void 0:j.description,ids:w}});return m.length>0&&v.push({id:"__other__",label:"其他版本",description:void 0,ids:m}),{useGrouping:!0,coreIds:h,groupedIds:v}}const nc=["撰","編","注","校","譯","繪","其他"],Sh=[{cls:"譯",re:/譯|译/},{cls:"繪",re:/繪|绘|畫|画|圖|图|篆|摹/},{cls:"校",re:/^(?!.*[編编輯辑纂])(?=.*(校|訂|订|勘|審|审|考異)).*/},{cls:"注",re:/注|註|疏|箋|笺|解|釋|释|音|義疏|章句|評|评|批|論|论|答/},{cls:"編",re:/編|编|輯|辑|纂|集|選|选|錄|录|彙|汇|續|续|補|补|刪|删|修|次|定/},{cls:"撰",re:/撰|譔|作|著|述|製|制|書|书|記|记|傳|传|題|题|序|跋|讚|贊|赞|頌|颂/}];function po(e){if(!e||!e.trim())return"撰";const n=e.replace(/[\s-]/g,"");if(!n)return"撰";for(const{cls:i,re:o}of Sh)if(o.test(n))return i;return"其他"}function uo(e){if(!e)return"";const n=e.trim();return!n||!/[一-鿿]/.test(n)?"":n}function ic(e,n="全部"){const i=new Map;for(const s of e){const a=po(s);i.set(a,(i.get(a)??0)+1)}const o=[{cls:"全部",label:n,count:e.length}];for(const s of nc){const a=i.get(s);a&&o.push({cls:s,label:s,count:a})}return o.length>2?o:[]}function mo(e){return(e._books??[]).map(n=>n.id).filter(n=>typeof n=="string")}function ho(e){const n=e._classifications??[],i=n.find(o=>o.scheme==="zongmu")??n[0];if(i)return{l1:i.l1??"",l2:i.l2??"",l3:i.l3??"",l4:i.l4??"",...i.source?{source:i.source}:{}}}function rc(e){const n=e._members??[],i=typeof e._member_count=="number"?e._member_count:n.length;return{works:n.filter(o=>o.t==="work").map(o=>({id:o.id,title:o.title??"",volumes:Mn(o.vol)})),bookIds:n.filter(o=>o.t!=="work").map(o=>o.id).filter(o=>typeof o=="string"),total:i,truncated:i>n.length}}function _h(e){var n;return(e==null?void 0:e._member_count)||((n=e==null?void 0:e._members)==null?void 0:n.length)||0}function oc(e,n,i){if(n&&n.books&&n.books.length>0){const l=n.books.map(c=>({id:c.work_id||c.book_id||void 0,title:c.title,section:c.section,volumes:c.volumes||[],subItems:c.sub_items,edition:c.edition,found:c.found_volumes,expected:c.expected_volumes})),d=[...new Set(l.map(c=>c.section).filter(Boolean))];return{rows:l,source:"catalog",sections:d,totalVolumes:n.total_volumes}}const{works:o,bookIds:s}=rc(e);return o.length>0?{rows:o.map(d=>({id:d.id,title:d.title,volumes:d.volumes})),source:"works",sections:[]}:{rows:s.map(l=>{var d,c;return{id:l,title:((d=i==null?void 0:i.get(l))==null?void 0:d.title)||l,edition:(c=i==null?void 0:i.get(l))==null?void 0:c.edition,volumes:[]}}),source:"books",sections:[]}}function Mn(e){if(e==null)return[];if(typeof e=="number")return[e];if(Array.isArray(e))return e.filter(n=>typeof n=="number");if(typeof e=="string"){const n=e.match(/^(\d+)\s*[-–~]\s*(\d+)$/);if(n){const[i,o]=[parseInt(n[1]),parseInt(n[2])];return Array.from({length:Math.max(0,o-i+1)},(s,a)=>i+a)}return e.split(/[,、]/).map(i=>parseInt(i.trim())).filter(i=>!isNaN(i))}return[]}function Li(e,n="冊"){if(e.length===0)return"";if(e.length===1)return`${e[0]}`;const i=[...e].sort((a,l)=>a-l),o=i[0],s=i[i.length-1];return s-o+1===i.length?`${o}–${s}`:i.length<=3?i.join(", "):`${o}–${s} (${i.length}${n})`}const $h=["〇","一","二","三","四","五","六","七","八","九"],Qs=["","十","百","千"];function sc(e){if(e<=0)return"";if(e>=1e4)return String(e);const n=String(e),i=n.length;let o="",s=!1;for(let a=0;a<i;a++){const l=parseInt(n[a]),d=i-1-a;l===0?s=!0:(s&&o&&(o+="〇"),s=!1,l===1&&d===1&&a===0?o+=Qs[d]:o+=$h[l]+Qs[d])}return o}function Ch(e){return e==null?"":typeof e=="string"?e:"name"in e&&e.name?e.name:"title"in e&&e.title||""}function Th(e){if(e==null||typeof e=="string")return;const n="url"in e&&e.url?e.url:"type"in e&&e.type==="url"?e.details:void 0;return n&&/^https?:\/\//i.test(n)?n:void 0}function Wt(e,n="卷"){var o,s;const i=e;return i.measure_info?i.measure_info:(o=i.juan_count)!=null&&o.number?sc(i.juan_count.number)+n:(s=i.juan_count)!=null&&s.description?i.juan_count.description:""}function ac(e){var o;if(e.edition_type)return e.edition_type;if((o=e.lineage)!=null&&o.category)return e.lineage.category;const n=e.edition||e.title||"",i=[[/活字|聚珍/,"活字本"],[/石印/,"石印本"],[/油印/,"油印本"],[/曬印|晒印/,"曬印本"],[/影印|景印/,"影印本"],[/寫本|写本|繕寫|缮写/,"寫本"],[/鈔本|抄本/,"抄本"],[/拓本/,"拓本"],[/批校|評本|评本|校本/,"校本"],[/刻本|刊本|梓行|開雕/,"刻本"],[/排印|鉛印|铅印/,"排印本"]];for(const[s,a]of i)if(s.test(n))return a;return""}const zh=65536,Nh="guji_markdown";function Ih(e){const n=e==null?void 0:e.guji_markdown;if(typeof n!="string")return!1;const i=/^(\d+)\.(\d+)(?:\.\d+)?$/.exec(n.trim());if(!i)return!1;const o=parseInt(i[1],10),s=parseInt(i[2],10);return o>0||s>=2}const Eh=/^□\{guess=([^\s{}]+)\}/;function Rh(e,n){const i=e[n+1];return i!==void 0&&!/[A-Za-z/!?>\s]/.test(i)}function lc(e,n){let i=0;for(let o=n;o<e.length;o++){const s=e[o];if(s===`
|
|
679
679
|
`)return-1;if(s==="\\"){o++;continue}if(s==="[")i++;else if(s==="]"&&(i--,i===0))return o}return-1}function Lh(e){return e.replace(/\\([\\[\]<>|{}])/g,"$1")}function Ah(e,n){const i=e[n];if(i==="["&&e[n+1]==="["){const o=e.indexOf("]]",n+2);return o>=0&&e.slice(n+2,o).indexOf(`
|
|
680
680
|
`)<0?{node:{type:"qw",label:e.slice(n+2,o)},end:o+2}:null}if(i===":"&&e.startsWith(":zi[",n)){const o=lc(e,n+3);return o>n+4?{node:{type:"zi",label:Lh(e.slice(n+4,o))},end:o+1}:null}if(i==="□"&&e[n+1]==="{"){const o=Eh.exec(e.slice(n,n+64));if(o)return{node:{type:"qz",guess:o[1]},end:n+o[0].length}}return null}function cc(e,n,i,o,s){const a=[];let l="",d=!1;const c=()=>{if(!l)return;let p=l;o&&(p=l.replace(/\\?\|/g,h=>d?"|":(d=!0,""))),p&&a.push({type:"text",text:p}),l=""};for(;n<e.length;){const p=e[n];if(p==="\\"&&(e[n+1]==="<"||e[n+1]===">")){l+=e[n+1],n+=2;continue}if(i!==null){if(p===i)return c(),{nodes:a,end:n};if(p===`
|
|
681
681
|
`)return null}const h=Ah(e,n);if(h){c(),a.push(h.node),n=h.end;continue}let u=null;if(p==="<"&&Rh(e,n)&&(u=">"),u){const m=cc(e,n+1,u,!0,s);if(m&&!(m.end-(n+1)>s)){c(),a.push({type:"jz",children:m.nodes}),n=m.end+1;continue}}l+=p,n++}return i!==null?null:(c(),{nodes:a,end:n})}function dc(e,n){return cc(e,0,null,!1,(n==null?void 0:n.jzMaxLength)??zh).nodes}function Mh(e){return/[<□]|\[\[|:zi\[/.test(e)}function pc(e){return e.map(n=>{switch(n.type){case"text":return n.text;case"jz":return`(${pc(n.children)})`;case"qw":return"□";case"qz":return"□";case"zi":return n.label}}).join("")}const Ph=216,ea="clamp(280px, 23vw, 360px)",Bh=1440,Nr="(max-width: 719px)",Oh=`${Nr}, (pointer: coarse)`,Wh=`
|
|
@@ -1340,7 +1340,7 @@ a.bim-et:focus-visible { outline: 2px solid ${r("accent")}; outline-offset: 2px;
|
|
|
1340
1340
|
.bim-et-card { animation: bim-et-in 120ms ease-out; }
|
|
1341
1341
|
@keyframes bim-et-in { from { opacity: 0; transform: translateY(-2px); } to { opacity: 1; transform: none; } }
|
|
1342
1342
|
}
|
|
1343
|
-
`,jf=120;function gt(e){return typeof e=="string"&&e.trim()?e.trim():void 0}function vf(e,n=jf){if(!e)return;const i=e.replace(/\s+/g," ").trim(),o=Array.from(i);return o.length>n?o.slice(0,n).join("")+"…":i}function kf(e){const n=e.dates&&typeof e.dates=="object"?e.dates:{},i=typeof n.birth=="number"?n.birth:void 0,o=typeof n.death=="number"?n.death:void 0;if(!(i===void 0&&o===void 0))return`${i??"?"}–${o??"?"}`}function wf(e){if(!Array.isArray(e.authors))return;const n=e.authors.map(i=>{if(!i||typeof i!="object")return"";const o=i,s=gt(o.name);return s?[gt(o.dynasty)&&`〔${gt(o.dynasty)}〕`,s,gt(o.role)].filter(Boolean).join(""):""}).filter(Boolean);return n.length?n.slice(0,3).join("、"):void 0}function Uc(e,n){const i=gt(n.type),o=gt(n.primary_name)??gt(n.title)??e,s=i==="entity"?[gt(n.dynasty),kf(n),gt(n.native_place)].filter(Boolean).join(" · "):[wf(n),gt(n.edition),gt(n.measure_info)].filter(Boolean).join(" · "),a=n.description&&typeof n.description=="object"?gt(n.description.text):gt(n.description);return{id:e,type:i,title:o,meta:s||void 0,description:vf(a)}}function Vc(e){const n=[e.dynasty,e.author,e.edition].filter(Boolean).join(" · ");return{id:e.id,type:e.type,title:e.title,meta:n||void 0}}function Gc(e){return async n=>{const i=await e.getItem(n);if(i)return Uc(n,i);if(e.getEntry){const o=await e.getEntry(n);if(o)return Vc(o)}return null}}const ca=new WeakMap;function Sf(e,n,i){let o=ca.get(e);o||(o=new Map,ca.set(e,o));const s=o.get(i);if(s)return s;const a=n(i);return o.set(i,a),a.catch(()=>o.delete(i)),a}const Yc=e=>`/item/${encodeURIComponent(e)}`,da={work:"書名",people:"人名",place:"地名",office:"官職",dynasty:"朝代",reign:"年號",other:"專名"},_f=typeof window>"u"?g.useEffect:g.useLayoutEffect;function Ao(e,n){return g.useMemo(()=>n?{owner:n,load:n}:e?{owner:e,load:Gc(e)}:null,[n,e])}const $f=e=>e,Cf=({text:e,entities:n,offsets:i="text",plainBase:o=0,transport:s,loadSummary:a,buildHref:l=Yc,onNavigate:d,renderText:c=$f,hoverDelayMs:p=250,closeDelayMs:h,injectStyles:u=!0,className:m})=>{const f=g.useMemo(()=>{const v=i==="plain"?Oc(e,n,o):n;return Wc(e,v)},[e,n,i,o]),x=Ao(s,a);return t.jsxs("span",{className:m?`bim-et-root ${m}`:"bim-et-root",children:[u&&t.jsx("style",{children:Lo}),f.map(v=>v.type==="text"?t.jsx(g.Fragment,{children:c(v.text)},`t${v.start}`):t.jsx(Mo,{span:v.span,label:v.text,hasBrackets:e[v.start-1]==="《"&&e[v.start+v.text.length]==="》",loader:x,buildHref:l,onNavigate:d,renderText:c,hoverDelayMs:p,closeDelayMs:h},`${v.span.key}@${v.start}`))]})};let Ut=null;const Mo=({span:e,label:n,hasBrackets:i,plain:o,loader:s,buildHref:a,onNavigate:l,renderText:d,hoverDelayMs:c,closeDelayMs:p=280})=>{const h=g.useId(),[u,m]=g.useState(!1),[f,x]=g.useState(!1),v=g.useRef(null),y=g.useRef(null),$=`bim-et bim-et-${e.kind}${o?" bim-et-nu":""}`,b=e.kind==="work"&&!i,w=t.jsxs(t.Fragment,{children:[b&&t.jsx("span",{className:"bim-et-sr",children:"《"}),d(n),b&&t.jsx("span",{className:"bim-et-sr",children:"》"})]}),j=()=>{v.current&&(clearTimeout(v.current),v.current=null)},k=()=>{y.current&&(clearTimeout(y.current),y.current=null)},C=g.useCallback(()=>{j(),k(),m(!1),x(!1),Ut===C&&(Ut=null)},[]);g.useEffect(()=>()=>{j(),k(),Ut===C&&(Ut=null)},[C]);const S=g.useCallback(()=>{Ut&&Ut!==C&&Ut(),Ut=C,m(!0)},[C]),_=g.useCallback(W=>{k(),x(!0),!u&&(j(),W<=0?S():v.current=setTimeout(S,W))},[u,S]),L=g.useCallback(()=>{j(),k(),y.current=setTimeout(C,p)},[C,p]),z=!!e.targetId,T=e.targetId,B={className:"bim-et-w","data-active":f?"":void 0,onMouseEnter:()=>_(c),onMouseLeave:L,onBlur:W=>{W.currentTarget.contains(W.relatedTarget)||C()},onKeyDown:W=>{W.key==="Escape"&&u&&(W.stopPropagation(),C())}};return!z||!T?t.jsxs("span",{...B,children:[t.jsx("span",{className:$,children:w}),u&&t.jsx(pa,{id:h,entityId:null,span:e,loader:null,buildHref:a,onNavigate:l})]}):t.jsxs("span",{...B,children:[t.jsx("a",{className:$,href:a(T),"data-entity-id":T,"aria-describedby":u?h:void 0,onFocus:()=>_(0),onClick:l?W=>l(T,W):void 0,children:w}),u&&t.jsx(pa,{id:h,entityId:T,span:e,loader:s,buildHref:a,onNavigate:l})]})},pa=({id:e,entityId:n,span:i,loader:o,buildHref:s,onNavigate:a})=>{const{convert:l,t:d}=ne(),c=g.useRef(null),[p,h]=g.useState("start"),[u,m]=g.useState(o&&n?{status:"loading"}:{status:"ready",summary:null});g.useEffect(()=>{if(!o||!n)return;let v=!1;return m({status:"loading"}),Sf(o.owner,o.load,n).then(y=>{v||m({status:"ready",summary:y})}).catch(()=>{v||m({status:"error"})}),()=>{v=!0}},[o,n]),_f(()=>{const v=c.current;if(!v||typeof window>"u")return;const y=v.getBoundingClientRect(),$=document.documentElement.clientWidth||window.innerWidth;y.right>$-8&&p==="start"&&h("end")},[u,p]);const f=u.status==="ready"?u.summary:null,x=(f==null?void 0:f.title)??i.canonicalName??i.text;return n?t.jsxs("span",{ref:c,id:e,role:"tooltip",className:"bim-et-card","data-align":p,children:[t.jsx("span",{className:"bim-et-card-k",children:l(da[i.kind])}),x&&t.jsx("span",{className:"bim-et-card-t",children:l(x)}),(f==null?void 0:f.meta)&&t.jsx("span",{className:"bim-et-card-m",children:l(f.meta)}),(f==null?void 0:f.description)&&t.jsx("span",{className:"bim-et-card-d",children:l(f.description)}),u.status==="loading"&&t.jsx("span",{className:"bim-et-card-s",children:l("載入中…")}),u.status==="error"&&t.jsx("span",{className:"bim-et-card-s",children:l("摘要載入失敗")}),t.jsx("a",{className:"bim-et-card-a",href:s(n),onClick:a?v=>a(n,v):void 0,children:d("reader.entityDetail")})]}):t.jsx("span",{ref:c,id:e,role:"tooltip",className:"bim-et-card","data-align":p,children:t.jsx("span",{className:"bim-et-card-k",children:l(da[i.kind])})})},Tf=e=>`/item/${encodeURIComponent(e)}`;function zf(e){const n=e.filter(i=>i.kind!=="break");return{before:n.filter(i=>i.pos==="before"),after:n.filter(i=>i.pos!=="before")}}function Nf(e,n){const i=[];for(const o of e){const s=n.get(o.charData.id)??null,a=i[i.length-1];a&&a.entity===s?a.chars.push(o):i.push({entity:s,chars:[o]})}return i}const Po=({pageData:e,pages:n,punctuations:i=Ef,selectedCharIds:o,hoveredCharId:s,onSelectionChange:a,onCharClick:l,onCharHover:d,mode:c="horizontal",showPunctuation:p=!0,onVisiblePageChange:h,convert:u,scrollToPage:m,entities:f,entityTransport:x,loadEntitySummary:v,buildEntityHref:y,onEntityNavigate:$,pageBreaks:b=!0,pageIndicatorY:w,onPageIndicatorYChange:j,quoteStyle:k,bookTitleStyle:C,showWorks:S})=>{const _=g.useRef(null),L=g.useRef(0),z=g.useMemo(()=>{const ee=new Map;return p&&i.forEach((F,U)=>{const he=F.id?F:{...F,id:`${F.anchor}#${U}`},X=ee.get(he.anchor)||[];X.push(he),ee.set(he.anchor,X)}),ee},[i,p]),T=g.useMemo(()=>k===void 0&&C===void 0&&S===void 0?null:{quoteStyle:k??"original",hideBookBrackets:C==="wavy"||S===!1},[k,C,S]),B=C==="bracket",W=g.useMemo(()=>{var he;const ee=n&&n.length>0?n:[{page:parseInt(e.page_id.split(":")[1]||"1",10),columns:e.columns}],F=ee.filter(X=>X.columns.some(O=>O.chars.length>0)).map(X=>{const O=[...X.columns].sort((se,_e)=>se.col-_e.col),J=[];let oe=[],re=0;for(const se of O){if(se.chars.length===0){se.kind==="blank"&&re++;continue}const _e=se.raised||se.lead_blank||re?{raised:se.raised,leadBlank:se.lead_blank,blankBefore:re}:void 0;re=0;let Ae=!0;for(const M of se.chars){const{before:ie,after:ve}=zf(z.get(M.id)||[]),we=(z.get(M.id)||[]).some(P=>P.kind==="break");oe.push({charData:M,col:se.col,beforePuncts:ie,afterPuncts:ve,...Ae&&_e?{start:_e}:{}}),Ae=!1,we&&(J.push({id:`para-p${X.page}-${J.length}`,chars:oe}),oe=[])}}const D=oe.length>0;return D&&J.push({id:`para-p${X.page}-${J.length}`,chars:oe}),{page:X.page,paragraphs:J,endsOpen:D,...X.label?{label:X.label}:{},...re>0?{trailingBlank:re}:{}}}),U=new Map;if(!b){const X=new Map;for(const re of ee)for(const D of re.columns)D.chars.length>0&&X.set(D.lead_blank||0,(X.get(D.lead_blank||0)||0)+1);let O=0,J=-1;for(const[re,D]of X)(D>J||D===J&&re<O)&&(O=re,J=D);let oe=null;for(const re of F){const D=re.paragraphs[0],se=(he=D==null?void 0:D.chars[0])==null?void 0:he.start,_e=!!se&&!!(se.raised||(se.leadBlank||0)>O||se.blankBefore),Ae=re.paragraphs.length===1&&!!re.trailingBlank;if(oe&&D&&!_e&&!Ae){for(const M of D.chars)U.set(M.charData.id,oe.owner);oe.para.chars=oe.para.chars.concat(D.chars),re.leadFirstId=D.chars[0].charData.id,re.paragraphs=re.paragraphs.slice(1)}if(re.endsOpen&&!re.trailingBlank){const M=re.paragraphs[re.paragraphs.length-1];M&&(oe={para:M,owner:re.page})}else oe=null}}return{pages:F,mergedOwner:U}},[n,e,z,b]),N=W.pages,R=g.useMemo(()=>{const ee=[];for(const F of N)for(const U of F.paragraphs)for(const he of U.chars)ee.push(he.charData.id);return ee},[N]),H=g.useMemo(()=>{const ee=new Map;if(!f||f.length===0)return ee;const F=new Map(R.map((U,he)=>[U,he]));for(const U of f){if(!U.anchor)continue;const he=F.get(U.anchor.start),X=F.get(U.anchor.end);if(!(he===void 0||X===void 0||X<he))for(let O=he;O<=X;O++)ee.has(R[O])||ee.set(R[O],U)}return ee},[f,R]),q=Ao(x,v),te=H.size>0,ae=g.useRef({onCharClick:l,onCharHover:d,onSelectionChange:a,onVisiblePageChange:h,onEntityNavigate:$});ae.current={onCharClick:l,onCharHover:d,onSelectionChange:a,onVisiblePageChange:h,onEntityNavigate:$};const V=g.useMemo(()=>({click:ee=>{var F,U;L.current=Date.now()+1200,(U=(F=ae.current).onCharClick)==null||U.call(F,ee)},enter:ee=>{var F,U;return(U=(F=ae.current).onCharHover)==null?void 0:U.call(F,ee)},leave:()=>{var ee,F;return(F=(ee=ae.current).onCharHover)==null?void 0:F.call(ee,null)},navigate:(ee,F)=>{var he,X;if(!(F.detail===0||F.ctrlKey||F.metaKey||F.shiftKey)){F.preventDefault();return}(X=(he=ae.current).onEntityNavigate)==null||X.call(he,ee,F)}}),[]),G=Rf(o,W.mergedOwner),me=g.useRef(null);g.useEffect(()=>{var F,U;if((F=me.current)==null||F.classList.remove("is-hovered"),me.current=null,!s)return;const ee=(U=_.current)==null?void 0:U.querySelector(`span[data-char-id="${s}"]`);ee&&(ee.classList.add("is-hovered"),me.current=ee)},[s]),g.useEffect(()=>{let ee=null;const F=()=>{var ve,we;ee=null;const he=window.getSelection(),X=_.current;if(!he||he.isCollapsed||he.rangeCount===0||!X)return;const O=he.getRangeAt(0),J=O.commonAncestorContainer,oe=J.nodeType===3?J.parentElement:J;if(!oe||!X.contains(oe))return;const re=X.querySelectorAll("span[data-char-id]"),D=P=>P.firstChild??P;let se=0,_e=re.length;for(;se<_e;){const P=se+_e>>1;O.comparePoint(D(re[P]),0)<0?se=P+1:_e=P}const Ae=se;for(_e=re.length;se<_e;){const P=se+_e>>1;O.comparePoint(D(re[P]),0)<=0?se=P+1:_e=P}let M=se-1;if(M>=Ae&&O.endOffset===0&&O.endContainer===D(re[M])&&M--,M<Ae)return;const ie=[];for(let P=Ae;P<=M;P++)ie.push(re[P].getAttribute("data-char-id"));ie.length>0&&(L.current=Date.now()+1200,(we=(ve=ae.current).onSelectionChange)==null||we.call(ve,ie))},U=()=>{ee&&clearTimeout(ee),ee=setTimeout(F,120)};return document.addEventListener("selectionchange",U),()=>{document.removeEventListener("selectionchange",U),ee&&clearTimeout(ee)}},[]),g.useEffect(()=>{var ee;if(o.size===1){const F=Array.from(o)[0],U=(ee=_.current)==null?void 0:ee.querySelector(`span[data-char-id="${F}"]`);U&&U.scrollIntoView({behavior:"smooth",block:"nearest",inline:"nearest"})}},[o]);const K=ee=>{var he;const F=_.current;if(!F)return null;const U=(he=N.find(X=>X.page===ee))==null?void 0:he.leadFirstId;return U?F.querySelector(`span[data-char-id="${U}"]`):F.querySelector(`[data-page-section="${ee}"]`)},le=m==null?void 0:m.nonce;g.useEffect(()=>{if(!m)return;const ee=K(m.page);ee&&(L.current=Date.now()+800,ee.scrollIntoView({behavior:"auto",block:"start"}))},[le]);const Se=!!h,A=Se&&typeof w=="number",[je,ce]=g.useState(null),ze=Br(je??w??0),$e=g.useRef(null);$e.current=A?ze:null;const Fe=g.useRef(()=>{});return g.useEffect(()=>{if(!Se)return;const ee=[],F=[];for(const O of N){const J=K(O.page);J&&(ee.push(J),F.push(O.page))}if(ee.length===0)return;let U=0;const he=()=>{var re,D;if(U=0,Date.now()<L.current||ee.length>1&&ee[0].getBoundingClientRect().top===ee[ee.length-1].getBoundingClientRect().top)return;const O=$e.current===null?120:$e.current*window.innerHeight;let J=0,oe=ee.length-1;for(;J<oe;){const se=J+oe+1>>1;ee[se].getBoundingClientRect().top<=O?J=se:oe=se-1}(D=(re=ae.current).onVisiblePageChange)==null||D.call(re,F[J])},X=()=>{U||(U=requestAnimationFrame(he))};return Fe.current=()=>{U||(U=requestAnimationFrame(he))},window.addEventListener("scroll",X,{passive:!0}),he(),()=>{window.removeEventListener("scroll",X),U&&cancelAnimationFrame(U),Fe.current=()=>{}}},[Se,N]),g.useEffect(()=>{A&&Fe.current()},[A,ze]),t.jsxs("div",{ref:_,className:"guji-text-pane-content",children:[te&&t.jsx("style",{children:Lo}),A&&t.jsx(Pf,{y:ze,containerRef:_,onDrag:ce,onCommit:ee=>{ce(null),j==null||j(ee)}}),t.jsx("div",{className:"guji-text-reflow-view",children:N.map((ee,F)=>t.jsx(Af,{pGroup:ee,first:F===0,pageBreaks:b,markOpts:T,plainBooks:B,selected:G.get(ee.page)??If,entityOfChar:H,entityLoader:q,convert:u,buildHref:y??Tf,handlers:V},`page-sec-${ee.page}`))})]})},If=new Set,Ef=[];function Rf(e,n){const i=g.useRef(new Map);return g.useMemo(()=>{const o=new Map;e.forEach(a=>{const l=n.get(a)??parseInt(a.split(":")[0],10);let d=o.get(l);d||o.set(l,d=new Set),d.add(a)});const s=new Map;return o.forEach((a,l)=>{const d=i.current.get(l),c=d&&d.size===a.size&&Array.from(a).every(p=>d.has(p));s.set(l,c?d:a)}),i.current=s,s},[e,n])}function ua({n:e}){return t.jsx(t.Fragment,{children:Array.from({length:e},(n,i)=>t.jsx("span",{className:"guji-text-blank-col","aria-hidden":"true","data-blank-col":""},i))})}function Lf(e,n){const i=Array.from(n(e.join("")));return i.length===e.length&&e.every(o=>Array.from(o).length===1)?i:e.map(o=>n(o))}const Af=g.memo(function({pGroup:n,first:i,pageBreaks:o,markOpts:s,plainBooks:a,selected:l,entityOfChar:d,entityLoader:c,convert:p,buildHref:h,handlers:u}){const m=g.useMemo(()=>{const y=new Map;if(!p)return y;for(const $ of n.paragraphs){const b=Lf($.chars.map(w=>w.charData.norm??w.charData.char),p);$.chars.forEach((w,j)=>y.set(w.charData.id,b[j]))}return y},[n,p]),f=y=>m.get(y.id)??y.char,{t:x}=ne(),v=y=>{const $=s?Lc(y.mark,s):y.mark;return $?t.jsx("span",{className:"guji-text-punct","data-punct-id":y.id,children:$},y.id):null};return t.jsxs("section",{"data-page-section":n.page,className:"guji-page-section",style:{position:"relative",scrollMarginTop:96},children:[!i&&o&&t.jsxs("div",{className:"guji-page-divider",style:{display:"flex",alignItems:"center",margin:"2rem 0 1.2rem",color:r("meta-fg"),fontSize:"0.82rem",letterSpacing:"0.08em",userSelect:"none"},children:[t.jsx("div",{style:{flex:1,height:"1px",background:r("rule")}}),t.jsxs("span",{style:{padding:"0 12px",fontWeight:500},"data-page-label":n.label,title:n.label?`${n.page}`:void 0,children:["第 ",n.label??n.page," 葉"]}),t.jsx("div",{style:{flex:1,height:"1px",background:r("rule")}})]}),n.paragraphs.map((y,$)=>t.jsxs("p",{className:"guji-reflow-paragraph",children:[Nf(y.chars,d).map((b,w)=>{const j=b.chars.map(({charData:S,beforePuncts:_,afterPuncts:L,start:z},T)=>{const B=!!b.entity&&T===0,W=!!b.entity&&T===b.chars.length-1,N=B?[]:_,R=W?[]:L;return t.jsxs(g.Fragment,{children:[z&&z.blankBefore>0&&t.jsx(ua,{n:z.blankBefore}),N.map(v),t.jsx("span",{"data-char-id":S.id,onClick:()=>u.click(S.id),onMouseEnter:()=>u.enter(S.id),onMouseLeave:u.leave,className:`guji-text-char${l.has(S.id)?" is-selected":""}${S.sub?" is-sub":""}${S.lane==="solo"?" is-solo":""}${S.lacuna?" is-lacuna":""}${S.guess?" is-guess":""}${S.zi?" is-zi":""}${z!=null&&z.raised?" is-raised":""}`,"data-raised":(z==null?void 0:z.raised)||void 0,title:S.lacuna?x("detail.lacuna"):S.zi?x("detail.composedChar",{label:S.zi}):S.guess?x("reader.charGuess"):void 0,children:f(S)}),R.map(v)]},S.id)});if(!b.entity)return t.jsx(g.Fragment,{children:j},`r${w}`);const k=b.chars[0].beforePuncts.map(v),C=b.chars[b.chars.length-1].afterPuncts.map(v);return t.jsxs(g.Fragment,{children:[k,t.jsx(Mo,{span:b.entity,label:b.chars.map(S=>f(S.charData)).join(""),hasBrackets:!0,plain:a&&b.entity.kind==="work",loader:c,buildHref:h,onNavigate:u.navigate,renderText:()=>j,hoverDelayMs:250}),C]},`${b.entity.key}@${w}`)}),$===n.paragraphs.length-1&&n.trailingBlank?t.jsx(ua,{n:n.trailingBlank}):null]},y.id))]})});function Br(e){const[n,i]=On,o=Number.isFinite(e)?e:.33;return Math.round(Math.min(i,Math.max(n,o))*1e3)/1e3}const Mf=.02,li=16;function Pf({y:e,containerRef:n,onDrag:i,onCommit:o}){const{t:s}=ne(),[a,l]=g.useState(0),d=g.useRef(!1),c=g.useRef(e);c.current=e;const p=g.useCallback(()=>{var f,x;const m=(x=((f=n.current)==null?void 0:f.querySelector(".guji-text-reflow-view"))??n.current)==null?void 0:x.getBoundingClientRect();l(Math.max(0,((m==null?void 0:m.left)??0)-li-2))},[n]);g.useLayoutEffect(()=>(p(),window.addEventListener("resize",p),()=>window.removeEventListener("resize",p)),[p]);const h=u=>Br(u/Math.max(1,window.innerHeight));return t.jsx("div",{role:"slider",tabIndex:0,className:"guji-page-indicator","aria-label":s("reader.pageIndicator"),"aria-orientation":"vertical","aria-valuemin":Math.round(On[0]*100),"aria-valuemax":Math.round(On[1]*100),"aria-valuenow":Math.round(e*100),"data-indicator-y":e,style:{position:"fixed",left:a,top:`calc(${e*100}vh - ${li/2}px)`,width:li,height:li,zIndex:20,cursor:"ns-resize",touchAction:"none",background:r("accent"),clipPath:"polygon(0 0, 100% 50%, 0 100%)",outline:"none"},onPointerDown:u=>{d.current=!0;try{u.currentTarget.setPointerCapture(u.pointerId)}catch{}u.preventDefault()},onPointerMove:u=>{if(!d.current)return;const m=h(u.clientY);c.current=m,i(m)},onPointerUp:u=>{if(d.current){d.current=!1;try{u.currentTarget.releasePointerCapture(u.pointerId)}catch{}o(h(u.clientY))}},onPointerCancel:()=>{d.current&&(d.current=!1,o(c.current))},onKeyDown:u=>{const m=u.key==="ArrowUp"?-1:u.key==="ArrowDown"?1:0;m&&(u.preventDefault(),o(Br(e+m*(u.shiftKey?5:1)*Mf)))}})}const qc=1,Kc=6,ci={s:1,x:0,y:0},hi=(e,n,i)=>Math.min(i,Math.max(n,e));function Bo(e,n,i){const o=hi(e.s,qc,Kc);return{s:o,x:hi(e.x,n*(1-o),0),y:hi(e.y,i*(1-o),0)}}function ur(e,n,i,o,s,a){const l=hi(e.s*o,qc,Kc),d=l/e.s;return Bo({s:l,x:n-(n-e.x)*d,y:i-(i-e.y)*d},s,a)}function Bf(e,n,i,o,s){return Bo({s:e.s,x:e.x+n,y:e.y+i},o,s)}function Of(e,n,i){const o=n===1?e*16:n===2?e*400:e;return Math.exp(-o*(i?.01:.0015))}const ma=4,Wf=g.forwardRef(function({children:n,onScaleChange:i,resetKey:o,style:s},a){const l=g.useRef(null),[d,c]=g.useState(ci),p=g.useRef(d),h=g.useRef(i);h.current=i;const u=b=>{var j;const w=p.current;p.current=b,c(b),b.s!==w.s&&((j=h.current)==null||j.call(h,b.s))},m=()=>{var w;const b=(w=l.current)==null?void 0:w.getBoundingClientRect();return{w:(b==null?void 0:b.width)??0,h:(b==null?void 0:b.height)??0,left:(b==null?void 0:b.left)??0,top:(b==null?void 0:b.top)??0}};g.useImperativeHandle(a,()=>({zoomBy(b){const{w,h:j}=m();u(ur(p.current,w/2,j/2,b,w,j))},reset(){u(ci)}})),g.useEffect(()=>{u(ci)},[o]),g.useEffect(()=>{const b=l.current;if(!b||typeof ResizeObserver>"u")return;const w=new ResizeObserver(()=>{const{w:j,h:k}=m(),C=Bo(p.current,j,k);(C.x!==p.current.x||C.y!==p.current.y)&&u(C)});return w.observe(b),()=>w.disconnect()},[]),g.useEffect(()=>{const b=l.current;if(!b)return;const w=j=>{const k=Of(j.deltaY,j.deltaMode,j.ctrlKey);if(p.current.s<=1&&k<1)return;j.preventDefault();const{w:C,h:S,left:_,top:L}=m();u(ur(p.current,j.clientX-_,j.clientY-L,k,C,S))};return b.addEventListener("wheel",w,{passive:!1}),()=>b.removeEventListener("wheel",w)},[]);const f=g.useRef(new Map),x=g.useRef({dragging:!1,moved:0,pinchDist:0,swallowClick:!1}),v=b=>{if(b.pointerType==="mouse"&&b.button!==0)return;f.current.set(b.pointerId,{x:b.clientX,y:b.clientY});const w=x.current;if(w.swallowClick=!1,f.current.size===1&&(w.moved=0,w.dragging=!1),f.current.size===2){const[j,k]=[...f.current.values()];w.pinchDist=Math.hypot(j.x-k.x,j.y-k.y),w.moved=ma+1}},y=b=>{var B;const w=f.current.get(b.pointerId);if(!w)return;const j={x:b.clientX,y:b.clientY};f.current.set(b.pointerId,j);const k=x.current,{w:C,h:S,left:_,top:L}=m();if(f.current.size>=2){const[W,N]=[...f.current.values()],R=Math.hypot(W.x-N.x,W.y-N.y);if(k.pinchDist>0&&R>0){const H=(W.x+N.x)/2-_,q=(W.y+N.y)/2-L;u(ur(p.current,H,q,R/k.pinchDist,C,S))}k.pinchDist=R,k.swallowClick=!0;return}const z=j.x-w.x,T=j.y-w.y;if(k.moved+=Math.abs(z)+Math.abs(T),!(k.moved<=ma)){if(!k.dragging){k.dragging=!0;try{(B=l.current)==null||B.setPointerCapture(b.pointerId)}catch{}}k.swallowClick=!0,p.current.s>1&&u(Bf(p.current,z,T,C,S))}},$=b=>{f.current.delete(b.pointerId);const w=x.current;w.pinchDist=0,f.current.size===0&&(w.dragging=!1)};return t.jsx("div",{ref:l,className:"bim-zp","data-zoom":d.s.toFixed(2),onPointerDown:v,onPointerMove:y,onPointerUp:$,onPointerCancel:$,onClickCapture:b=>{x.current.swallowClick&&(x.current.swallowClick=!1,b.stopPropagation(),b.preventDefault())},onDoubleClick:()=>u(ci),style:{position:"relative",overflow:"hidden",touchAction:"none",cursor:d.s>1?"grab":void 0,...s},children:t.jsx("div",{className:"bim-zp-inner",style:{width:"100%",height:"100%",display:"flex",alignItems:"center",justifyContent:"center",transformOrigin:"0 0",transform:`translate(${d.x}px, ${d.y}px) scale(${d.s})`,willChange:d.s>1?"transform":void 0},children:n})})});function Xc(e,n,i,o){const[s,a]=g.useState(n??null),[l,d]=g.useState(!1),c=g.useRef(0);return g.useEffect(()=>{if(n!==void 0){a(n);return}const p=++c.current;if(!i){a(null),d(!1);return}if(e){let h;try{h=e(i,o)}catch{a(null),d(!1);return}if(!h||typeof h.then!="function"){a(h??null),d(!1);return}d(!0),h.then(u=>{p===c.current&&a(u??null)}).catch(()=>{p===c.current&&a(null)}).finally(()=>{p===c.current&&d(!1)});return}a(null),d(!1)},[e,n,i,o]),{warpData:s,loading:l}}function Ff(e,n,i){const[o,s]=g.useState([]),a=g.useRef(0);return g.useEffect(()=>{const l=++a.current;if(!e||!n){s([]);return}let d;try{d=e(n,i)}catch{s([]);return}Promise.resolve(d).then(c=>{l===a.current&&s(c?Bc(c):[])}).catch(()=>{l===a.current&&s([])})},[e,n,i]),o}const ha={padding:24,color:r("desc-fg"),fontSize:14};function ga({title:e,label:n,className:i,style:o}){const s=(a,l=14,d=14)=>({width:a,height:l,marginTop:d,borderRadius:3,background:r("rule")});return t.jsxs("div",{className:i,style:{...o,padding:"20px 24px",maxWidth:760,margin:"0 auto"},"aria-busy":"true",children:[e&&t.jsx("div",{style:{fontSize:15,color:r("ink"),fontFamily:r("font-ui")},children:e}),t.jsx("div",{style:s("42%",24,28)}),t.jsx("div",{style:s("30%",12,10)}),["96%","100%","92%","98%","64%"].map((a,l)=>t.jsx("div",{style:s(a,16,l===0?30:14)},l)),t.jsx("p",{role:"status",style:{marginTop:24,color:r("desc-fg"),fontSize:14,fontFamily:r("font-ui")},children:n})]})}const fa=/^https?:\/\//i,Hf=[];function Df(e){if(!e||typeof e!="object")return null;const n=a=>typeof a=="string"&&a.trim()?a.trim():void 0,i=n(e.url),o=n(e.license_url),s={name:n(e.name),url:i&&fa.test(i)?i:void 0,license:n(e.license),license_url:o&&fa.test(o)?o:void 0,note:n(e.note)};return s.name||s.license||s.note?s:null}function Uf(e,n){return{work_id:n.work_id??e,title:n.title,type:n.type,juan_files:n.chapters.map(i=>i.file),juan_metadata:n.juan_metadata,juan_groups:n.juan_groups,references:n.references,target_source:n.target_source,target_source_id:n.target_source_id,text_source:n.text_source,text_quality:n.text_quality}}function Vf(e,n){return(n==null?void 0:n.type)==="kaozhen"?"章":n!=null&&n.juan_metadata&&Object.values(n.juan_metadata).some(i=>i.vol_label)?"冊":ke.isCollatedKind(e==null?void 0:e.kind)?"卷":"章"}function Zc(e,n,i,o=!1){const s=i(`${n}${e.n}`);if(!e.title)return s;const a=i(e.title);return o&&!/^[卷冊册章篇回第]/.test(e.title)?`${s} ${a}`:a}function Gf(e,n,i,o,s){var p;const a=new Map(e.chapters.map(h=>[h.file,h])),l=h=>h==="loading"?"…":typeof h=="number"&&h>0?h:void 0,d=(h,u)=>{const m=a.get(h);return{key:h,label:u??(m?Zc(m,i,o,s):h),hint:l(n[h]),disabled:n[h]===0}},c=(p=e.juan_groups)==null?void 0:p.filter(h=>{var u;return h.files.some(m=>a.has(m))||((u=h.children)==null?void 0:u.length)});if(c&&c.length>0){const h=(u,m)=>{var x;if(u.files.length===1&&!((x=u.children)!=null&&x.length))return d(u.files[0],o(u.label));const f=ef(u,n);return{key:`group:${m}`,label:o(u.label),hint:f==="loading"?"…":typeof f=="number"&&f>0?`${f}`:Hc(u),defaultExpanded:typeof f=="number"&&f>0,children:[...u.files.filter(v=>a.has(v)).map(v=>d(v)),...(u.children??[]).map((v,y)=>h(v,`${m}.${y}`))]}};return c.map((u,m)=>h(u,`${m}`))}return e.chapters.map(h=>d(h.file))}const Oo=e=>{const n=Ul();return t.jsx(Cu,{mode:n[0].scriptMode,children:t.jsx(Yf,{...e,prefsState:n})})},Yf=({prefsState:e,id:n,transport:i,versionKey:o,chapter:s,onLocationChange:a,onNavigate:l,title:d,subtitle:c,resolveImages:p,renderImageOverlay:h,imagePanel:u,allowVertical:m,onReportError:f,revisedAt:x,backHref:v,backLabel:y,resolveWarpData:$,warpData:b,resolveEntities:w,onEntityNavigate:j,className:k,style:C})=>{var cs,ds,ps;const{t:S,convert:_}=ne(),L=g.useMemo(()=>Ll(i),[i]),[z,T]=e,B=it(),W=g.useRef(a);W.current=a;const[N,R]=g.useState(null),[H,q]=g.useState("loading");g.useEffect(()=>{let E=!1;return R(null),q("loading"),L.getManifest(n).then(ue=>{E||(ue?(R(ue),q("ready")):q("missing"))}).catch(()=>{E||q("missing")}),()=>{E=!0}},[L,n]);const te=o!==void 0,ae=s!==void 0,[V,G]=g.useState(null),[me,K]=g.useState(null);g.useEffect(()=>{G(null),K(null)},[n]);const le=ke.pickTextVersion(N,te?o:V),Se=((cs=N==null?void 0:N.versions.find(E=>E.key==="default"))==null?void 0:cs.key)??((ds=N==null?void 0:N.versions[0])==null?void 0:ds.key)??"default",A=(le==null?void 0:le.key)??null,je=ae?s:me,ce=g.useCallback((E,ue,Te)=>{var Ge;(Ge=W.current)==null||Ge.call(W,{key:E,chapter:ue,isDefault:E===Se},Te)},[Se]);g.useEffect(()=>{!N||!te||o==null||N.versions.some(E=>E.key===o)||ce(Se,null,"auto")},[N,te,o,Se,ce]);const ze=g.useRef(new Map);g.useEffect(()=>{ze.current.clear()},[L,n]);const $e=g.useCallback(async E=>{const ue=`${n}
|
|
1343
|
+
`,jf=120;function gt(e){return typeof e=="string"&&e.trim()?e.trim():void 0}function vf(e,n=jf){if(!e)return;const i=e.replace(/\s+/g," ").trim(),o=Array.from(i);return o.length>n?o.slice(0,n).join("")+"…":i}function kf(e){const n=e.dates&&typeof e.dates=="object"?e.dates:{},i=typeof n.birth=="number"?n.birth:void 0,o=typeof n.death=="number"?n.death:void 0;if(!(i===void 0&&o===void 0))return`${i??"?"}–${o??"?"}`}function wf(e){if(!Array.isArray(e.authors))return;const n=e.authors.map(i=>{if(!i||typeof i!="object")return"";const o=i,s=gt(o.name);return s?[gt(o.dynasty)&&`〔${gt(o.dynasty)}〕`,s,gt(o.role)].filter(Boolean).join(""):""}).filter(Boolean);return n.length?n.slice(0,3).join("、"):void 0}function Uc(e,n){const i=gt(n.type),o=gt(n.primary_name)??gt(n.title)??e,s=i==="entity"?[gt(n.dynasty),kf(n),gt(n.native_place)].filter(Boolean).join(" · "):[wf(n),gt(n.edition),gt(n.measure_info)].filter(Boolean).join(" · "),a=n.description&&typeof n.description=="object"?gt(n.description.text):gt(n.description);return{id:e,type:i,title:o,meta:s||void 0,description:vf(a)}}function Vc(e){const n=[e.dynasty,e.author,e.edition].filter(Boolean).join(" · ");return{id:e.id,type:e.type,title:e.title,meta:n||void 0}}function Gc(e){return async n=>{const i=await e.getItem(n);if(i)return Uc(n,i);if(e.getEntry){const o=await e.getEntry(n);if(o)return Vc(o)}return null}}const ca=new WeakMap;function Sf(e,n,i){let o=ca.get(e);o||(o=new Map,ca.set(e,o));const s=o.get(i);if(s)return s;const a=n(i);return o.set(i,a),a.catch(()=>o.delete(i)),a}const Yc=e=>`/item/${encodeURIComponent(e)}`,da={work:"書名",people:"人名",place:"地名",office:"官職",dynasty:"朝代",reign:"年號",other:"專名"},_f=typeof window>"u"?g.useEffect:g.useLayoutEffect;function Ao(e,n){return g.useMemo(()=>n?{owner:n,load:n}:e?{owner:e,load:Gc(e)}:null,[n,e])}const $f=e=>e,Cf=({text:e,entities:n,offsets:i="text",plainBase:o=0,transport:s,loadSummary:a,buildHref:l=Yc,onNavigate:d,renderText:c=$f,hoverDelayMs:p=250,closeDelayMs:h,injectStyles:u=!0,className:m})=>{const f=g.useMemo(()=>{const v=i==="plain"?Oc(e,n,o):n;return Wc(e,v)},[e,n,i,o]),x=Ao(s,a);return t.jsxs("span",{className:m?`bim-et-root ${m}`:"bim-et-root",children:[u&&t.jsx("style",{children:Lo}),f.map(v=>v.type==="text"?t.jsx(g.Fragment,{children:c(v.text)},`t${v.start}`):t.jsx(Mo,{span:v.span,label:v.text,hasBrackets:e[v.start-1]==="《"&&e[v.start+v.text.length]==="》",loader:x,buildHref:l,onNavigate:d,renderText:c,hoverDelayMs:p,closeDelayMs:h},`${v.span.key}@${v.start}`))]})};let Ut=null;const Mo=({span:e,label:n,hasBrackets:i,plain:o,loader:s,buildHref:a,onNavigate:l,renderText:d,hoverDelayMs:c,closeDelayMs:p=280})=>{const h=g.useId(),[u,m]=g.useState(!1),[f,x]=g.useState(!1),v=g.useRef(null),y=g.useRef(null),$=`bim-et bim-et-${e.kind}${o?" bim-et-nu":""}`,b=e.kind==="work"&&!i,w=t.jsxs(t.Fragment,{children:[b&&t.jsx("span",{className:"bim-et-sr",children:"《"}),d(n),b&&t.jsx("span",{className:"bim-et-sr",children:"》"})]}),j=()=>{v.current&&(clearTimeout(v.current),v.current=null)},k=()=>{y.current&&(clearTimeout(y.current),y.current=null)},C=g.useCallback(()=>{j(),k(),m(!1),x(!1),Ut===C&&(Ut=null)},[]);g.useEffect(()=>()=>{j(),k(),Ut===C&&(Ut=null)},[C]);const S=g.useCallback(()=>{Ut&&Ut!==C&&Ut(),Ut=C,m(!0)},[C]),_=g.useCallback(W=>{k(),x(!0),!u&&(j(),W<=0?S():v.current=setTimeout(S,W))},[u,S]),L=g.useCallback(()=>{j(),k(),y.current=setTimeout(C,p)},[C,p]),z=!!e.targetId,T=e.targetId,B={className:"bim-et-w","data-active":f?"":void 0,onMouseEnter:()=>_(c),onMouseLeave:L,onBlur:W=>{W.currentTarget.contains(W.relatedTarget)||C()},onKeyDown:W=>{W.key==="Escape"&&u&&(W.stopPropagation(),C())}};return!z||!T?t.jsxs("span",{...B,children:[t.jsx("span",{className:$,children:w}),u&&t.jsx(pa,{id:h,entityId:null,span:e,loader:null,buildHref:a,onNavigate:l})]}):t.jsxs("span",{...B,children:[t.jsx("a",{className:$,href:a(T),"data-entity-id":T,"aria-describedby":u?h:void 0,onFocus:()=>_(0),onClick:l?W=>l(T,W):void 0,children:w}),u&&t.jsx(pa,{id:h,entityId:T,span:e,loader:s,buildHref:a,onNavigate:l})]})},pa=({id:e,entityId:n,span:i,loader:o,buildHref:s,onNavigate:a})=>{const{convert:l,t:d}=ne(),c=g.useRef(null),[p,h]=g.useState("start"),[u,m]=g.useState(o&&n?{status:"loading"}:{status:"ready",summary:null});g.useEffect(()=>{if(!o||!n)return;let v=!1;return m({status:"loading"}),Sf(o.owner,o.load,n).then(y=>{v||m({status:"ready",summary:y})}).catch(()=>{v||m({status:"error"})}),()=>{v=!0}},[o,n]),_f(()=>{const v=c.current;if(!v||typeof window>"u")return;const y=v.getBoundingClientRect(),$=document.documentElement.clientWidth||window.innerWidth;y.right>$-8&&p==="start"&&h("end")},[u,p]);const f=u.status==="ready"?u.summary:null,x=(f==null?void 0:f.title)??i.canonicalName??i.text;return n?t.jsxs("span",{ref:c,id:e,role:"tooltip",className:"bim-et-card","data-align":p,children:[t.jsx("span",{className:"bim-et-card-k",children:l(da[i.kind])}),x&&t.jsx("span",{className:"bim-et-card-t",children:l(x)}),(f==null?void 0:f.meta)&&t.jsx("span",{className:"bim-et-card-m",children:l(f.meta)}),(f==null?void 0:f.description)&&t.jsx("span",{className:"bim-et-card-d",children:l(f.description)}),u.status==="loading"&&t.jsx("span",{className:"bim-et-card-s",children:l("載入中…")}),u.status==="error"&&t.jsx("span",{className:"bim-et-card-s",children:l("摘要載入失敗")}),f&&t.jsx("a",{className:"bim-et-card-a",href:s(n),onClick:a?v=>a(n,v):void 0,children:d("reader.entityDetail")})]}):t.jsx("span",{ref:c,id:e,role:"tooltip",className:"bim-et-card","data-align":p,children:t.jsx("span",{className:"bim-et-card-k",children:l(da[i.kind])})})},Tf=e=>`/item/${encodeURIComponent(e)}`;function zf(e){const n=e.filter(i=>i.kind!=="break");return{before:n.filter(i=>i.pos==="before"),after:n.filter(i=>i.pos!=="before")}}function Nf(e,n){const i=[];for(const o of e){const s=n.get(o.charData.id)??null,a=i[i.length-1];a&&a.entity===s?a.chars.push(o):i.push({entity:s,chars:[o]})}return i}const Po=({pageData:e,pages:n,punctuations:i=Ef,selectedCharIds:o,hoveredCharId:s,onSelectionChange:a,onCharClick:l,onCharHover:d,mode:c="horizontal",showPunctuation:p=!0,onVisiblePageChange:h,convert:u,scrollToPage:m,entities:f,entityTransport:x,loadEntitySummary:v,buildEntityHref:y,onEntityNavigate:$,pageBreaks:b=!0,pageIndicatorY:w,onPageIndicatorYChange:j,quoteStyle:k,bookTitleStyle:C,showWorks:S})=>{const _=g.useRef(null),L=g.useRef(0),z=g.useMemo(()=>{const ee=new Map;return p&&i.forEach((F,U)=>{const he=F.id?F:{...F,id:`${F.anchor}#${U}`},X=ee.get(he.anchor)||[];X.push(he),ee.set(he.anchor,X)}),ee},[i,p]),T=g.useMemo(()=>k===void 0&&C===void 0&&S===void 0?null:{quoteStyle:k??"original",hideBookBrackets:C==="wavy"||S===!1},[k,C,S]),B=C==="bracket",W=g.useMemo(()=>{var he;const ee=n&&n.length>0?n:[{page:parseInt(e.page_id.split(":")[1]||"1",10),columns:e.columns}],F=ee.filter(X=>X.columns.some(O=>O.chars.length>0)).map(X=>{const O=[...X.columns].sort((se,_e)=>se.col-_e.col),J=[];let oe=[],re=0;for(const se of O){if(se.chars.length===0){se.kind==="blank"&&re++;continue}const _e=se.raised||se.lead_blank||re?{raised:se.raised,leadBlank:se.lead_blank,blankBefore:re}:void 0;re=0;let Ae=!0;for(const M of se.chars){const{before:ie,after:ve}=zf(z.get(M.id)||[]),we=(z.get(M.id)||[]).some(P=>P.kind==="break");oe.push({charData:M,col:se.col,beforePuncts:ie,afterPuncts:ve,...Ae&&_e?{start:_e}:{}}),Ae=!1,we&&(J.push({id:`para-p${X.page}-${J.length}`,chars:oe}),oe=[])}}const D=oe.length>0;return D&&J.push({id:`para-p${X.page}-${J.length}`,chars:oe}),{page:X.page,paragraphs:J,endsOpen:D,...X.label?{label:X.label}:{},...re>0?{trailingBlank:re}:{}}}),U=new Map;if(!b){const X=new Map;for(const re of ee)for(const D of re.columns)D.chars.length>0&&X.set(D.lead_blank||0,(X.get(D.lead_blank||0)||0)+1);let O=0,J=-1;for(const[re,D]of X)(D>J||D===J&&re<O)&&(O=re,J=D);let oe=null;for(const re of F){const D=re.paragraphs[0],se=(he=D==null?void 0:D.chars[0])==null?void 0:he.start,_e=!!se&&!!(se.raised||(se.leadBlank||0)>O||se.blankBefore),Ae=re.paragraphs.length===1&&!!re.trailingBlank;if(oe&&D&&!_e&&!Ae){for(const M of D.chars)U.set(M.charData.id,oe.owner);oe.para.chars=oe.para.chars.concat(D.chars),re.leadFirstId=D.chars[0].charData.id,re.paragraphs=re.paragraphs.slice(1)}if(re.endsOpen&&!re.trailingBlank){const M=re.paragraphs[re.paragraphs.length-1];M&&(oe={para:M,owner:re.page})}else oe=null}}return{pages:F,mergedOwner:U}},[n,e,z,b]),N=W.pages,R=g.useMemo(()=>{const ee=[];for(const F of N)for(const U of F.paragraphs)for(const he of U.chars)ee.push(he.charData.id);return ee},[N]),H=g.useMemo(()=>{const ee=new Map;if(!f||f.length===0)return ee;const F=new Map(R.map((U,he)=>[U,he]));for(const U of f){if(!U.anchor)continue;const he=F.get(U.anchor.start),X=F.get(U.anchor.end);if(!(he===void 0||X===void 0||X<he))for(let O=he;O<=X;O++)ee.has(R[O])||ee.set(R[O],U)}return ee},[f,R]),q=Ao(x,v),te=H.size>0,ae=g.useRef({onCharClick:l,onCharHover:d,onSelectionChange:a,onVisiblePageChange:h,onEntityNavigate:$});ae.current={onCharClick:l,onCharHover:d,onSelectionChange:a,onVisiblePageChange:h,onEntityNavigate:$};const V=g.useMemo(()=>({click:ee=>{var F,U;L.current=Date.now()+1200,(U=(F=ae.current).onCharClick)==null||U.call(F,ee)},enter:ee=>{var F,U;return(U=(F=ae.current).onCharHover)==null?void 0:U.call(F,ee)},leave:()=>{var ee,F;return(F=(ee=ae.current).onCharHover)==null?void 0:F.call(ee,null)},navigate:(ee,F)=>{var he,X;if(!(F.detail===0||F.ctrlKey||F.metaKey||F.shiftKey)){F.preventDefault();return}(X=(he=ae.current).onEntityNavigate)==null||X.call(he,ee,F)}}),[]),G=Rf(o,W.mergedOwner),me=g.useRef(null);g.useEffect(()=>{var F,U;if((F=me.current)==null||F.classList.remove("is-hovered"),me.current=null,!s)return;const ee=(U=_.current)==null?void 0:U.querySelector(`span[data-char-id="${s}"]`);ee&&(ee.classList.add("is-hovered"),me.current=ee)},[s]),g.useEffect(()=>{let ee=null;const F=()=>{var ve,we;ee=null;const he=window.getSelection(),X=_.current;if(!he||he.isCollapsed||he.rangeCount===0||!X)return;const O=he.getRangeAt(0),J=O.commonAncestorContainer,oe=J.nodeType===3?J.parentElement:J;if(!oe||!X.contains(oe))return;const re=X.querySelectorAll("span[data-char-id]"),D=P=>P.firstChild??P;let se=0,_e=re.length;for(;se<_e;){const P=se+_e>>1;O.comparePoint(D(re[P]),0)<0?se=P+1:_e=P}const Ae=se;for(_e=re.length;se<_e;){const P=se+_e>>1;O.comparePoint(D(re[P]),0)<=0?se=P+1:_e=P}let M=se-1;if(M>=Ae&&O.endOffset===0&&O.endContainer===D(re[M])&&M--,M<Ae)return;const ie=[];for(let P=Ae;P<=M;P++)ie.push(re[P].getAttribute("data-char-id"));ie.length>0&&(L.current=Date.now()+1200,(we=(ve=ae.current).onSelectionChange)==null||we.call(ve,ie))},U=()=>{ee&&clearTimeout(ee),ee=setTimeout(F,120)};return document.addEventListener("selectionchange",U),()=>{document.removeEventListener("selectionchange",U),ee&&clearTimeout(ee)}},[]),g.useEffect(()=>{var ee;if(o.size===1){const F=Array.from(o)[0],U=(ee=_.current)==null?void 0:ee.querySelector(`span[data-char-id="${F}"]`);U&&U.scrollIntoView({behavior:"smooth",block:"nearest",inline:"nearest"})}},[o]);const K=ee=>{var he;const F=_.current;if(!F)return null;const U=(he=N.find(X=>X.page===ee))==null?void 0:he.leadFirstId;return U?F.querySelector(`span[data-char-id="${U}"]`):F.querySelector(`[data-page-section="${ee}"]`)},le=m==null?void 0:m.nonce;g.useEffect(()=>{if(!m)return;const ee=K(m.page);ee&&(L.current=Date.now()+800,ee.scrollIntoView({behavior:"auto",block:"start"}))},[le]);const Se=!!h,A=Se&&typeof w=="number",[je,ce]=g.useState(null),ze=Br(je??w??0),$e=g.useRef(null);$e.current=A?ze:null;const Fe=g.useRef(()=>{});return g.useEffect(()=>{if(!Se)return;const ee=[],F=[];for(const O of N){const J=K(O.page);J&&(ee.push(J),F.push(O.page))}if(ee.length===0)return;let U=0;const he=()=>{var re,D;if(U=0,Date.now()<L.current||ee.length>1&&ee[0].getBoundingClientRect().top===ee[ee.length-1].getBoundingClientRect().top)return;const O=$e.current===null?120:$e.current*window.innerHeight;let J=0,oe=ee.length-1;for(;J<oe;){const se=J+oe+1>>1;ee[se].getBoundingClientRect().top<=O?J=se:oe=se-1}(D=(re=ae.current).onVisiblePageChange)==null||D.call(re,F[J])},X=()=>{U||(U=requestAnimationFrame(he))};return Fe.current=()=>{U||(U=requestAnimationFrame(he))},window.addEventListener("scroll",X,{passive:!0}),he(),()=>{window.removeEventListener("scroll",X),U&&cancelAnimationFrame(U),Fe.current=()=>{}}},[Se,N]),g.useEffect(()=>{A&&Fe.current()},[A,ze]),t.jsxs("div",{ref:_,className:"guji-text-pane-content",children:[te&&t.jsx("style",{children:Lo}),A&&t.jsx(Pf,{y:ze,containerRef:_,onDrag:ce,onCommit:ee=>{ce(null),j==null||j(ee)}}),t.jsx("div",{className:"guji-text-reflow-view",children:N.map((ee,F)=>t.jsx(Af,{pGroup:ee,first:F===0,pageBreaks:b,markOpts:T,plainBooks:B,selected:G.get(ee.page)??If,entityOfChar:H,entityLoader:q,convert:u,buildHref:y??Tf,handlers:V},`page-sec-${ee.page}`))})]})},If=new Set,Ef=[];function Rf(e,n){const i=g.useRef(new Map);return g.useMemo(()=>{const o=new Map;e.forEach(a=>{const l=n.get(a)??parseInt(a.split(":")[0],10);let d=o.get(l);d||o.set(l,d=new Set),d.add(a)});const s=new Map;return o.forEach((a,l)=>{const d=i.current.get(l),c=d&&d.size===a.size&&Array.from(a).every(p=>d.has(p));s.set(l,c?d:a)}),i.current=s,s},[e,n])}function ua({n:e}){return t.jsx(t.Fragment,{children:Array.from({length:e},(n,i)=>t.jsx("span",{className:"guji-text-blank-col","aria-hidden":"true","data-blank-col":""},i))})}function Lf(e,n){const i=Array.from(n(e.join("")));return i.length===e.length&&e.every(o=>Array.from(o).length===1)?i:e.map(o=>n(o))}const Af=g.memo(function({pGroup:n,first:i,pageBreaks:o,markOpts:s,plainBooks:a,selected:l,entityOfChar:d,entityLoader:c,convert:p,buildHref:h,handlers:u}){const m=g.useMemo(()=>{const y=new Map;if(!p)return y;for(const $ of n.paragraphs){const b=Lf($.chars.map(w=>w.charData.norm??w.charData.char),p);$.chars.forEach((w,j)=>y.set(w.charData.id,b[j]))}return y},[n,p]),f=y=>m.get(y.id)??y.char,{t:x}=ne(),v=y=>{const $=s?Lc(y.mark,s):y.mark;return $?t.jsx("span",{className:"guji-text-punct","data-punct-id":y.id,children:$},y.id):null};return t.jsxs("section",{"data-page-section":n.page,className:"guji-page-section",style:{position:"relative",scrollMarginTop:96},children:[!i&&o&&t.jsxs("div",{className:"guji-page-divider",style:{display:"flex",alignItems:"center",margin:"2rem 0 1.2rem",color:r("meta-fg"),fontSize:"0.82rem",letterSpacing:"0.08em",userSelect:"none"},children:[t.jsx("div",{style:{flex:1,height:"1px",background:r("rule")}}),t.jsxs("span",{style:{padding:"0 12px",fontWeight:500},"data-page-label":n.label,title:n.label?`${n.page}`:void 0,children:["第 ",n.label??n.page," 葉"]}),t.jsx("div",{style:{flex:1,height:"1px",background:r("rule")}})]}),n.paragraphs.map((y,$)=>t.jsxs("p",{className:"guji-reflow-paragraph",children:[Nf(y.chars,d).map((b,w)=>{const j=b.chars.map(({charData:S,beforePuncts:_,afterPuncts:L,start:z},T)=>{const B=!!b.entity&&T===0,W=!!b.entity&&T===b.chars.length-1,N=B?[]:_,R=W?[]:L;return t.jsxs(g.Fragment,{children:[z&&z.blankBefore>0&&t.jsx(ua,{n:z.blankBefore}),N.map(v),t.jsx("span",{"data-char-id":S.id,onClick:()=>u.click(S.id),onMouseEnter:()=>u.enter(S.id),onMouseLeave:u.leave,className:`guji-text-char${l.has(S.id)?" is-selected":""}${S.sub?" is-sub":""}${S.lane==="solo"?" is-solo":""}${S.lacuna?" is-lacuna":""}${S.guess?" is-guess":""}${S.zi?" is-zi":""}${z!=null&&z.raised?" is-raised":""}`,"data-raised":(z==null?void 0:z.raised)||void 0,title:S.lacuna?x("detail.lacuna"):S.zi?x("detail.composedChar",{label:S.zi}):S.guess?x("reader.charGuess"):void 0,children:f(S)}),R.map(v)]},S.id)});if(!b.entity)return t.jsx(g.Fragment,{children:j},`r${w}`);const k=b.chars[0].beforePuncts.map(v),C=b.chars[b.chars.length-1].afterPuncts.map(v);return t.jsxs(g.Fragment,{children:[k,t.jsx(Mo,{span:b.entity,label:b.chars.map(S=>f(S.charData)).join(""),hasBrackets:!0,plain:a&&b.entity.kind==="work",loader:c,buildHref:h,onNavigate:u.navigate,renderText:()=>j,hoverDelayMs:250}),C]},`${b.entity.key}@${w}`)}),$===n.paragraphs.length-1&&n.trailingBlank?t.jsx(ua,{n:n.trailingBlank}):null]},y.id))]})});function Br(e){const[n,i]=On,o=Number.isFinite(e)?e:.33;return Math.round(Math.min(i,Math.max(n,o))*1e3)/1e3}const Mf=.02,li=16;function Pf({y:e,containerRef:n,onDrag:i,onCommit:o}){const{t:s}=ne(),[a,l]=g.useState(0),d=g.useRef(!1),c=g.useRef(e);c.current=e;const p=g.useCallback(()=>{var f,x;const m=(x=((f=n.current)==null?void 0:f.querySelector(".guji-text-reflow-view"))??n.current)==null?void 0:x.getBoundingClientRect();l(Math.max(0,((m==null?void 0:m.left)??0)-li-2))},[n]);g.useLayoutEffect(()=>(p(),window.addEventListener("resize",p),()=>window.removeEventListener("resize",p)),[p]);const h=u=>Br(u/Math.max(1,window.innerHeight));return t.jsx("div",{role:"slider",tabIndex:0,className:"guji-page-indicator","aria-label":s("reader.pageIndicator"),"aria-orientation":"vertical","aria-valuemin":Math.round(On[0]*100),"aria-valuemax":Math.round(On[1]*100),"aria-valuenow":Math.round(e*100),"data-indicator-y":e,style:{position:"fixed",left:a,top:`calc(${e*100}vh - ${li/2}px)`,width:li,height:li,zIndex:20,cursor:"ns-resize",touchAction:"none",background:r("accent"),clipPath:"polygon(0 0, 100% 50%, 0 100%)",outline:"none"},onPointerDown:u=>{d.current=!0;try{u.currentTarget.setPointerCapture(u.pointerId)}catch{}u.preventDefault()},onPointerMove:u=>{if(!d.current)return;const m=h(u.clientY);c.current=m,i(m)},onPointerUp:u=>{if(d.current){d.current=!1;try{u.currentTarget.releasePointerCapture(u.pointerId)}catch{}o(h(u.clientY))}},onPointerCancel:()=>{d.current&&(d.current=!1,o(c.current))},onKeyDown:u=>{const m=u.key==="ArrowUp"?-1:u.key==="ArrowDown"?1:0;m&&(u.preventDefault(),o(Br(e+m*(u.shiftKey?5:1)*Mf)))}})}const qc=1,Kc=6,ci={s:1,x:0,y:0},hi=(e,n,i)=>Math.min(i,Math.max(n,e));function Bo(e,n,i){const o=hi(e.s,qc,Kc);return{s:o,x:hi(e.x,n*(1-o),0),y:hi(e.y,i*(1-o),0)}}function ur(e,n,i,o,s,a){const l=hi(e.s*o,qc,Kc),d=l/e.s;return Bo({s:l,x:n-(n-e.x)*d,y:i-(i-e.y)*d},s,a)}function Bf(e,n,i,o,s){return Bo({s:e.s,x:e.x+n,y:e.y+i},o,s)}function Of(e,n,i){const o=n===1?e*16:n===2?e*400:e;return Math.exp(-o*(i?.01:.0015))}const ma=4,Wf=g.forwardRef(function({children:n,onScaleChange:i,resetKey:o,style:s},a){const l=g.useRef(null),[d,c]=g.useState(ci),p=g.useRef(d),h=g.useRef(i);h.current=i;const u=b=>{var j;const w=p.current;p.current=b,c(b),b.s!==w.s&&((j=h.current)==null||j.call(h,b.s))},m=()=>{var w;const b=(w=l.current)==null?void 0:w.getBoundingClientRect();return{w:(b==null?void 0:b.width)??0,h:(b==null?void 0:b.height)??0,left:(b==null?void 0:b.left)??0,top:(b==null?void 0:b.top)??0}};g.useImperativeHandle(a,()=>({zoomBy(b){const{w,h:j}=m();u(ur(p.current,w/2,j/2,b,w,j))},reset(){u(ci)}})),g.useEffect(()=>{u(ci)},[o]),g.useEffect(()=>{const b=l.current;if(!b||typeof ResizeObserver>"u")return;const w=new ResizeObserver(()=>{const{w:j,h:k}=m(),C=Bo(p.current,j,k);(C.x!==p.current.x||C.y!==p.current.y)&&u(C)});return w.observe(b),()=>w.disconnect()},[]),g.useEffect(()=>{const b=l.current;if(!b)return;const w=j=>{const k=Of(j.deltaY,j.deltaMode,j.ctrlKey);if(p.current.s<=1&&k<1)return;j.preventDefault();const{w:C,h:S,left:_,top:L}=m();u(ur(p.current,j.clientX-_,j.clientY-L,k,C,S))};return b.addEventListener("wheel",w,{passive:!1}),()=>b.removeEventListener("wheel",w)},[]);const f=g.useRef(new Map),x=g.useRef({dragging:!1,moved:0,pinchDist:0,swallowClick:!1}),v=b=>{if(b.pointerType==="mouse"&&b.button!==0)return;f.current.set(b.pointerId,{x:b.clientX,y:b.clientY});const w=x.current;if(w.swallowClick=!1,f.current.size===1&&(w.moved=0,w.dragging=!1),f.current.size===2){const[j,k]=[...f.current.values()];w.pinchDist=Math.hypot(j.x-k.x,j.y-k.y),w.moved=ma+1}},y=b=>{var B;const w=f.current.get(b.pointerId);if(!w)return;const j={x:b.clientX,y:b.clientY};f.current.set(b.pointerId,j);const k=x.current,{w:C,h:S,left:_,top:L}=m();if(f.current.size>=2){const[W,N]=[...f.current.values()],R=Math.hypot(W.x-N.x,W.y-N.y);if(k.pinchDist>0&&R>0){const H=(W.x+N.x)/2-_,q=(W.y+N.y)/2-L;u(ur(p.current,H,q,R/k.pinchDist,C,S))}k.pinchDist=R,k.swallowClick=!0;return}const z=j.x-w.x,T=j.y-w.y;if(k.moved+=Math.abs(z)+Math.abs(T),!(k.moved<=ma)){if(!k.dragging){k.dragging=!0;try{(B=l.current)==null||B.setPointerCapture(b.pointerId)}catch{}}k.swallowClick=!0,p.current.s>1&&u(Bf(p.current,z,T,C,S))}},$=b=>{f.current.delete(b.pointerId);const w=x.current;w.pinchDist=0,f.current.size===0&&(w.dragging=!1)};return t.jsx("div",{ref:l,className:"bim-zp","data-zoom":d.s.toFixed(2),onPointerDown:v,onPointerMove:y,onPointerUp:$,onPointerCancel:$,onClickCapture:b=>{x.current.swallowClick&&(x.current.swallowClick=!1,b.stopPropagation(),b.preventDefault())},onDoubleClick:()=>u(ci),style:{position:"relative",overflow:"hidden",touchAction:"none",cursor:d.s>1?"grab":void 0,...s},children:t.jsx("div",{className:"bim-zp-inner",style:{width:"100%",height:"100%",display:"flex",alignItems:"center",justifyContent:"center",transformOrigin:"0 0",transform:`translate(${d.x}px, ${d.y}px) scale(${d.s})`,willChange:d.s>1?"transform":void 0},children:n})})});function Xc(e,n,i,o){const[s,a]=g.useState(n??null),[l,d]=g.useState(!1),c=g.useRef(0);return g.useEffect(()=>{if(n!==void 0){a(n);return}const p=++c.current;if(!i){a(null),d(!1);return}if(e){let h;try{h=e(i,o)}catch{a(null),d(!1);return}if(!h||typeof h.then!="function"){a(h??null),d(!1);return}d(!0),h.then(u=>{p===c.current&&a(u??null)}).catch(()=>{p===c.current&&a(null)}).finally(()=>{p===c.current&&d(!1)});return}a(null),d(!1)},[e,n,i,o]),{warpData:s,loading:l}}function Ff(e,n,i){const[o,s]=g.useState([]),a=g.useRef(0);return g.useEffect(()=>{const l=++a.current;if(!e||!n){s([]);return}let d;try{d=e(n,i)}catch{s([]);return}Promise.resolve(d).then(c=>{l===a.current&&s(c?Bc(c):[])}).catch(()=>{l===a.current&&s([])})},[e,n,i]),o}const ha={padding:24,color:r("desc-fg"),fontSize:14};function ga({title:e,label:n,className:i,style:o}){const s=(a,l=14,d=14)=>({width:a,height:l,marginTop:d,borderRadius:3,background:r("rule")});return t.jsxs("div",{className:i,style:{...o,padding:"20px 24px",maxWidth:760,margin:"0 auto"},"aria-busy":"true",children:[e&&t.jsx("div",{style:{fontSize:15,color:r("ink"),fontFamily:r("font-ui")},children:e}),t.jsx("div",{style:s("42%",24,28)}),t.jsx("div",{style:s("30%",12,10)}),["96%","100%","92%","98%","64%"].map((a,l)=>t.jsx("div",{style:s(a,16,l===0?30:14)},l)),t.jsx("p",{role:"status",style:{marginTop:24,color:r("desc-fg"),fontSize:14,fontFamily:r("font-ui")},children:n})]})}const fa=/^https?:\/\//i,Hf=[];function Df(e){if(!e||typeof e!="object")return null;const n=a=>typeof a=="string"&&a.trim()?a.trim():void 0,i=n(e.url),o=n(e.license_url),s={name:n(e.name),url:i&&fa.test(i)?i:void 0,license:n(e.license),license_url:o&&fa.test(o)?o:void 0,note:n(e.note)};return s.name||s.license||s.note?s:null}function Uf(e,n){return{work_id:n.work_id??e,title:n.title,type:n.type,juan_files:n.chapters.map(i=>i.file),juan_metadata:n.juan_metadata,juan_groups:n.juan_groups,references:n.references,target_source:n.target_source,target_source_id:n.target_source_id,text_source:n.text_source,text_quality:n.text_quality}}function Vf(e,n){return(n==null?void 0:n.type)==="kaozhen"?"章":n!=null&&n.juan_metadata&&Object.values(n.juan_metadata).some(i=>i.vol_label)?"冊":ke.isCollatedKind(e==null?void 0:e.kind)?"卷":"章"}function Zc(e,n,i,o=!1){const s=i(`${n}${e.n}`);if(!e.title)return s;const a=i(e.title);return o&&!/^[卷冊册章篇回第]/.test(e.title)?`${s} ${a}`:a}function Gf(e,n,i,o,s){var p;const a=new Map(e.chapters.map(h=>[h.file,h])),l=h=>h==="loading"?"…":typeof h=="number"&&h>0?h:void 0,d=(h,u)=>{const m=a.get(h);return{key:h,label:u??(m?Zc(m,i,o,s):h),hint:l(n[h]),disabled:n[h]===0}},c=(p=e.juan_groups)==null?void 0:p.filter(h=>{var u;return h.files.some(m=>a.has(m))||((u=h.children)==null?void 0:u.length)});if(c&&c.length>0){const h=(u,m)=>{var x;if(u.files.length===1&&!((x=u.children)!=null&&x.length))return d(u.files[0],o(u.label));const f=ef(u,n);return{key:`group:${m}`,label:o(u.label),hint:f==="loading"?"…":typeof f=="number"&&f>0?`${f}`:Hc(u),defaultExpanded:typeof f=="number"&&f>0,children:[...u.files.filter(v=>a.has(v)).map(v=>d(v)),...(u.children??[]).map((v,y)=>h(v,`${m}.${y}`))]}};return c.map((u,m)=>h(u,`${m}`))}return e.chapters.map(h=>d(h.file))}const Oo=e=>{const n=Ul();return t.jsx(Cu,{mode:n[0].scriptMode,children:t.jsx(Yf,{...e,prefsState:n})})},Yf=({prefsState:e,id:n,transport:i,versionKey:o,chapter:s,onLocationChange:a,onNavigate:l,title:d,subtitle:c,resolveImages:p,renderImageOverlay:h,imagePanel:u,allowVertical:m,onReportError:f,revisedAt:x,backHref:v,backLabel:y,resolveWarpData:$,warpData:b,resolveEntities:w,onEntityNavigate:j,className:k,style:C})=>{var cs,ds,ps;const{t:S,convert:_}=ne(),L=g.useMemo(()=>Ll(i),[i]),[z,T]=e,B=it(),W=g.useRef(a);W.current=a;const[N,R]=g.useState(null),[H,q]=g.useState("loading");g.useEffect(()=>{let E=!1;return R(null),q("loading"),L.getManifest(n).then(ue=>{E||(ue?(R(ue),q("ready")):q("missing"))}).catch(()=>{E||q("missing")}),()=>{E=!0}},[L,n]);const te=o!==void 0,ae=s!==void 0,[V,G]=g.useState(null),[me,K]=g.useState(null);g.useEffect(()=>{G(null),K(null)},[n]);const le=ke.pickTextVersion(N,te?o:V),Se=((cs=N==null?void 0:N.versions.find(E=>E.key==="default"))==null?void 0:cs.key)??((ds=N==null?void 0:N.versions[0])==null?void 0:ds.key)??"default",A=(le==null?void 0:le.key)??null,je=ae?s:me,ce=g.useCallback((E,ue,Te)=>{var Ge;(Ge=W.current)==null||Ge.call(W,{key:E,chapter:ue,isDefault:E===Se},Te)},[Se]);g.useEffect(()=>{!N||!te||o==null||N.versions.some(E=>E.key===o)||ce(Se,null,"auto")},[N,te,o,Se,ce]);const ze=g.useRef(new Map);g.useEffect(()=>{ze.current.clear()},[L,n]);const $e=g.useCallback(async E=>{const ue=`${n}
|
|
1344
1344
|
${E}`;if(ze.current.has(ue))return ze.current.get(ue)??null;const Te=await L.getIndex(n,E).catch(()=>null);return Te&&ze.current.set(ue,Te),Te},[L,n]),[Fe,ee]=g.useState(null),[F,U]=g.useState("loading"),he=A?`${n}
|
|
1345
1345
|
${A}`:null,X=Fe&&Fe.owner===he?Fe.idx:null;g.useEffect(()=>{if(!A)return;let E=!1;const ue=`${n}
|
|
1346
1346
|
${A}`;return ee(null),U("loading"),$e(A).then(Te=>{E||(Te&&Te.chapters.length>0?(ee({owner:ue,idx:Te}),U("ready")):U("failed"))}),()=>{E=!0}},[n,A,$e]),g.useEffect(()=>{if(!X||!A||je!=null&&X.chapters.some(Te=>Te.file===je))return;const ue=X.chapters[0].file;ae||K(ue),ce(A,ue,"auto")},[X,A,je,ae,ce]);const O=X?je!=null&&X.chapters.some(E=>E.file===je)?je:X.chapters[0].file:je,J=g.useMemo(()=>X&&O?X.chapters.find(E=>E.file===O)??null:null,[X,O]),oe=g.useRef(0),re=g.useCallback(async E=>{if(!N||E===A||!N.versions.some(kt=>kt.key===E))return;const ue=++oe.current,Te=await $e(E);if(ue!==oe.current)return;const Ge=J??(O?{file:O}:null),et=ke.matchChapterAcrossVersions(Ge,Te);te||G(E),ae||K(et),ce(E,et,"version")},[N,A,$e,J,O,te,ae,ce]),D=g.useCallback(E=>{A&&(ae||K(E),ce(A,E,"chapter"))},[A,ae,ce]),[se,_e]=g.useState(null),Ae=A&&J?`${n}
|
package/dist/index.d.ts
CHANGED
|
@@ -211,7 +211,7 @@ export declare interface BookDetailData extends BaseDetailData {
|
|
|
211
211
|
lineage?: BookLineage;
|
|
212
212
|
/** 行款/装帧/尺寸/品相(2026-09-28 S2b);四内容子段全为空串时目录侧不写本对象 */
|
|
213
213
|
physical_description?: PhysicalDescription;
|
|
214
|
-
/**
|
|
214
|
+
/** 版本类型(受控词表:刻本/抄本/稿本/活字本/石印本/鉛印本/影印本/套印本/拓本/印刷本/油印本/曬印本/其他);未考则无此字段 */
|
|
215
215
|
edition_type?: string;
|
|
216
216
|
/** 馆藏(2026-09-28 S2):一书多藏本各一项 */
|
|
217
217
|
provenance?: ProvenanceEntry[];
|
package/dist/index.js
CHANGED
|
@@ -9425,6 +9425,8 @@ function Xu(e) {
|
|
|
9425
9425
|
const t = e.edition || e.title || "", i = [
|
|
9426
9426
|
[/活字|聚珍/, "活字本"],
|
|
9427
9427
|
[/石印/, "石印本"],
|
|
9428
|
+
[/油印/, "油印本"],
|
|
9429
|
+
[/曬印|晒印/, "曬印本"],
|
|
9428
9430
|
[/影印|景印/, "影印本"],
|
|
9429
9431
|
[/寫本|写本|繕寫|缮写/, "寫本"],
|
|
9430
9432
|
[/鈔本|抄本/, "抄本"],
|
|
@@ -13156,7 +13158,7 @@ const Ks = ({
|
|
|
13156
13158
|
(f == null ? void 0 : f.description) && /* @__PURE__ */ n("span", { className: "bim-et-card-d", children: s(f.description) }),
|
|
13157
13159
|
m.status === "loading" && /* @__PURE__ */ n("span", { className: "bim-et-card-s", children: s("載入中…") }),
|
|
13158
13160
|
m.status === "error" && /* @__PURE__ */ n("span", { className: "bim-et-card-s", children: s("摘要載入失敗") }),
|
|
13159
|
-
/* @__PURE__ */ n(
|
|
13161
|
+
f && /* @__PURE__ */ n(
|
|
13160
13162
|
"a",
|
|
13161
13163
|
{
|
|
13162
13164
|
className: "bim-et-card-a",
|
package/dist/storage.d.ts
CHANGED
|
@@ -117,7 +117,7 @@ export declare interface BookDetailData extends BaseDetailData {
|
|
|
117
117
|
lineage?: BookLineage;
|
|
118
118
|
/** 行款/装帧/尺寸/品相(2026-09-28 S2b);四内容子段全为空串时目录侧不写本对象 */
|
|
119
119
|
physical_description?: PhysicalDescription;
|
|
120
|
-
/**
|
|
120
|
+
/** 版本类型(受控词表:刻本/抄本/稿本/活字本/石印本/鉛印本/影印本/套印本/拓本/印刷本/油印本/曬印本/其他);未考则无此字段 */
|
|
121
121
|
edition_type?: string;
|
|
122
122
|
/** 馆藏(2026-09-28 S2):一书多藏本各一项 */
|
|
123
123
|
provenance?: ProvenanceEntry[];
|