PageSourceSearch

https://kindredly.ai/js/CurateItemXRBdCqVi.js

js kindredly.ai collected 2026-09-24 14:30:58 UTC 47,637 bytes, 1 lines download raw bytes

1import{I as Nt,a as Pt}from"./OperationQueueDV3oPNrt.js";import{_ as Ut,I as Dt}from"./CategoryTreePicker.vue_vue_type_script_setup_true_langwUgbUqDN.js";import{S as Ot}from"./SelectImageBOT5AEf0.js";import{d as me,a4 as k,b as o,o as l,j as m,a5 as lt,w as f,e as i,f as w,x as u,F as z,C as r,v as de,B as g,l as Z,n as it,a8 as zt,q as S,a1 as Ve,c as N,z as Lt,u as O,J as xt,L as qt,I as Ee}from"./vue-runtimeBcw72k-n.js";import{_ as ce,o as jt,t as re}from"./chunkReloadRecoveryC4XyrbqR.js";import{m as nt}from"./main.mixin7s_FZSSe.js";import{P as Bt}from"./PublishedItemDetailsCEtTVuIP.js";import{r as Kt}from"./file_utilsBz4gEirg.js";import{i as Te,l as Yt,a as et,b as Jt,f as Ht,o as Wt,d as Gt,r as Qt,c as Xt,e as Ce,g as Zt,s as es,h as ts}from"./curationReviewD5F-BA3D.js";import{N as ee,a as Fe,g as tt,f as ss,l as st,C as as,n as ls,o as is,p as X,q as ns,r as os,k as rs,i as at,t as us,u as ds,v as ms}from"./curation.checklistfA2uxN8D.js";import{D as cs}from"./publish.rulesBEnVNBMf.js";import{i as ot}from"./constantsDsHwd9pV.js";import{S as vs}from"./SegmentedSubnavm1ovTeVz.js";import"./item-name.utilsCH3lkmjj.js";import"./dexie2jmnBxhj.js";import"./item.typesx7Q7rrX9.js";import"./content.typesCQ2lHcy0.js";import"./extraction.pure.utilsDQPW8yIh.js";import"./url.utilsCetgXmY_.js";import"./ItemTargetAudiences.vue_vue_type_style_index_0_langCnpgNLDN.js";import"./ItemEduValue.vue_vue_type_style_index_0_langD7UBw32n.js";import"./common.storeB-dDF-ne.js";import"./adminsite.storeDQcNSYX0.js";import"./ItemAdsAndCostTags.vue_vue_type_script_setup_true_langC0Q-U_C1.js";import"./ItemIntentb5TFO5HE.js";import"./categoryExplorerSetsCylUBCaq.js";import"./adminTypedApiD9p7i1jy.js";import"./uploadFileTypesBUMDeBA-.js";import"./cjs-helpersC4iS2aBk.js";import"./bootstrap-vue-nextD6HU9H8G.js";import"./refresh.storeCFjy7nst.js";import"./agentParentalGrantCz4Xs1Ac.js";import"./modal.mixinDnpIrxXn.js";import"./browserTabsDwRj8B1n.js";import"./scopedSettingsB4ZfLk-4.js";import"./subscription.storeD0D3zB45.js";import"./AddPublishedToLibraryBhaglH2Z.js";import"./useBgEventsCYo0cn1C.js";import"./PopCollectionSelectorBIf55aY1.js";import"./CreateCollectionSyLkNAb9.js";import"./useCollectionCykkeT_F.js";import"./ProfileImageC5kY67hh.js";import"./UserCardrkTqBDhX.js";import"./CollectionDiscoverabilitySelector.vue_vue_type_script_setup_true_langCJip0K_1.js";import"./EditorModalSurface.vue_vue_type_script_setup_true_langD7dmsDR-.js";import"./EditorAdvancedSection.vue_vue_type_script_setup_true_langC_AgCAlI.js";import"./AISuggesterDGDENjm7.js";import"./ai_lookup_utilszDX_hcwM.js";import"./kindTemplateInstancesDVf_xjHW.js";import"./existingTemplateInstancesDkNNPcVb.js";import"./ItemImageD8NxRVYv.js";import"./itemImageSourcesB5F3pjKY.js";import"./TIIconDefaultCYA3LJyP.js";import"./imageRenditionsDqNw8UDr.js";import"./CollectionOwnerBadges3YrrT61.js";import"./PlaceholderListDIf1brFQ.js";import"./PermissionOverrideBanner.vue_vue_type_script_setup_true_langDIvIjKOU.js";import"./SelectAccountUsersDVzdhCin.js";import"./useItemCdofsVMa.js";import"./urlDuplicateMatchingCceDhnY-.js";import"./CategoryChip.vue_vue_type_script_setup_true_langBFpFxWu9.js";import"./categoryVariantX0RY_4Aj.js";import"./useEdgeScrollChZhHPPK.js";const ps=me({name:"ListFromTextArea",components:{},props:{value:{type:Array,default:()=>[]},name:{type:String,default:"unknown"},placeholder:{type:String,default:"Enter comma separated values"}},data(){return{content:""}},mounted(){},computed:{},methods:{update(e){this.$emit("input",this.prepOutput())},prepOutput(){return this.content.split(",").map(e=>e.trim()).filter(e=>e.length>0)},load(){this.content=this.value.join(", ")}},created(){this.load()}});function fs(e,a,I,_,E,T){const A=k("b-form-textarea");return l(),o("div",null,[m(A,{modelValue:e.content,"onUpdate:modelValue":a[0]||(a[0]=y=>e.content=y),name:e.name,onInput:e.update,rows:"3","max-rows":"6",placeholder:e.placeholder},null,8,["modelValue","name","onInput","placeholder"])])}const ys=ce(ps,[["render",fs]]),hs=me({name:"EditPublished",mixins:[nt],components:{ItemCriteria:Dt,ListFromTextArea:ys,SelectImage:Ot,CategoryTreePicker:Ut},props:{lockFamilyText:{type:Boolean,default:!1},itemProp:{type:Object,default:null}},emits:["close"],data(){return{item:null,meta:null,loading:!1,url:null,name:null,comment:null,description:null,tags:null,type:null,patterns:[],categories:[],useCriteria:[],errorMessage:null,imageFilename:null,bannerImage:null,imageRefresh:0}},computed:{currentImage(){var a;let e=(a=this.meta)==null?void 0:a.bannerImagePath;return this.imageFilename&&(e=`${this.imageFilename}?imageRefresh=${this.imageRefresh}`),this.getImagePathWithDefault(e)}},methods:{loadItem(){var e,a,I,_,E,T,A,y;this.meta=((e=this.item)==null?void 0:e.meta)||{},this.url=(I=(a=this.item)==null?void 0:a.data)==null?void 0:I.url,this.name=this.item.name,this.description=this.item.description,this.patterns=((E=(_=this.item)==null?void 0:_.data)==null?void 0:E.patterns)||[],this.tags=this.item.tags,this.type=this.item.type,this.imageFilename=(T=this.item)==null?void 0:T.imageFilename,this.useCriteria=((A=this.item)==null?void 0:A.useCriteria)||[],this.categories=((y=this.item)==null?void 0:y.categories)||[]},async selectImage(e){e&&(this.bannerImage=e,await this.save())},async save(){this.loading=!0;try{const e={name:this.name,description:this.description,categories:this.categories,useCriteria:this.useCriteria,patterns:this.patterns,imageFilename:this.imageFilename,bannerImage:this.bannerImage,url:this.url},a=await this.typedSendReq("/published/info/update",{itemId:this.item._id,data:e});a.success?(this.bannerImage=null,this.loadItem(),this.$emit("close",!0),this.errorMessage=null):(console.error("Error:",a.message),this.errorMessage=a.message||"Couldn't save the details. Try again.")}catch(e){this.errorMessage=(e==null?void 0:e.message)||"Couldn't save the details. Try again.",console.error(e)}this.loading=!1}},created(){this.item=this.itemProp,this.loadItem()}}),gs={key:0},bs={class:"mb-4"},ws={class:"edit-published__readonly mb-0"},_s={class:"wwrap"},ks={class:"wwrap"},Cs={class:"mb-4 pt-3 border-top"},Is={class:"d-flex align-items-end flex-wrap gap-3"},Rs=["src"],$s={key:1,class:"small text-muted"},Ss={class:"mb-4 pt-3 border-top"},As={class:"mb-4 pt-3 border-top"},Vs={class:"pt-3 border-top"},Es={class:"d-flex justify-content-end"},Ts={key:1}
1,Fs={key:1,class:"text-center my-4"};function Ms(e,a,I,_,E,T){var G,x;const A=k("SelectImage"),y=k("b-modal"),F=k("b-form-input"),h=k("b-form-group"),C=k("b-form-textarea"),P=k("ListFromTextArea"),L=k("b-icon"),W=k("b-button"),b=k("CategoryTreePicker"),U=k("ItemCriteria"),j=k("b-alert"),B=k("b-spinner"),K=lt("b-modal");return l(),o("div",null,[m(y,{lazy:"true",id:"edit-image-modal",title:"Choose a picture",size:"lg","hide-footer":"","no-close-on-esc":"","no-close-on-backdrop":""},{default:f(()=>[m(A,{onSelectImage:e.selectImage,"max-size":600,smallImageSize:300,keepAspectRatio:!0,onClose:a[0]||(a[0]=R=>e.closeModal("edit-image-modal"))},null,8,["onSelectImage"])]),_:1}),e.item?(l(),o("div",gs,[i("section",bs,[a[13]||(a[13]=i("h6",{class:"text-uppercase small text-muted fw-semibold mb-2"},"Name and description",-1)),e.lockFamilyText?(l(),o(z,{key:0},[a[12]||(a[12]=i("div",{class:"small text-muted mb-2"},"The family's own words. A curator changes the picture, categories and facets.",-1)),i("dl",ws,[e.item.type=="url"||e.item.type=="link"?(l(),o(z,{key:0},[a[9]||(a[9]=i("dt",null,"Link",-1)),i("dd",_s,r(e.url||"—"),1)],64)):u("",!0),a[10]||(a[10]=i("dt",null,"Name",-1)),i("dd",null,r(e.name||e.item.name||((G=e.meta)==null?void 0:G.title)||"—"),1),a[11]||(a[11]=i("dt",null,"Description",-1)),i("dd",ks,r(e.description||e.item.description||((x=e.meta)==null?void 0:x.description)||"—"),1)])],64)):(l(),o(z,{key:1},[e.item.type=="url"?(l(),w(h,{key:0,label:"Link","label-for":"forURL"},{default:f(()=>[m(F,{id:"forURL",autocorrect:"off",autocapitalize:"off",modelValue:e.url,"onUpdate:modelValue":a[1]||(a[1]=R=>e.url=R)},null,8,["modelValue"])]),_:1})):u("",!0),m(h,{label:"Name","label-for":"formName"},{default:f(()=>{var R;return[m(F,{id:"formName",modelValue:e.name,"onUpdate:modelValue":a[2]||(a[2]=$=>e.name=$),placeholder:e.item.name||((R=e.meta)==null?void 0:R.title)},null,8,["modelValue","placeholder"])]}),_:1}),m(h,{label:"Description","label-for":"formDescription",description:"Leave blank to use the page's own description."},{default:f(()=>{var R;return[m(C,{id:"formDescription",modelValue:e.description,"onUpdate:modelValue":a[3]||(a[3]=$=>e.description=$),placeholder:e.item.description||((R=e.meta)==null?void 0:R.description),rows:"3","max-rows":"6"},null,8,["modelValue","placeholder"])]}),_:1})],64)),e.item.type=="col"?(l(),w(h,{key:2,class:"mt-3",label:"Comment","label-for":"formComment",description:"Optional."},{default:f(()=>[m(C,{id:"formComment",modelValue:e.comment,"onUpdate:modelValue":a[4]||(a[4]=R=>e.comment=R),rows:"3","max-rows":"6"},null,8,["modelValue"])]),_:1})):u("",!0),e.type=="link"?(l(),w(h,{key:3,class:"mt-3",label:"Link patterns",description:"One per line. * matches anything: *.google.com/* matches every google.com page."},{default:f(()=>[m(P,{modelValue:e.patterns,"onUpdate:modelValue":a[5]||(a[5]=R=>e.patterns=R),placeholder:"Enter link patterns"},null,8,["modelValue"])]),_:1})):u("",!0)]),i("section",Cs,[a[16]||(a[16]=i("h6",{class:"text-uppercase small text-muted fw-semibold mb-2"},"Picture",-1)),i("div",Is,[e.currentImage?(l(),o("img",{key:0,src:e.currentImage,alt:"",class:"edit-published__picture rounded"},null,8,Rs)):(l(),o("div",$s,"No picture")),i("div",null,[de((l(),w(W,{size:"sm",variant:"outline-secondary",disabled:e.loading},{default:f(()=>[m(L,{icon:"image",class:"me-1","aria-hidden":"true"}),a[14]||(a[14]=g("Change picture ",-1))]),_:1},8,["disabled"])),[[K,void 0,void 0,{"edit-image-modal":!0}]]),a[15]||(a[15]=i("div",{class:"small text-muted mt-1"},"Saves as soon as you choose one.",-1))])])]),i("section",Ss,[a[17]||(a[17]=i("h6",{class:"text-uppercase small text-muted fw-semibold mb-2"},"Categories",-1)),m(b,{modelValue:e.categories,"onUpdate:modelValue":a[6]||(a[6]=R=>e.categories=R)},null,8,["modelValue"])]),i("section",As,[a[18]||(a[18]=i("h6",{class:"text-uppercase small text-muted fw-semibold mb-2"},"Facets",-1)),m(U,{modelValue:e.useCriteria,"onUpdate:modelValue":a[7]||(a[7]=R=>e.useCriteria=R),"review-owned-locked":""},null,8,["modelValue"])]),i("div",Vs,[e.errorMessage?(l(),w(j,{key:0,variant:"danger","model-value":!0,class:"small py-2"},{default:f(()=>[g(r(e.errorMessage),1)]),_:1})):u("",!0),i("div",Es,[m(W,{variant:"primary",disabled:e.loading,onClick:a[8]||(a[8]=R=>e.save())},{default:f(()=>[e.loading?(l(),w(B,{key:0,small:"",class:"me-1"})):u("",!0),a[19]||(a[19]=g("Save details ",-1))]),_:1},8,["disabled"])])])])):(l(),o("div",Ts,[e.errorMessage?(l(),w(j,{key:0,variant:"danger","model-value":!0},{default:f(()=>[g(r(e.errorMessage),1)]),_:1})):(l(),o("div",Fs,[m(B,{label:"Loading..."})]))]))])}const Ns=ce(hs,[["render",Ms],["__scopeId","data-v-1f48420f"]]),Ps=["role","aria-label","aria-labelledby"],Us=["type","name","value","checked","onClick","onChange"],Ds=me({__name:"CurationCh
1oiceChips",props:{modelValue:{},options:{},name:{},label:{},labelledBy:{},multiple:{type:Boolean},clearable:{type:Boolean}},emits:["update:modelValue"],setup(e,{emit:a}){const I=e,_=a;function E(y){return Array.isArray(I.modelValue)?I.modelValue.includes(y):I.modelValue===y}function T(y){I.clearable&&!I.multiple&&E(y)&&_("update:modelValue",null)}function A(y){if(!I.multiple)return _("update:modelValue",y);const F=Array.isArray(I.modelValue)?I.modelValue:[];_("update:modelValue",F.includes(y)?F.filter(h=>h!==y):[...F,y])}return(y,F)=>{const h=k("b-icon");return l(),o("div",{class:"d-flex flex-wrap gap-1",role:e.multiple?"group":"radiogroup","aria-label":e.labelledBy?void 0:e.label,"aria-labelledby":e.labelledBy},[(l(!0),o(z,null,Z(e.options,C=>(l(),o("label",{key:String(C.value),class:it(["curation-chip mb-0",[`curation-chip--${C.tone||"neutral"}`,{"is-chosen":E(C.value)}]])},[i("input",{type:e.multiple?"checkbox":"radio",class:"visually-hidden",name:e.name,value:String(C.value),checked:E(C.value),onClick:P=>T(C.value),onChange:P=>A(C.value)},null,40,Us),E(C.value)?(l(),w(h,{key:0,icon:"check-lg","aria-hidden":"true"})):u("",!0),i("span",null,r(C.text),1)],2))),128))],8,Ps)}}}),ue=ce(Ds,[["__scopeId","data-v-c88ec24f"]]),Os=[{name:"YouTube",hosts:["youtube.com","youtu.be"],answers:{signup:{value:"pass"},cost:{value:"cost_freewithpaid",comment:"Free to watch. YouTube Premium is a paid plan that removes the ads."},ads:{value:"ads_m",comment:"Ads play before and during many videos. YouTube Premium removes them."},design:{value:"design_busy",comment:"Recommendations, the home feed and Shorts compete with the video. Kindredly's YouTube settings can hide them."},attention_traps:{value:"concern",comment:"Autoplay, recommended videos and Shorts invite watching for longer. Kindredly's YouTube settings can hide recommendations and Shorts, and autoplay can be turned off in YouTube."},user_contact:{value:"concern",comment:"Comments are open below most videos. Kindredly's YouTube settings can hide them."},privacy:{value:["priv_adtracking"],comment:"YouTube can choose ads from what someone watches. Videos made for kids don't get personalized ads."}}}];function zs(e){if(!e)return null;try{return new URL(e).hostname.toLowerCase()}catch{return null}}function Ls(e){const a=zs(e);return a?Os.find(I=>I.hosts.some(_=>a===_||a.endsWith(`.${_}`)))??null:null}function xs(e,a,I,_){if(!_)return{answers:a,filled:[]};const E={...a},T=[];for(const A of e){const y=_.answers[A.key];!y||I!=null&&I[A.key]||y.value!==ee&&Fe(A,{value:y.value})===ee||(E[A.key]={value:Array.isArray(y.value)?[...y.value]:y.value,...y.comment?{comment:y.comment}:{},source:"human"},T.push(A.key))}return{answers:E,filled:T}}const qs={key:0,class:"knd-card text-center"},js={key:1,class:"knd-card"},Bs={class:"knd-card mb-3"},Ks={class:"d-flex align-items-baseline justify-content-between flex-wrap gap-2 mb-3"},Ys={class:"small text-muted"},Js={key:0},Hs={class:"fw-semibold"},Ws={class:"list-unstyled mb-0"},Gs=["href"],Qs={class:"text-muted"},Xs={key:3,class:"mb-3","data-test-id":"curationReviewReports"},Zs={class:"list-unstyled small mb-0"},ea={class:"fw-semibold"},ta={key:0},sa={class:"text-muted"},aa={key:0},la={key:1},ia={key:4,class:"small d-flex gap-2 mb-2","data-test-id":"curationReviewPreset"},na={class:"curation-review-form__ai small rounded p-2 mb-3"},oa={class:"d-flex align-items-start gap-2"},ra={class:"flex-grow-1 text-muted","data-test-id":"curationReviewAiStatus"},ua={class:"d-flex flex-wrap align-items-center gap-3 mt-1 ps-4"},da={key:0,class:"mt-1 ps-4",role:"status"},ma={"data-test-id":"curationReviewProgress"},ca={class:"d-flex justify-content-between flex-wrap gap-2 small"},va={key:0,class:"text-muted"},pa={class:"curation-review-form__progress mt-1","aria-hidden":"true"},fa=["aria-labelledby","data-test-id"],ya={class:"mb-1"},ha={class:"d-flex justify-content-between align-items-baseline gap-2"},ga=["id"],ba={class:"small text-muted text-nowrap"},wa={class:"small text-muted mt-1"},_a=["data-test-id"],ka={class:"d-flex align-items-baseline justify-content-between gap-2"},Ca=["id"],Ia={key:0,class:"small text-muted"},Ra={class:"small mb-2"},$a={class:"text-muted"},Sa={class:"mt-1"},Aa={key:0,class:"mt-2"},Va=["id"],Ea={key:2,class:"small mt-2 d-flex flex-wrap align-items-baseline gap-2"},Ta={class:"text-muted"},Fa={class:"fw-semibold"},Ma={key:0},Na={key:0,class:"w-100"},Pa={key:3,class:"small text-muted mt-2"},Ua={key:4,class:"small text-muted mt-1"},Da={class:"mt-2 d-flex flex-wrap align-items-center gap-2"},Oa=["src"],za={key:0,class:"btn btn-link btn-sm p-0 mb-0"},La={key:0},xa={key:1},qa=["disabled","onChange"],ja={key:7,class:"small text-muted mt-1"},Ba={key:8,class:"small text-danger mt-2",role:"alert"}
1,Ka={class:"knd-card mb-3","data-test-id":"curationReviewOutcome"},Ya={key:0,class:"small text-danger mt-1",role:"alert"},Ja={key:1,class:"small text-muted mt-2","data-test-id":"curationReviewOwnSuggestion"},Ha={key:2,class:"small mt-2","data-test-id":"curationReviewConsequence"},Wa={key:0,class:"small text-danger mt-1",role:"alert"},Ga={key:4,class:"mt-3"},Qa={key:0,class:"small text-danger mt-1",role:"alert"},Xa={key:0,class:"small text-danger mt-1",role:"alert"},Za={key:7,class:"small text-warning-emphasis mt-3"},el={class:"d-flex justify-content-end gap-2 mt-3"},tl={key:0,class:"small mb-3"},sl={class:"list-unstyled mt-2 mb-0"},al={key:0,class:"text-muted"},ll={key:3,class:"knd-card","data-test-id":"curationReviewNone"},il={key:1,class:"small mb-3"},nl={key:0},ol={key:2,class:"small text-muted mb-3"},rl=me({__name:"CurationReviewForm",props:{itemId:{},item:{},autoOpen:{type:Boolean}},emits:["finished"],setup(e,{expose:a,emit:I}){const _=e,E=I,T=zt(),A=S(null),y=S(!1),F=S(null),h=S(null),C=S([]),P=S([]),L=S([]),W=S(!1),b=S({}),U=S(null),j=S(null),B=S(""),K=S(""),G=S(!1),x=S(null),R=S(1),$=S({}),ve=S([]),J=S(null),q=S(null),te=S("secondary"),se=S(null),pe=S(!1),Ie=Ve({}),fe=Ve({}),Re=Ve({}),ye=S(0),ie=N(()=>J.value!==null),ne=N(()=>h.value?tt(h.value.checklistVersion):null),Me=N(()=>{var s,t,n,c;return((t=(s=_.item)==null?void 0:s.data)==null?void 0:t.url)||((c=(n=_.item)==null?void 0:n.meta)==null?void 0:c.url)}),he=N(()=>{var s;return ss({type:(s=_.item)==null?void 0:s.type,url:Me.value})}),ge=N(()=>Ls(Me.value)),Q=N(()=>ne.value?st(ne.value,he.value):[]),Ne=s=>Te(s,b.value[s.key]),rt=N(()=>as.map(s=>{const t=Q.value.filter(p=>p.group===s.key),n=t.length>0&&t.every(p=>p.required),c=ls.includes(s.key)?"Families read every answer.":"Families read only what was found, or a note.";return{...s,checks:t,allRequired:n,note:n?`Required. ${c}`:c,answered:t.filter(Ne).length}}).filter(s=>s.checks.length>0)),Pe=N(()=>Q.value.filter(Ne).length),be=N(()=>{var s;return Yt(et((s=h.value)==null?void 0:s.aiDraft))}),$e=N(()=>Q.value.filter(s=>s.required&&!Te(s,b.value[s.key])).length),ut=N(()=>Q.value.length?Math.round(Pe.value/Q.value.length*100):0),Ue=N(()=>{var s,t,n,c;return{community:!!((s=_.item)!=null&&s.publicUserId)&&!ot(_.item.publicUserId),curated:((t=_.item)==null?void 0:t.curated)===!0,underReview:((n=h.value)==null?void 0:n.underReview)===!0||!!((c=_.item)!=null&&c.underReviewAt)}}),De=N(()=>Jt(Ue.value)),dt=N(()=>{var s;return Ht(Ue.value,U.value,((s=_.item)==null?void 0:s.type)==="col")}),mt=N(()=>[{value:null,text:"Pick a reason"},...cs.map(s=>({value:s.code,text:s.label}))]),ct=ns.map(s=>({value:s,text:s===12?"1 year":s===24?"2 years":`${s} months`,tone:"primary"})),vt=[{value:"none",text:"None found",tone:"pass"},{value:"found",text:"Found",tone:"concern"}];function oe(s){const t=new Date(s);return Number.isNaN(t.getTime())?"":t.toLocaleDateString()}function pt(s){return jt(s)||""}function ft(s){return T.resolve(`/v/${s}`).href}function we(s){var t;return((t=b.value[s.key])==null?void 0:t.value)??null}function yt(s,t){const n=Fe(s,{value:t});return n===ee?"neutral":n}function ht(s){const t=s.answer,n=t.kind==="verdict"?["pass","concern","fail"]:t.kind==="facet"?t.options:[],c=p=>t.kind==="verdict"?t.labels[p]:t.kind==="facet"?os(t.axis,p):p;return n.map(p=>({value:p,text:c(p),tone:yt(s,p)}))}function gt(s){const t=s.answer;return t.kind!=="flags"?[]:t.options.map(n=>({value:n,text:rs(t,n),tone:"concern"}))}function Se(s){var n;const t=(n=b.value[s.key])==null?void 0:n.value;return Array.isArray(t)?t:[]}function Ae(s){var n;const t=(n=b.value[s.key])==null?void 0:n.value;return Array.isArray(t)?t.length>0||Re[s.key]?"found":"none":null}function bt(s,t){Re[s.key]=t==="found",_e(s,t===null?null:t==="none"?[]:Se(s))}function _e(s,t,n="human"){var V;const c={...b.value},p=c[s.key];t!==null?c[s.key]={...p||{},value:t,source:n}:p!=null&&p.comment||(V=p==null?void 0:p.screenshots)!=null&&V.length?c[s.key]={...p,value:ee,source:n}:delete c[s.key],b.value=c,delete $.value[s.key]}function Oe(s,t){const n=b.value[s.key]||{value:ee};b.value={...b.value,[s.key]:{...n,comment:t}},delete $.value[s.key]}function wt(s){var n;const t=b.value[s.key];return!!Ie[s.key]||!!(t!=null&&t.comment)||(((n=t==null?void 0:t.screenshots)==null?void 0:n.length)||0)>0}function _t(s){Ie[s.key]=!0}function kt(s){return!s.publicScreenshots||Fe(s,b.value[s.key])!=="pass"}function ke(s){var n;const t=Ce(s,(n=h.value)==null?void 0:n.aiDraft);return t&&t.value!==ee?t:null}function Ct(s){const t=ke(s);return t?at(s,{value:t.value}):""}function ze(s){var n,c;const t=(c=Ce(s,(n=h.value)==null?void 0:n.aiDraft))==null?void 0:c.confidence;return typeof t=="number"?Math.round(t*100):null}function It(s){var n;const t=Ce(s,(n=h.value)==null?void 0:n.aiDraft);return!!t&&JSON.stringify(t.value)===JSON.stringify(we(s))}function Rt(s){var n;const t=(n=ge.value)==null?void 0:n.answers[s.key];return!!t&&JSON.stringify(t.value)===JSON.stringify(we(s))}function Le(s){var n,c;const t=(c=(n=C.value[0])==null?void 0:n.answers)==null?void 0:c[s.key];return!t||!Te(s,t)||JSON.stringify(t.value)===JSON.stringify(we(s))?null:at(s,t)}function $t(s){var n,c;const t=Ce(s,(n=h.value)==null?void 0:n.aiDraft);t&&(_e(s,Array.isArray(t.value)?[...t.value]:t.value,"ai_confirmed"),t.suggestedComment&&!((c=b.value[s.key])!=null&&c.comment)&&Oe(s,t.suggestedComment))}function St(){var n;const{answers:s,filled:t}=Zt(Q.value,b.value,(n=h.value)==null?void 0:n.aiDraft);b.value=s,se.value=t?`Filled ${t} unanswered ${t===1?"check":"checks"} from the AI draft. Check each one before finishing.`:"The AI draft has nothing for the checks that are still unanswered."}
1async function At(){if(h.value){J.value="ai",se.value=null;try{const s=await re("/curationReview/requestAiDraft",{reviewId:h.value._id});if(!s.success||!s.result){se.value=s.message||"The AI draft was not asked for.";return}h.value={...h.value,aiDraft:s.result}}finally{J.value=null}}}async function Vt(s,t){var p,V;const n=t.target,c=(p=n.files)==null?void 0:p[0];if(n.value="",!(!c||!h.value)){fe[s.key]=!0;try{const D=await Kt({file:c,maxSize:1600,keepAspectRatio:!0,quality:.85}),Y=await re("/curationReview/screenshot/upload",{reviewId:h.value._id,imageData:D});if(!Y.success||!((V=Y.result)!=null&&V.filename)){$.value={...$.value,[s.key]:Y.message||"The screenshot did not upload."};return}const H=b.value[s.key]||{value:ee};b.value={...b.value,[s.key]:{...H,screenshots:[...H.screenshots||[],Y.result.filename]}}}catch(D){$.value={...$.value,[s.key]:(D==null?void 0:D.message)||"The screenshot did not upload."}}finally{fe[s.key]=!1}}}function Et(s,t){const n=b.value[s.key];n&&(b.value={...b.value,[s.key]:{...n,screenshots:(n.screenshots||[]).filter(c=>c!==t)}})}function xe(){return{reviewId:h.value._id,version:R.value,answers:b.value,outcome:U.value,declineReason:U.value==="decline"?j.value:null,summary:B.value||null,internalNote:K.value||null,reviewAgainMonths:U.value==="curate"?x.value:null}}function qe(s,t){pe.value=s.status===409,te.value="danger",q.value=s.message||t}async function je(s){const t=await re("/curationReview/saveDraft",xe());return!t.success||!t.result?(qe(t,s),!1):(R.value=t.result.version,pe.value=!1,!0)}async function Tt(){if(h.value){J.value="draft",q.value=null;try{if(!await je("Couldn't save the draft. Try again."))return;te.value="success",q.value="Draft saved. Families see nothing until the review is finished."}finally{J.value=null}}}function Ft(){const s=ms(ne.value,he.value,b.value,{outcome:U.value,declineReason:j.value,summary:B.value,internalNote:K.value,reviewAgainMonths:x.value});ve.value=s.warnings.map(n=>n.message);const t=Object.fromEntries(s.errors.map(n=>[n.key,n.message]));for(const n of Q.value)Ae(n)==="found"&&Se(n).length===0&&!t[n.key]&&(t[n.key]="Mark what was found, or choose None found.");return t}async function Mt(){var s,t,n;if(!(!h.value||!ne.value)){J.value="finish",q.value=null;try{if(!await je("Couldn't save the review, so it was not finished. Try again."))return;$.value=Ft();const c=Object.keys($.value).length;if(c>0){te.value="danger",q.value=`Draft saved. ${c} ${c===1?"thing needs":"things need"} attention before the review can be finished.`,await qt(),(n=(t=(s=A.value)==null?void 0:s.querySelector(".has-issue"))==null?void 0:t.scrollIntoView)==null||n.call(t,{block:"center",behavior:"smooth"});return}const p=await re("/curationReview/finalize",xe());if(!p.success||!p.result)return qe(p,"Couldn't finish the review. Nothing changed.");E("finished",p.result),await ae(!1),te.value="success",q.value=p.result.outcome==="curate"?"Review finished. Families can read it on the item page.":"Review finished. It is not in the catalog."}finally{J.value=null}}}async function ae(s=_.autoOpen===!0){var t,n;y.value=!1,F.value=null,q.value=null,se.value=null,pe.value=!1;try{const c=await re("/curationReview/getForCurator",{itemId:_.itemId,ensureOpen:s});if(!c.success||!c.result){F.value=c.message||"The review did not load.";return}const p=c.result;h.value=p.review,C.value=p.previous||[],P.value=p.reports||[],L.value=p.possibleDuplicates||[],W.value=p.ownSuggestion===!0;const V=p.review;if(!V)return;const D=tt(V.checklistVersion),Y=D?st(D,he.value):[],H=xs(Y,es(Y,V.answers,(t=_.item)==null?void 0:t.useCriteria),V.answers,ge.value);b.value=H.answers,ye.value=H.filled.length,U.value=V.outcome,B.value=V.summary||"",K.value=V.internalNote||"",G.value=!1,R.value=V.version,x.value=V.reviewAgainMonths??us(b.value,_.item||{}),j.value=V.declineReason??(D?ds(D,he.value,b.value):null)??ts(et(V.aiDraft),L.value),$.value={},ve.value=[];for(const le of Y)Re[le.key]=!1,(n=b.value[le.key])!=null&&n.comment&&(Ie[le.key]=!0)}catch(c){F.value=(c==null?void 0:c.message)||"The review did not load."}finally{y.value=!0}}return a({load:ae}),Lt(ae),(s,t)=>{var le,Be;const n=k("b-spinner"),c=k("b-alert"),p=k("b-button"),V=k("b-icon"),D=k("b-form-textarea"),Y=k("b-form-select"),H=k("b-form-group");return l(),o("div",{ref_key:"root",ref:A,class:"curation-review-form","data-test-id":"
1curationReviewForm"},[y.value?F.value?(l(),o("div",js,[m(c,{variant:"danger","model-value":!0,class:"mb-2"},{default:f(()=>[g(r(F.value),1)]),_:1}),i("div",null,[m(p,{size:"sm",variant:"outline-secondary",onClick:t[0]||(t[0]=v=>ae())},{default:f(()=>[...t[13]||(t[13]=[g("Try again",-1)])]),_:1})])])):h.value&&ne.value?(l(),o(z,{key:2},[i("section",Bs,[i("header",Ks,[t[14]||(t[14]=i("h2",{class:"knd-section-title"},"Checklist",-1)),i("span",Ys,[g(r(O(Wt)(h.value.openReason)),1),h.value.openedAt?(l(),o("span",Js," · opened "+r(oe(h.value.openedAt)),1)):u("",!0)])]),h.value.underReview?(l(),w(c,{key:0,variant:"warning","model-value":!0,class:"small py-2"},{default:f(()=>[...t[15]||(t[15]=[g(" Under review: Kindredly is not recommending it until this review is finished. ",-1)])]),_:1})):u("",!0),be.value?(l(),w(c,{key:1,variant:be.value.tone,"model-value":!0,class:"small py-2","data-test-id":"curationReviewLinkCheck"},{default:f(()=>[i("span",Hs,r(be.value.title),1),g(" "+r(be.value.detail),1)]),_:1},8,["variant"])):u("",!0),L.value.length?(l(),w(c,{key:2,variant:"warning","model-value":!0,class:"small py-2","data-test-id":"curationReviewDuplicates"},{default:f(()=>[t[16]||(t[16]=i("div",{class:"fw-semibold mb-1"},"It may already be in the catalog",-1)),i("ul",Ws,[(l(!0),o(z,null,Z(L.value,v=>(l(),o("li",{key:v._id},[i("a",{href:ft(v._id),target:"_blank",rel:"noopener noreferrer"},r(v.name||"Untitled"),9,Gs),i("span",Qs," · "+r(O(Gt)(v.reason)),1)]))),128))])]),_:1})):u("",!0),P.value.length?(l(),o("div",Xs,[t[17]||(t[17]=i("div",{class:"small fw-semibold mb-1"},"What families reported",-1)),i("ul",Zs,[(l(!0),o(z,null,Z(P.value,(v,d)=>(l(),o("li",{key:d,class:"mb-1"},[i("span",ea,r(O(Qt)(v.reason)),1),v.comment?(l(),o("span",ta,": “"+r(v.comment)+"”",1)):u("",!0),i("span",sa,[v.reporterRole==="restricted"?(l(),o("span",aa," · from a child")):u("",!0),v.createdAt?(l(),o("span",la," · "+r(oe(v.createdAt)),1)):u("",!0)])]))),128))])])):u("",!0),ye.value?(l(),o("div",ia,[m(V,{icon:"magic",class:"mt-1 flex-shrink-0","aria-hidden":"true"}),i("div",null," Filled in "+r(ye.value)+" "+r(ye.value===1?"check":"checks")+" with the usual "+r((le=ge.value)==null?void 0:le.name)+" answers. Change any that do not fit this link. ",1)])):u("",!0),i("div",na,[i("div",oa,[m(V,{icon:"stars",class:"mt-1 flex-shrink-0","aria-hidden":"true"}),i("div",ra,r(O(Xt)(h.value.aiDraft)),1)]),i("div",ua,[((Be=h.value.aiDraft)==null?void 0:Be.status)==="done"?(l(),w(p,{key:0,size:"sm",variant:"link",class:"p-0",disabled:ie.value,onClick:t[1]||(t[1]=v=>St())},{default:f(()=>[...t[18]||(t[18]=[g(" Fill unanswered checks from the AI draft ",-1)])]),_:1},8,["disabled"])):u("",!0),m(p,{size:"sm",variant:"link",class:"p-0",disabled:ie.value,onClick:t[2]||(t[2]=v=>At())},{default:f(()=>[...t[19]||(t[19]=[g("Ask the AI again",-1)])]),_:1},8,["disabled"])]),se.value?(l(),o("div",da,r(se.value),1)):u("",!0)]),i("div",ma,[i("div",ca,[i("span",null,r(Pe.value)+" of "+r(Q.value.length)+" answered",1),$e.value?(l(),o("span",va,r($e.value)+" required "+r($e.value===1?"check":"checks")+" left ",1)):u("",!0)]),i("div",pa,[i("div",{class:"curation-review-form__progress-bar",style:xt({width:`${ut.value}%`})},null,4)])])]),(l(!0),o(z,null,Z(rt.value,v=>(l(),o("section",{key:v.key,class:"knd-card mb-3","aria-labelledby":`crv-group-${v.key}`,"data-test-id":`curationGroup-${v.key}`},[i("header",ya,[i("div",ha,[i("h3",{id:`crv-group-${v.key}`,class:"knd-section-title mb-0"},r(v.label),9,ga),i("span",ba,r(v.answered)+" of "+r(v.checks.length),1)]),i("div",wa,r(v.note),1)]),(l(!0),o(z,null,Z(v.checks,d=>{var Ke,Ye,Je,He,We,Ge,Qe,Xe,Ze;return l(),o("div",{key:d.key,class:it(["curation-review-form__check",{"has-issue":!!$.value[d.key]}]),"data-test-id":`curationCheck-${d.key}`},[i("div",ka,[i("div",{id:`crv-${d.key}-label`,class:"fs-6 fw-semibold"},r(d.publicLabel),9,Ca),d.required&&!v.allRequired?(l(),o("span",Ia,"Required")):u("",!0)]),i("details",Ra,[i("summary",$a,r(d.question),1),i("div",Sa,r(d.instructions),1)]),d.answer.kind==="flags"?(l(),o(z,{key:0},[m(ue,{clearable:"",name:`crv-${d.key}`,"labelled-by":`crv-${d.key}-label`,"model-value":Ae(d),options:vt,"onUpdate:modelValue":M=>bt(d,M)},null,8,["name","labelled-by","model-value","onUpdate:modelValue"]),Ae(d)==="found"?(l(),o("div",Aa,[i("div",{id:`crv-${d.key}-found-label`,class:"small text-muted mb-1"},"Mark each one found",8,Va),m(ue,{multiple:"",name:`crv-${d.key}-found`,"labelled-by":`crv-${d.key}-found-label`,"model-value":Se(d),options:gt(d),"onUpdate:modelValue":M=>_e(d,M)}
1,null,8,["name","labelled-by","model-value","options","onUpdate:modelValue"])])):u("",!0)],64)):(l(),w(ue,{key:1,clearable:"",name:`crv-${d.key}`,"labelled-by":`crv-${d.key}-label`,"model-value":we(d),options:ht(d),"onUpdate:modelValue":M=>_e(d,M)},null,8,["name","labelled-by","model-value","options","onUpdate:modelValue"])),ke(d)&&!It(d)?(l(),o("div",Ea,[i("span",Ta,[t[20]||(t[20]=g(" AI suggests ",-1)),i("span",Fa,r(Ct(d)),1),ze(d)!==null?(l(),o("span",Ma," ("+r(ze(d))+"% sure)",1)):u("",!0)]),m(p,{size:"sm",variant:"link",class:"p-0",onClick:M=>$t(d)},{default:f(()=>[...t[21]||(t[21]=[g("Use this",-1)])]),_:1},8,["onClick"]),(Ke=ke(d))!=null&&Ke.rationale?(l(),o("details",Na,[t[22]||(t[22]=i("summary",{class:"text-muted"},"Why",-1)),i("div",null,r((Ye=ke(d))==null?void 0:Ye.rationale),1)])):u("",!0)])):u("",!0),Rt(d)?(l(),o("div",Pa,"Usual answer for "+r((Je=ge.value)==null?void 0:Je.name),1)):u("",!0),Le(d)?(l(),o("div",Ua,"Last review: "+r(Le(d)),1)):u("",!0),wt(d)?(l(),o(z,{key:5},[m(D,{class:"mt-2",size:"sm",rows:"2","max-rows":"5","model-value":((He=b.value[d.key])==null?void 0:He.comment)||"",placeholder:"Families read this.","aria-label":`Note for ${d.publicLabel}`,"onUpdate:modelValue":M=>Oe(d,M)},null,8,["model-value","aria-label","onUpdate:modelValue"]),i("div",Da,[(l(!0),o(z,null,Z(((We=b.value[d.key])==null?void 0:We.screenshots)||[],M=>(l(),o("div",{key:M,class:"curation-review-form__shot position-relative"},[i("img",{src:pt(M),alt:"",class:"rounded w-100 h-100 object-fit-cover"},null,8,Oa),m(p,{size:"sm",variant:"light",class:"position-absolute top-0 end-0 py-0 px-1","aria-label":`Remove screenshot from ${d.publicLabel}`,onClick:Ml=>Et(d,M)},{default:f(()=>[m(V,{icon:"x","aria-hidden":"true"})]),_:1},8,["aria-label","onClick"])]))),128)),(((Qe=(Ge=b.value[d.key])==null?void 0:Ge.screenshots)==null?void 0:Qe.length)||0)<O(is)?(l(),o("label",za,[fe[d.key]?(l(),o("span",La,[m(n,{small:"",class:"me-1"}),t[23]||(t[23]=g("Uploading…",-1))])):(l(),o("span",xa,"Attach a screenshot")),i("input",{type:"file",accept:"image/png,image/jpeg,image/webp",class:"visually-hidden",disabled:!!fe[d.key],onChange:M=>Vt(d,M)},null,40,qa)])):u("",!0)])],64)):(l(),w(p,{key:6,size:"sm",variant:"link",class:"p-0 mt-2",onClick:M=>_t(d)},{default:f(()=>[...t[24]||(t[24]=[g("Add a note",-1)])]),_:1},8,["onClick"])),(Ze=(Xe=b.value[d.key])==null?void 0:Xe.screenshots)!=null&&Ze.length&&kt(d)?(l(),o("div",ja," Only curators see these: families are not shown screenshots on a concern, a fail or mature content. ")):u("",!0),$.value[d.key]?(l(),o("div",Ba,r($.value[d.key]),1)):u("",!0)],10,_a)}),128))],8,fa))),128)),i("section",Ka,[t[30]||(t[30]=i("h2",{class:"knd-section-title mb-3"},"Decision",-1)),i("div",null,[m(ue,{modelValue:U.value,"onUpdate:modelValue":t[3]||(t[3]=v=>U.value=v),name:"crv-outcome",label:"Decision",options:[{value:"curate",text:De.value.curate,tone:"pass"},{value:"decline",text:De.value.decline,tone:"fail"}]},null,8,["modelValue","options"]),$.value[O(X).outcome]?(l(),o("div",Ya,r($.value[O(X).outcome]),1)):u("",!0),W.value?(l(),o("div",Ja," You published this, so another curator has to finish its review. You can still save a draft. ")):(l(),o("div",Ha,r(dt.value),1)),U.value==="decline"?(l(),w(H,{key:3,class:"mt-3 mb-0",label:"Reason families read","label-for":"crv-decline"},{default:f(()=>[m(Y,{id:"crv-decline",modelValue:j.value,"onUpdate:modelValue":t[4]||(t[4]=v=>j.value=v),options:mt.value,size:"sm",class:"curation-review-form__select"},null,8,["modelValue","options"]),$.value[O(X).declineReason]?(l(),o("div",Wa,r($.value[O(X).declineReason]),1)):u("",!0)]),_:1})):u("",!0),U.value==="curate"?(l(),o("div",Ga,[t[25]||(t[25]=i("div",{class:"small fw-semibold mb-1"},"Check it again in",-1)),m(ue,{modelValue:x.value,"onUpdate:modelValue":t[5]||(t[5]=v=>x.value=v),name:"crv-again",label:"Check it again in",options:O(ct)},null,8,["modelValue","options"]),$.value[O(X).reviewAgainMonths]?(l(),o("div",Qa,r($.value[O(X).reviewAgainMonths]),1)):u("",!0)])):u("",!0),m(H,{class:"mt-3 mb-0",label:"Summary families read","label-for":"crv-summary"},{default:f(()=>[m(D,{id:"crv-summary",modelValue:B.value,"onUpdate:modelValue":t[6]||(t[6]=v=>B.value=v),rows:"2","max-rows":"5",size:"sm",placeholder:"Optional"},null,8,["modelValue"]),$.value[O(X).summary]?(l(),o("div",Xa,r($.value[O(X).summary]),1)):u("",!0)]),_:1}),G.value||K.value?(l(),w(H,{key:5,class:"mt-3 mb-0",label:"Note for curators","label-for":"crv-note",description:"Families never see this."},{default:f(()=>[m(D,{id:"crv-note",modelValue:K.value,"onUpdate:modelValue":t[7]||(t[7]=v=>K.value=v),rows:"2","max-rows":"5",size:"sm"},null,8,["modelValue"])]),_:1})):(l(),w(p,{key:6,size:"sm",variant:"link",class:"p-0 mt-2",onClick:t[8]||(t[8]=v=>G.value=!0)},{default:f(()=>[...t[26]||(t[26]=[g("Add a note for curators",-1)])]),_:1})),ve.value.length?(l(),o("div",Za,[(l(!0),o(z,null,Z(ve.value,v=>(l(),o("div",{key:v},r(v),1))),128))])):u("",!0),q.value?(l(),w(c,{key:8,variant:te.value,"model-value":!0,class:"small py-2 mt-3 mb-0",role:"status"},{default:f(()=>[g(r(q.value)+" ",1),pe.value?(l(),w(p,{key:0,size:"sm",variant:"link",class:"p-0 ms-1 align-baseline",onClick:t[9]||(t[9]=v=>ae())},{default:f(()=>[...t[27]||(t[27]=[g("Reload",-1)])]),_:1})):u("",!0)]),_:1},8,["variant"])):u("",!0),i("div",el,[m(p,{variant:"outline-secondary",disabled:ie.value,onClick:t[10
1]||(t[10]=v=>Tt())},{default:f(()=>[J.value==="draft"?(l(),w(n,{key:0,small:"",class:"me-1"})):u("",!0),t[28]||(t[28]=g("Save draft ",-1))]),_:1},8,["disabled"]),W.value?u("",!0):(l(),w(p,{key:0,variant:"primary",disabled:ie.value,"data-test-id":"curationReviewFinish",onClick:t[11]||(t[11]=v=>Mt())},{default:f(()=>[J.value==="finish"?(l(),w(n,{key:0,small:"",class:"me-1"})):u("",!0),t[29]||(t[29]=g("Finish review ",-1))]),_:1},8,["disabled"]))])])]),C.value.length?(l(),o("details",tl,[i("summary",null,"Earlier reviews ("+r(C.value.length)+")",1),i("ul",sl,[(l(!0),o(z,null,Z(C.value,v=>(l(),o("li",{key:v._id,class:"mb-1"},[g(r(v.finalizedAt?oe(v.finalizedAt):"")+" · "+r(v.outcome==="curate"?"In the catalog":"Not in the catalog")+" ",1),v.summary?(l(),o("span",al,": "+r(v.summary),1)):u("",!0)]))),128))])])):u("",!0)],64)):(l(),o("div",ll,[q.value?(l(),w(c,{key:0,variant:te.value,"model-value":!0,class:"small py-2",role:"status"},{default:f(()=>[g(r(q.value),1)]),_:1},8,["variant"])):u("",!0),C.value[0]?(l(),o("div",il,[g(" Last reviewed "+r(C.value[0].finalizedAt?oe(C.value[0].finalizedAt):"")+": "+r(C.value[0].outcome==="curate"?"kept in the catalog":"not in the catalog"),1),C.value[0].nextReviewAt?(l(),o("span",nl,". Next check "+r(oe(C.value[0].nextReviewAt)),1)):u("",!0),t[31]||(t[31]=g(". ",-1))])):(l(),o("div",ol,"Nobody has checked this against the checklist yet.")),i("div",null,[m(p,{variant:"primary",size:"sm",disabled:ie.value,"data-test-id":"curationReviewStart",onClick:t[12]||(t[12]=v=>ae(!0))},{default:f(()=>[...t[32]||(t[32]=[g(" Start a review ",-1)])]),_:1},8,["disabled"])])])):(l(),o("div",qs,[m(n,{small:"",label:"Loading the review…"})]))],512)}}}),ul=ce(rl,[["__scopeId","data-v-26160ea0"]]),dl=me({name:"CurateItem",mixins:[nt],components:{PublishedItemDetails:Bt,EditPublished:Ns,CurationReviewForm:ul,SegmentedSubnav:vs},data(){return{itemRaw:null,item:void 0,childItems:[],accessDenied:!0,curated:!1,curationStatus:null,flagged:!1,heldReason:null,underReview:!1,itemId:void 0,easyId:void 0,loading:!1,loadError:null,savingEasyId:!1,savingCuration:!1,errorMessage:null,successMessage:null,editorKey:0}},computed:{tab(){const e=this.$route.query.tab;return e==="details"||e==="preview"?e:"review"},tabs(){const e=`/curate/${this.itemId}`;return[{key:"review",label:"Curation review",icon:"clipboard-check",to:e,active:this.tab==="review"},{key:"details",label:"Details",icon:"pencil-square",to:`${e}?tab=details`,active:this.tab==="details"},{key:"preview",label:"Preview",icon:"eye",to:`${e}?tab=preview`,active:this.tab==="preview"}]},itemUrl(){var e,a,I,_;return((a=(e=this.itemRaw)==null?void 0:e.data)==null?void 0:a.url)||((_=(I=this.itemRaw)==null?void 0:I.meta)==null?void 0:_.url)||null},isCommunity(){var a;const e=(a=this.itemRaw)==null?void 0:a.publicUserId;return!!e&&!ot(e)},statusLabel(){return this.curated?"Curated":this.isCommunity&&this.curationStatus==="declined"?"Not added":this.isCommunity?this.flagged?"In review, held by the safety check":"In review":"Not curated"},statusVariant(){return this.curated?"success":this.isCommunity&&this.curationStatus==="declined"?"secondary":this.flagged?"warning":"info"},statusIcon(){return this.curated?"patch-check-fill":this.isCommunity&&this.curationStatus==="declined"?"x-circle":"hourglass-split"}},methods:{onEdited(){this.errorMessage=null,this.successMessage="Changes saved.",this.loadPublished()},async onReviewFinished(){this.successMessage=null,await this.loadPublished()},async setCurated(e){this.errorMessage=null,this.successMessage=null,this.savingCuration=!0;try{const a=await this.typedSendReq("/published/updateCurationStatus",{itemId:this.itemId,approved:e});if(!a.success)throw new Error((a==null?void 0:a.message)||"The catalog did not change.");await this.loadPublished(),this.successMessage=e?"Marked curated. The checklist was not answered.":"Removed from the catalog."}catch(a){this.errorMessage=a.message}finally{this.savingCuration=!1}},normalizedEasyId(){let e=(this.easyId||"").trim().toLowerCase();if(/[^a-z0-9-]/.test(e))throw new Error("Readable id can only contain letters, numbers, and -");if(!/-\d{3,}$/.test(e)){const a=String(Math.floor(Math.random()*1e4)).padStart(4,"0");e+="-"+a}if(e.length<8){const a=String(Math.floor(Math.random()*1e4)).padStart(4,"0");e=(e+a).slice(0,50)}if(e.length>50)throw new Error("Readable id must be 50 characters or fewer.");return e},async saveEasyId(){if(this.errorMessage=null,this.successMessage=null,!this.easyId){this.errorMessage="Type a readable id first.";return}this.savingEasyId=!0;try{const e=this.normalizedEasyId(),a=await this.typedSendReq("/published/updateEasyId",{itemId:this.itemId,easyId:e});if(!a.success)throw new Error((a==null?void 0:a.message)||"The readable id did not save.");this.easyId=e,this.successMessage="Readable id saved."}catch(e){this.errorMessage=e.message}finally{this.savingEasyId=!1}},async loadPublished(){var a,I,_,E,T,A;const e=await this.typedSendReq("/published/view",{itemId:this.itemId});if(e.success&&e.result){this.loadError=null,this.itemRaw=e.result.info,this.item=Nt(e.result.info),((a=this.item)==null?void 0:a.type)=="col"&&(this.childItems=Pt(e.result.items)),this.curated=this.item.curated,this.curationStatus=((I=this.itemRaw)==null?void 0:I.curationStatus)||null;const y=(E=(_=this.itemRaw)==null?void 0:_.info)==null?void 0:E.postImportProcessing;this.flagged=((T=this.itemRaw)==null?void 0:T.published)===!1&&(y==null?void 0:y.state)==="needs_review",this.heldReason=this.flagged&&(y==null?void 0:y.lastError)||null,this.underReview=!!((A=this.itemRaw)!=null&&A.underReviewAt),this.easyId=this.item.easyId,this.editorKey++}
1else{const y=(e==null?void 0:e.message)||"The item did not load.";this.item?this.errorMessage=y:this.loadError=y}this.loading=!1},async load(){this.loading=!0,this.loadError=null;const e=await this.loadPublicProfile();if(this.accessDenied=!e||!e.curator,this.accessDenied){this.loading=!1;return}await this.loadPublished()}},created(){this.itemId=this.$route.params.itemId,this.load()}}),ml={class:"curate-item py-3 px-3"},cl={class:"curate-item__raw"},vl={key:0,class:"text-center text-muted my-5"},pl={key:1,class:"curate-item__page"},fl={class:"d-flex align-items-start justify-content-between flex-wrap gap-3 mb-3"},yl={class:"curate-item__title"},hl={class:"knd-page-title mb-1"},gl={class:"d-flex align-items-center flex-wrap gap-2 small"},bl=["href"],wl={key:2,class:"text-muted"},_l={class:"d-flex align-items-center flex-wrap gap-2"},kl={"data-test-id":"curateReviewTab"},Cl={key:0},Il={"data-test-id":"curateDetailsTab"},Rl={class:"knd-card mb-3"},$l={class:"knd-card mb-3"},Sl={class:"d-flex gap-2 curate-item__easy-id"},Al={"data-test-id":"curatePreviewTab"},Vl={class:"knd-card curate-item__preview"},El={key:2,class:"text-center my-5"},Tl={key:3,class:"text-center my-5"};function Fl(e,a,I,_,E,T){var x;const A=k("b-modal"),y=k("b-icon"),F=k("router-link"),h=k("b-badge"),C=k("b-spinner"),P=k("b-button"),L=k("b-alert"),W=k("SegmentedSubnav"),b=k("CurationReviewForm"),U=k("EditPublished"),j=k("b-form-input"),B=k("b-form-group"),K=k("PublishedItemDetails"),G=lt("b-modal");return l(),o("div",ml,[m(A,{lazy:"true",id:"raw-item-modal",title:"Raw record","hide-footer":"",size:"xl"},{default:f(()=>[i("pre",cl,r(e.itemRaw),1)]),_:1}),e.accessDenied&&!e.loading?(l(),o("div",vl," Only curators can open the curation page. ")):e.item?(l(),o("div",pl,[m(F,{to:"/curate",class:"small text-decoration-none d-inline-flex align-items-center gap-1 mb-2"},{default:f(()=>[m(y,{icon:"arrow-left","aria-hidden":"true"}),a[5]||(a[5]=g("Curation queue ",-1))]),_:1}),i("div",fl,[i("div",yl,[i("h1",hl,r(e.item.name||"Untitled"),1),i("div",gl,[m(h,{variant:e.statusVariant,pill:""},{default:f(()=>[m(y,{icon:e.statusIcon,class:"me-1","aria-hidden":"true"},null,8,["icon"]),g(" "+r(e.statusLabel),1)]),_:1},8,["variant"]),e.underReview?(l(),w(h,{key:0,variant:"warning",pill:""},{default:f(()=>[...a[6]||(a[6]=[g("Under review",-1)])]),_:1})):u("",!0),e.itemUrl?(l(),o("a",{key:1,href:e.itemUrl,target:"_blank",rel:"noopener",class:"curate-item__url text-truncate"},r(e.itemUrl),9,bl)):u("",!0),e.isCommunity?(l(),o("span",wl,"Published by "+r(((x=e.itemRaw)==null?void 0:x.username)||"a family"),1)):u("",!0)])]),i("div",_l,[e.curated?e.isCommunity?u("",!0):(l(),w(P,{key:1,size:"sm",variant:"outline-secondary",disabled:e.savingCuration,"data-test-id":"curateRemoveFromCatalog",onClick:a[1]||(a[1]=R=>e.setCurated(!1))},{default:f(()=>[e.savingCuration?(l(),w(C,{key:0,small:"",class:"me-1"})):u("",!0),a[8]||(a[8]=g("Remove from the catalog ",-1))]),_:1},8,["disabled"])):(l(),w(P,{key:0,size:"sm",variant:"outline-success",disabled:e.savingCuration,"data-test-id":"curateMarkCurated",onClick:a[0]||(a[0]=R=>e.setCurated(!0))},{default:f(()=>[e.savingCuration?(l(),w(C,{key:0,small:"",class:"me-1"})):u("",!0),a[7]||(a[7]=g("Mark curated ",-1))]),_:1},8,["disabled"])),m(P,{size:"sm",variant:"outline-primary",to:`/v/${e.itemId}`,target:"_blank"},{default:f(()=>[a[9]||(a[9]=g(" Open public page ",-1)),m(y,{icon:"box-arrow-up-right",class:"ms-1","aria-hidden":"true"})]),_:1},8,["to"]),de((l(),w(P,{size:"sm",variant:"link"},{default:f(()=>[...a[10]||(a[10]=[g("Raw record",-1)])]),_:1})),[[G,void 0,void 0,{"raw-item-modal":!0}]])])]),e.errorMessage?(l(),w(L,{key:0,variant:"danger","model-value":!0,class:"small py-2"},{default:f(()=>[g(r(e.errorMessage),1)]),_:1})):u("",!0),e.successMessage?(l(),w(L,{key:1,variant:"success","model-value":!0,class:"small py-2",role:"status"},{default:f(()=>[g(r(e.successMessage),1)]),_:1})):u("",!0),m(W,{items:e.tabs,align:"start","aria-label":"Curation sections",class:"mb-3"},null,8,["items"]),de(i("div",kl,[e.isCommunity&&e.flagged?(l(),w(L,{key:0,variant:"warning","model-value":!0,class:"small py-2"},{default:f(()=>[a[11]||(a[11]=g(" The safety check held this before anyone read it",-1)),e.heldReason?(l(),o("span",Cl,": "+r(e.heldReason),1)):u("",!0),a[12]||(a[12]=g(". Adding it overrides that. ",-1))]),_:1})):u("",!0),e.itemRaw?(l(),w(b,{key:1,"item-id":e.itemRaw._id,item:e.itemRaw,"auto-open":e.isCommunity&&e.curationStatus==="pending",onFinished:e.onReviewFinished},null,8,["item-id","item","auto-open","onFinished"])):u("",!0)],512),[[Ee,e.tab==="review"]
1]),de(i("div",Il,[i("div",Rl,[e.itemRaw?(l(),w(U,{key:e.editorKey,itemProp:e.itemRaw,lockFamilyText:e.isCommunity,onClose:e.onEdited},null,8,["itemProp","lockFamilyText","onClose"])):u("",!0)]),i("div",$l,[m(B,{class:"mb-0",label:"Readable id","label-for":"curateEasyId",description:"Letters, numbers and - only. A number is added to the end to keep it unique."},{default:f(()=>[i("div",Sl,[m(j,{id:"curateEasyId",modelValue:e.easyId,"onUpdate:modelValue":a[2]||(a[2]=R=>e.easyId=R),placeholder:"e.g. khan-academy",size:"sm"},null,8,["modelValue"]),m(P,{size:"sm",variant:"outline-secondary",disabled:e.savingEasyId,onClick:a[3]||(a[3]=R=>e.saveEasyId())},{default:f(()=>[e.savingEasyId?(l(),w(C,{key:0,small:"",class:"me-1"})):u("",!0),a[13]||(a[13]=g("Save ",-1))]),_:1},8,["disabled"])])]),_:1})])],512),[[Ee,e.tab==="details"]]),de(i("div",Al,[i("div",Vl,[m(K,{item:e.item},null,8,["item"])])],512),[[Ee,e.tab==="preview"]])])):e.loadError?(l(),o("div",El,[m(L,{variant:"danger","model-value":!0,class:"d-inline-block"},{default:f(()=>[g(r(e.loadError),1)]),_:1}),i("div",null,[m(P,{size:"sm",variant:"outline-secondary",onClick:a[4]||(a[4]=R=>e.load())},{default:f(()=>[...a[14]||(a[14]=[g("Try again",-1)])]),_:1})])])):(l(),o("div",Tl,[m(C,{label:"Loading…"})]))])}const ji=ce(dl,[["render",Fl],["__scopeId","data-v-f0322715"]]);export{ji as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.