You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

65 lines
118 KiB

/*
-------------------------------------------
Media DB - Release Build
-------------------------------------------
By: Moritz Jung (https://www.moritzjung.dev)
Time: Fri, 05 Jul 2024 12:27:45 GMT
Version: 0.7.2
-------------------------------------------
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
if you want to view the source, please visit the github repository of this plugin
-------------------------------------------
MIT License
Copyright (c) 2024 Moritz Jung
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
var ai=Object.defineProperty;var Yn=Object.getOwnPropertyDescriptor;var zn=Object.getOwnPropertyNames;var Kn=Object.prototype.hasOwnProperty;var Xn=(r,e,t)=>e in r?ai(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var Jn=(r,e)=>{for(var t in e)ai(r,t,{get:e[t],enumerable:!0})},Zn=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of zn(e))!Kn.call(r,n)&&n!==t&&ai(r,n,{get:()=>e[n],enumerable:!(i=Yn(e,n))||i.enumerable});return r};var Qn=r=>Zn(ai({},"__esModule",{value:!0}),r);var K=(r,e,t)=>(Xn(r,typeof e!="symbol"?e+"":e,t),t);var da={};Jn(da,{default:()=>zi});module.exports=Qn(da);var z=require("obsidian");var E=require("obsidian");var cn=require("obsidian");var dn=require("obsidian");var A="top",H="bottom",W="right",B="left",si="auto",We=[A,H,W,B],$e="start",Ke="end",Nr="clippingParents",li="viewport",bt="popper",Ar="reference",Ki=We.reduce(function(r,e){return r.concat([e+"-"+$e,e+"-"+Ke])},[]),pi=[].concat(We,[si]).reduce(function(r,e){return r.concat([e,e+"-"+$e,e+"-"+Ke])},[]),eo="beforeRead",to="read",io="afterRead",ro="beforeMain",no="main",oo="afterMain",ao="beforeWrite",so="write",lo="afterWrite",Br=[eo,to,io,ro,no,oo,ao,so,lo];function X(r){return r?(r.nodeName||"").toLowerCase():null}function F(r){if(r==null)return window;if(r.toString()!=="[object Window]"){var e=r.ownerDocument;return e&&e.defaultView||window}return r}function de(r){var e=F(r).Element;return r instanceof e||r instanceof Element}function V(r){var e=F(r).HTMLElement;return r instanceof e||r instanceof HTMLElement}function wt(r){if(typeof ShadowRoot=="undefined")return!1;var e=F(r).ShadowRoot;return r instanceof e||r instanceof ShadowRoot}function po(r){var e=r.state;Object.keys(e.elements).forEach(function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},o=e.elements[t];!V(o)||!X(o)||(Object.assign(o.style,i),Object.keys(n).forEach(function(a){var s=n[a];s===!1?o.removeAttribute(a):o.setAttribute(a,s===!0?"":s)}))})}function co(r){var e=r.state,t={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,t.popper),e.styles=t,e.elements.arrow&&Object.assign(e.elements.arrow.style,t.arrow),function(){Object.keys(e.elements).forEach(function(i){var n=e.elements[i],o=e.attributes[i]||{},a=Object.keys(e.styles.hasOwnProperty(i)?e.styles[i]:t[i]),s=a.reduce(function(l,p){return l[p]="",l},{});!V(n)||!X(n)||(Object.assign(n.style,s),Object.keys(o).forEach(function(l){n.removeAttribute(l)}))})}}var Ir={name:"applyStyles",enabled:!0,phase:"write",fn:po,effect:co,requires:["computeStyles"]};function J(r){return r.split("-")[0]}var he=Math.max,Xe=Math.min,Re=Math.round;function xt(){var r=navigator.userAgentData;return r!=null&&r.brands&&Array.isArray(r.brands)?r.brands.map(function(e){return e.brand+"/"+e.version}).join(" "):navigator.userAgent}function jt(){return!/^((?!chrome|android).)*safari/i.test(xt())}function ce(r,e,t){e===void 0&&(e=!1),t===void 0&&(t=!1);var i=r.getBoundingClientRect(),n=1,o=1;e&&V(r)&&(n=r.offsetWidth>0&&Re(i.width)/r.offsetWidth||1,o=r.offsetHeight>0&&Re(i.height)/r.offsetHeight||1);var a=de(r)?F(r):window,s=a.visualViewport,l=!jt()&&t,p=(i.left+(l&&s?s.offsetLeft:0))/n,d=(i.top+(l&&s?s.offsetTop:0))/o,c=i.width/n,f=i.height/o;return{width:c,height:f,top:d,right:p+c,bottom:d+f,left:p,x:p,y:d}}function Je(r){var e=ce(r),t=r.offsetWidth,i=r.offsetHeight;return Math.abs(e.width-t)<=1&&(t=e.width),Math.abs(e.height-i)<=1&&(i=e.height),{x:r.offsetLeft,y:r.offsetTop,width:t,height:i}}function qt(r,e){var t=e.getRootNode&&e.getRootNode();if(r.contains(e))return!0;if(t&&wt(t)){var i=e;do{if(i&&r.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function ae(r){return F(r).getComputedStyle(r)}function Xi(r){return["table","td","th"].indexOf(X(r))>=0}function ie(r){return((de(r)?r.ownerDocument:r.document)||window.document).documentElement}function Oe(r){return X(r)==="html"?r:r.assignedSlot||r.parentNode||(wt(r)?r.host:null)||ie(r)}function Lr(r){return!V(r)||ae(r).position==="fixed"?null:r.offsetParent}function uo(r){var e=/firefox/i.test(xt()),t=/Trident/i.test(xt());if(t&&V(r)){var i=ae(r);if(i.position==="fixed")return null}var n=Oe(r);for(wt(n)&&(n=n.host);V(n)&&["html","body"].indexOf(X(n))<0;){var o=ae(n);if(o.transform!=="none"||o.perspective!=="none"||o.contain==="paint"||["transform","perspective"].indexOf(o.willChange)!==-1||e&&o.willChange==="filter"||e&&o.filter&&o.filter!=="none")return n;n=n.parentNode}return null}function ge(r){for(var e=F(r),t=Lr(r);t&&Xi(t)&&ae(t).position==="static";)t=Lr(t);return t&&(X(t)==="html"||X(t)==="body"&&ae(t).position==="static")?e:t||uo(r)||e}function Ze(r){return["top","bottom"].indexOf(r)>=0?"x":"y"}function Qe(r,e,t){return he(r,Xe(e,t))}function Wr(r,e,t){var i=Qe(r,e,t);return i>t?t:i}function Ut(){return{top:0,right:0,bottom:0,left:0}}function Ht(r){return Object.assign({},Ut(),r)}function Vt(r,e){return e.reduce(function(t,i){return t[i]=r,t},{})}var mo=function(e,t){return e=typeof e=="function"?e(Object.assign({},t.rects,{placement:t.placement})):e,Ht(typeof e!="number"?e:Vt(e,We))};function fo(r){var e,t=r.state,i=r.name,n=r.options,o=t.elements.arrow,a=t.modifiersData.popperOffsets,s=J(t.placement),l=Ze(s),p=[B,W].indexOf(s)>=0,d=p?"height":"width";if(!(!o||!a)){var c=mo(n.padding,t),f=Je(o),u=l==="y"?A:B,M=l==="y"?H:W,g=t.rects.reference[d]+t.rects.reference[l]-a[l]-t.rects.popper[d],m=a[l]-t.rects.reference[l],_=ge(o),b=_?l==="y"?_.clientHeight||0:_.clientWidth||0:0,D=g/2-m/2,h=c[u],y=b-f[d]-c[M],w=b/2-f[d]/2+D,S=Qe(h,w,y),T=l;t.modifiersData[i]=(e={},e[T]=S,e.centerOffset=S-w,e)}}function ho(r){var e=r.state,t=r.options,i=t.element,n=i===void 0?"[data-popper-arrow]":i;n!=null&&(typeof n=="string"&&(n=e.elements.popper.querySelector(n),!n)||qt(e.elements.popper,n)&&(e.elements.arrow=n))}var jr={name:"arrow",enabled:!0,phase:"main",fn:fo,effect:ho,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function ue(r){return r.split("-")[1]}var go={top:"auto",right:"auto",bottom:"auto",left:"auto"};function yo(r,e){var t=r.x,i=r.y,n=e.devicePixelRatio||1;return{x:Re(t*n)/n||0,y:Re(i*n)/n||0}}function qr(r){var e,t=r.popper,i=r.popperRect,n=r.placement,o=r.variation,a=r.offsets,s=r.position,l=r.gpuAcceleration,p=r.adaptive,d=r.roundOffsets,c=r.isFixed,f=a.x,u=f===void 0?0:f,M=a.y,g=M===void 0?0:M,m=typeof d=="function"?d({x:u,y:g}):{x:u,y:g};u=m.x,g=m.y;var _=a.hasOwnProperty("x"),b=a.hasOwnProperty("y"),D=B,h=A,y=window;if(p){var w=ge(t),S="clientHeight",T="clientWidth";if(w===F(t)&&(w=ie(t),ae(w).position!=="static"&&s==="absolute"&&(S="scrollHeight",T="scrollWidth")),w=w,n===A||(n===B||n===W)&&o===Ke){h=H;var C=c&&w===y&&y.visualViewport?y.visualViewport.height:w[S];g-=C-i.height,g*=l?1:-1}if(n===B||(n===A||n===H)&&o===Ke){D=W;var x=c&&w===y&&y.visualViewport?y.visualViewport.width:w[T];u-=x-i.width,u*=l?1:-1}}var v=Object.assign({position:s},p&&go),k=d===!0?yo({x:u,y:g},F(t)):{x:u,y:g};if(u=k.x,g=k.y,l){var P;return Object.assign({},v,(P={},P[h]=b?"0":"",P[D]=_?"0":"",P.transform=(y.devicePixelRatio||1)<=1?"translate("+u+"px, "+g+"px)":"translate3d("+u+"px, "+g+"px, 0)",P))}return Object.assign({},v,(e={},e[h]=b?g+"px":"",e[D]=_?u+"px":"",e.transform="",e))}function Mo(r){var e=r.state,t=r.options,i=t.gpuAcceleration,n=i===void 0?!0:i,o=t.adaptive,a=o===void 0?!0:o,s=t.roundOffsets,l=s===void 0?!0:s,p={placement:J(e.placement),variation:ue(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:n,isFixed:e.options.strategy==="fixed"};e.modifiersData.popperOffsets!=null&&(e.styles.popper=Object.assign({},e.styles.popper,qr(Object.assign({},p,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:a,roundOffsets:l})))),e.modifiersData.arrow!=null&&(e.styles.arrow=Object.assign({},e.styles.arrow,qr(Object.assign({},p,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})}var Ur={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:Mo,data:{}};var di={passive:!0};function vo(r){var e=r.state,t=r.instance,i=r.options,n=i.scroll,o=n===void 0?!0:n,a=i.resize,s=a===void 0?!0:a,l=F(e.elements.popper),p=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&p.forEach(function(d){d.addEventListener("scroll",t.update,di)}),s&&l.addEventListener("resize",t.update,di),function(){o&&p.forEach(function(d){d.removeEventListener("scroll",t.update,di)}),s&&l.removeEventListener("resize",t.update,di)}}var Hr={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:vo,data:{}};var bo={left:"right",right:"left",bottom:"top",top:"bottom"};function Tt(r){return r.replace(/left|right|bottom|top/g,function(e){return bo[e]})}var wo={start:"end",end:"start"};function ci(r){return r.replace(/start|end/g,function(e){return wo[e]})}function et(r){var e=F(r),t=e.pageXOffset,i=e.pageYOffset;return{scrollLeft:t,scrollTop:i}}function tt(r){return ce(ie(r)).left+et(r).scrollLeft}function Ji(r,e){var t=F(r),i=ie(r),n=t.visualViewport,o=i.clientWidth,a=i.clientHeight,s=0,l=0;if(n){o=n.width,a=n.height;var p=jt();(p||!p&&e==="fixed")&&(s=n.offsetLeft,l=n.offsetTop)}return{width:o,height:a,x:s+tt(r),y:l}}function Zi(r){var e,t=ie(r),i=et(r),n=(e=r.ownerDocument)==null?void 0:e.body,o=he(t.scrollWidth,t.clientWidth,n?n.scrollWidth:0,n?n.clientWidth:0),a=he(t.scrollHeight,t.clientHeight,n?n.scrollHeight:0,n?n.clientHeight:0),s=-i.scrollLeft+tt(r),l=-i.scrollTop;return ae(n||t).direction==="rtl"&&(s+=he(t.clientWidth,n?n.clientWidth:0)-o),{width:o,height:a,x:s,y:l}}function it(r){var e=ae(r),t=e.overflow,i=e.overflowX,n=e.overflowY;return/auto|scroll|overlay|hidden/.test(t+n+i)}function ui(r){return["html","body","#document"].indexOf(X(r))>=0?r.ownerDocument.body:V(r)&&it(r)?r:ui(Oe(r))}function je(r,e){var t;e===void 0&&(e=[]);var i=ui(r),n=i===((t=r.ownerDocument)==null?void 0:t.body),o=F(i),a=n?[o].concat(o.visualViewport||[],it(i)?i:[]):i,s=e.concat(a);return n?s:s.concat(je(Oe(a)))}function _t(r){return Object.assign({},r,{left:r.x,top:r.y,right:r.x+r.width,bottom:r.y+r.height})}function xo(r,e){var t=ce(r,!1,e==="fixed");return t.top=t.top+r.clientTop,t.left=t.left+r.clientLeft,t.bottom=t.top+r.clientHeight,t.right=t.left+r.clientWidth,t.width=r.clientWidth,t.height=r.clientHeight,t.x=t.left,t.y=t.top,t}function Vr(r,e,t){return e===li?_t(Ji(r,t)):de(e)?xo(e,t):_t(Zi(ie(r)))}function To(r){var e=je(Oe(r)),t=["absolute","fixed"].indexOf(ae(r).position)>=0,i=t&&V(r)?ge(r):r;return de(i)?e.filter(function(n){return de(n)&&qt(n,i)&&X(n)!=="body"}):[]}function Qi(r,e,t,i){var n=e==="clippingParents"?To(r):[].concat(e),o=[].concat(n,[t]),a=o[0],s=o.reduce(function(l,p){var d=Vr(r,p,i);return l.top=he(d.top,l.top),l.right=Xe(d.right,l.right),l.bottom=Xe(d.bottom,l.bottom),l.left=he(d.left,l.left),l},Vr(r,a,i));return s.width=s.right-s.left,s.height=s.bottom-s.top,s.x=s.left,s.y=s.top,s}function Gt(r){var e=r.reference,t=r.element,i=r.placement,n=i?J(i):null,o=i?ue(i):null,a=e.x+e.width/2-t.width/2,s=e.y+e.height/2-t.height/2,l;switch(n){case A:l={x:a,y:e.y-t.height};break;case H:l={x:a,y:e.y+e.height};break;case W:l={x:e.x+e.width,y:s};break;case B:l={x:e.x-t.width,y:s};break;default:l={x:e.x,y:e.y}}var p=n?Ze(n):null;if(p!=null){var d=p==="y"?"height":"width";switch(o){case $e:l[p]=l[p]-(e[d]/2-t[d]/2);break;case Ke:l[p]=l[p]+(e[d]/2-t[d]/2);break;default:}}return l}function ye(r,e){e===void 0&&(e={});var t=e,i=t.placement,n=i===void 0?r.placement:i,o=t.strategy,a=o===void 0?r.strategy:o,s=t.boundary,l=s===void 0?Nr:s,p=t.rootBoundary,d=p===void 0?li:p,c=t.elementContext,f=c===void 0?bt:c,u=t.altBoundary,M=u===void 0?!1:u,g=t.padding,m=g===void 0?0:g,_=Ht(typeof m!="number"?m:Vt(m,We)),b=f===bt?Ar:bt,D=r.rects.popper,h=r.elements[M?b:f],y=Qi(de(h)?h:h.contextElement||ie(r.elements.popper),l,d,a),w=ce(r.elements.reference),S=Gt({reference:w,element:D,strategy:"absolute",placement:n}),T=_t(Object.assign({},D,S)),C=f===bt?T:w,x={top:y.top-C.top+_.top,bottom:C.bottom-y.bottom+_.bottom,left:y.left-C.left+_.left,right:C.right-y.right+_.right},v=r.modifiersData.offset;if(f===bt&&v){var k=v[n];Object.keys(x).forEach(function(P){var N=[W,H].indexOf(P)>=0?1:-1,Q=[A,H].indexOf(P)>=0?"y":"x";x[P]+=k[Q]*N})}return x}function er(r,e){e===void 0&&(e={});var t=e,i=t.placement,n=t.boundary,o=t.rootBoundary,a=t.padding,s=t.flipVariations,l=t.allowedAutoPlacements,p=l===void 0?pi:l,d=ue(i),c=d?s?Ki:Ki.filter(function(M){return ue(M)===d}):We,f=c.filter(function(M){return p.indexOf(M)>=0});f.length===0&&(f=c);var u=f.reduce(function(M,g){return M[g]=ye(r,{placement:g,boundary:n,rootBoundary:o,padding:a})[J(g)],M},{});return Object.keys(u).sort(function(M,g){return u[M]-u[g]})}function _o(r){if(J(r)===si)return[];var e=Tt(r);return[ci(r),e,ci(e)]}function So(r){var e=r.state,t=r.options,i=r.name;if(!e.modifiersData[i]._skip){for(var n=t.mainAxis,o=n===void 0?!0:n,a=t.altAxis,s=a===void 0?!0:a,l=t.fallbackPlacements,p=t.padding,d=t.boundary,c=t.rootBoundary,f=t.altBoundary,u=t.flipVariations,M=u===void 0?!0:u,g=t.allowedAutoPlacements,m=e.options.placement,_=J(m),b=_===m,D=l||(b||!M?[Tt(m)]:_o(m)),h=[m].concat(D).reduce(function(Fe,fe){return Fe.concat(J(fe)===si?er(e,{placement:fe,boundary:d,rootBoundary:c,padding:p,flipVariations:M,allowedAutoPlacements:g}):fe)},[]),y=e.rects.reference,w=e.rects.popper,S=new Map,T=!0,C=h[0],x=0;x<h.length;x++){var v=h[x],k=J(v),P=ue(v)===$e,N=[A,H].indexOf(k)>=0,Q=N?"width":"height",U=ye(e,{placement:v,boundary:d,rootBoundary:c,altBoundary:f,padding:p}),ee=N?P?W:B:P?H:A;y[Q]>w[Q]&&(ee=Tt(ee));var _e=Tt(ee),le=[];if(o&&le.push(U[k]<=0),s&&le.push(U[ee]<=0,U[_e]<=0),le.every(function(Fe){return Fe})){C=v,T=!1;break}S.set(v,le)}if(T)for(var Ve=M?3:1,gt=function(fe){var Le=h.find(function(Ye){var Se=S.get(Ye);if(Se)return Se.slice(0,fe).every(function(yt){return yt})});if(Le)return C=Le,"break"},Ie=Ve;Ie>0;Ie--){var Ge=gt(Ie);if(Ge==="break")break}e.placement!==C&&(e.modifiersData[i]._skip=!0,e.placement=C,e.reset=!0)}}var Gr={name:"flip",enabled:!0,phase:"main",fn:So,requiresIfExists:["offset"],data:{_skip:!1}};function Yr(r,e,t){return t===void 0&&(t={x:0,y:0}),{top:r.top-e.height-t.y,right:r.right-e.width+t.x,bottom:r.bottom-e.height+t.y,left:r.left-e.width-t.x}}function zr(r){return[A,W,H,B].some(function(e){return r[e]>=0})}function Do(r){var e=r.state,t=r.name,i=e.rects.reference,n=e.rects.popper,o=e.modifiersData.preventOverflow,a=ye(e,{elementContext:"reference"}),s=ye(e,{altBoundary:!0}),l=Yr(a,i),p=Yr(s,n,o),d=zr(l),c=zr(p);e.modifiersData[t]={referenceClippingOffsets:l,popperEscapeOffsets:p,isReferenceHidden:d,hasPopperEscaped:c},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":d,"data-popper-escaped":c})}var Kr={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:Do};function Eo(r,e,t){var i=J(r),n=[B,A].indexOf(i)>=0?-1:1,o=typeof t=="function"?t(Object.assign({},e,{placement:r})):t,a=o[0],s=o[1];return a=a||0,s=(s||0)*n,[B,W].indexOf(i)>=0?{x:s,y:a}:{x:a,y:s}}function Co(r){var e=r.state,t=r.options,i=r.name,n=t.offset,o=n===void 0?[0,0]:n,a=pi.reduce(function(d,c){return d[c]=Eo(c,e.rects,o),d},{}),s=a[e.placement],l=s.x,p=s.y;e.modifiersData.popperOffsets!=null&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=p),e.modifiersData[i]=a}var Xr={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:Co};function Po(r){var e=r.state,t=r.name;e.modifiersData[t]=Gt({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})}var Jr={name:"popperOffsets",enabled:!0,phase:"read",fn:Po,data:{}};function tr(r){return r==="x"?"y":"x"}function ko(r){var e=r.state,t=r.options,i=r.name,n=t.mainAxis,o=n===void 0?!0:n,a=t.altAxis,s=a===void 0?!1:a,l=t.boundary,p=t.rootBoundary,d=t.altBoundary,c=t.padding,f=t.tether,u=f===void 0?!0:f,M=t.tetherOffset,g=M===void 0?0:M,m=ye(e,{boundary:l,rootBoundary:p,padding:c,altBoundary:d}),_=J(e.placement),b=ue(e.placement),D=!b,h=Ze(_),y=tr(h),w=e.modifiersData.popperOffsets,S=e.rects.reference,T=e.rects.popper,C=typeof g=="function"?g(Object.assign({},e.rects,{placement:e.placement})):g,x=typeof C=="number"?{mainAxis:C,altAxis:C}:Object.assign({mainAxis:0,altAxis:0},C),v=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,k={x:0,y:0};if(w){if(o){var P,N=h==="y"?A:B,Q=h==="y"?H:W,U=h==="y"?"height":"width",ee=w[h],_e=ee+m[N],le=ee-m[Q],Ve=u?-T[U]/2:0,gt=b===$e?S[U]:T[U],Ie=b===$e?-T[U]:-S[U],Ge=e.elements.arrow,Fe=u&&Ge?Je(Ge):{width:0,height:0},fe=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:Ut(),Le=fe[N],Ye=fe[Q],Se=Qe(0,S[U],Fe[U]),yt=D?S[U]/2-Ve-Se-Le-x.mainAxis:gt-Se-Le-x.mainAxis,ei=D?-S[U]/2+Ve+Se+Ye+x.mainAxis:Ie+Se+Ye+x.mainAxis,Mt=e.elements.arrow&&ge(e.elements.arrow),ti=Mt?h==="y"?Mt.clientTop||0:Mt.clientLeft||0:0,$t=(P=v==null?void 0:v[h])!=null?P:0,ii=ee+yt-$t-ti,ri=ee+ei-$t,Rt=Qe(u?Xe(_e,ii):_e,ee,u?he(le,ri):le);w[h]=Rt,k[h]=Rt-ee}if(s){var Ot,ni=h==="x"?A:B,oi=h==="x"?H:W,De=w[y],ze=y==="y"?"height":"width",Nt=De+m[ni],At=De-m[oi],vt=[A,B].indexOf(_)!==-1,Bt=(Ot=v==null?void 0:v[y])!=null?Ot:0,It=vt?Nt:De-S[ze]-T[ze]-Bt+x.altAxis,Lt=vt?De+S[ze]+T[ze]-Bt-x.altAxis:At,Wt=u&&vt?Wr(It,De,Lt):Qe(u?It:Nt,De,u?Lt:At);w[y]=Wt,k[y]=Wt-De}e.modifiersData[i]=k}}var Zr={name:"preventOverflow",enabled:!0,phase:"main",fn:ko,requiresIfExists:["offset"]};function ir(r){return{scrollLeft:r.scrollLeft,scrollTop:r.scrollTop}}function rr(r){return r===F(r)||!V(r)?et(r):ir(r)}function Fo(r){var e=r.getBoundingClientRect(),t=Re(e.width)/r.offsetWidth||1,i=Re(e.height)/r.offsetHeight||1;return t!==1||i!==1}function nr(r,e,t){t===void 0&&(t=!1);var i=V(e),n=V(e)&&Fo(e),o=ie(e),a=ce(r,n,t),s={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(i||!i&&!t)&&((X(e)!=="body"||it(o))&&(s=rr(e)),V(e)?(l=ce(e,!0),l.x+=e.clientLeft,l.y+=e.clientTop):o&&(l.x=tt(o))),{x:a.left+s.scrollLeft-l.x,y:a.top+s.scrollTop-l.y,width:a.width,height:a.height}}function $o(r){var e=new Map,t=new Set,i=[];r.forEach(function(o){e.set(o.name,o)});function n(o){t.add(o.name);var a=[].concat(o.requires||[],o.requiresIfExists||[]);a.forEach(function(s){if(!t.has(s)){var l=e.get(s);l&&n(l)}}),i.push(o)}return r.forEach(function(o){t.has(o.name)||n(o)}),i}function or(r){var e=$o(r);return Br.reduce(function(t,i){return t.concat(e.filter(function(n){return n.phase===i}))},[])}function ar(r){var e;return function(){return e||(e=new Promise(function(t){Promise.resolve().then(function(){e=void 0,t(r())})})),e}}function sr(r){var e=r.reduce(function(t,i){var n=t[i.name];return t[i.name]=n?Object.assign({},n,i,{options:Object.assign({},n.options,i.options),data:Object.assign({},n.data,i.data)}):i,t},{});return Object.keys(e).map(function(t){return e[t]})}var Qr={placement:"bottom",modifiers:[],strategy:"absolute"};function en(){for(var r=arguments.length,e=new Array(r),t=0;t<r;t++)e[t]=arguments[t];return!e.some(function(i){return!(i&&typeof i.getBoundingClientRect=="function")})}function tn(r){r===void 0&&(r={});var e=r,t=e.defaultModifiers,i=t===void 0?[]:t,n=e.defaultOptions,o=n===void 0?Qr:n;return function(s,l,p){p===void 0&&(p=o);var d={placement:"bottom",orderedModifiers:[],options:Object.assign({},Qr,o),modifiersData:{},elements:{reference:s,popper:l},attributes:{},styles:{}},c=[],f=!1,u={state:d,setOptions:function(_){var b=typeof _=="function"?_(d.options):_;g(),d.options=Object.assign({},o,d.options,b),d.scrollParents={reference:de(s)?je(s):s.contextElement?je(s.contextElement):[],popper:je(l)};var D=or(sr([].concat(i,d.options.modifiers)));return d.orderedModifiers=D.filter(function(h){return h.enabled}),M(),u.update()},forceUpdate:function(){if(!f){var _=d.elements,b=_.reference,D=_.popper;if(en(b,D)){d.rects={reference:nr(b,ge(D),d.options.strategy==="fixed"),popper:Je(D)},d.reset=!1,d.placement=d.options.placement,d.orderedModifiers.forEach(function(x){return d.modifiersData[x.name]=Object.assign({},x.data)});for(var h=0;h<d.orderedModifiers.length;h++){if(d.reset===!0){d.reset=!1,h=-1;continue}var y=d.orderedModifiers[h],w=y.fn,S=y.options,T=S===void 0?{}:S,C=y.name;typeof w=="function"&&(d=w({state:d,options:T,name:C,instance:u})||d)}}}},update:ar(function(){return new Promise(function(m){u.forceUpdate(),m(d)})}),destroy:function(){g(),f=!0}};if(!en(s,l))return u;u.setOptions(p).then(function(m){!f&&p.onFirstUpdate&&p.onFirstUpdate(m)});function M(){d.orderedModifiers.forEach(function(m){var _=m.name,b=m.options,D=b===void 0?{}:b,h=m.effect;if(typeof h=="function"){var y=h({state:d,name:_,instance:u,options:D}),w=function(){};c.push(y||w)}})}function g(){c.forEach(function(m){return m()}),c=[]}return u}}var Ro=[Hr,Jr,Ur,Ir,Xr,Gr,Zr,jr,Kr],lr=tn({defaultModifiers:Ro});var pr="obsidian-media-db-plugin",dr="m.projects.code@gmail.com",ne="mediaDB",cr="0.5.2";function nn(r,e){if(e<=0)throw Error("size may not be zero or negative");return mi(r,e)}function ur(r){return/^[a-zA-Z_]+$/.test(r)}function on(r){return r.replace(/[\\,#%&{}/*<>$"@.?]*/g,"").replace(/:+/g," -")}function mr(r,e,t=!1){return r.replace(new RegExp("{{.*?}}","g"),i=>Oo(i,e,t))}function Oo(r,e,t){let i=r;i=i.substring(2),i=i.substring(0,i.length-2),i=i.trim();let n=i.split(":");if(n.length===1){let o=n[0].split("."),a=rn(o,e);return a===void 0?t?"":"{{ INVALID TEMPLATE TAG - object undefined }}":a}else if(n.length===2){let o=n[0],a=n[1].split("."),s=rn(a,e);return s===void 0?t?"":"{{ INVALID TEMPLATE TAG - object undefined }}":o==="LIST"?Array.isArray(s)?s.map(l=>`- ${l}`).join(`
`):"{{ INVALID TEMPLATE TAG - operator LIST is only applicable on an array }}":o==="ENUM"?Array.isArray(s)?s.join(", "):"{{ INVALID TEMPLATE TAG - operator ENUM is only applicable on an array }}":o==="FIRST"?Array.isArray(s)?s[0]:"{{ INVALID TEMPLATE TAG - operator FIRST is only applicable on an array }}":o==="LAST"?Array.isArray(s)?s[s.length-1]:"{{ INVALID TEMPLATE TAG - operator LAST is only applicable on an array }}":`{{ INVALID TEMPLATE TAG - unknown operator ${o} }}`}return"{{ INVALID TEMPLATE TAG }}"}function rn(r,e){let t=e;for(let i of r)t!==void 0&&(t=t[i]);return t}function an(r){let e=r.length;if(e===0)return"";let t=r[0].length;if(t===0)return"";for(let o of r)if(o.length!==t)return"";let i=[];for(let o=0;o<t;o++){let a=0;for(let s of r)s[o].length>a&&(a=s[o].length);i.push(a)}let n="";for(let o=0;o<e;o++){n+="|";for(let a=0;a<t;a++){let s=r[o][a];s+=" ".repeat(i[a]-s.length),n+=" "+s+" |"}if(n+=`
`,o===0){n+="|";for(let a=0;a<t;a++)n+=" "+"-".repeat(i[a])+" |";n+=`
`}}return n}function sn(r){return createFragment(e=>e.createDiv().innerHTML=r)}function No(r){return`${r.getMonth()+1}-${r.getDate()}-${r.getFullYear()}`}function Ao(r){return`${r.getHours()}-${r.getMinutes()}-${r.getSeconds()}`}function ln(r){return`${No(r)} ${Ao(r)}`}function mi(r,e){return(r%e+e)%e}function fr(r){return r.charAt(0).toUpperCase()+r.slice(1)}var rt=class extends Error{constructor(e){super(e)}},Yt=class extends Error{constructor(e){super(e)}};function $(r,e,t){for(let i in r)r[i]=e.hasOwnProperty(i)?e[i]:t[i]}function zt(r){return r.replace(/([a-z])([A-Z])/g,"$1 $2").replace(/\b([A-Z]+)([A-Z])([a-z])/,"$1 $2$3").replace(/^./,function(e){return e.toUpperCase()})}function hr(r){return!!r.plugins.plugins["templater-obsidian"]}async function pn(r,e){let t=r.plugins.plugins["templater-obsidian"];t&&!(t!=null&&t.settings.trigger_on_file_creation)&&await t.templater.overwrite_file_commands(e)}var gr=class{constructor(e,t,i){this.owner=e,this.containerEl=t,t.on("click",".suggestion-item",this.onSuggestionClick.bind(this)),t.on("mousemove",".suggestion-item",this.onSuggestionMouseover.bind(this)),i.register([],"ArrowUp",n=>{if(!n.isComposing)return this.setSelectedItem(this.selectedItem-1,!0),!1}),i.register([],"ArrowDown",n=>{if(!n.isComposing)return this.setSelectedItem(this.selectedItem+1,!0),!1}),i.register([],"Enter",n=>{if(!n.isComposing)return this.useSelectedItem(n),!1})}onSuggestionClick(e,t){e.preventDefault();let i=this.suggestions.indexOf(t);this.setSelectedItem(i,!1),this.useSelectedItem(e)}onSuggestionMouseover(e,t){let i=this.suggestions.indexOf(t);this.setSelectedItem(i,!1)}setSuggestions(e){this.containerEl.empty();let t=[];e.forEach(i=>{let n=this.containerEl.createDiv("suggestion-item");this.owner.renderSuggestion(i,n),t.push(n)}),this.values=e,this.suggestions=t,this.setSelectedItem(0,!1)}useSelectedItem(e){let t=this.values[this.selectedItem];t&&this.owner.selectSuggestion(t,e)}setSelectedItem(e,t){let i=this.suggestions.length>0?nn(e,this.suggestions.length):0,n=this.suggestions[this.selectedItem],o=this.suggestions[i];n==null||n.removeClass("is-selected"),o==null||o.addClass("is-selected"),this.selectedItem=i,t&&o.scrollIntoView(!1)}},St=class{constructor(e,t){this.app=e,this.inputEl=t,this.scope=new dn.Scope,this.suggestEl=createDiv("suggestion-container");let i=this.suggestEl.createDiv("suggestion");this.suggest=new gr(this,i,this.scope),this.scope.register([],"Escape",this.close.bind(this)),this.inputEl.addEventListener("input",this.onInputChanged.bind(this)),this.inputEl.addEventListener("focus",this.onInputChanged.bind(this)),this.inputEl.addEventListener("blur",this.close.bind(this)),this.suggestEl.on("mousedown",".suggestion-container",n=>{n.preventDefault()})}onInputChanged(){let e=this.inputEl.value,t=this.getSuggestions(e);t.length>0&&(this.suggest.setSuggestions(t),this.open(this.app.dom.appContainerEl,this.inputEl))}open(e,t){this.app.keymap.pushScope(this.scope),e.appendChild(this.suggestEl),this.popper=lr(t,this.suggestEl,{placement:"bottom-start",modifiers:[{name:"sameWidth",enabled:!0,fn:({state:i,instance:n})=>{let o=`${i.rects.reference.width}px`;i.styles.popper.width!==o&&(i.styles.popper.width=o,n.update())},phase:"beforeWrite",requires:["computeStyles"]}]})}close(){var e;this.app.keymap.popScope(this.scope),this.suggest.setSuggestions([]),(e=this.popper)==null||e.destroy(),this.suggestEl.detach()}};var Me=class extends St{getSuggestions(e){let t=this.app.vault.getAllLoadedFiles(),i=[],n=e.toLowerCase();return t.forEach(o=>{o instanceof cn.TFolder&&o.path.toLowerCase().contains(n)&&i.push(o)}),i}renderSuggestion(e,t){t.setText(e.path)}selectSuggestion(e){this.inputEl.value=e.path,this.inputEl.trigger("input"),this.close()}};var un=require("obsidian"),ve=class extends St{getSuggestions(e){let t=this.app.vault.getAllLoadedFiles(),i=[],n=e.toLowerCase();return t.forEach(o=>{o instanceof un.TFile&&o.name.toLowerCase().contains(n)&&i.push(o)}),i}renderSuggestion(e,t){t.setText(e.path)}selectSuggestion(e){this.inputEl.value=e.path,this.inputEl.trigger("input"),this.close()}};function oe(){}function yr(r){return r()}function fi(){return Object.create(null)}function Ee(r){r.forEach(yr)}function hi(r){return typeof r=="function"}function Dt(r,e){return r!=r?e==e:r!==e||r&&typeof r=="object"||typeof r=="function"}function mn(r){return Object.keys(r).length===0}var Mr=typeof window!="undefined"?window:typeof globalThis!="undefined"?globalThis:global;var gi=class r{constructor(e){K(this,"_listeners","WeakMap"in Mr?new WeakMap:void 0);K(this,"_observer");K(this,"options");this.options=e}observe(e,t){return this._listeners.set(e,t),this._getObserver().observe(e,this.options),()=>{this._listeners.delete(e),this._observer.unobserve(e)}}_getObserver(){var e;return(e=this._observer)!=null?e:this._observer=new ResizeObserver(t=>{var i;for(let n of t)r.entries.set(n.target,n),(i=this._listeners.get(n.target))==null||i(n)})}};gi.entries="WeakMap"in Mr?new WeakMap:void 0;var fn=!1;function hn(){fn=!0}function gn(){fn=!1}function I(r,e){r.appendChild(e)}function yn(r,e,t){let i=Mn(r);if(!i.getElementById(e)){let n=R("style");n.id=e,n.textContent=t,Lo(i,n)}}function Mn(r){if(!r)return document;let e=r.getRootNode?r.getRootNode():r.ownerDocument;return e&&e.host?e:r.ownerDocument}function Lo(r,e){return I(r.head||r,e),e.sheet}function G(r,e,t){r.insertBefore(e,t||null)}function L(r){r.parentNode&&r.parentNode.removeChild(r)}function Kt(r,e){for(let t=0;t<r.length;t+=1)r[t]&&r[t].d(e)}function R(r){return document.createElement(r)}function nt(r){return document.createTextNode(r)}function qe(){return nt(" ")}function yi(){return nt("")}function Xt(r,e,t,i){return r.addEventListener(e,t,i),()=>r.removeEventListener(e,t,i)}function O(r,e,t){t==null?r.removeAttribute(e):r.getAttribute(e)!==t&&r.setAttribute(e,t)}function vn(r){return Array.from(r.childNodes)}function Mi(r,e){e=""+e,r.data!==e&&(r.data=e)}function vi(r,e){r.value=e==null?"":e}function Jt(r,e,t,i){t==null?r.style.removeProperty(e):r.style.setProperty(e,t,i?"important":"")}function vr(r,e,t){for(let i=0;i<r.options.length;i+=1){let n=r.options[i];if(n.__value===e){n.selected=!0;return}}(!t||e!==void 0)&&(r.selectedIndex=-1)}function bn(r){let e=r.querySelector(":checked");return e&&e.__value}function wn(r){let e={};return r.childNodes.forEach(t=>{e[t.slot||"default"]=!0}),e}var Ue;function Ne(r){Ue=r}function Tn(){if(!Ue)throw new Error("Function called outside component initialization");return Ue}function br(r){Tn().$$.on_mount.push(r)}var ot=[];var bi=[],Ct=[],_n=[],Vo=Promise.resolve(),xr=!1;function Sn(){xr||(xr=!0,Vo.then(wi))}function at(r){Ct.push(r)}var wr=new Set,Et=0;function wi(){if(Et!==0)return;let r=Ue;do{try{for(;Et<ot.length;){let e=ot[Et];Et++,Ne(e),Go(e.$$)}}catch(e){throw ot.length=0,Et=0,e}for(Ne(null),ot.length=0,Et=0;bi.length;)bi.pop()();for(let e=0;e<Ct.length;e+=1){let t=Ct[e];wr.has(t)||(wr.add(t),t())}Ct.length=0}while(ot.length);for(;_n.length;)_n.pop()();xr=!1,wr.clear(),Ne(r)}function Go(r){if(r.fragment!==null){r.update(),Ee(r.before_update);let e=r.dirty;r.dirty=[-1],r.fragment&&r.fragment.p(r.ctx,e),r.after_update.forEach(at)}}function Dn(r){let e=[],t=[];Ct.forEach(i=>r.indexOf(i)===-1?e.push(i):t.push(i)),t.forEach(i=>i()),Ct=e}var xi=new Set,st;function lt(){st={r:0,c:[],p:st}}function pt(){st.r||Ee(st.c),st=st.p}function Y(r,e){r&&r.i&&(xi.delete(r),r.i(e))}function se(r,e,t,i){if(r&&r.o){if(xi.has(r))return;xi.add(r),st.c.push(()=>{xi.delete(r),i&&(t&&r.d(1),i())}),r.o(e)}else i&&i()}function Ae(r){return(r==null?void 0:r.length)!==void 0?r:Array.from(r)}var Yo=["allowfullscreen","allowpaymentrequest","async","autofocus","autoplay","checked","controls","default","defer","disabled","formnovalidate","hidden","inert","ismap","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","selected"],zo=new Set([...Yo]);function Ti(r){r&&r.c()}function Zt(r,e,t){let{fragment:i,after_update:n}=r.$$;i&&i.m(e,t),at(()=>{let o=r.$$.on_mount.map(yr).filter(hi);r.$$.on_destroy?r.$$.on_destroy.push(...o):Ee(o),r.$$.on_mount=[]}),n.forEach(at)}function Qt(r,e){let t=r.$$;t.fragment!==null&&(Dn(t.after_update),Ee(t.on_destroy),t.fragment&&t.fragment.d(e),t.on_destroy=t.fragment=null,t.ctx=[])}function Xo(r,e){r.$$.dirty[0]===-1&&(ot.push(r),Sn(),r.$$.dirty.fill(0)),r.$$.dirty[e/31|0]|=1<<e%31}function Pt(r,e,t,i,n,o,a=null,s=[-1]){let l=Ue;Ne(r);let p=r.$$={fragment:null,ctx:[],props:o,update:oe,not_equal:n,bound:fi(),on_mount:[],on_destroy:[],on_disconnect:[],before_update:[],after_update:[],context:new Map(e.context||(l?l.$$.context:[])),callbacks:fi(),dirty:s,skip_bound:!1,root:e.target||l.$$.root};a&&a(p.root);let d=!1;if(p.ctx=t?t(r,e.props||{},(c,f,...u)=>{let M=u.length?u[0]:f;return p.ctx&&n(p.ctx[c],p.ctx[c]=M)&&(!p.skip_bound&&p.bound[c]&&p.bound[c](M),d&&Xo(r,c)),f}):[],p.update(),d=!0,Ee(p.before_update),p.fragment=i?i(p.ctx):!1,e.target){if(e.hydrate){hn();let c=vn(e.target);p.fragment&&p.fragment.l(c),c.forEach(L)}else p.fragment&&p.fragment.c();e.intro&&Y(r.$$.fragment),Zt(r,e.target,e.anchor),gn(),wi()}Ne(l)}var Jo;typeof HTMLElement=="function"&&(Jo=class extends HTMLElement{constructor(e,t,i){super();K(this,"$$ctor");K(this,"$$s");K(this,"$$c");K(this,"$$cn",!1);K(this,"$$d",{});K(this,"$$r",!1);K(this,"$$p_d",{});K(this,"$$l",{});K(this,"$$l_u",new Map);this.$$ctor=e,this.$$s=t,i&&this.attachShadow({mode:"open"})}addEventListener(e,t,i){if(this.$$l[e]=this.$$l[e]||[],this.$$l[e].push(t),this.$$c){let n=this.$$c.$on(e,t);this.$$l_u.set(t,n)}super.addEventListener(e,t,i)}removeEventListener(e,t,i){if(super.removeEventListener(e,t,i),this.$$c){let n=this.$$l_u.get(t);n&&(n(),this.$$l_u.delete(t))}}async connectedCallback(){if(this.$$cn=!0,!this.$$c){let e=function(o){return()=>{let a;return{c:function(){a=R("slot"),o!=="default"&&O(a,"name",o)},m:function(p,d){G(p,a,d)},d:function(p){p&&L(a)}}}};if(await Promise.resolve(),!this.$$cn||this.$$c)return;let t={},i=wn(this);for(let o of this.$$s)o in i&&(t[o]=[e(o)]);for(let o of this.attributes){let a=this.$$g_p(o.name);a in this.$$d||(this.$$d[a]=Tr(a,o.value,this.$$p_d,"toProp"))}for(let o in this.$$p_d)!(o in this.$$d)&&this[o]!==void 0&&(this.$$d[o]=this[o],delete this[o]);this.$$c=new this.$$ctor({target:this.shadowRoot||this,props:{...this.$$d,$$slots:t,$$scope:{ctx:[]}}});let n=()=>{this.$$r=!0;for(let o in this.$$p_d)if(this.$$d[o]=this.$$c.$$.ctx[this.$$c.$$.props[o]],this.$$p_d[o].reflect){let a=Tr(o,this.$$d[o],this.$$p_d,"toAttribute");a==null?this.removeAttribute(this.$$p_d[o].attribute||o):this.setAttribute(this.$$p_d[o].attribute||o,a)}this.$$r=!1};this.$$c.$$.after_update.push(n),n();for(let o in this.$$l)for(let a of this.$$l[o]){let s=this.$$c.$on(o,a);this.$$l_u.set(a,s)}this.$$l={}}}attributeChangedCallback(e,t,i){var n;this.$$r||(e=this.$$g_p(e),this.$$d[e]=Tr(e,i,this.$$p_d,"toProp"),(n=this.$$c)==null||n.$set({[e]:this.$$d[e]}))}disconnectedCallback(){this.$$cn=!1,Promise.resolve().then(()=>{this.$$cn||(this.$$c.$destroy(),this.$$c=void 0)})}$$g_p(e){return Object.keys(this.$$p_d).find(t=>this.$$p_d[t].attribute===e||!this.$$p_d[t].attribute&&t.toLowerCase()===e)||e}});function Tr(r,e,t,i){var o;let n=(o=t[r])==null?void 0:o.type;if(e=n==="Boolean"&&typeof e!="boolean"?e!=null:e,!i||!t[r])return e;if(i==="toAttribute")switch(n){case"Object":case"Array":return e==null?null:JSON.stringify(e);case"Boolean":return e?"":null;case"Number":return e==null?null:e;default:return e}else switch(n){case"Object":case"Array":return e&&JSON.parse(e);case"Boolean":return e;case"Number":return e!=null?+e:e;default:return e}}var Be=class{constructor(){K(this,"$$");K(this,"$$set")}$destroy(){Qt(this,1),this.$destroy=oe}$on(e,t){if(!hi(t))return oe;let i=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return i.push(t),()=>{let n=i.indexOf(t);n!==-1&&i.splice(n,1)}}$set(e){this.$$set&&!mn(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}};var En="4";typeof window!="undefined"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(En);var Cn=["default","remap","remove"],kt=class r{constructor(e,t){this.type=e,this.properties=t!=null?t:[]}validate(){console.debug(`MDB | validated property mappings for ${this.type}`);for(let e of this.properties){let t=e.validate();if(!t.res)return{res:!1,err:t.err}}for(let e of this.getMappedProperties()){let t=this.getMappedProperties().filter(i=>i.newProperty===e.newProperty);if(t.length!==0){if(t.length!==1)return{res:!1,err:new Yt(`Multiple remapped properties (${t.map(i=>i.toString()).toString()}) may not share the same name.`)}}}for(let e of this.getMappedProperties())if(this.properties.filter(i=>i.newProperty===e.property).length!==0)return{res:!1,err:new Yt(`Remapped property (${e}) may not share it's new name with an existing property.`)};return{res:!0}}getMappedProperties(){return this.properties.filter(e=>e.mapping==="remap")}copy(){let e=new r(this.type);for(let t of this.properties){let i=new dt(t.property,t.newProperty,t.mapping,t.locked);e.properties.push(i)}return e}},dt=class{constructor(e,t,i,n){this.property=e,this.newProperty=t,this.mapping=i,this.locked=n!=null?n:!1}validate(){if(this.locked){if(this.mapping==="remove")return{res:!1,err:new rt(`Error in property mapping "${this.toString()}": locked property may not be removed.`)};if(this.mapping==="remap")return{res:!1,err:new rt(`Error in property mapping "${this.toString()}": locked property may not be remapped.`)}}return this.mapping==="default"?{res:!0}:this.mapping==="remove"?{res:!0}:!this.property||!ur(this.property)?{res:!1,err:new rt(`Error in property mapping "${this.toString()}": property may not be empty and only contain letters and underscores.`)}:!this.newProperty||!ur(this.newProperty)?{res:!1,err:new rt(`Error in property mapping "${this.toString()}": new property may not be empty and only contain letters and underscores.`)}:{res:!0}}toString(){return this.mapping==="default"?this.property:this.mapping==="remap"?`${this.property} -> ${this.newProperty}`:this.mapping==="remove"?`remove ${this.property}`:this.property}};var kn=require("obsidian");function Zo(r){yn(r,"svelte-pwdquc",".icon-wrapper.svelte-pwdquc{display:inline-block;position:relative;width:20px}.icon.svelte-pwdquc{position:absolute;height:20px;width:20px;top:calc(50% - 10px)}")}function Pn(r){let e,t;return{c(){e=R("div"),t=R("div"),O(t,"class","icon svelte-pwdquc"),O(e,"class","icon-wrapper svelte-pwdquc")},m(i,n){G(i,e,n),I(e,t),r[3](t)},p:oe,d(i){i&&L(e),r[3](null)}}}function Qo(r){let e,t=r[0].length>0&&Pn(r);return{c(){t&&t.c(),e=yi()},m(i,n){t&&t.m(i,n),G(i,e,n)},p(i,[n]){i[0].length>0?t?t.p(i,n):(t=Pn(i),t.c(),t.m(e.parentNode,e)):t&&(t.d(1),t=null)},i:oe,o:oe,d(i){i&&L(e),t&&t.d(i)}}}function ea(r,e,t){let{iconName:i=""}=e,{iconSize:n=20}=e,o;br(()=>{(0,kn.setIcon)(o,i,n)});function a(s){bi[s?"unshift":"push"](()=>{o=s,t(1,o)})}return r.$$set=s=>{"iconName"in s&&t(0,i=s.iconName),"iconSize"in s&&t(2,n=s.iconSize)},[i,o,n,a]}var _r=class extends Be{constructor(e){super(),Pt(this,e,ea,Qo,Dt,{iconName:0,iconSize:2},Zo)}},Fn=_r;function $n(r,e,t){let i=r.slice();return i[7]=e[t],i[8]=e,i[9]=t,i}function ta(r,e,t){let i=r.slice();return i[10]=e[t],i}function ia(r){let e,t,i,n,o,a,s=Ae(Cn),l=[];for(let c=0;c<s.length;c+=1)l[c]=na(ta(r,s,c));function p(){r[3].call(e,r[8],r[9])}let d=r[7].mapping==="remap"&&Rn(r);return{c(){e=R("select");for(let c=0;c<l.length;c+=1)l[c].c();t=qe(),d&&d.c(),i=yi(),O(e,"class","dropdown"),r[7].mapping===void 0&&at(p)},m(c,f){G(c,e,f);for(let u=0;u<l.length;u+=1)l[u]&&l[u].m(e,null);vr(e,r[7].mapping,!0),G(c,t,f),d&&d.m(c,f),G(c,i,f),n=!0,o||(a=Xt(e,"change",p),o=!0)},p(c,f){r=c,f&1&&vr(e,r[7].mapping),r[7].mapping==="remap"?d?(d.p(r,f),f&1&&Y(d,1)):(d=Rn(r),d.c(),Y(d,1),d.m(i.parentNode,i)):d&&(lt(),se(d,1,1,()=>{d=null}),pt())},i(c){n||(Y(d),n=!0)},o(c){se(d),n=!1},d(c){c&&(L(e),L(t),L(i)),Kt(l,c),d&&d.d(c),o=!1,a()}}}function ra(r){let e;return{c(){e=R("div"),e.textContent="property cannot be remapped",O(e,"class","media-db-plugin-property-binding-text")},m(t,i){G(t,e,i)},p:oe,i:oe,o:oe,d(t){t&&L(e)}}}function na(r){let e,t;return{c(){e=R("option"),e.textContent=`${r[10]} `,e.__value=t=r[10],vi(e,e.__value)},m(i,n){G(i,e,n)},p:oe,d(i){i&&L(e)}}}function Rn(r){let e,t,i,n,o,a,s;e=new Fn({props:{iconName:"arrow-right"}});function l(){r[4].call(n,r[8],r[9])}return{c(){Ti(e.$$.fragment),t=qe(),i=R("div"),n=R("input"),O(n,"type","text"),O(n,"spellcheck","false"),O(i,"class","media-db-plugin-property-mapping-to")},m(p,d){Zt(e,p,d),G(p,t,d),G(p,i,d),I(i,n),vi(n,r[7].newProperty),o=!0,a||(s=Xt(n,"input",l),a=!0)},p(p,d){r=p,d&1&&n.value!==r[7].newProperty&&vi(n,r[7].newProperty)},i(p){o||(Y(e.$$.fragment,p),o=!0)},o(p){se(e.$$.fragment,p),o=!1},d(p){p&&(L(t),L(i)),Qt(e,p),a=!1,s()}}}function On(r){let e,t,i,n,o=r[7].property+"",a,s,l,p,d,c,f=[ra,ia],u=[];function M(g,m){return g[7].locked?0:1}return l=M(r,-1),p=u[l]=f[l](r),{c(){e=R("div"),t=R("div"),i=R("pre"),n=R("code"),a=nt(o),s=qe(),p.c(),d=qe(),O(i,"class","media-db-plugin-property-mapping-element-property-name"),O(t,"class","media-db-plugin-property-mapping-element-property-name-wrapper"),O(e,"class","media-db-plugin-property-mapping-element")},m(g,m){G(g,e,m),I(e,t),I(t,i),I(i,n),I(n,a),I(e,s),u[l].m(e,null),I(e,d),c=!0},p(g,m){(!c||m&1)&&o!==(o=g[7].property+"")&&Mi(a,o);let _=l;l=M(g,m),l===_?u[l].p(g,m):(lt(),se(u[_],1,1,()=>{u[_]=null}),pt(),p=u[l],p?p.p(g,m):(p=u[l]=f[l](g),p.c()),Y(p,1),p.m(e,d))},i(g){c||(Y(p),c=!0)},o(g){se(p),c=!1},d(g){g&&L(e),u[l].d()}}}function Nn(r){var n,o;let e,t=((o=(n=r[2])==null?void 0:n.err)==null?void 0:o.message)+"",i;return{c(){e=R("div"),i=nt(t),O(e,"class","media-db-plugin-property-mapping-validation")},m(a,s){G(a,e,s),I(e,i)},p(a,s){var l,p;s&4&&t!==(t=((p=(l=a[2])==null?void 0:l.err)==null?void 0:p.message)+"")&&Mi(i,t)},d(a){a&&L(e)}}}function oa(r){var D;let e,t,i=fr(r[0].type)+"",n,o,a,s,l,p,d,c,f,u,M,g=Ae(r[0].properties),m=[];for(let h=0;h<g.length;h+=1)m[h]=On($n(r,g,h));let _=h=>se(m[h],1,1,()=>{m[h]=null}),b=!((D=r[2])!=null&&D.res)&&Nn(r);return{c(){var h;e=R("div"),t=R("div"),n=nt(i),o=qe(),a=R("div");for(let y=0;y<m.length;y+=1)m[y].c();s=qe(),b&&b.c(),l=qe(),p=R("button"),d=nt("Save"),O(t,"class","setting-item-name"),O(a,"class","media-db-plugin-property-mappings-container"),O(p,"class",c="media-db-plugin-property-mappings-save-button "+((h=r[2])!=null&&h.res?"mod-cta":"mod-muted")),O(e,"class","media-db-plugin-property-mappings-model-container")},m(h,y){G(h,e,y),I(e,t),I(t,n),I(e,o),I(e,a);for(let w=0;w<m.length;w+=1)m[w]&&m[w].m(a,null);I(e,s),b&&b.m(e,null),I(e,l),I(e,p),I(p,d),f=!0,u||(M=Xt(p,"click",r[5]),u=!0)},p(h,[y]){var w,S;if((!f||y&1)&&i!==(i=fr(h[0].type)+"")&&Mi(n,i),y&1){g=Ae(h[0].properties);let T;for(T=0;T<g.length;T+=1){let C=$n(h,g,T);m[T]?(m[T].p(C,y),Y(m[T],1)):(m[T]=On(C),m[T].c(),Y(m[T],1),m[T].m(a,null))}for(lt(),T=g.length;T<m.length;T+=1)_(T);pt()}(w=h[2])!=null&&w.res?b&&(b.d(1),b=null):b?b.p(h,y):(b=Nn(h),b.c(),b.m(e,l)),(!f||y&4&&c!==(c="media-db-plugin-property-mappings-save-button "+((S=h[2])!=null&&S.res?"mod-cta":"mod-muted")))&&O(p,"class",c)},i(h){if(!f){for(let y=0;y<g.length;y+=1)Y(m[y]);f=!0}},o(h){m=m.filter(Boolean);for(let y=0;y<m.length;y+=1)se(m[y]);f=!1},d(h){h&&L(e),Kt(m,h),b&&b.d(),u=!1,M()}}}function aa(r,e,t){let{model:i}=e,{save:n}=e,o;function a(d){t(2,o=d.validate())}function s(d,c){d[c].mapping=bn(this),t(0,i)}function l(d,c){d[c].newProperty=this.value,t(0,i)}let p=()=>{i.validate().res&&n(i)};return r.$$set=d=>{"model"in d&&t(0,i=d.model),"save"in d&&t(1,n=d.save)},r.$$.update=()=>{r.$$.dirty&1&&a(i)},[i,n,o,s,l,p]}var Sr=class extends Be{constructor(e){super(),Pt(this,e,aa,oa,Dt,{model:0,save:1})}},Bn=Sr;function In(r,e,t){let i=r.slice();return i[2]=e[t],i}function Ln(r){let e,t;return e=new Bn({props:{model:r[2],save:r[1]}}),{c(){Ti(e.$$.fragment)},m(i,n){Zt(e,i,n),t=!0},p(i,n){let o={};n&1&&(o.model=i[2]),n&2&&(o.save=i[1]),e.$set(o)},i(i){t||(Y(e.$$.fragment,i),t=!0)},o(i){se(e.$$.fragment,i),t=!1},d(i){Qt(e,i)}}}function sa(r){let e,t,i=Ae(r[0]),n=[];for(let a=0;a<i.length;a+=1)n[a]=Ln(In(r,i,a));let o=a=>se(n[a],1,1,()=>{n[a]=null});return{c(){e=R("div");for(let a=0;a<n.length;a+=1)n[a].c();O(e,"class","setting-item"),Jt(e,"display","flex"),Jt(e,"gap","10px"),Jt(e,"flex-direction","column"),Jt(e,"align-items","stretch")},m(a,s){G(a,e,s);for(let l=0;l<n.length;l+=1)n[l]&&n[l].m(e,null);t=!0},p(a,[s]){if(s&3){i=Ae(a[0]);let l;for(l=0;l<i.length;l+=1){let p=In(a,i,l);n[l]?(n[l].p(p,s),Y(n[l],1)):(n[l]=Ln(p),n[l].c(),Y(n[l],1),n[l].m(e,null))}for(lt(),l=i.length;l<n.length;l+=1)o(l);pt()}},i(a){if(!t){for(let s=0;s<i.length;s+=1)Y(n[s]);t=!0}},o(a){n=n.filter(Boolean);for(let s=0;s<n.length;s+=1)se(n[s]);t=!1},d(a){a&&L(e),Kt(n,a)}}}function la(r,e,t){let{models:i=[]}=e,{save:n}=e;return r.$$set=o=>{"models"in o&&t(0,i=o.models),"save"in o&&t(1,n=o.save)},[i,n]}var Dr=class extends Be{constructor(e){super(),Pt(this,e,la,sa,Dt,{models:0,save:1})}},Wn=Dr;var Er=require("obsidian");var Z=class{constructor(){this.type=void 0,this.subType=void 0,this.title=void 0,this.englishTitle=void 0,this.year=void 0,this.dataSource=void 0,this.url=void 0,this.id=void 0,this.userData={}}toMetaDataObject(){return{...this.getWithOutUserData(),...this.userData,tags:this.getTags().join("/")}}getWithOutUserData(){let e=structuredClone(this);return delete e.userData,e}};var me=class extends Z{constructor(e={}){super(),this.plot=void 0,this.genres=void 0,this.director=void 0,this.writer=void 0,this.studio=void 0,this.duration=void 0,this.onlineRating=void 0,this.actors=void 0,this.image=void 0,this.released=void 0,this.streamingServices=void 0,this.premiere=void 0,this.userData={watched:void 0,lastWatched:void 0,personalRating:void 0},$(this,e,this),e.hasOwnProperty("userData")||$(this.userData,e,this.userData),this.type=this.getMediaType()}getTags(){return[ne,"tv","movie"]}getMediaType(){return"movie"}getSummary(){return this.englishTitle+" ("+this.year+")"}};var Ce=class extends Z{constructor(e={}){super(),this.plot=void 0,this.genres=void 0,this.writer=void 0,this.studio=void 0,this.episodes=void 0,this.duration=void 0,this.onlineRating=void 0,this.actors=void 0,this.image=void 0,this.released=void 0,this.streamingServices=void 0,this.airing=void 0,this.airedFrom=void 0,this.airedTo=void 0,this.userData={watched:void 0,lastWatched:void 0,personalRating:void 0},$(this,e,this),e.hasOwnProperty("userData")||$(this.userData,e,this.userData),this.type=this.getMediaType()}getTags(){return[ne,"tv","series"]}getMediaType(){return"series"}getSummary(){return this.title+" ("+this.year+")"}};var ct=class extends Z{constructor(e={}){super(),this.plot=void 0,this.genres=void 0,this.authors=void 0,this.alternateTitles=void 0,this.chapters=void 0,this.volumes=void 0,this.onlineRating=void 0,this.image=void 0,this.released=void 0,this.status=void 0,this.publishedFrom=void 0,this.publishedTo=void 0,this.userData={watched:void 0,lastWatched:void 0,personalRating:void 0},$(this,e,this),e.hasOwnProperty("userData")||$(this.userData,e,this.userData),this.type=this.getMediaType()}getTags(){return[ne,"manga","light-novel"]}getMediaType(){return"manga"}getSummary(){return this.title+" ("+this.year+")"}};var pe=class extends Z{constructor(e={}){super(),this.developers=void 0,this.publishers=void 0,this.genres=void 0,this.onlineRating=void 0,this.image=void 0,this.released=void 0,this.releaseDate=void 0,this.userData={played:void 0,personalRating:void 0},$(this,e,this),e.hasOwnProperty("userData")||$(this.userData,e,this.userData),this.type=this.getMediaType()}getTags(){return[ne,"game"]}getMediaType(){return"game"}getSummary(){return this.englishTitle+" ("+this.year+")"}};var ut=class extends Z{constructor(e={}){super(),this.wikiUrl=void 0,this.lastUpdated=void 0,this.length=void 0,this.article=void 0,this.userData={},$(this,e,this),e.hasOwnProperty("userData")||$(this.userData,e,this.userData),this.type=this.getMediaType()}getTags(){return[ne,"wiki"]}getMediaType(){return"wiki"}getWithOutUserData(){let e=structuredClone(this);return delete e.userData,delete e.article,e}getSummary(){return this.title}};var mt=class extends Z{constructor(e={}){super(),this.genres=void 0,this.artists=void 0,this.image=void 0,this.rating=void 0,this.userData={personalRating:void 0},$(this,e,this),e.hasOwnProperty("userData")||$(this.userData,e,this.userData),this.type=this.getMediaType()}getTags(){return[ne,"music",this.subType]}getMediaType(){return"musicRelease"}getSummary(){let e=this.title+" ("+this.year+")";return this.artists.length>0&&(e+=" - "+this.artists.join(", ")),e}};var ft=class extends Z{constructor(e={}){super(),this.genres=void 0,this.onlineRating=void 0,this.minPlayers=void 0,this.maxPlayers=void 0,this.playtime=void 0,this.publishers=void 0,this.complexityRating=void 0,this.image=void 0,this.released=void 0,this.userData={played:void 0,personalRating:void 0},$(this,e,this),e.hasOwnProperty("userData")||$(this.userData,e,this.userData),this.type=this.getMediaType()}getTags(){return[ne,"boardgame"]}getMediaType(){return"boardgame"}getSummary(){return this.englishTitle+" ("+this.year+")"}};var ht=class extends Z{constructor(e={}){super(),this.author=void 0,this.pages=void 0,this.image=void 0,this.onlineRating=void 0,this.isbn=void 0,this.isbn13=void 0,this.released=void 0,this.userData={read:void 0,lastRead:void 0,personalRating:void 0},$(this,e,this),e.hasOwnProperty("userData")||$(this.userData,e,this.userData),this.type=this.getMediaType()}getTags(){return[ne,"book"]}getMediaType(){return"book"}getSummary(){return this.englishTitle+" ("+this.year+") - "+this.author}};var Pe=["movie","series","manga","game","wiki","musicRelease","boardgame","book"],_i=class{constructor(){}updateTemplates(e){this.mediaFileNameTemplateMap=new Map,this.mediaFileNameTemplateMap.set("movie",e.movieFileNameTemplate),this.mediaFileNameTemplateMap.set("series",e.seriesFileNameTemplate),this.mediaFileNameTemplateMap.set("manga",e.mangaFileNameTemplate),this.mediaFileNameTemplateMap.set("game",e.gameFileNameTemplate),this.mediaFileNameTemplateMap.set("wiki",e.wikiFileNameTemplate),this.mediaFileNameTemplateMap.set("musicRelease",e.musicReleaseFileNameTemplate),this.mediaFileNameTemplateMap.set("boardgame",e.boardgameFileNameTemplate),this.mediaFileNameTemplateMap.set("book",e.bookFileNameTemplate),this.mediaTemplateMap=new Map,this.mediaTemplateMap.set("movie",e.movieTemplate),this.mediaTemplateMap.set("series",e.seriesTemplate),this.mediaTemplateMap.set("manga",e.mangaTemplate),this.mediaTemplateMap.set("game",e.gameTemplate),this.mediaTemplateMap.set("wiki",e.wikiTemplate),this.mediaTemplateMap.set("musicRelease",e.musicReleaseTemplate),this.mediaTemplateMap.set("boardgame",e.boardgameTemplate),this.mediaTemplateMap.set("book",e.bookTemplate)}updateFolders(e){this.mediaFolderMap=new Map,this.mediaFolderMap.set("movie",e.movieFolder),this.mediaFolderMap.set("series",e.seriesFolder),this.mediaFolderMap.set("manga",e.mangaFolder),this.mediaFolderMap.set("game",e.gameFolder),this.mediaFolderMap.set("wiki",e.wikiFolder),this.mediaFolderMap.set("musicRelease",e.musicReleaseFolder),this.mediaFolderMap.set("boardgame",e.boardgameFolder),this.mediaFolderMap.set("book",e.bookFolder)}getFileName(e){return mr(this.mediaFileNameTemplateMap.get(e.getMediaType()),e,!0)}async getTemplate(e,t){let i=this.mediaTemplateMap.get(e.getMediaType());if(!i)return"";let n=t.vault.getAbstractFileByPath(i);if((!n||n instanceof Er.TFolder)&&(n=t.vault.getFiles().filter(a=>a.name===i).first(),!n))return"";let o=await t.vault.cachedRead(n);return mr(o,e)}async getFolder(e,t){let i=this.mediaFolderMap.get(e.getMediaType());i||(i="/"),await t.vault.adapter.exists(i)||await t.vault.createFolder(i);let n=t.vault.getAbstractFileByPath(i);if(!(n instanceof Er.TFolder))throw Error(`Expected ${n} to be instance of TFolder`);return n}createMediaTypeModelFromMediaType(e,t){if(t==="movie")return new me(e);if(t==="series")return new Ce(e);if(t==="manga")return new ct(e);if(t==="game")return new pe(e);if(t==="wiki")return new ut(e);if(t==="musicRelease")return new mt(e);if(t==="boardgame")return new ft(e);if(t==="book")return new ht(e)}};var j={OMDbKey:"",MobyGamesKey:"",sfwFilter:!0,templates:!0,customDateFormat:"L",openNoteInNewTab:!0,useDefaultFrontMatter:!0,enableTemplaterIntegration:!1,movieTemplate:"",seriesTemplate:"",mangaTemplate:"",gameTemplate:"",wikiTemplate:"",musicReleaseTemplate:"",boardgameTemplate:"",bookTemplate:"",movieFileNameTemplate:"{{ title }} ({{ year }})",seriesFileNameTemplate:"{{ title }} ({{ year }})",mangaFileNameTemplate:"{{ title }} ({{ year }})",gameFileNameTemplate:"{{ title }} ({{ year }})",wikiFileNameTemplate:"{{ title }}",musicReleaseFileNameTemplate:"{{ title }} (by {{ ENUM:artists }} - {{ year }})",boardgameFileNameTemplate:"{{ title }} ({{ year }})",bookFileNameTemplate:"{{ title }} ({{ year }})",moviePropertyConversionRules:"",seriesPropertyConversionRules:"",mangaPropertyConversionRules:"",gamePropertyConversionRules:"",wikiPropertyConversionRules:"",musicReleasePropertyConversionRules:"",boardgamePropertyConversionRules:"",bookPropertyConversionRules:"",movieFolder:"Media DB/movies",seriesFolder:"Media DB/series",mangaFolder:"Media DB/manga",gameFolder:"Media DB/games",wikiFolder:"Media DB/wiki",musicReleaseFolder:"Media DB/music",boardgameFolder:"Media DB/boardgames",bookFolder:"Media DB/books",propertyMappingModels:[]},pa=["type","id","dataSource"];function jn(r){let e=j,t=[];for(let i of Pe){let o=r.mediaTypeManager.createMediaTypeModelFromMediaType({},i).toMetaDataObject(),a=new kt(i);for(let s of Object.keys(o))a.properties.push(new dt(s,"","default",pa.contains(s)));t.push(a)}return e.propertyMappingModels=t,e}var Si=class extends E.PluginSettingTab{constructor(e,t){super(e,t),this.plugin=t}display(){let{containerEl:e}=this;if(e.empty(),new E.Setting(e).setName("OMDb API key").setDesc('API key for "www.omdbapi.com".').addText(t=>{t.setPlaceholder("API key").setValue(this.plugin.settings.OMDbKey).onChange(i=>{this.plugin.settings.OMDbKey=i,this.plugin.saveSettings()})}),new E.Setting(e).setName("Moby Games key").setDesc('API key for "www.mobygames.com".').addText(t=>{t.setPlaceholder("API key").setValue(this.plugin.settings.MobyGamesKey).onChange(i=>{this.plugin.settings.MobyGamesKey=i,this.plugin.saveSettings()})}),new E.Setting(e).setName("SFW filter").setDesc("Only shows SFW results for APIs that offer filtering.").addToggle(t=>{t.setValue(this.plugin.settings.sfwFilter).onChange(i=>{this.plugin.settings.sfwFilter=i,this.plugin.saveSettings()})}),new E.Setting(e).setName("Resolve {{ tags }} in templates").setDesc("Whether to resolve {{ tags }} in templates. The spaces inside the curly braces are important.").addToggle(t=>{t.setValue(this.plugin.settings.templates).onChange(i=>{this.plugin.settings.templates=i,this.plugin.saveSettings()})}),new E.Setting(e).setName("Date format").setDesc(sn("Your custom date format. Use <em>'YYYY-MM-DD'</em> for example.<br>For more syntax, refer to <a href='https://momentjs.com/docs/#/displaying/format/'>format reference</a>.<br>Your current syntax looks like this: <b><a id='media-db-dateformat-preview' style='pointer-events: none; cursor: default; text-decoration: none;'>"+this.plugin.dateFormatter.getPreview()+"</a></b>")).addText(t=>{t.setPlaceholder(j.customDateFormat).setValue(this.plugin.settings.customDateFormat===j.customDateFormat?"":this.plugin.settings.customDateFormat).onChange(i=>{let n=i||j.customDateFormat;this.plugin.settings.customDateFormat=n,document.getElementById("media-db-dateformat-preview").textContent=this.plugin.dateFormatter.getPreview(n),this.plugin.saveSettings()})}),new E.Setting(e).setName("Open note in new tab").setDesc("Open the newly created note in a new tab.").addToggle(t=>{t.setValue(this.plugin.settings.openNoteInNewTab).onChange(i=>{this.plugin.settings.openNoteInNewTab=i,this.plugin.saveSettings()})}),new E.Setting(e).setName("Use default front matter").setDesc("Whether to use the default front matter. If disabled, the front matter from the template will be used. Same as mapping everything to remove.").addToggle(t=>{t.setValue(this.plugin.settings.useDefaultFrontMatter).onChange(i=>{this.plugin.settings.useDefaultFrontMatter=i,this.plugin.saveSettings(),this.display()})}),new E.Setting(e).setName("Enable Templater integration").setDesc("Enable integration with the templater plugin, this also needs templater to be installed. Warning: Templater allows you to execute arbitrary JavaScript code and system commands.").addToggle(t=>{t.setValue(this.plugin.settings.enableTemplaterIntegration).onChange(i=>{this.plugin.settings.enableTemplaterIntegration=i,this.plugin.saveSettings()})}),new E.Setting(e).setName("New file location").setHeading(),new E.Setting(e).setName("Movie folder").setDesc("Where newly imported movies should be placed.").addSearch(t=>{new Me(this.app,t.inputEl),t.setPlaceholder(j.movieFolder).setValue(this.plugin.settings.movieFolder).onChange(i=>{this.plugin.settings.movieFolder=i,this.plugin.saveSettings()})}),new E.Setting(e).setName("Series folder").setDesc("Where newly imported series should be placed.").addSearch(t=>{new Me(this.app,t.inputEl),t.setPlaceholder(j.seriesFolder).setValue(this.plugin.settings.seriesFolder).onChange(i=>{this.plugin.settings.seriesFolder=i,this.plugin.saveSettings()})}),new E.Setting(e).setName("Manga folder").setDesc("Where newly imported manga should be placed.").addSearch(t=>{new Me(this.app,t.inputEl),t.setPlaceholder(j.mangaFolder).setValue(this.plugin.settings.mangaFolder).onChange(i=>{this.plugin.settings.mangaFolder=i,this.plugin.saveSettings()})}),new E.Setting(e).setName("Game folder").setDesc("Where newly imported games should be placed.").addSearch(t=>{new Me(this.app,t.inputEl),t.setPlaceholder(j.gameFolder).setValue(this.plugin.settings.gameFolder).onChange(i=>{this.plugin.settings.gameFolder=i,this.plugin.saveSettings()})}),new E.Setting(e).setName("Wiki folder").setDesc("Where newly imported wiki articles should be placed.").addSearch(t=>{new Me(this.app,t.inputEl),t.setPlaceholder(j.wikiFolder).setValue(this.plugin.settings.wikiFolder).onChange(i=>{this.plugin.settings.wikiFolder=i,this.plugin.saveSettings()})}),new E.Setting(e).setName("Music folder").setDesc("Where newly imported music should be placed.").addSearch(t=>{new Me(this.app,t.inputEl),t.setPlaceholder(j.musicReleaseFolder).setValue(this.plugin.settings.musicReleaseFolder).onChange(i=>{this.plugin.settings.musicReleaseFolder=i,this.plugin.saveSettings()})}),new E.Setting(e).setName("Board game folder").setDesc("Where newly imported board games should be places.").addSearch(t=>{new Me(this.app,t.inputEl),t.setPlaceholder(j.boardgameFolder).setValue(this.plugin.settings.boardgameFolder).onChange(i=>{this.plugin.settings.boardgameFolder=i,this.plugin.saveSettings()})}),new E.Setting(e).setName("Book folder").setDesc("Where newly imported books should be placed.").addSearch(t=>{new Me(this.app,t.inputEl),t.setPlaceholder(j.bookFolder).setValue(this.plugin.settings.bookFolder).onChange(i=>{this.plugin.settings.bookFolder=i,this.plugin.saveSettings()})}),new E.Setting(e).setName("Template settings").setHeading(),new E.Setting(e).setName("Movie template").setDesc("Template file to be used when creating a new note for a movie.").addSearch(t=>{new ve(this.app,t.inputEl),t.setPlaceholder("Example: movieTemplate.md").setValue(this.plugin.settings.movieTemplate).onChange(i=>{this.plugin.settings.movieTemplate=i,this.plugin.saveSettings()})}),new E.Setting(e).setName("Series template").setDesc("Template file to be used when creating a new note for a series.").addSearch(t=>{new ve(this.app,t.inputEl),t.setPlaceholder("Example: seriesTemplate.md").setValue(this.plugin.settings.seriesTemplate).onChange(i=>{this.plugin.settings.seriesTemplate=i,this.plugin.saveSettings()})}),new E.Setting(e).setName("Manga template").setDesc("Template file to be used when creating a new note for a manga.").addSearch(t=>{new ve(this.app,t.inputEl),t.setPlaceholder("Example: mangaTemplate.md").setValue(this.plugin.settings.mangaTemplate).onChange(i=>{this.plugin.settings.mangaTemplate=i,this.plugin.saveSettings()})}),new E.Setting(e).setName("Game template").setDesc("Template file to be used when creating a new note for a game.").addSearch(t=>{new ve(this.app,t.inputEl),t.setPlaceholder("Example: gameTemplate.md").setValue(this.plugin.settings.gameTemplate).onChange(i=>{this.plugin.settings.gameTemplate=i,this.plugin.saveSettings()})}),new E.Setting(e).setName("Wiki template").setDesc("Template file to be used when creating a new note for a wiki entry.").addSearch(t=>{new ve(this.app,t.inputEl),t.setPlaceholder("Example: wikiTemplate.md").setValue(this.plugin.settings.wikiTemplate).onChange(i=>{this.plugin.settings.wikiTemplate=i,this.plugin.saveSettings()})}),new E.Setting(e).setName("Music release template").setDesc("Template file to be used when creating a new note for a music release.").addSearch(t=>{new ve(this.app,t.inputEl),t.setPlaceholder("Example: musicReleaseTemplate.md").setValue(this.plugin.settings.musicReleaseTemplate).onChange(i=>{this.plugin.settings.musicReleaseTemplate=i,this.plugin.saveSettings()})}),new E.Setting(e).setName("Board game template").setDesc("Template file to be used when creating a new note for a boardgame.").addSearch(t=>{new ve(this.app,t.inputEl),t.setPlaceholder("Example: boardgameTemplate.md").setValue(this.plugin.settings.boardgameTemplate).onChange(i=>{this.plugin.settings.boardgameTemplate=i,this.plugin.saveSettings()})}),new E.Setting(e).setName("Book template").setDesc("Template file to be used when creating a new note for a book.").addSearch(t=>{new ve(this.app,t.inputEl),t.setPlaceholder("Example: bookTemplate.md").setValue(this.plugin.settings.bookTemplate).onChange(i=>{this.plugin.settings.bookTemplate=i,this.plugin.saveSettings()})}),new E.Setting(e).setName("File name settings").setHeading(),new E.Setting(e).setName("Movie file name template").setDesc("Template for the file name used when creating a new note for a movie.").addText(t=>{t.setPlaceholder(`Example: ${j.movieFileNameTemplate}`).setValue(this.plugin.settings.movieFileNameTemplate).onChange(i=>{this.plugin.settings.movieFileNameTemplate=i,this.plugin.saveSettings()})}),new E.Setting(e).setName("Series file name template").setDesc("Template for the file name used when creating a new note for a series.").addText(t=>{t.setPlaceholder(`Example: ${j.seriesFileNameTemplate}`).setValue(this.plugin.settings.seriesFileNameTemplate).onChange(i=>{this.plugin.settings.seriesFileNameTemplate=i,this.plugin.saveSettings()})}),new E.Setting(e).setName("Manga file name template").setDesc("Template for the file name used when creating a new note for a manga.").addText(t=>{t.setPlaceholder(`Example: ${j.mangaFileNameTemplate}`).setValue(this.plugin.settings.mangaFileNameTemplate).onChange(i=>{this.plugin.settings.mangaFileNameTemplate=i,this.plugin.saveSettings()})}),new E.Setting(e).setName("Game file name template").setDesc("Template for the file name used when creating a new note for a game.").addText(t=>{t.setPlaceholder(`Example: ${j.gameFileNameTemplate}`).setValue(this.plugin.settings.gameFileNameTemplate).onChange(i=>{this.plugin.settings.gameFileNameTemplate=i,this.plugin.saveSettings()})}),new E.Setting(e).setName("Wiki file name template").setDesc("Template for the file name used when creating a new note for a wiki entry.").addText(t=>{t.setPlaceholder(`Example: ${j.wikiFileNameTemplate}`).setValue(this.plugin.settings.wikiFileNameTemplate).onChange(i=>{this.plugin.settings.wikiFileNameTemplate=i,this.plugin.saveSettings()})}),new E.Setting(e).setName("Music release file name template").setDesc("Template for the file name used when creating a new note for a music release.").addText(t=>{t.setPlaceholder(`Example: ${j.musicReleaseFileNameTemplate}`).setValue(this.plugin.settings.musicReleaseFileNameTemplate).onChange(i=>{this.plugin.settings.musicReleaseFileNameTemplate=i,this.plugin.saveSettings()})}),new E.Setting(e).setName("Board game file name template").setDesc("Template for the file name used when creating a new note for a boardgame.").addText(t=>{t.setPlaceholder(`Example: ${j.boardgameFileNameTemplate}`).setValue(this.plugin.settings.boardgameFileNameTemplate).onChange(i=>{this.plugin.settings.boardgameFileNameTemplate=i,this.plugin.saveSettings()})}),new E.Setting(e).setName("Book file name template").setDesc("Template for the file name used when creating a new note for a book.").addText(t=>{t.setPlaceholder(`Example: ${j.bookFileNameTemplate}`).setValue(this.plugin.settings.bookFileNameTemplate).onChange(i=>{this.plugin.settings.bookFileNameTemplate=i,this.plugin.saveSettings()})}),this.plugin.settings.useDefaultFrontMatter){new E.Setting(e).setName("Property mappings").setHeading();let t=e.createEl("div");t.innerHTML=`
<p>Choose how metadata fields are mapped to property names. The options are:</p>
<ul>
<li><strong>default</strong>: keep the original name.</li>
<li><strong>remap</strong>: rename the property.</li>
<li><strong>remove</strong>: remove the property entirely.</li>
</ul>
<p>
Don't forget to save your changes using the save button for each individual category.
</p>`,new Wn({target:this.containerEl,props:{models:this.plugin.settings.propertyMappingModels.map(i=>i.copy()),save:i=>{let n=[];for(let o of this.plugin.settings.propertyMappingModels)o.type===i.type?n.push(i):n.push(o);this.plugin.settings.propertyMappingModels=n,new E.Notice(`MDB: Property mappings for ${i.type} saved successfully.`),this.plugin.saveSettings()}}})}}};var Di=class{constructor(){this.apis=[]}async query(e,t){console.debug(`MDB | api manager queried with "${e}"`);let i=this.apis.filter(n=>t.contains(n.apiName)).map(async n=>{try{return await n.searchByTitle(e)}catch(o){console.warn(o)}});return(await Promise.all(i)).flat()}async queryDetailedInfo(e){return await this.queryDetailedInfoById(e.id,e.dataSource)}async queryDetailedInfoById(e,t){for(let i of this.apis)if(i.apiName===t)return i.getById(e)}getApiByName(e){for(let t of this.apis)if(t.apiName===e)return t;return null}registerAPI(e){this.apis.push(e)}};var q=class{hasType(e){return this.types.contains(e)}hasTypeOverlap(e){return e.some(t=>this.hasType(t))}};var Ei=class extends q{constructor(t){super();this.apiDateFormat="DD MMM YYYY";this.plugin=t,this.apiName="OMDbAPI",this.apiDescription="A free API for Movies, Series and Games.",this.apiUrl="https://www.omdbapi.com/",this.types=["movie","series","game"],this.typeMappings=new Map,this.typeMappings.set("movie","movie"),this.typeMappings.set("series","series"),this.typeMappings.set("game","game")}async searchByTitle(t){if(console.log(`MDB | api "${this.apiName}" queried by Title`),!this.plugin.settings.OMDbKey)throw Error(`MDB | API key for ${this.apiName} missing.`);let i=`https://www.omdbapi.com/?s=${encodeURIComponent(t)}&apikey=${this.plugin.settings.OMDbKey}`,n=await fetch(i);if(n.status===401)throw Error(`MDB | Authentication for ${this.apiName} failed. Check the API key.`);if(n.status!==200)throw Error(`MDB | Received status code ${n.status} from ${this.apiName}.`);let o=await n.json();if(o.Response==="False"){if(o.Error==="Movie not found!")return[];throw Error(`MDB | Received error from ${this.apiName}:
${JSON.stringify(o,void 0,4)}`)}if(!o.Search)return[];let a=[];for(let s of o.Search){let l=this.typeMappings.get(s.Type.toLowerCase());l!==void 0&&(l==="movie"?a.push(new me({type:l,title:s.Title,englishTitle:s.Title,year:s.Year,dataSource:this.apiName,id:s.imdbID})):l==="series"?a.push(new Ce({type:l,title:s.Title,englishTitle:s.Title,year:s.Year,dataSource:this.apiName,id:s.imdbID})):l==="game"&&a.push(new pe({type:l,title:s.Title,englishTitle:s.Title,year:s.Year,dataSource:this.apiName,id:s.imdbID})))}return a}async getById(t){var s,l,p,d,c,f,u,M,g,m,_,b,D,h,y,w,S,T,C,x,v,k,P,N,Q,U,ee,_e,le;if(console.log(`MDB | api "${this.apiName}" queried by ID`),!this.plugin.settings.OMDbKey)throw Error(`MDB | API key for ${this.apiName} missing.`);let i=`https://www.omdbapi.com/?i=${encodeURIComponent(t)}&apikey=${this.plugin.settings.OMDbKey}`,n=await fetch(i);if(n.status===401)throw Error(`MDB | Authentication for ${this.apiName} failed. Check the API key.`);if(n.status!==200)throw Error(`MDB | Received status code ${n.status} from ${this.apiName}.`);let o=await n.json();if(o.Response==="False")throw Error(`MDB | Received error from ${this.apiName}: ${o.Error}`);let a=this.typeMappings.get(o.Type.toLowerCase());if(a===void 0)throw Error(`${o.type.toLowerCase()} is an unsupported type.`);if(a==="movie")return new me({type:a,title:o.Title,englishTitle:o.Title,year:o.Year,dataSource:this.apiName,url:`https://www.imdb.com/title/${o.imdbID}/`,id:o.imdbID,plot:(s=o.Plot)!=null?s:"",genres:(p=(l=o.Genre)==null?void 0:l.split(", "))!=null?p:[],director:(c=(d=o.Director)==null?void 0:d.split(", "))!=null?c:[],writer:(u=(f=o.Writer)==null?void 0:f.split(", "))!=null?u:[],studio:["N/A"],duration:(M=o.Runtime)!=null?M:"unknown",onlineRating:Number.parseFloat((g=o.imdbRating)!=null?g:0),actors:(_=(m=o.Actors)==null?void 0:m.split(", "))!=null?_:[],image:(b=o.Poster)!=null?b:"",released:!0,streamingServices:[],premiere:(D=this.plugin.dateFormatter.format(o.Released,this.apiDateFormat))!=null?D:"unknown",userData:{watched:!1,lastWatched:"",personalRating:0}});if(a==="series")return new Ce({type:a,title:o.Title,englishTitle:o.Title,year:o.Year,dataSource:this.apiName,url:`https://www.imdb.com/title/${o.imdbID}/`,id:o.imdbID,plot:(h=o.Plot)!=null?h:"",genres:(w=(y=o.Genre)==null?void 0:y.split(", "))!=null?w:[],writer:(T=(S=o.Writer)==null?void 0:S.split(", "))!=null?T:[],studio:[],episodes:0,duration:(C=o.Runtime)!=null?C:"unknown",onlineRating:Number.parseFloat((x=o.imdbRating)!=null?x:0),actors:(k=(v=o.Actors)==null?void 0:v.split(", "))!=null?k:[],image:(P=o.Poster)!=null?P:"",released:!0,streamingServices:[],airing:!1,airedFrom:(N=this.plugin.dateFormatter.format(o.Released,this.apiDateFormat))!=null?N:"unknown",airedTo:"unknown",userData:{watched:!1,lastWatched:"",personalRating:0}});if(a==="game")return new pe({type:a,title:o.Title,englishTitle:o.Title,year:o.Year,dataSource:this.apiName,url:`https://www.imdb.com/title/${o.imdbID}/`,id:o.imdbID,developers:[],publishers:[],genres:(U=(Q=o.Genre)==null?void 0:Q.split(", "))!=null?U:[],onlineRating:Number.parseFloat((ee=o.imdbRating)!=null?ee:0),image:(_e=o.Poster)!=null?_e:"",released:!0,releaseDate:(le=this.plugin.dateFormatter.format(o.Released,this.apiDateFormat))!=null?le:"unknown",userData:{played:!1,personalRating:0}})}};var Ci=class extends q{constructor(t){super();this.apiDateFormat="YYYY-MM-DDTHH:mm:ssZ";this.plugin=t,this.apiName="MALAPI",this.apiDescription="A free API for Anime. Some results may take a long time to load.",this.apiUrl="https://jikan.moe/",this.types=["movie","series"],this.typeMappings=new Map,this.typeMappings.set("movie","movie"),this.typeMappings.set("special","special"),this.typeMappings.set("tv","series"),this.typeMappings.set("ova","ova")}async searchByTitle(t){var s,l,p,d,c,f,u,M,g,m,_,b,D,h,y,w,S,T,C;console.log(`MDB | api "${this.apiName}" queried by Title`);let i=`https://api.jikan.moe/v4/anime?q=${encodeURIComponent(t)}&limit=20${this.plugin.settings.sfwFilter?"&sfw":""}`,n=await fetch(i);if(n.status!==200)throw Error(`MDB | Received status code ${n.status} from ${this.apiName}.`);let o=await n.json(),a=[];for(let x of o.data){let v=this.typeMappings.get((s=x.type)==null?void 0:s.toLowerCase());v===void 0&&a.push(new me({subType:"",title:x.title,englishTitle:(l=x.title_english)!=null?l:x.title,year:(u=(f=x.year)!=null?f:(c=(d=(p=x.aired)==null?void 0:p.prop)==null?void 0:d.from)==null?void 0:c.year)!=null?u:"",dataSource:this.apiName,id:x.mal_id})),v==="movie"||v==="special"?a.push(new me({subType:v,title:x.title,englishTitle:(M=x.title_english)!=null?M:x.title,year:(D=(b=x.year)!=null?b:(_=(m=(g=x.aired)==null?void 0:g.prop)==null?void 0:m.from)==null?void 0:_.year)!=null?D:"",dataSource:this.apiName,id:x.mal_id})):(v==="series"||v==="ova")&&a.push(new Ce({subType:v,title:x.title,englishTitle:(h=x.title_english)!=null?h:x.title,year:(C=(T=x.year)!=null?T:(S=(w=(y=x.aired)==null?void 0:y.prop)==null?void 0:w.from)==null?void 0:S.year)!=null?C:"",dataSource:this.apiName,id:x.mal_id}))}return a}async getById(t){var l,p,d,c,f,u,M,g,m,_,b,D,h,y,w,S,T,C,x,v,k,P,N,Q,U,ee,_e,le,Ve,gt,Ie,Ge,Fe,fe,Le,Ye,Se,yt,ei,Mt,ti,$t,ii,ri,Rt,Ot,ni,oi,De,ze,Nt,At,vt,Bt,It,Lt,Wt,$r,Rr,Or;console.log(`MDB | api "${this.apiName}" queried by ID`);let i=`https://api.jikan.moe/v4/anime/${encodeURIComponent(t)}/full`,n=await fetch(i);if(n.status!==200)throw Error(`MDB | Received status code ${n.status} from ${this.apiName}.`);let a=(await n.json()).data,s=this.typeMappings.get((l=a.type)==null?void 0:l.toLowerCase());if(s===void 0)return new me({subType:"",title:a.title,englishTitle:(p=a.title_english)!=null?p:a.title,year:(M=(u=a.year)!=null?u:(f=(c=(d=a.aired)==null?void 0:d.prop)==null?void 0:c.from)==null?void 0:f.year)!=null?M:"",dataSource:this.apiName,url:a.url,id:a.mal_id,plot:a.synopsis,genres:(m=(g=a.genres)==null?void 0:g.map(te=>te.name))!=null?m:[],director:[],writer:[],studio:(b=(_=a.studios)==null?void 0:_.map(te=>te.name).join(", "))!=null?b:"unknown",duration:(D=a.duration)!=null?D:"unknown",onlineRating:(h=a.score)!=null?h:0,actors:[],image:(S=(w=(y=a.images)==null?void 0:y.jpg)==null?void 0:w.image_url)!=null?S:"",released:!0,premiere:(C=this.plugin.dateFormatter.format((T=a.aired)==null?void 0:T.from,this.apiDateFormat))!=null?C:"unknown",streamingServices:(v=(x=a.streaming)==null?void 0:x.map(te=>te.name))!=null?v:[],userData:{watched:!1,lastWatched:"",personalRating:0}});if(s==="movie"||s==="special")return new me({subType:s,title:a.title,englishTitle:(k=a.title_english)!=null?k:a.title,year:(ee=(U=a.year)!=null?U:(Q=(N=(P=a.aired)==null?void 0:P.prop)==null?void 0:N.from)==null?void 0:Q.year)!=null?ee:"",dataSource:this.apiName,url:a.url,id:a.mal_id,plot:a.synopsis,genres:(le=(_e=a.genres)==null?void 0:_e.map(te=>te.name))!=null?le:[],director:[],writer:[],studio:(gt=(Ve=a.studios)==null?void 0:Ve.map(te=>te.name).join(", "))!=null?gt:"unknown",duration:(Ie=a.duration)!=null?Ie:"unknown",onlineRating:(Ge=a.score)!=null?Ge:0,actors:[],image:(Le=(fe=(Fe=a.images)==null?void 0:Fe.jpg)==null?void 0:fe.image_url)!=null?Le:"",released:!0,premiere:(Se=this.plugin.dateFormatter.format((Ye=a.aired)==null?void 0:Ye.from,this.apiDateFormat))!=null?Se:"unknown",streamingServices:(ei=(yt=a.streaming)==null?void 0:yt.map(te=>te.name))!=null?ei:[],userData:{watched:!1,lastWatched:"",personalRating:0}});if(s==="series"||s==="ova")return new Ce({subType:s,title:a.title,englishTitle:(Mt=a.title_english)!=null?Mt:a.title,year:(Rt=(ri=a.year)!=null?ri:(ii=($t=(ti=a.aired)==null?void 0:ti.prop)==null?void 0:$t.from)==null?void 0:ii.year)!=null?Rt:"",dataSource:this.apiName,url:a.url,id:a.mal_id,plot:a.synopsis,genres:(ni=(Ot=a.genres)==null?void 0:Ot.map(te=>te.name))!=null?ni:[],writer:[],studio:(De=(oi=a.studios)==null?void 0:oi.map(te=>te.name))!=null?De:[],episodes:a.episodes,duration:(ze=a.duration)!=null?ze:"unknown",onlineRating:(Nt=a.score)!=null?Nt:0,streamingServices:(vt=(At=a.streaming)==null?void 0:At.map(te=>te.name))!=null?vt:[],image:(Lt=(It=(Bt=a.images)==null?void 0:Bt.jpg)==null?void 0:It.image_url)!=null?Lt:"",released:!0,airedFrom:($r=this.plugin.dateFormatter.format((Wt=a.aired)==null?void 0:Wt.from,this.apiDateFormat))!=null?$r:"unknown",airedTo:(Or=this.plugin.dateFormatter.format((Rr=a.aired)==null?void 0:Rr.to,this.apiDateFormat))!=null?Or:"unknown",airing:a.airing,userData:{watched:!1,lastWatched:"",personalRating:0}})}};var Pi=class extends q{constructor(e){super(),this.plugin=e,this.apiName="MALAPI Manga",this.apiDescription="A free API for Manga. Some results may take a long time to load.",this.apiUrl="https://jikan.moe/",this.types=["manga"],this.typeMappings=new Map,this.typeMappings.set("manga","manga"),this.typeMappings.set("manhwa","manhwa"),this.typeMappings.set("doujinshi","doujin"),this.typeMappings.set("one-shot","oneshot"),this.typeMappings.set("manhua","manhua"),this.typeMappings.set("light novel","light-novel"),this.typeMappings.set("novel","novel")}async searchByTitle(e){var a,s,l,p,d,c,f,u,M,g,m,_,b,D,h,y,w,S,T,C,x;console.log(`MDB | api "${this.apiName}" queried by Title`);let t=`https://api.jikan.moe/v4/manga?q=${encodeURIComponent(e)}&limit=20${this.plugin.settings.sfwFilter?"&sfw":""}`,i=await fetch(t);if(i.status!==200)throw Error(`MDB | Received status code ${i.status} from ${this.apiName}.`);let n=await i.json(),o=[];for(let v of n.data){let k=this.typeMappings.get((a=v.type)==null?void 0:a.toLowerCase());o.push(new ct({subType:k,title:v.title,plot:v.synopsis,englishTitle:(s=v.title_english)!=null?s:v.title,alternateTitles:(p=(l=v.titles)==null?void 0:l.map(P=>P.title))!=null?p:[],year:(M=(u=v.year)!=null?u:(f=(c=(d=v.published)==null?void 0:d.prop)==null?void 0:c.from)==null?void 0:f.year)!=null?M:"",dataSource:this.apiName,url:v.url,id:v.mal_id,genres:(m=(g=v.genres)==null?void 0:g.map(P=>P.name))!=null?m:[],authors:(b=(_=v.authors)==null?void 0:_.map(P=>P.name))!=null?b:[],chapters:v.chapters,volumes:v.volumes,onlineRating:(D=v.score)!=null?D:0,image:(w=(y=(h=v.images)==null?void 0:h.jpg)==null?void 0:y.image_url)!=null?w:"",released:!0,publishedFrom:(T=new Date((S=v.published)==null?void 0:S.from).toLocaleDateString())!=null?T:"unknown",publishedTo:(x=new Date((C=v.published)==null?void 0:C.to).toLocaleDateString())!=null?x:"unknown",status:v.status,userData:{watched:!1,lastWatched:"",personalRating:0}}))}return o}async getById(e){var s,l,p,d,c,f,u,M,g,m,_,b,D,h,y,w,S,T,C,x,v,k,P;console.log(`MDB | api "${this.apiName}" queried by ID`);let t=`https://api.jikan.moe/v4/manga/${encodeURIComponent(e)}/full`,i=await fetch(t);if(i.status!==200)throw Error(`MDB | Received status code ${i.status} from ${this.apiName}.`);let o=(await i.json()).data,a=this.typeMappings.get((s=o.type)==null?void 0:s.toLowerCase());return new ct({subType:a,title:o.title,englishTitle:(l=o.title_english)!=null?l:o.title,alternateTitles:(d=(p=o.titles)==null?void 0:p.map(N=>N.title))!=null?d:[],year:(g=(M=o.year)!=null?M:(u=(f=(c=o.published)==null?void 0:c.prop)==null?void 0:f.from)==null?void 0:u.year)!=null?g:"",dataSource:this.apiName,url:o.url,id:o.mal_id,plot:(_=((m=o.synopsis)!=null?m:"unknown").replace(/"/g,"'"))!=null?_:"unknown",genres:(D=(b=o.genres)==null?void 0:b.map(N=>N.name))!=null?D:[],authors:(y=(h=o.authors)==null?void 0:h.map(N=>N.name))!=null?y:[],chapters:o.chapters,volumes:o.volumes,onlineRating:(w=o.score)!=null?w:0,image:(C=(T=(S=o.images)==null?void 0:S.jpg)==null?void 0:T.image_url)!=null?C:"",released:!0,publishedFrom:(v=new Date((x=o.published)==null?void 0:x.from).toLocaleDateString())!=null?v:"unknown",publishedTo:(P=new Date((k=o.published)==null?void 0:k.to).toLocaleDateString())!=null?P:"unknown",status:o.status,userData:{watched:!1,lastWatched:"",personalRating:0}})}};var ki=class extends q{constructor(t){super();this.apiDateFormat="YYYY-MM-DDTHH:mm:ssZ";this.plugin=t,this.apiName="Wikipedia API",this.apiDescription="The API behind Wikipedia",this.apiUrl="https://www.wikipedia.com",this.types=["wiki"]}async searchByTitle(t){console.log(`MDB | api "${this.apiName}" queried by Title`);let i=`https://en.wikipedia.org/w/api.php?action=query&list=search&srsearch=${encodeURIComponent(t)}&srlimit=20&utf8=&format=json&origin=*`,n=await fetch(i);if(n.status!==200)throw Error(`MDB | Received status code ${n.status} from ${this.apiName}.`);let o=await n.json();console.debug(o);let a=[];for(let s of o.query.search)a.push(new ut({type:"wiki",title:s.title,englishTitle:s.title,year:"",dataSource:this.apiName,id:s.pageid}));return a}async getById(t){var s;console.log(`MDB | api "${this.apiName}" queried by ID`);let i=`https://en.wikipedia.org/w/api.php?action=query&prop=info&pageids=${encodeURIComponent(t)}&inprop=url&format=json&origin=*`,n=await fetch(i);if(n.status!==200)throw Error(`MDB | Received status code ${n.status} from ${this.apiName}.`);let o=await n.json(),a=Object.entries((s=o==null?void 0:o.query)==null?void 0:s.pages)[0][1];return new ut({type:"wiki",title:a.title,englishTitle:a.title,year:"",dataSource:this.apiName,url:a.fullurl,id:a.pageid,wikiUrl:a.fullurl,lastUpdated:this.plugin.dateFormatter.format(a.touched,this.apiDateFormat),length:a.length,userData:{}})}};var Cr=require("obsidian");var Fi=class extends q{constructor(e){super(),this.plugin=e,this.apiName="MusicBrainz API",this.apiDescription="Free API for music albums.",this.apiUrl="https://musicbrainz.org/",this.types=["musicRelease"]}async searchByTitle(e){console.log(`MDB | api "${this.apiName}" queried by Title`);let t=`https://musicbrainz.org/ws/2/release-group?query=${encodeURIComponent(e)}&limit=20&fmt=json`,i=await(0,Cr.requestUrl)({url:t,headers:{"User-Agent":`${pr}/${cr} (${dr})`}});if(i.status!==200)throw Error(`MDB | Received status code ${i.status} from ${this.apiName}.`);let n=await i.json,o=[];for(let a of n["release-groups"])o.push(new mt({type:"musicRelease",title:a.title,englishTitle:a.title,year:new Date(a["first-release-date"]).getFullYear().toString(),dataSource:this.apiName,url:"https://musicbrainz.org/release-group/"+a.id,id:a.id,image:"https://coverartarchive.org/release-group/"+a.id+"/front",artists:a["artist-credit"].map(s=>s.name),subType:a["primary-type"]}));return o}async getById(e){console.log(`MDB | api "${this.apiName}" queried by ID`);let t=`https://musicbrainz.org/ws/2/release-group/${encodeURIComponent(e)}?inc=releases+artists+tags+ratings+genres&fmt=json`,i=await(0,Cr.requestUrl)({url:t,headers:{"User-Agent":`${pr}/${cr} (${dr})`}});if(i.status!==200)throw Error(`MDB | Received status code ${i.status} from ${this.apiName}.`);let n=await i.json;return new mt({type:"musicRelease",title:n.title,englishTitle:n.title,year:new Date(n["first-release-date"]).getFullYear().toString(),dataSource:this.apiName,url:"https://musicbrainz.org/release-group/"+n.id,id:n.id,image:"https://coverartarchive.org/release-group/"+n.id+"/front",artists:n["artist-credit"].map(o=>o.name),genres:n.genres.map(o=>o.name),subType:n["primary-type"],rating:n.rating.value*2,userData:{personalRating:0}})}};var Pr=require("obsidian");var $i=class extends q{constructor(t){super();this.apiDateFormat="DD MMM, YYYY";this.plugin=t,this.apiName="SteamAPI",this.apiDescription="A free API for all Steam games.",this.apiUrl="https://www.steampowered.com/",this.types=["game"],this.typeMappings=new Map,this.typeMappings.set("game","game")}async searchByTitle(t){console.log(`MDB | api "${this.apiName}" queried by Title`);let i=`https://steamcommunity.com/actions/SearchApps/${encodeURIComponent(t)}`,n=await(0,Pr.requestUrl)({url:i});if(n.status!==200)throw Error(`MDB | Received status code ${n.status} from ${this.apiName}.`);let o=await n.json,a=[];for(let s of o)a.push(new pe({type:"game",title:s.name,englishTitle:s.name,year:"",dataSource:this.apiName,id:s.appid}));return a}async getById(t){var a,s,l,p,d,c,f,u;console.log(`MDB | api "${this.apiName}" queried by ID`);let i=`https://store.steampowered.com/api/appdetails?appids=${encodeURIComponent(t)}&l=en`,n=await(0,Pr.requestUrl)({url:i});if(n.status!==200)throw Error(`MDB | Received status code ${n.status} from ${this.apiName}.`);let o;for(let[M,g]of Object.entries(await n.json))M===String(t)&&(o=g.data);if(!o)throw Error("MDB | API returned invalid data.");return new pe({type:"game",title:o.name,englishTitle:o.name,year:new Date(o.release_date.date).getFullYear().toString(),dataSource:this.apiName,url:`https://store.steampowered.com/app/${o.steam_appid}`,id:o.steam_appid,developers:o.developers,publishers:o.publishers,genres:(s=(a=o.genres)==null?void 0:a.map(M=>M.description))!=null?s:[],onlineRating:Number.parseFloat((p=(l=o.metacritic)==null?void 0:l.score)!=null?p:0),image:(d=o.header_image)!=null?d:"",released:!((c=o.release_date)!=null&&c.comming_soon),releaseDate:(u=this.plugin.dateFormatter.format((f=o.release_date)==null?void 0:f.date,this.apiDateFormat))!=null?u:"unknown",userData:{played:!1,personalRating:0}})}};var kr=require("obsidian");var Ri=class extends q{constructor(e){super(),this.plugin=e,this.apiName="BoardGameGeekAPI",this.apiDescription="A free API for BoardGameGeek things.",this.apiUrl="https://api.geekdo.com/xmlapi",this.types=["boardgame"]}async searchByTitle(e){var s,l,p,d;console.log(`MDB | api "${this.apiName}" queried by Title`);let t=`${this.apiUrl}/search?search=${encodeURIComponent(e)}`,i=await(0,kr.requestUrl)({url:t});if(i.status!==200)throw Error(`MDB | Received status code ${i.status} from ${this.apiName}.`);let n=i.text,o=new window.DOMParser().parseFromString(n,"text/xml"),a=[];for(let c of Array.from(o.querySelectorAll("boardgame"))){let f=c.attributes.getNamedItem("objectid").value,u=(l=(s=c.querySelector("name[primary=true]"))==null?void 0:s.textContent)!=null?l:c.querySelector("name").textContent,M=(d=(p=c.querySelector("yearpublished"))==null?void 0:p.textContent)!=null?d:"";a.push(new ft({dataSource:this.apiName,id:f,title:u,englishTitle:u,year:M}))}return a}async getById(e){var _,b,D,h,y,w,S,T,C,x,v,k,P,N;console.log(`MDB | api "${this.apiName}" queried by ID`);let t=`${this.apiUrl}/boardgame/${encodeURIComponent(e)}?stats=1`,i=await(0,kr.requestUrl)({url:t});if(i.status!==200)throw Error(`MDB | Received status code ${i.status} from ${this.apiName}.`);let n=i.text,a=new window.DOMParser().parseFromString(n,"text/xml").querySelector("boardgame"),s=a.querySelector("name[primary=true]").textContent,l=(b=(_=a.querySelector("yearpublished"))==null?void 0:_.textContent)!=null?b:"",p=(h=(D=a.querySelector("image"))==null?void 0:D.textContent)!=null?h:void 0,d=Number.parseFloat((w=(y=a.querySelector("statistics ratings average"))==null?void 0:y.textContent)!=null?w:"0"),c=Array.from(a.querySelectorAll("boardgamecategory")).map(Q=>Q.textContent),f=Number.parseFloat((T=(S=a.querySelector("averageweight"))==null?void 0:S.textContent)!=null?T:"0"),u=Number.parseFloat((x=(C=a.querySelector("minplayers"))==null?void 0:C.textContent)!=null?x:"0"),M=Number.parseFloat((k=(v=a.querySelector("maxplayers"))==null?void 0:v.textContent)!=null?k:"0"),g=((N=(P=a.querySelector("playingtime"))==null?void 0:P.textContent)!=null?N:"unknown")+" minutes",m=Array.from(a.querySelectorAll("boardgamepublisher")).map(Q=>Q.textContent);return new ft({title:s,englishTitle:s,year:l==="0"?"":l,dataSource:this.apiName,url:`https://boardgamegeek.com/boardgame/${e}`,id:e,genres:c,onlineRating:d,complexityRating:f,minPlayers:u,maxPlayers:M,playtime:g,publishers:m,image:p,released:!0,userData:{played:!1,personalRating:0}})}};var Oi=class extends q{constructor(e){super(),this.plugin=e,this.apiName="OpenLibraryAPI",this.apiDescription="A free API for books",this.apiUrl="https://openlibrary.org/",this.types=["book"]}async searchByTitle(e){var a,s;console.log(`MDB | api "${this.apiName}" queried by Title`);let t=`https://openlibrary.org/search.json?title=${encodeURIComponent(e)}`,i=await fetch(t);if(i.status!==200)throw Error(`MDB | Received status code ${i.status} from ${this.apiName}.`);let n=await i.json(),o=[];for(let l of n.docs)o.push(new ht({title:l.title,englishTitle:(a=l.title_english)!=null?a:l.title,year:l.first_publish_year,dataSource:this.apiName,id:l.key,author:(s=l.author_name)!=null?s:"unknown"}));return o}async getById(e){var a,s,l,p,d,c,f,u,M;console.log(`MDB | api "${this.apiName}" queried by ID`);let t=`https://openlibrary.org/search.json?q=key:${encodeURIComponent(e)}`,i=await fetch(t);if(i.status!==200)throw Error(`MDB | Received status code ${i.status} from ${this.apiName}.`);let o=(await i.json()).docs[0];return new ht({title:o.title,year:o.first_publish_year,dataSource:this.apiName,url:"https://openlibrary.org"+o.key,id:o.key,isbn:(s=((a=o.isbn)!=null?a:[]).find(g=>g.length<=10))!=null?s:"unknown",isbn13:(p=((l=o.isbn)!=null?l:[]).find(g=>g.length==13))!=null?p:"unknown",englishTitle:(d=o.title_english)!=null?d:o.title,author:(c=o.author_name)!=null?c:"unknown",plot:(f=o.description)!=null?f:"unknown",pages:(u=o.number_of_pages_median)!=null?u:"unknown",onlineRating:Number.parseFloat(Number((M=o.ratings_average)!=null?M:0).toFixed(2)),image:"https://covers.openlibrary.org/b/OLID/"+o.cover_edition_key+"-L.jpg",released:!0,userData:{read:!1,lastRead:"",personalRating:0}})}};var Fr=require("obsidian");var Ni=class extends q{constructor(t){super();this.apiDateFormat="YYYY-DD-MM";this.plugin=t,this.apiName="MobyGamesAPI",this.apiDescription="A free API for games.",this.apiUrl="https://api.mobygames.com/v1",this.types=["game"]}async searchByTitle(t){if(console.log(`MDB | api "${this.apiName}" queried by Title`),!this.plugin.settings.MobyGamesKey)throw Error(`MDB | API key for ${this.apiName} missing.`);let i=`${this.apiUrl}/games?title=${encodeURIComponent(t)}&api_key=${this.plugin.settings.MobyGamesKey}`,n=await(0,Fr.requestUrl)({url:i});if(n.status===401)throw Error(`MDB | Authentication for ${this.apiName} failed. Check the API key.`);if(n.status===429)throw Error(`MDB | Too many requests for ${this.apiName}, you've exceeded your API quota.`);if(n.status!==200)throw Error(`MDB | Received status code ${n.status} from ${this.apiName}.`);let o=await n.json,a=[];for(let s of o.games)a.push(new pe({type:"game",title:s.title,englishTitle:s.title,year:new Date(s.platforms[0].first_release_date).getFullYear().toString(),dataSource:this.apiName,id:s.game_id}));return a}async getById(t){var s,l,p,d,c;if(console.log(`MDB | api "${this.apiName}" queried by ID`),!this.plugin.settings.MobyGamesKey)throw Error(`MDB | API key for ${this.apiName} missing.`);let i=`${this.apiUrl}/games?id=${encodeURIComponent(t)}&api_key=${this.plugin.settings.MobyGamesKey}`,n=await(0,Fr.requestUrl)({url:i});if(console.debug(n),n.status!==200)throw Error(`MDB | Received status code ${n.status} from ${this.apiName}.`);let a=(await n.json).games[0];return new pe({type:"game",title:a.title,englishTitle:a.title,year:new Date(a.platforms[0].first_release_date).getFullYear().toString(),dataSource:this.apiName,url:`https://www.mobygames.com/game/${a.game_id}`,id:a.game_id,developers:[],publishers:[],genres:(l=(s=a.genres)==null?void 0:s.map(f=>f.genre_name))!=null?l:[],onlineRating:a.moby_score,image:(d=(p=a.sample_cover)==null?void 0:p.image)!=null?d:"",released:!0,releaseDate:(c=a.platforms[0].first_release_date)!=null?c:"unknown",userData:{played:!1,personalRating:0}})}};var Ai=class{constructor(e){this.plugin=e}convertObject(e){if(!e.hasOwnProperty("type")||Pe.filter(n=>n.toString()==e.type).length<1)return e;let t=this.plugin.settings.propertyMappingModels.find(n=>n.type===e.type).properties,i={};for(let[n,o]of Object.entries(e))for(let a of t)if(a.property===n){a.mapping==="remap"?i[a.newProperty]=o:a.mapping==="remove"||a.mapping==="default"&&(i[n]=o);break}return i}convertObjectBack(e){if(!e.hasOwnProperty("type")||Pe.contains(e.type))return e;let t=this.plugin.settings.propertyMappingModels.find(n=>n.type===e.type).properties,i={};e:for(let[n,o]of Object.entries(e)){for(let a of t)if(a.property===n){i[n]=o;continue e}for(let a of t)if(a.newProperty===n){i[a.property]=o;continue e}}return i}};var ke=require("obsidian"),Bi=class extends ke.Modal{constructor(e,t,i){super(e),this.plugin=t,this.onSubmit=i,this.selectedApi=t.apiManager.apis[0].apiName}submit(){this.onSubmit(this.selectedApi,this.titleFieldName,this.appendContent),this.close()}onOpen(){let{contentEl:e}=this;e.createEl("h2",{text:"Import folder as Media DB entries"});let t=e.createEl("div",{cls:"media-db-plugin-list-wrapper"});t.createEl("div",{cls:"media-db-plugin-list-text-wrapper"}).createEl("span",{text:"API to search",cls:"media-db-plugin-list-text"});let n=new ke.DropdownComponent(t);n.onChange(c=>{this.selectedApi=c});for(let c of this.plugin.apiManager.apis)n.addOption(c.apiName,c.apiName);t.appendChild(n.selectEl),e.createDiv({cls:"media-db-plugin-spacer"}),e.createEl("h3",{text:"Append note content to Media DB entry."});let o=e.createEl("div",{cls:"media-db-plugin-list-wrapper"});o.createEl("div",{cls:"media-db-plugin-list-text-wrapper"}).createEl("span",{text:"If this is enabled, the plugin will override metadata fields with the same name.",cls:"media-db-plugin-list-text"});let s=o.createEl("div",{cls:"media-db-plugin-list-toggle"}),l=new ke.ToggleComponent(o);l.setValue(!1),l.onChange(c=>this.appendContent=c),s.appendChild(l.toggleEl),e.createDiv({cls:"media-db-plugin-spacer"}),e.createEl("h3",{text:"The name of the metadata field that should be used as the title to query."});let p="title",d=new ke.TextComponent(e);d.inputEl.style.width="100%",d.setPlaceholder(p),d.onChange(c=>this.titleFieldName=c),d.inputEl.addEventListener("keydown",c=>{c.key==="Enter"&&this.submit()}),e.appendChild(d.inputEl),e.createDiv({cls:"media-db-plugin-spacer"}),new ke.Setting(e).addButton(c=>{c.setButtonText("Cancel"),c.onClick(()=>this.close()),c.buttonEl.addClass("media-db-plugin-button")}).addButton(c=>{c.setButtonText("Ok"),c.setCta(),c.onClick(()=>{this.submit()}),c.buttonEl.addClass("media-db-plugin-button"),this.searchBtn=c})}onClose(){let{contentEl:e}=this;e.empty()}};var be=require("obsidian");var Ii=class extends be.Modal{constructor(e,t){t=Object.assign({},qn,t),super(e.app),this.plugin=e,this.selectedApis=[],this.title=t.modalTitle,this.query=t.prefilledSearchString;for(let i of this.plugin.apiManager.apis)this.selectedApis.push({name:i.apiName,selected:t.preselectedAPIs.contains(i.apiName)})}setSubmitCallback(e){this.submitCallback=e}setCloseCallback(e){this.closeCallback=e}keyPressCallback(e){e.key==="Enter"&&this.search()}async search(){if(!this.query||this.query.length<3){new be.Notice("MDB | Query too short");return}let e=this.selectedApis.filter(t=>t.selected).map(t=>t.name);if(e.length===0){new be.Notice("MDB | No API selected");return}this.isBusy||(this.isBusy=!0,this.searchBtn.setDisabled(!1),this.searchBtn.setButtonText("Searching..."),this.submitCallback({query:this.query,apis:e}))}onOpen(){let{contentEl:e}=this;e.createEl("h2",{text:this.title});let t="Search by title",i=new be.TextComponent(e);i.inputEl.style.width="100%",i.setPlaceholder(t),i.setValue(this.query),i.onChange(n=>this.query=n),i.inputEl.addEventListener("keydown",this.keyPressCallback.bind(this)),e.appendChild(i.inputEl),i.inputEl.focus(),e.createDiv({cls:"media-db-plugin-spacer"}),e.createEl("h3",{text:"APIs to search"});for(let n of this.plugin.apiManager.apis){let o=e.createEl("div",{cls:"media-db-plugin-list-wrapper"}),a=o.createEl("div",{cls:"media-db-plugin-list-text-wrapper"});a.createEl("span",{text:n.apiName,cls:"media-db-plugin-list-text"}),a.createEl("small",{text:n.apiDescription,cls:"media-db-plugin-list-text"});let s=o.createEl("div",{cls:"media-db-plugin-list-toggle"}),l=new be.ToggleComponent(s);l.setTooltip(n.apiName),l.setValue(this.selectedApis.find(p=>p.name===n.apiName).selected),l.onChange(p=>{this.selectedApis.find(d=>d.name===n.apiName).selected=p}),s.appendChild(l.toggleEl)}e.createDiv({cls:"media-db-plugin-spacer"}),new be.Setting(e).addButton(n=>{n.setButtonText("Cancel"),n.onClick(()=>this.close()),n.buttonEl.addClass("media-db-plugin-button")}).addButton(n=>{n.setButtonText("Ok"),n.setCta(),n.onClick(()=>{this.search()}),n.buttonEl.addClass("media-db-plugin-button"),this.searchBtn=n})}onClose(){this.closeCallback();let{contentEl:e}=this;e.empty()}};var we=require("obsidian");var Li=class extends we.Modal{constructor(e,t){t=Object.assign({},Un,t),super(e.app),this.plugin=e,this.title=t.modalTitle,this.selectedApi=t.preselectedAPI||e.apiManager.apis[0].apiName}setSubmitCallback(e){this.submitCallback=e}setCloseCallback(e){this.closeCallback=e}keyPressCallback(e){e.key==="Enter"&&this.search()}async search(){if(!this.query){new we.Notice("MDB | no Id entered");return}if(!this.selectedApi){new we.Notice("MDB | No API selected");return}this.isBusy||(this.isBusy=!0,this.searchBtn.setDisabled(!1),this.searchBtn.setButtonText("Searching..."),this.submitCallback({query:this.query,api:this.selectedApi}))}onOpen(){let{contentEl:e}=this;e.createEl("h2",{text:this.title});let t="Search by id",i=new we.TextComponent(e);i.inputEl.style.width="100%",i.setPlaceholder(t),i.onChange(s=>this.query=s),i.inputEl.addEventListener("keydown",this.keyPressCallback.bind(this)),e.appendChild(i.inputEl),i.inputEl.focus(),e.createDiv({cls:"media-db-plugin-spacer"});let n=e.createEl("div",{cls:"media-db-plugin-list-wrapper"});n.createEl("div",{cls:"media-db-plugin-list-text-wrapper"}).createEl("span",{text:"API to search",cls:"media-db-plugin-list-text"});let a=new we.DropdownComponent(n);a.onChange(s=>{this.selectedApi=s});for(let s of this.plugin.apiManager.apis)a.addOption(s.apiName,s.apiName);n.appendChild(a.selectEl),e.createDiv({cls:"media-db-plugin-spacer"}),new we.Setting(e).addButton(s=>{s.setButtonText("Cancel"),s.onClick(()=>this.close()),s.buttonEl.addClass("media-db-plugin-button")}).addButton(s=>{s.setButtonText("Ok"),s.setCta(),s.onClick(()=>{this.search()}),s.buttonEl.addClass("media-db-plugin-button"),this.searchBtn=s})}onClose(){this.closeCallback();let{contentEl:e}=this;e.empty()}};var qi=require("obsidian");var Wi=class{constructor(e,t,i,n,o=!1){this.value=e,this.id=i,this.active=o,this.selectModal=n,this.cssClass="media-db-plugin-select-element",this.activeClass="media-db-plugin-select-element-selected",this.hoverClass="media-db-plugin-select-element-hover",this.element=t.createDiv({cls:this.cssClass}),this.element.id=this.getHTMLId(),this.element.on("click","#"+this.getHTMLId(),()=>{this.setActive(!this.active),this.selectModal.allowMultiSelect||this.selectModal.disableAllOtherElements(this.id)}),this.element.on("mouseenter","#"+this.getHTMLId(),()=>{this.setHighlighted(!0)}),this.element.on("mouseleave","#"+this.getHTMLId(),()=>{this.setHighlighted(!1)})}getHTMLId(){return`media-db-plugin-select-element-${this.id}`}isHighlighted(){return this.highlighted}setHighlighted(e){this.highlighted=e,this.highlighted?(this.addClass(this.hoverClass),this.selectModal.deHighlightAllOtherElements(this.id)):this.removeClass(this.hoverClass)}isActive(){return this.active}setActive(e){this.active=e,this.update()}update(){this.active?this.addClass(this.activeClass):this.removeClass(this.activeClass)}addClass(e){this.element.hasClass(e)||this.element.addClass(e)}removeClass(e){this.element.hasClass(e)&&this.element.removeClass(e)}};var ji=class extends qi.Modal{constructor(e,t,i=!0){super(e),this.allowMultiSelect=i,this.title="",this.description="",this.addSkipButton=!1,this.cancelButton=void 0,this.skipButton=void 0,this.submitButton=void 0,this.elementWrapper=void 0,this.elements=t,this.selectModalElements=[],this.scope.register([],"ArrowUp",n=>{this.highlightUp(),n.preventDefault()}),this.scope.register([],"ArrowDown",n=>{this.highlightDown(),n.preventDefault()}),this.scope.register([],"ArrowRight",()=>{this.activateHighlighted()}),this.scope.register([]," ",n=>{this.elementWrapper&&this.elementWrapper===document.activeElement&&(this.activateHighlighted(),n.preventDefault())}),this.scope.register([],"Enter",()=>this.submit())}disableAllOtherElements(e){for(let t of this.selectModalElements)t.id!==e&&t.setActive(!1)}deHighlightAllOtherElements(e){for(let t of this.selectModalElements)t.id!==e&&t.setHighlighted(!1)}async onOpen(){var o;let{contentEl:e,titleEl:t}=this;t.createEl("h2",{text:this.title}),e.addClass("media-db-plugin-select-modal"),e.createEl("p",{text:this.description}),this.elementWrapper=e.createDiv({cls:"media-db-plugin-select-wrapper"}),this.elementWrapper.tabIndex=0;let i=0;for(let a of this.elements){let s=new Wi(a,this.elementWrapper,i,this,!1);this.selectModalElements.push(s),this.renderElement(a,s.element),i+=1}(o=this.selectModalElements.first())==null||o.element.scrollIntoView();let n=new qi.Setting(e);n.addButton(a=>{a.setButtonText("Cancel"),a.onClick(()=>this.close()),a.buttonEl.addClass("media-db-plugin-button"),this.cancelButton=a}),this.addSkipButton&&n.addButton(a=>{a.setButtonText("Skip"),a.onClick(()=>this.skip()),a.buttonEl.addClass("media-db-plugin-button"),this.skipButton=a}),n.addButton(a=>{a.setButtonText("Ok"),a.setCta(),a.onClick(()=>this.submit()),a.buttonEl.addClass("media-db-plugin-button"),this.submitButton=a})}activateHighlighted(){for(let e of this.selectModalElements)e.isHighlighted()&&(e.setActive(!e.isActive()),this.allowMultiSelect||this.disableAllOtherElements(e.id))}highlightUp(){for(let e of this.selectModalElements)if(e.isHighlighted()){this.getPreviousSelectModalElement(e).setHighlighted(!0);return}this.selectModalElements.last().setHighlighted(!0)}highlightDown(){for(let e of this.selectModalElements)if(e.isHighlighted()){this.getNextSelectModalElement(e).setHighlighted(!0);return}this.selectModalElements.first().setHighlighted(!0)}getNextSelectModalElement(e){let t=e.id+1;return t=mi(t,this.selectModalElements.length),this.selectModalElements.filter(i=>i.id===t).first()}getPreviousSelectModalElement(e){let t=e.id-1;return t=mi(t,this.selectModalElements.length),this.selectModalElements.filter(i=>i.id===t).first()}};var Ui=class extends ji{constructor(e,t){t=Object.assign({},Hn,t),super(e.app,t.elements,t.multiSelect),this.plugin=e,this.title=t.modalTitle,this.description="Select one or multiple search results.",this.addSkipButton=t.skipButton,this.busy=!1,this.sendCallback=!1}setSubmitCallback(e){this.submitCallback=e}setCloseCallback(e){this.closeCallback=e}setSkipCallback(e){this.skipCallback=e}renderElement(e,t){t.createEl("div",{text:this.plugin.mediaTypeManager.getFileName(e)}),t.createEl("small",{text:`${e.getSummary()}
`}),t.createEl("small",{text:`${e.type.toUpperCase()+(e.subType?` (${e.subType})`:"")} from ${e.dataSource}`})}submit(){this.busy||(this.busy=!0,this.submitButton.setButtonText("Creating entry..."),this.submitCallback({selected:this.selectModalElements.filter(e=>e.isActive()).map(e=>e.value)}))}skip(){this.skipButton.setButtonText("Skipping..."),this.skipCallback()}onClose(){this.closeCallback()}};var Te=require("obsidian");var He=require("obsidian");var Hi=class extends He.Modal{constructor(e,t){t=Object.assign({},Vn,t),super(e.app),this.plugin=e,this.title=t.modalTitle,this.elements=t.elements,this.markdownComponent=new He.Component}setSubmitCallback(e){this.submitCallback=e}setCloseCallback(e){this.closeCallback=e}async preview(){let{contentEl:e}=this;e.addClass("media-db-plugin-preview-modal"),e.createEl("h2",{text:this.title});let t=e.createDiv({cls:"media-db-plugin-preview-wrapper"});this.markdownComponent.load();for(let n of this.elements){t.createEl("h3",{text:n.englishTitle});let o=t.createDiv({cls:"media-db-plugin-preview"}),a=this.plugin.generateMediaDbNoteFrontmatterPreview(n);a=`\`\`\`yaml
${a}\`\`\``;try{await He.MarkdownRenderer.render(this.app,a,o,"",this.markdownComponent)}catch(s){console.warn("mdb | error during rendering of preview",s)}}e.createDiv({cls:"media-db-plugin-spacer"});let i=new He.Setting(e);i.addButton(n=>{n.setButtonText("Cancel"),n.onClick(()=>this.close()),n.buttonEl.addClass("media-db-plugin-button"),this.cancelButton=n}),i.addButton(n=>{n.setButtonText("Ok"),n.setCta(),n.onClick(()=>this.submitCallback({confirmed:!0})),n.buttonEl.addClass("media-db-plugin-button"),this.submitButton=n})}onOpen(){this.preview()}onClose(){this.markdownComponent.unload(),this.closeCallback()}};var xe=require("obsidian");var Vi=class extends xe.Modal{constructor(e,t){t=Object.assign({},Gn,t),super(e.app),this.plugin=e,this.selectedTypes=[],this.title=t.modalTitle,this.query=t.prefilledSearchString;for(let i of Pe)this.selectedTypes.push({name:i,selected:t.preselectedTypes.contains(i)})}setSubmitCallback(e){this.submitCallback=e}setCloseCallback(e){this.closeCallback=e}keyPressCallback(e){e.key==="Enter"&&this.search()}async search(){if(!this.query||this.query.length<3){new xe.Notice("MDB | Query too short");return}let e=this.selectedTypes.filter(t=>t.selected).map(t=>t.name);if(e.length===0){new xe.Notice("MDB | No Type selected");return}this.isBusy||(this.isBusy=!0,this.searchBtn.setDisabled(!1),this.searchBtn.setButtonText("Searching..."),this.submitCallback({query:this.query,types:e}))}onOpen(){let{contentEl:e}=this;e.createEl("h2",{text:this.title});let t="Search by title",i=new xe.TextComponent(e),n=null;i.inputEl.style.width="100%",i.setPlaceholder(t),i.setValue(this.query),i.onChange(o=>this.query=o),i.inputEl.addEventListener("keydown",this.keyPressCallback.bind(this)),e.appendChild(i.inputEl),i.inputEl.focus(),e.createDiv({cls:"media-db-plugin-spacer"}),e.createEl("h3",{text:"APIs to search"});for(let o of Pe){let a=e.createEl("div",{cls:"media-db-plugin-list-wrapper"});a.createEl("div",{cls:"media-db-plugin-list-text-wrapper"}).createEl("span",{text:zt(o),cls:"media-db-plugin-list-text"});let l=a.createEl("div",{cls:"media-db-plugin-list-toggle"}),p=new xe.ToggleComponent(l);p.setTooltip(zt(o)),p.setValue(this.selectedTypes.find(d=>d.name===o).selected),p.getValue()&&(n=p),p.onChange(d=>{d?(n&&n!==p&&(n.setValue(!1),this.selectedTypes.find(c=>c.name===o).selected=!1),n=p,this.selectedTypes.find(c=>c.name===o).selected=!0):(n=null,this.selectedTypes.find(c=>c.name===o).selected=!1)}),l.appendChild(p.toggleEl)}e.createDiv({cls:"media-db-plugin-spacer"}),new xe.Setting(e).addButton(o=>{o.setButtonText("Cancel"),o.onClick(()=>this.close()),o.buttonEl.addClass("media-db-plugin-button")}).addButton(o=>{o.setButtonText("Ok"),o.setCta(),o.onClick(()=>{this.search()}),o.buttonEl.addClass("media-db-plugin-button"),this.searchBtn=o})}onClose(){this.closeCallback();let{contentEl:e}=this;e.empty()}};var Gn={modalTitle:"Media DB Search",preselectedTypes:[],prefilledSearchString:""},qn={modalTitle:"Media DB Advanced Search",preselectedAPIs:[],prefilledSearchString:""},Un={modalTitle:"Media DB Id Search",preselectedAPI:"",prefilledSearchString:""},Hn={modalTitle:"Media DB Search Results",elements:[],multiSelect:!0,skipButton:!1},Vn={modalTitle:"Media DB Preview",elements:[]},Gi=class{constructor(e){this.plugin=e}async createSearchModal(e){let t=new Vi(this.plugin,e);return{searchModalResult:await new Promise(n=>{t.setSubmitCallback(o=>n({code:"SUCCESS",data:o})),t.setCloseCallback(o=>{o&&n({code:"ERROR",error:o}),n({code:"CLOSE"})}),t.open()}),searchModal:t}}async openSearchModal(e,t){let{searchModalResult:i,searchModal:n}=await this.createSearchModal(e);if(console.debug(`MDB | searchModal closed with code ${i.code}`),i.code==="ERROR"){console.warn(i.error),new Te.Notice(i.error.toString()),n.close();return}if(i.code!=="CLOSE")try{let o=await t(i.data);return n.close(),o}catch(o){console.warn(o),new Te.Notice(o.toString()),n.close();return}}async createAdvancedSearchModal(e){let t=new Ii(this.plugin,e);return{advancedSearchModalResult:await new Promise(n=>{t.setSubmitCallback(o=>n({code:"SUCCESS",data:o})),t.setCloseCallback(o=>{o&&n({code:"ERROR",error:o}),n({code:"CLOSE"})}),t.open()}),advancedSearchModal:t}}async openAdvancedSearchModal(e,t){let{advancedSearchModalResult:i,advancedSearchModal:n}=await this.createAdvancedSearchModal(e);if(console.debug(`MDB | advencedSearchModal closed with code ${i.code}`),i.code==="ERROR"){console.warn(i.error),new Te.Notice(i.error.toString()),n.close();return}if(i.code!=="CLOSE")try{let o=await t(i.data);return n.close(),o}catch(o){console.warn(o),new Te.Notice(o.toString()),n.close();return}}async createIdSearchModal(e){let t=new Li(this.plugin,e);return{idSearchModalResult:await new Promise(n=>{t.setSubmitCallback(o=>n({code:"SUCCESS",data:o})),t.setCloseCallback(o=>{o&&n({code:"ERROR",error:o}),n({code:"CLOSE"})}),t.open()}),idSearchModal:t}}async openIdSearchModal(e,t){let{idSearchModalResult:i,idSearchModal:n}=await this.createIdSearchModal(e);if(console.debug(`MDB | idSearchModal closed with code ${i.code}`),i.code==="ERROR"){console.warn(i.error),new Te.Notice(i.error.toString()),n.close();return}if(i.code!=="CLOSE")try{let o=await t(i.data);return n.close(),o}catch(o){console.warn(o),new Te.Notice(o.toString()),n.close();return}}async createSelectModal(e){let t=new Ui(this.plugin,e);return{selectModalResult:await new Promise(n=>{t.setSubmitCallback(o=>n({code:"SUCCESS",data:o})),t.setSkipCallback(()=>n({code:"SKIP"})),t.setCloseCallback(o=>{o&&n({code:"ERROR",error:o}),n({code:"CLOSE"})}),t.open()}),selectModal:t}}async openSelectModal(e,t){let{selectModalResult:i,selectModal:n}=await this.createSelectModal(e);if(console.debug(`MDB | selectModal closed with code ${i.code}`),i.code==="ERROR"){console.warn(i.error),new Te.Notice(i.error.toString()),n.close();return}if(i.code!=="CLOSE"&&i.code!=="SKIP")try{let o=await t(i.data);return n.close(),o}catch(o){console.warn(o),new Te.Notice(o.toString()),n.close();return}}async createPreviewModal(e){let t=new Hi(this.plugin,e);return{previewModalResult:await new Promise(n=>{t.setSubmitCallback(o=>n({code:"SUCCESS",data:o})),t.setCloseCallback(o=>{o&&n({code:"ERROR",error:o}),n({code:"CLOSE"})}),t.open()}),previewModal:t}}async openPreviewModal(e,t){let{previewModalResult:i,previewModal:n}=await this.createPreviewModal(e);if(console.debug(`MDB | previewModal closed with code ${i.code}`),i.code==="ERROR"){console.warn(i.error),new Te.Notice(i.error.toString()),n.close();return}if(i.code!=="CLOSE")try{let o=await t(i.data);return n.close(),o}catch(o){console.warn(o),new Te.Notice(o.toString()),n.close();return}}};var Ft=require("obsidian"),Yi=class{constructor(){this.toFormat="YYYY-MM-DD",this.locale=new Intl.DateTimeFormat().resolvedOptions().locale}setFormat(e){this.toFormat=e}getPreview(e){let t=(0,Ft.moment)();return e||(e=this.toFormat),t.locale(this.locale).format(e)}format(e,t,i="en"){if(!e)return null;let n;return t?n=(0,Ft.moment)(e,t,i):this.hasMomentFormat(e)?n=(0,Ft.moment)(e):n=(0,Ft.moment)(new Date(e)),n.isValid()?n.locale(this.locale).format(this.toFormat):null}hasMomentFormat(e){return(0,Ft.moment)(e,!0).isValid()}};var zi=class extends z.Plugin{constructor(){super(...arguments);this.frontMatterRexExpPattern="^(---)\\n[\\s\\S]*?\\n---"}async onload(){this.apiManager=new Di,this.apiManager.registerAPI(new Ei(this)),this.apiManager.registerAPI(new Ci(this)),this.apiManager.registerAPI(new Pi(this)),this.apiManager.registerAPI(new ki(this)),this.apiManager.registerAPI(new Fi(this)),this.apiManager.registerAPI(new $i(this)),this.apiManager.registerAPI(new Ri(this)),this.apiManager.registerAPI(new Oi(this)),this.apiManager.registerAPI(new Ni(this)),this.mediaTypeManager=new _i,this.modelPropertyMapper=new Ai(this),this.modalHelper=new Gi(this),this.dateFormatter=new Yi,await this.loadSettings(),this.addSettingTab(new Si(this.app,this)),this.mediaTypeManager.updateTemplates(this.settings),this.mediaTypeManager.updateFolders(this.settings),this.dateFormatter.setFormat(this.settings.customDateFormat),this.addRibbonIcon("database","Add new Media DB entry",()=>this.createEntryWithAdvancedSearchModal()).addClass("obsidian-media-db-plugin-ribbon-class"),this.registerEvent(this.app.workspace.on("file-menu",(i,n)=>{n instanceof z.TFolder&&i.addItem(o=>{o.setTitle("Import folder as Media DB entries").setIcon("database").onClick(()=>this.createEntriesFromFolder(n))})})),this.addCommand({id:"open-media-db-search-modal",name:"Create Media DB entry",callback:()=>this.createEntryWithSearchModal()});for(let i of Pe)this.addCommand({id:`open-media-db-search-modal-with-${i}`,name:`Create Media DB entry (${zt(i)})`,callback:()=>this.createEntryWithSearchModal({preselectedTypes:[i]})});this.addCommand({id:"open-media-db-advanced-search-modal",name:"Create Media DB entry (advanced search)",callback:()=>this.createEntryWithAdvancedSearchModal()}),this.addCommand({id:"open-media-db-id-search-modal",name:"Create Media DB entry by id",callback:()=>this.createEntryWithIdSearchModal()}),this.addCommand({id:"update-media-db-note",name:"Update open note (this will recreate the note)",checkCallback:i=>this.app.workspace.getActiveFile()?(i||this.updateActiveNote(!1),!0):!1}),this.addCommand({id:"update-media-db-note-metadata",name:"Update metadata",checkCallback:i=>this.app.workspace.getActiveFile()?(i||this.updateActiveNote(!0),!0):!1}),this.addCommand({id:"add-media-db-link",name:"Insert link",checkCallback:i=>this.app.workspace.getActiveFile()?(i||this.createLinkWithSearchModal(),!0):!1})}async createLinkWithSearchModal(){let t=await this.modalHelper.openAdvancedSearchModal({},async a=>await this.apiManager.query(a.query,a.apis));if(!t)return;let i=await this.modalHelper.openSelectModal({elements:t,multiSelect:!1},async a=>await this.queryDetails(a.selected));if(!i||i.length<1)return;let n=`[${i[0].title}](${i[0].url})`,o=this.app.workspace.getActiveViewOfType(z.MarkdownView);o&&o.editor.replaceRange(n,o.editor.getCursor())}async createEntryWithSearchModal(t){let i=[],n=await this.modalHelper.openSearchModal(t!=null?t:{},async s=>{i=s.types;let l=this.apiManager.apis.filter(p=>p.hasTypeOverlap(s.types)).map(p=>p.apiName);try{return console.log(l),await this.apiManager.query(s.query,l)}catch(p){return console.warn(p),[]}});if(!n)return;n=n.filter(s=>i.contains(s.type));let o,a;for(;!a;){if(o=await this.modalHelper.openSelectModal({elements:n},async s=>await this.queryDetails(s.selected)),!o)return;a=await this.modalHelper.openPreviewModal({elements:o},async s=>s.confirmed)}await this.createMediaDbNotes(o)}async createEntryWithAdvancedSearchModal(){let t=await this.modalHelper.openAdvancedSearchModal({},async o=>await this.apiManager.query(o.query,o.apis));if(!t)return;let i,n;for(;!n;){if(i=await this.modalHelper.openSelectModal({elements:t},async o=>await this.queryDetails(o.selected)),!i)return;n=await this.modalHelper.openPreviewModal({elements:i},async o=>o.confirmed)}await this.createMediaDbNotes(i)}async createEntryWithIdSearchModal(){let t,i;for(;!i;){if(t=await this.modalHelper.openIdSearchModal({},async n=>await this.apiManager.queryDetailedInfoById(n.query,n.api)),!t)return;i=await this.modalHelper.openPreviewModal({elements:[t]},async n=>n.confirmed)}await this.createMediaDbNoteFromModel(t,{attachTemplate:!0,openNote:!0})}async createMediaDbNotes(t,i){for(let n of t)await this.createMediaDbNoteFromModel(n,{attachTemplate:!0,attachFile:i})}async queryDetails(t){let i=[];for(let n of t)try{i.push(await this.apiManager.queryDetailedInfo(n))}catch(o){console.warn(o),new z.Notice(o.toString())}return i}async createMediaDbNoteFromModel(t,i){try{console.debug("MDB | creating new note"),i.openNote=this.settings.openNoteInNewTab;let n=await this.generateMediaDbNoteContents(t,i);i.folder||(i.folder=await this.mediaTypeManager.getFolder(t,this.app));let o=await this.createNote(this.mediaTypeManager.getFileName(t),n,i);this.settings.enableTemplaterIntegration&&await pn(this.app,o)}catch(n){console.warn(n),new z.Notice(n.toString())}}generateMediaDbNoteFrontmatterPreview(t){let i=this.modelPropertyMapper.convertObject(t.toMetaDataObject());return(0,z.stringifyYaml)(i)}async generateMediaDbNoteContents(t,i){let n=await this.mediaTypeManager.getTemplate(t,this.app);return this.generateContentWithDefaultFrontMatter(t,i,n)}async generateContentWithDefaultFrontMatter(t,i,n){let o;this.settings.useDefaultFrontMatter?o=this.modelPropertyMapper.convertObject(t.toMetaDataObject()):o={id:t.id,type:t.type,dataSource:t.dataSource};let a="";return n=i.attachTemplate?n:"",{fileMetadata:o,fileContent:a}=await this.attachFile(o,a,i.attachFile),{fileMetadata:o,fileContent:a}=await this.attachTemplate(o,a,n),this.settings.enableTemplaterIntegration&&hr(this.app)?a=`---
<%* const media = ${JSON.stringify(t)} %>
${(0,z.stringifyYaml)(o)}---
${a}`:a=`---
${(0,z.stringifyYaml)(o)}---
${a}`,a}async generateContentWithCustomFrontMatter(t,i,n){let o=new RegExp(this.frontMatterRexExpPattern),a=this.getMetaDataFromFileContent(n),s=n.replace(o,"");if(i.attachFile){let l=this.app.metadataCache.getFileCache(i.attachFile).frontmatter;s=await this.app.vault.read(i.attachFile),s=s.replace(o,""),s=s.startsWith(`
`)?s.substring(1):s,Object.keys(l).forEach(p=>{let d=l[p];!a[p]&&d&&(a[p]=d)})}return a.id||(a.id=t.id),a.type||(a.type=t.type),a.dataSource||(a.dataSource=t.dataSource),this.settings.enableTemplaterIntegration&&hr(this.app)?s=`---
<%* const media = ${JSON.stringify(t)} %>
${(0,z.stringifyYaml)(a)}---
${s}`:s=`---
${(0,z.stringifyYaml)(a)}---
${s}`,s}async attachFile(t,i,n){if(!n)return{fileMetadata:t,fileContent:i};let o=this.getMetadataFromFileCache(n);t=Object.assign(o,t);let a=await this.app.vault.read(n),s=new RegExp(this.frontMatterRexExpPattern);return a=a.replace(s,""),a=a.startsWith(`
`)?a.substring(1):a,i+=a,{fileMetadata:t,fileContent:i}}async attachTemplate(t,i,n){if(!n)return{fileMetadata:t,fileContent:i};let o=this.getMetaDataFromFileContent(n);t=Object.assign(o,t);let a=new RegExp(this.frontMatterRexExpPattern),s=n.replace(a,"");return i+=s,{fileMetadata:t,fileContent:i}}getMetaDataFromFileContent(t){let i,o=new RegExp(this.frontMatterRexExpPattern).exec(t);if(!o)return{};let a=o[0];return a?(a=a.substring(4),a=a.substring(0,a.length-3),i=(0,z.parseYaml)(a),i||(i={}),console.debug("MDB | metadata read from file content",i),i):{}}getMetadataFromFileCache(t){let i=this.app.metadataCache.getFileCache(t).frontmatter;return structuredClone(i!=null?i:{})}async createNote(t,i,n){var p;let o=(p=n.folder)!=null?p:this.app.vault.getAbstractFileByPath("/");t=on(t);let a=`${o.path}/${t}.md`,s=this.app.vault.getAbstractFileByPath(a);s&&await this.app.vault.delete(s);let l=await this.app.vault.create(a,i);if(console.debug(`MDB | created new file at ${a}`),n.openNote){let d=this.app.workspace.getUnpinnedLeaf();if(!d){console.warn("MDB | no active leaf, not opening newly created note");return}await d.openFile(l,{state:{mode:"source"}})}return l}async updateActiveNote(t=!1){let i=this.app.workspace.getActiveFile();if(!i)throw new Error("MDB | there is no active note");let n=this.getMetadataFromFileCache(i);if(n=this.modelPropertyMapper.convertObjectBack(n),console.debug("MDB | read metadata",n),!(n!=null&&n.type)||!(n!=null&&n.dataSource)||!(n!=null&&n.id))throw new Error("MDB | active note is not a Media DB entry or is missing metadata");let o=n,a=this.mediaTypeManager.createMediaTypeModelFromMediaType(o,o.type),s=await this.apiManager.queryDetailedInfoById(o.id,o.dataSource);s&&(s=Object.assign(a,s.getWithOutUserData()),t?await this.createMediaDbNoteFromModel(s,{attachFile:i,folder:i.parent,openNote:!0}):await this.createMediaDbNoteFromModel(s,{attachTemplate:!0,folder:i.parent,openNote:!0}))}async createEntriesFromFolder(t){let i=[],n=!1,{selectedAPI:o,titleFieldName:a,appendContent:s}=await new Promise(l=>{new Bi(this.app,this,(p,d,c)=>{l({selectedAPI:p,titleFieldName:d,appendContent:c})}).open()});for(let l of t.children)if(l instanceof z.TFile){let p=l;if(n){i.push({filePath:p.path,error:"user canceled"});continue}let c=this.getMetadataFromFileCache(p)[a];if(!c){i.push({filePath:p.path,error:`metadata field '${a}' not found or empty`});continue}let f=[];try{f=await this.apiManager.query(c,[o])}catch(m){i.push({filePath:p.path,error:m.toString()});continue}if(!f||f.length===0){i.push({filePath:p.path,error:"no search results"});continue}let{selectModalResult:u,selectModal:M}=await this.modalHelper.createSelectModal({elements:f,skipButton:!0,modalTitle:`Results for '${c}'`});if(u.code==="ERROR"){i.push({filePath:p.path,error:u.error.message}),M.close();continue}if(u.code==="CLOSE"){i.push({filePath:p.path,error:"user canceled"}),M.close(),n=!0;continue}if(u.code==="SKIP"){i.push({filePath:p.path,error:"user skipped"}),M.close();continue}if(u.data.selected.length===0){i.push({filePath:p.path,error:"no search results selected"});continue}let g=await this.queryDetails(u.data.selected);await this.createMediaDbNotes(g,s?p:null),M.close()}i.length>0&&await this.createErroredFilesReport(i)}async createErroredFilesReport(t){let i=`MDB - bulk import error report ${ln(new Date)}`,n=`${i}.md`,o=[["file","error"]].concat(t.map(s=>[s.filePath,s.error])),a=`# ${i}
${an(o)}`;await this.app.vault.create(n,a)}async loadSettings(){let t=await this.loadData(),i=jn(this),n=Object.assign({},i,t),o=[];for(let a of i.propertyMappingModels){let s=n.propertyMappingModels.find(l=>l.type===a.type);if(s===void 0)o.push(a);else{let l=[];for(let p of a.properties){let d=s.properties.find(c=>c.property===p.property);d===void 0?l.push(p):l.push(new dt(d.property,d.newProperty,d.mapping,p.locked))}o.push(new kt(s.type,l))}}n.propertyMappingModels=o,this.settings=n}async saveSettings(){this.mediaTypeManager.updateTemplates(this.settings),this.mediaTypeManager.updateFolders(this.settings),this.dateFormatter.setFormat(this.settings.customDateFormat),await this.saveData(this.settings)}};