1import{a as ht}from"./chunk-HCVXUOBN.js";import{a as me}from"./chunk-MMTKRO56.js";import{a as ct}from"./chunk-G6MFXPAI.js";import{a as pt,b as ut,c as gt,d as ve,i as mt,j as _t,k as xt}from"./chunk-SBUN54QL.js";import{a as st}from"./chunk-5Z5VX3GA.js";import{b as lt}from"./chunk-LYP2UD3C.js";import{a as dt}from"./chunk-BTJ2NYS5.js";import"./chunk-SMCVK6WY.js";import{a as ge}from"./chunk-OXJVLSTV.js";import{a as V,g as Q,h as Ze,i as et,j as tt,k as it,l as pe,m as ot,n as Le,o as ue,p as nt}from"./chunk-D2NO4KT7.js";import{a as at}from"./chunk-GZ7T3QQN.js";import"./chunk-KDLYMKIV.js";import{a as rt}from"./chunk-JJOYE3Z2.js";import{a as Ue,b as Ge}from"./chunk-ICCFXSA7.js";import{a as Ke,b as qe,c as Je}from"./chunk-DPUWAQK7.js";import{a as ce}from"./chunk-UGUW2DO3.js";import{a as Ye}from"./chunk-KDDLE6SG.js";import{a as Qe}from"./chunk-3XPEJ43L.js";import"./chunk-UX3Q2DNZ.js";import{a as J}from"./chunk-72IIJCDY.js";import"./chunk-B4ZOTX47.js";import"./chunk-5533NBM6.js";import{c as je,e as Xe}from"./chunk-QHHKP5DR.js";import"./chunk-ZXV3QX2B.js";import{a as He}from"./chunk-K7WHQU6Z.js";import"./chunk-TSKORJU2.js";import"./chunk-THZ2D63W.js";import{c as Fe,d as ae,e as le,g as Be,h as de,j as Ve,k as se}from"./chunk-T4PNOQAR.js";import{b as re}from"./chunk-Q46OBKDW.js";import{n as ne}from"./chunk-VOC6FNVG.js";import"./chunk-HJVOLOTM.js";import"./chunk-FBNJQQ35.js";import"./chunk-X7XWPRUP.js";import"./chunk-OWNE2HX6.js";import{s as Ne}from"./chunk-O244GM7M.js";import{f as De,k as Re,n as ze}from"./chunk-2BFNCTTG.js";import{$b as T,Ac as u,Bc as S,Ec as k,Fc as I,G as B,Gc as M,Ic as Ce,Jb as y,Kc as Oe,Lb as w,Mb as we,Nb as b,Nc as m,Oc as _,P as z,Pb as Ie,Qb as be,Rb as Se,S as E,Sb as p,Tb as a,Ub as l,Vb as O,Za as n,Zc as te,cb as ke,f as Te,g as ee,gc as L,ha as h,hc as Me,ia as f,ic as Ae,kc as g,mb as W,mc as c,o as $,rb as N,s as F,t as P,u as D,wa as Ee,wc as $e,xc as Pe,zc as s}from"./chunk-OJHC7XXI.js";import"./chunk-WDH2R6TX.js";import{a as R,b as Z,h as A}from"./chunk-WT3RV3XA.js";function Ct(d,t){if(d&1){let i=T();a(0,"label",22)(1,"span",34),s(2),l(),a(3,"app-combobox",35),g("valueChange",function(o){h(i);let r=c();return f(r.onLanguagePairChange(o));}),l()();}if(d&2){let i=c();n(2),u(i.languagePairLabel),n(),p("options",i.languagePairOptions)("value",i.selectedLanguagePairKey)("placeholder",i.searchLanguagePairsPlaceholder)("ariaLabel",i.languagePairLabel);}}var _e=class d{constructor(t,i,e,o,r){this.data=t;this.modalRef=i;this.wordsService=e;this.toast=o;this.analytics=r;this.selectedLanguagePairKey=this.defaultLanguagePairKey();}data;modalRef;wordsService;toast;analytics;exportScope="language-scope";exportDirection="term-first";selectedLanguagePairKey="";includeSourceSentence=!0;includeTranslatedSentence=!0;includeLanguages=!0;includeAudioField=!1;includeTags=!0;exporting=!1;exportDialogTitle="Download your vocabulary";exportDialogDescription="Choose what goes into the text file, then import it in Anki with your preferred note type.";closeExportDialogLabel="Close export dialog";exportScopeLabel="Export scope";exportScopeHelp="Choose which saved words belong in this download.";allWordsLabel="All words";allWordsHelp="Export every saved word with a term and translation.";currentLanguageScopeLabel="Current language scope";currentLanguageScopeHelp="Export words for your active learning language pair.";visibleInListLabel="Visible in list";visibleWordsMatchingLabel="matching the current filters";adjustFiltersLabel="Adjust filters so words appear in the list first.";visibleInListEmpty="Adjust filters so words appear in the list first.";selectedWordsLabel="Selected words";selectedWordsCountLabel="selected";selectWordsFirstLabel="Select words in the list first.";selectedWordsEmpty="Select words in the list first.";languagePairLabel="Language pair";searchLanguagePairsPlaceholder="Search language pairs";cardFrontLabel="Card front";cardFrontHelp="Pick which side of the card appears first in Anki.";originalTermFirstLabel="Original term first";originalTermFirstHelp="The translation stays on the back.";translationFirstLabel="Translation first";translationFirstHelp="Useful when you want the prompt reversed.";fieldsLabel="Fields";fieldsHelp="Include the columns you want Anki to map on import.";sourceSentenceLabel="Source sentence";translatedSentenceLabel="Translated sentence";languageFieldsLabel="Language fields";tagsLabel="Stickly/language tags";tagsHelp="Adds a tags column with Stickly and language labels.";audioFieldLabel="Audio field placeholder";audioFieldHelp="No audio files are bundled; this only reserves a field for later media.";
1contextWarning="Context can contain text from pages you visited. Review before sharing.";importHelp="In Anki, choose File > Import and confirm the note type and field mapping.";cancelLabel="Cancel";downloadingLabel="Downloading\u2026";downloadLabel="Download .txt";closeLabel="Close export dialog";get selectedWordCount(){return this.data.selectedWordIds.length;}get visibleWordCount(){return this.data.visibleWordIds.length;}get languagePairOptions(){return this.data.languagePairOptions.map(t=>({value:Q(t.sourceLang,t.targetLang),label:`${ue(t.sourceLang,t.targetLang)} (${t.count})`}));}get showLanguagePairPicker(){return this.exportScope==="language-scope"&&this.languagePairOptions.length>0;}get canExportSelected(){switch(this.exportScope){case"selected":return this.selectedWordCount>0;case"visible":return this.visibleWordCount>0;default:return!0;}}close(){this.exporting||this.modalRef.close(!1);}setExportScope(t){this.exportScope=t;}setExportDirection(t){this.exportDirection=t;}onLanguagePairChange(t){this.selectedLanguagePairKey=t??"";}exportWords(){return A(this,null,function*(){if(this.exporting||!this.canExportSelected)return;this.exporting=!0;let t=this.exportScope,i=this.exportDirection,e=this.includeSourceSentence,o=this.includeTranslatedSentence,r=this.includeLanguages,x=this.includeAudioField,C=this.includeTags,H=[...this.data.selectedWordIds],U=[...this.data.visibleWordIds],G=this.data.learnLanguage,j=this.data.nativeLanguage,X=t==="language-scope"?this.data.languageScope:void 0,Y=this.resolveLanguagePair();try{let K=yield F(this.wordsService.words.pipe(B(1))),ie={scope:t,selectedWordIds:H,visibleWordIds:U,learnLanguage:G,nativeLanguage:j,languageScope:X,languagePair:Y,direction:i,includeSourceSentence:e,includeTranslatedSentence:o,includeLanguages:r,includeAudioField:x,includeTags:C},q=yield this.wordsService.exportWords(ie),oe=this.emptyExportMessage(t);if(this.analytics.trackEvent("Export words to Anki",{totalWordCount:K.length,selectedWordCount:H.length,visibleWordCount:U.length,exportedRowCount:q.exportedRowCount,downloaded:q.downloaded,scope:t,direction:i,learnLanguage:G,nativeLanguage:j,languageScope:X,languagePair:Y,includeSourceSentence:e,includeTranslatedSentence:o,includeLanguages:r,includeAudioField:x,includeTags:C}),q.exportedRowCount===0){this.toast.open(oe,void 0,{duration:3e3});return;}this.modalRef.close(!0);}catch{this.toast.open("We could not export those words. Please try again.",void 0,{duration:4e3});let K=yield F(this.wordsService.words.pipe(B(1)));this.analytics.trackEvent("Export words to Anki",{totalWordCount:K.length,selectedWordCount:H.length,visibleWordCount:U.length,exportedRowCount:0,downloaded:!1,scope:t,direction:i,learnLanguage:G,nativeLanguage:j,languageScope:X,languagePair:Y,includeSourceSentence:e,includeTranslatedSentence:o,includeLanguages:r,includeAudioField:x,includeTags:C,failed:!0});}finally{this.exporting=!1;}});}defaultLanguagePairKey(){let{languageScope:t,languagePairOptions:i}=this.data;if(t.kind==="pair"&&t.sourceLang&&t.targetLang)return Q(t.sourceLang,t.targetLang);let e=i.find(r=>r.isMainPair);if(e)return Q(e.sourceLang,e.targetLang);let o=i[0];return o?Q(o.sourceLang,o.targetLang):"";}resolveLanguagePair(){if(this.exportScope==="language-scope"){if(this.selectedLanguagePairKey){let t=this.data.languagePairOptions.find(i=>Q(i.sourceLang,i.targetLang)===this.selectedLanguagePairKey);if(t)return{source:t.sourceLang,target:t.targetLang};}if(this.data.languageScope.kind==="pair"&&this.data.languageScope.sourceLang&&this.data.languageScope.targetLang)return{source:this.data.languageScope.sourceLang,target:this.data.languageScope.targetLang};}}emptyExportMessage(t){switch(t){case"selected":return"No selected words to export.";case"visible":return"No visible words to export.";case"language-scope":return"No words match the current language scope.";default:return"No words to export.";}}static ɵfac=function(i){return new(i||d)(W(qe),W(Ke),W(ge),W(me),W(ne));};static ɵcmp=N({type:d,selectors:[["app-anki-export-modal"]],hostAttrs:[1,"flex","min-h-0","w-full","flex-1","flex-col","overflow-hidden","bg-surface"],decls:104,vars:62,consts:[["role","document","aria-labelledby","anki-export-title","aria-describedby","anki-export-description",1,"flex","min-h-0","flex-1","flex-col","overflow-hidden","sm:max-h-[min(80vh,44rem)]"],[1,"shrink-0","border-b","border-border/20","bg-surface/80","px-5","py-4","sm:px-6"],[1,"flex","items-start","justify-between","gap-3"],[1,"m-0","text-[0.68rem]","font-extrabold","uppercase","tracking-[0.16em]","text-accent"],["id","anki-export-title",1,"mt-1","text-[clamp(1.35rem,2.8vw,1.75rem)]","font-bold","leading-tight","tracking-[-0.03em]","text-ink"],["id","anki-export-description",1,"mt-1.5","max-w-[34rem]","text-[0.84rem]","leading-5","text-muted"],["type","button",1,"inline-flex","
1size-9","shrink-0","items-center","justify-center","rounded-full","border","border-border/20","bg-canvas/70","text-muted","transition","hover:border-border/40","hover:bg-canvas","hover:text-ink","focus-visible:outline","focus-visible:outline-2","focus-visible:outline-offset-2","focus-visible:outline-accent",3,"click","disabled"],["name","close",1,"!p-0","text-[1.1rem]",3,"interactive"],[1,"flex","min-h-0","flex-1","flex-col",3,"ngSubmit"],[1,"grid","min-h-0","flex-1","gap-3","overflow-y-auto","overscroll-contain","px-5","py-4","[-webkit-overflow-scrolling:touch]","sm:px-6"],[1,"grid","gap-3","lg:grid-cols-2"],["role","radiogroup",1,"grid","gap-2","rounded-xl","border","border-border/20","bg-canvas/70","p-3","shadow-subtle"],[1,"m-0","text-[0.68rem]","font-extrabold","uppercase","tracking-[0.12em]","text-muted"],[1,"mt-0.5","mb-0","text-[0.76rem]","leading-5","text-muted"],[1,"grid","gap-1.5"],["value","all",3,"select","selected"],[1,"grid","gap-0.5"],[1,"font-semibold","text-ink"],[1,"text-[0.74rem]","leading-5","text-muted"],["value","language-scope",3,"select","selected"],["value","visible",3,"select","selected","disabled"],["value","selected",3,"select","selected","disabled"],[1,"grid","gap-2","pt-1"],["value","term-first",3,"select","selected"],["value","meaning-first",3,"select","selected"],[1,"grid","gap-1.5","rounded-xl","border","border-border/20","bg-canvas/70","p-3","shadow-subtle"],[1,"w-full","rounded-lg","border","border-transparent","px-2.5","py-1.5","transition","hover:border-border/20","hover:bg-surface/60",3,"checkedChange","fullWidth","checked"],[1,"m-0","rounded-lg","border","border-border/20","bg-canvas/70","px-3","py-2.5","text-[0.74rem]","leading-5","text-muted"],[1,"shrink-0","border-t","border-border/20","bg-canvas/75","px-5","py-3","sm:px-6"],[1,"flex","flex-col-reverse","gap-2.5","sm:flex-row","sm:items-center","sm:justify-between"],[1,"m-0","text-[0.74rem]","leading-5","text-muted","sm:max-w-[18rem]"],[1,"flex","flex-wrap","justify-end","gap-2"],["type","ghost",3,"click","noMargin","disabled"],["type","highlight",3,"isSubmit","noMargin","disabled"],[1,"text-[0.68rem]","font-extrabold","uppercase","tracking-[0.12em]","text-muted"],[3,"valueChange","options","value","placeholder","ariaLabel"]],template:function(i,e){i&1&&(a(0,"div",0)(1,"header",1)(2,"div",2)(3,"div")(4,"p",3),s(5),l(),a(6,"h2",4),s(7),l(),a(8,"p",5),s(9),l()(),a(10,"button",6),g("click",function(){return e.close();}),O(11,"app-icon",7),l()()(),a(12,"form",8),g("ngSubmit",function(){return e.exportWords();}),a(13,"div",9)(14,"div",10)(15,"section",11)(16,"div")(17,"h3",12),s(18),l(),a(19,"p",13),s(20),l()(),a(21,"div",14)(22,"app-radio",15),g("select",function(r){return e.setExportScope(r);}),a(23,"span",16)(24,"span",17),s(25),l(),a(26,"span",18),s(27),l()()(),a(28,"app-radio",19),g("select",function(r){return e.setExportScope(r);}),a(29,"span",16)(30,"span",17),s(31),l(),a(32,"span",18),s(33),l()()(),a(34,"app-radio",20),g("select",function(r){return e.setExportScope(r);}),a(35,"span",16)(36,"span",17),s(37),l(),a(38,"span",18),s(39),l()()(),a(40,"app-radio",21),g("select",function(r){return e.setExportScope(r);}),a(41,"span",16)(42,"span",17),s(43),l(),a(44,"span",18),s(45),l()()()(),w(46,Ct,4,5,"label",22),l(),a(47,"section",11)(48,"div")(49,"h3",12),s(50),l(),a(51,"p",13),s(52),l()(),a(53,"div",14)(54,"app-radio",23),g("select",function(r){return e.setExportDirection(r);}),a(55,"span",16)(56,"span",17),s(57),l(),a(58,"span",18),s(59),l()()(),a(60,"app-radio",24),g("select",function(r){return e.setExportDirection(r);}),a(61,"span",16)(62,"span",17),s(63),l(),a(64,"span",18),s(65),l()()()()()(),a(66,"section",25)(67,"div")(68,"h3",12),s(69),l(),a(70,"p",13),s(71),l()(),a(72,"app-checkbox",26),M("checkedChange",function(r){return I(e.includeSourceSentence,r)||(e.includeSourceSentence=r),r;}),a(73,"span",17),s(74),l()(),a(75,"app-checkbox",26),M("checkedChange",function(r){return I(e.includeTranslatedSentence,r)||(e.includeTranslatedSentence=r),r;}),a(76,"span",17),s(77),l()(),a(78,"app-checkbox",26),M("checkedChange",function(r){return I(e.includeLanguages,r)||(e.includeLanguages=r),r;}),a(79,"span",17),s(80),l()(),a(81,"app-checkbox",26),M("checkedChange",function(r){return I(e.includeTags,r)||(e.includeTags=r),r;}),a(82,"span",16)(83,"span",17),s(84),l(),a(85,"span",18),s(86),l()()(),a(87,"app-checkbox",26),M("checkedChange",function(r){return I(e.includeAudioField,r)||(e.includeAudioField=r),r;}),a(88,"span",16)(89,"span",17),s(90),l(),a(91,"span",18),s(92),l()()()(),a(93,"p",27),s(94),l()(),a(95,"footer",28)(96,"div",29)(97,"p",30),s(98),l(),a(99,"div",31)(100,"app-button",32),g("click",function(){return e.close();}),s(101),l(),a(102,"app-button",33),s(103),l()()()()()()),i&2&&(n(5),u(e.exportScopeLabel),n(2),S(" ",e.exportDialogTitle," "),n(2),S(" ",e.exportDialogDescription," "),n(),p("disabled",e.exporting),y("aria-label",e.closeExportDialogLabel),n(),p("interactive",!1),n(),y("aria-busy",e.exporting),n(3),y("aria-label",e.exportScopeLabel),n(3),u(e.exportScopeLabel),n(2),u(e.exportScopeHelp),n(2),p("selected",e.exportScope==="all"),n(3),u(e.allWordsLabel),n(2),u(e.allWordsHelp),n(),p("selected",e.exportScope==="language-scope"),n(3),u(e.currentLanguageScopeLabel),n(2),u(e.currentLanguageScopeHelp),n(),p("selected",e.exportScope==="visible")("disabled",!e.visibleWordCount),n(3),u(e.visibleInListLabel),n(2),S(" ",e.visibleWordCount?e.visibleWordCount+" "+e.visibleWordsMatchingLabel:e.adjustFiltersLabel," "),n(),p("selected",e.exportScope==="selected")("disabled",!e.selectedWordCount),n(3),u(e.selectedWordsLabel),n(2),S(" ",e.selectedWordCount?e.selectedWordCount+" "+e.selectedWordsCountLabel:e.selectWordsFirstLabel," "),n(),b(e.showLanguagePairPicker?46:-1),n(),y("aria-label",e.cardFrontLabel),n(3),u(e.cardFrontLabel),n(2),u(e.cardFrontHelp),n(2),p("selected",e.exportDirection==="term-first"),n(3),u(e.originalTermFirstLabel),n(2),u(e.originalTermFirstHelp),n(),p("selected",e.exportDirection==="meaning-first"),n(3),u(e.translationFirstLabel),n(2),u(e.translationFirstHelp),n(4),u(e.fieldsLabel),n(2),u(e.fields
1Help),n(),p("fullWidth",!0),k("checked",e.includeSourceSentence),n(2),u(e.sourceSentenceLabel),n(),p("fullWidth",!0),k("checked",e.includeTranslatedSentence),n(2),u(e.translatedSentenceLabel),n(),p("fullWidth",!0),k("checked",e.includeLanguages),n(2),u(e.languageFieldsLabel),n(),p("fullWidth",!0),k("checked",e.includeTags),n(3),u(e.tagsLabel),n(2),u(e.tagsHelp),n(),p("fullWidth",!0),k("checked",e.includeAudioField),n(3),u(e.audioFieldLabel),n(2),u(e.audioFieldHelp),n(2),S(" ",e.contextWarning," "),n(4),S(" ",e.importHelp," "),n(2),p("noMargin",!0)("disabled",e.exporting),n(),S(" ",e.cancelLabel," "),n(),p("isSubmit",!0)("noMargin",!0)("disabled",e.exporting||!e.canExportSelected),n(),S(" ",e.exporting?e.downloadingLabel:e.downloadLabel," "));},dependencies:[se,de,ae,le,re,ce,at,J,lt],encapsulation:2});};var xe=class d{length=te(0);pageSize=te(25);pageIndex=te(0);pageSizeOptions=te([10,25,50,100]);page=new ke();rangeLabel="";rowsPerPageLabel="Rows per page:";previousPageLabel="Previous page";nextPageLabel="Next page";get pageSizeSelectOptions(){return this.pageSizeOptions().map(t=>({value:t.toString(),label:t.toString()}));}get isLastPage(){return this.pageIndex()>=Math.ceil(this.length()/this.pageSize())-1;}ngOnChanges(){this.updateRangeLabel();}prevPage(){this.pageIndex()>0&&this.emit(this.pageIndex()-1,this.pageSize());}nextPage(){this.isLastPage||this.emit(this.pageIndex()+1,this.pageSize());}onPageSizeChange(t){t&&this.emit(0,Number(t));}emit(t,i){this.page.emit({pageIndex:t,pageSize:i,length:this.length()});}updateRangeLabel(){let t=this.length();if(t===0){this.rangeLabel="0 of 0";return;}let i=this.pageIndex()*this.pageSize()+1,e=Math.min((this.pageIndex()+1)*this.pageSize(),t);this.rangeLabel=""+i+"\u2013"+e+" of "+t+"";}static ɵfac=function(i){return new(i||d)();};static ɵcmp=N({type:d,selectors:[["app-paginator"]],inputs:{length:[1,"length"],pageSize:[1,"pageSize"],pageIndex:[1,"pageIndex"],pageSizeOptions:[1,"pageSizeOptions"]},outputs:{page:"page"},features:[Ee],decls:14,vars:9,consts:[[1,"flex","items-center","justify-between","border-t","border-border/20","bg-transparent","px-4","py-2","text-sm","text-muted"],[1,"flex","items-center","gap-2"],[1,"w-24"],["size","small","theme","dark",3,"valueChange","ariaLabel","value","options"],[1,"flex","items-center","gap-3"],[1,"flex","gap-1"],[1,"flex","h-7","w-7","items-center","justify-center","rounded","text-muted","transition-colors","hover:text-ink","disabled:cursor-not-allowed","disabled:opacity-30",3,"click","disabled"]],template:function(i,e){i&1&&(a(0,"div",0)(1,"div",1)(2,"span"),s(3),l(),a(4,"div",2)(5,"app-select",3),g("valueChange",function(r){return e.onPageSizeChange(r);}),l()()(),a(6,"div",4)(7,"span"),s(8),l(),a(9,"div",5)(10,"button",6),g("click",function(){return e.prevPage();}),s(11," \u2039 "),l(),a(12,"button",6),g("click",function(){return e.nextPage();}),s(13," \u203A "),l()()()()),i&2&&(n(3),u(e.rowsPerPageLabel),n(2),p("ariaLabel",e.rowsPerPageLabel)("value",e.pageSize().toString())("options",e.pageSizeSelectOptions),n(3),u(e.rangeLabel),n(2),p("disabled",e.pageIndex()===0),y("aria-label",e.previousPageLabel),n(2),p("disabled",e.isLastPage),y("aria-label",e.nextPageLabel));},dependencies:[Ye],styles:["[_nghost-%COMP%]{display:block}"]});};var he=class d{constructor(t){this.tts=t;}tts;word;language;label="Play pronunciation";disabled=!1;state="idle";get ariaLabel(){return this.label;}play(t){return A(this,null,function*(){if(t.preventDefault(),t.stopPropagation(),this.disabled||this.state==="loading")return;this.state="loading";let i=yield this.tts.speak(this.word,this.language);this.state=i?"idle":"error",i||window.setTimeout(()=>{this.state="idle";},1800);});}static ɵfac=function(i){return new(i||d)(W(ht));};static ɵcmp=N({type:d,selectors:[["app-word-speak-button"]],inputs:{word:"word",language:"language",label:"label",disabled:"disabled"},decls:2,vars:4,consts:[["type","button",1,"inline-flex","size-9","shrink-0","items-center","justify-center","rounded-full","border","border-border/25","bg-canvas/70","text-muted","transition","hover:border-accent/50","hover:bg-accent/10","hover:text-accent","focus-visible:outline","focus-visible:outline-2","focus-visible:outline-offset-2","focus-visible:outline-accent","disabled:cursor-not-allowed","disabled:opacity-60",3,"click","disabled"],[1,"!p-0","text-[1.05rem]",3,"name","interactive"]],template:function(i,e){i&1&&(a(0,"button",0),g("click",function(r){return e.play(r);}),O(1,"app-icon",1),l()),i&2&&(p("disabled",e.disabled||e.state==="loading"),y("aria-label",e.ariaLabel),n(),p("name",e.state==="loading"?"hourglass_top":e.state==="error"?"volume_off":"volume_up")("interactive",!1));},dependencies:[J],encapsulation:2});};var Lt=(d,t)=>[d,t],vt=()=>[10,25,50,100],Wt=()=>({page:"word-list",position:"empty-state",campaign:"word-list-empty-state"}),yt=(d,t)=>t.id??t.text;function Tt(d,t){if(d&1){let i=T();a(0,"section",24)(1,"app-language-constellation",25),m(2,"async"),g("pairSelect",function(o){h(i);let r=c(2);return f(r.selectLanguagePair(o));}),l()();}if(d&2){let i=c(2);n(),p("pairs",t)("selectedKey",_(2,2,i.selectedPairKey$)??null);}}function Et(d,t){if(d&1){let i=T();a(0,"app-button",38),m(1,"async"),m(2,"async"),m(3,"async"),m(4,"async"),g("click",function(){let o=h(i).$implicit,r=c(3);return f(r.setFilter(o.value));}),a(5,"span"),s(6),l()();}if(d&2){let i,e,o,r,x=t.$implicit,C=c(3);Pe("opacity-70",((i=_(1,7,C.filterCriteria$))==null?null:i.filter)!==x.value),p("type",((e=_(2,9,C.filterCriteria$))==null?null:e.filter)===x.value?"secondary":"ghost")("noMargin",!0)("ariaSelected",((o=_(3,11,C.filterCriteria$))==null?null:o.filter)===x.value)("tabIndex",((r=_(4,13,C.filterCriteria$))==null?null:r.filter)===x.value?0:-1),n(6),u(x.label);}}function kt(d,t){if(d&1){let i=T();a(0,"div",33)(1,"span"),s(2),a(3,"span"),L(4,4),l()(),a(5,"app-button",39),g("click",function(){h(i);let o=c(3);return f(o.deleteWords());}),s(6),l()();}if(d&2){let i=c(3);n(2),S("",i.selectionHeader.selectedCount," "),n(3),p("noMargin",!0),n(),u(i.deleteSelectedLabel);}}function It(d,t){if(d&1){let i=T();a(0,"span",40)(1,"span"),s(2),m(3,"language"),l(),a(4,"button",41),m(5,"language"),g("click",function(){h(i);let o=c(3);return f(o.toggleColumnBlur("left"));}),O(6,"app-icon",42),l()(),a(7,"span",40)(8,"span"),s(9),m(10,"language"),l(),a(11,"button",41),m(12,"language"),g("click",function(){h(i);let o=c(3);return f(o.toggleColumnBlur("right"));}),O(13,"app-icon",42),l()(),a(14,"span",43),L(15,5),l(),a(16,"span",44),L(17,6),l();}if(d&2){let i=c(),e=c(2);n(2),u(_(3,10,i.left)),n(2),y("aria-label",e.blurAriaLabel("left",_(5,12,i.left)))("aria-pressed",e.blurredColumn==="left"),n(2),p("name",e.columnBlurIcon("left"))("interactive",!1),n(3),u(_(10,14,i.right)),n(2),y("aria-label",e.blurAriaLabel("right",_(12,16,i.right)))("aria-pressed",e.blurredColumn==="right"),n(2),p("name",e.columnBlurIcon("right"))("interactive",!1);}}function Mt(d,t){d&1&&(a(0,"div",34)(1,"p",45),L(2,7),l(),a(3,"h2",46)(4,"span"),L(5,8),l()(),a(6,"p",47)(7,"span"),L(8,9),l(
1)()());}function At(d,t){if(d&1&&(a(0,"p",62),s(1),l()),d&2){let i=c(3).$implicit,e=c(),o=c(2);n(),S(" \u201C",o.contextForColumn(i,e.left),"\u201D ");}}function $t(d,t){if(d&1&&(a(0,"p",62),s(1),l()),d&2){let i=c(3).$implicit,e=c(),o=c(2);n(),S(" \u201C",o.contextForColumn(i,e.right),"\u201D ");}}function Pt(d,t){if(d&1&&(a(0,"div",56)(1,"div",57),O(2,"app-word-speak-button",58),a(3,"div",59)(4,"h3",60),s(5),l(),a(6,"p",61),s(7),m(8,"language"),l(),w(9,At,2,1,"p",62),l()()(),a(10,"div",63)(11,"div",57),O(12,"app-word-speak-button",58),a(13,"div",59)(14,"p",64),s(15),l(),a(16,"p",61),s(17),m(18,"language"),l(),w(19,$t,2,1,"p",62),a(20,"p",65),s(21),l()()()()),d&2){let i=t,e=c(2).$implicit,o=c(),r=c(2);n(2),p("word",i.leftTerm)("language",r.ttsLanguageCode(o.left))("label",r.listenToLabel(i.leftTerm)),n(),p("ngClass",r.columnBlurClasses("left")),n(2),S(" ",i.leftTerm," "),n(2),u(_(8,15,o.left)),n(2),b(r.hasContextForColumn(e,o.left)?9:-1),n(3),p("word",i.rightTerm)("language",r.ttsLanguageCode(o.right))("label",r.listenToLabel(i.rightTerm)),n(),p("ngClass",r.columnBlurClasses("right")),n(2),u(i.rightTerm),n(2),u(_(18,17,o.right)),n(2),b(r.hasContextForColumn(e,o.right)?19:-1),n(2),u(e.encounteredLabel);}}function Ot(d,t){if(d&1&&w(0,Pt,22,19),d&2){let i,e=c().$implicit,o=c(),r=c(2);b((i=r.pairColumnTerms(e,o.left,o.right))?0:-1,i);}}function Dt(d,t){if(d&1){let i=T();a(0,"form",67),g("ngSubmit",function(){h(i);let o=c(2).$implicit,r=c(),x=c(2);return f(x.saveEditing(o,r.left,r.right));}),a(1,"div",56)(2,"p",68),s(3),m(4,"language"),l(),a(5,"app-input",69),m(6,"language"),M("ngModelChange",function(o){h(i);let r=c(5);return I(r.editDraft.leftTerm,o)||(r.editDraft.leftTerm=o),f(o);}),l(),a(7,"app-textarea",70),M("ngModelChange",function(o){h(i);let r=c(5);return I(r.editDraft.leftContext,o)||(r.editDraft.leftContext=o),f(o);}),l()(),a(8,"div",63)(9,"p",68),s(10),m(11,"language"),l(),a(12,"app-input",69),m(13,"language"),M("ngModelChange",function(o){h(i);let r=c(5);return I(r.editDraft.rightTerm,o)||(r.editDraft.rightTerm=o),f(o);}),l(),a(14,"app-textarea",70),M("ngModelChange",function(o){h(i);let r=c(5);return I(r.editDraft.rightContext,o)||(r.editDraft.rightContext=o),f(o);}),l()()();}if(d&2){let i=c(2).$implicit,e=c(),o=c(2);n(3),u(_(4,20,e.left)),n(2),p("name","left-term-"+i.id)("required",!0)("ariaLabel",o.editTermAriaLabel(_(6,22,e.left))),k("ngModel",o.editDraft.leftTerm),n(2),p("name","left-context-"+i.id)("rows",2)("placeholder",o.addContextLabel),k("ngModel",o.editDraft.leftContext),p("ariaLabel",o.contextAriaLabel(o.editDraft.leftTerm)),n(3),u(_(11,24,e.right)),n(2),p("name","right-term-"+i.id)("required",!0)("ariaLabel",o.editTermAriaLabel(_(13,26,e.right))),k("ngModel",o.editDraft.rightTerm),n(2),p("name","right-context-"+i.id)("rows",2)("placeholder",o.addContextLabel),k("ngModel",o.editDraft.rightContext),p("ariaLabel",o.contextAriaLabel(o.editDraft.rightTerm));}}function Rt(d,t){if(d&1&&w(0,Dt,15,28,"form",66),d&2){let i=c(4);b(i.editDraft?0:-1);}}function zt(d,t){if(d&1){let i=T();a(0,"div",54)(1,"app-button",71),g("click",function(){h(i);let o=c().$implicit,r=c(),x=c(2);return f(x.saveEditing(o,r.left,r.right));}),s(2),l(),a(3,"app-button",72),g("click",function(){h(i);let o=c(4);return f(o.cancelEditing());}),s(4),l()();}if(d&2){let i=c().$implicit,e=c(3);n(),p("noMargin",!0)("disabled",e.savingWordId===i.id||!(e.editDraft!=null&&e.editDraft.leftTerm.trim())||!(e.editDraft!=null&&e.editDraft.rightTerm.trim())),n(),S(" ",e.savingWordId===i.id?e.savingLabel:e.saveLabel," "),n(),p("noMargin",!0),n(),u(e.cancelLabel);}}function Nt(d,t){if(d&1){let i=T();a(0,"div",55)(1,"app-dropdown",73),g("click",function(o){return h(i),f(o.stopPropagation());}),a(2,"button",74),g("click",function(){h(i);let o=c().$implicit,r=c(),x=c(2);return f(x.onRowMenuEdit(o,r.left,r.right));}),a(3,"span"),L(4,11),l()(),a(5,"button",75),g("click",function(){h(i);let o=c().$implicit,r=c(3);return f(r.onRowMenuDelete(o.id));}),a(6,"span"),L(7,12),l()()()();}if(d&2){let i=c().$implicit,e=c(3);n(),p("ariaLabel",e.actionsAriaLabel(i.learning.learnedTerm));}}function Ft(d,t){if(d&1){let i=T();a(0,"article",35)(1,"app-checkbox",48),m(2,"async"),g("checkedChange",function(o){let r=h(i).$implicit,x=c(3);return f(x.selectWord(r,o));}),l(),w(3,Ot,1,1)(4,Rt,1,1),a(5,"div",49)(6,"div")(7,"span",50),s(8),l()(),a(9,"div")(10,"div",51)(11,"span"),s(12),l(
1),a(13,"span"),L(14,10),l()(),a(15,"div",52),O(16,"span",53),l()()(),w(17,zt,5,5,"div",54)(18,Nt,8,1,"div",55),l();}if(d&2){let i,e=t.$implicit,o=c(3);p("ngClass",Oe(12,Lt,o.isDue(e)?"!border-l-due":"",o.editingWordId===e.id?"bg-surface/20":"")),n(),p("ariaLabel",o.selectWordAriaLabel(e))("checked",(i=_(2,10,o.selectedWordIds$))==null?null:i.includes(e.id)),n(2),b(o.editingWordId!==e.id?3:4),n(5),u(o.reviewLabel(e)),n(4),u(o.proficiencyLabel(e)),n(2),Me(e.flashcardLevel??0),Ae(14),n(2),$e("width",o.proficiencyPercent(e),"%"),n(),b(o.editingWordId===e.id?17:18);}}function Bt(d,t){if(d&1&&(a(0,"h2",76),s(1),l(),a(2,"p",77),s(3),l()),d&2){let i=c(5);n(),u(i.noWordsYetTitle),n(2),S(" ",i.noWordsYetBody," ");}}function Vt(d,t){d&1&&(a(0,"p",78)(1,"span"),L(2,13),l()());}function Ht(d,t){if(d&1){let i=T();a(0,"h2",76),s(1),l(),w(2,Vt,3,0,"p",78),a(3,"app-button",79),g("click",function(){h(i);let o=c(5);return f(o.setFilter("all"));}),s(4),l();}if(d&2){let i=c(),e=c(4);n(),u(e.noWordsMatchTitle),n(),b(i.searchTerm?2:-1),n(),p("noMargin",!0),n(),u(e.showAllWordsLabel);}}function Ut(d,t){if(d&1&&w(0,Bt,4,2)(1,Ht,5,4),d&2){let i=t;b(i.filter==="all"&&!i.searchTerm.trim()?0:1);}}function Gt(d,t){if(d&1&&(a(0,"div",36),w(1,Ut,2,1),m(2,"async"),l()),d&2){let i,e=c(3);n(),b((i=_(2,1,e.filterCriteria$))?1:-1,i);}}
1function jt(d,t){if(d&1){let i=T();a(0,"app-paginator",80),m(1,"async"),m(2,"async"),m(3,"async"),g("page",function(o){h(i);let r=c(3);return f(r.editPaginator(o));}),l();}if(d&2){let i,e,o,r=c(3);p("length",(i=_(1,4,r.filteredWords))==null?null:i.length)("pageSize",(e=_(2,6,r.pagination$))==null?null:e.pageSize)("pageIndex",(o=_(3,8,r.pagination$))==null?null:o.pageIndex)("pageSizeOptions",Ce(10,vt));}}function Xt(d,t){if(d&1){let i=T();a(0,"section",26)(1,"div",27),be(2,Et,7,15,"app-button",28,Ie),l(),a(4,"app-input",29),m(5,"async"),g("valueChange",function(o){h(i);let r=c(2);return f(r.updateFilterCriteria(o??""));}),l()(),a(6,"section",30)(7,"div",31)(8,"app-checkbox",32),g("click",function(o){h(i);let r=c(2);return f(r.onHeaderCheckboxClick(o));}),l(),w(9,kt,7,3,"div",33)(10,It,18,18),l(),w(11,Mt,9,0,"div",34),m(12,"async"),be(13,Ft,19,15,"article",35,yt),m(15,"async"),w(16,Gt,3,3,"div",36),m(17,"async"),m(18,"async"),w(19,jt,4,11,"app-paginator",37),m(20,"async"),l();}if(d&2){let i,e,o,r=c(2);y("aria-label",r.wordListControlsLabel),n(),y("aria-label",r.filterWordsLabel),n(),Se(r.filters),n(2),p("ariaLabel",r.searchWordsLabel)("placeholder",r.searchWordsLabel)("value",((i=_(5,13,r.filterCriteria$))==null?null:i.searchTerm)??""),n(3),p("ngClass",r.selectionHeader.selectedCount?"bg-brand/15 font-bold":"bg-canvas/95 text-[0.7rem] font-extrabold uppercase tracking-[0.12em] text-muted"),n(),p("ariaLabel",r.selectAllFilteredWordsLabel)("checked",r.selectionHeader.allSelected)("indeterminate",r.selectionHeader.someSelected),n(),b(r.selectionHeader.selectedCount?9:10),n(2),b(_(12,15,r.dueFilterIsEmpty$)?11:-1),n(2),Se(_(15,17,r.displayedWords)),n(3),b(((e=_(17,19,r.displayedWords))==null?null:e.length)===0&&!_(18,21,r.dueFilterIsEmpty$)?16:-1),n(3),b((o=_(20,23,r.filteredWords))!=null&&o.length?19:-1);}}function Yt(d,t){if(d&1){let i=T();a(0,"app-page-frame")(1,"section",17)(2,"header",18)(3,"div")(4,"p",19),L(5,0),l(),a(6,"h1",20)(7,"span"),L(8,1),l()(),a(9,"p",21)(10,"span"),L(11,2),l()()(),a(12,"div",22)(13,"app-button",23),g("click",function(){h(i);let o=c();return f(o.openAnkiExportModal());}),a(14,"span"),L(15,3),l()()()(),w(16,Tt,3,4,"section",24),m(17,"async"),w(18,Xt,21,25),m(19,"async"),l()();}if(d&2){let i,e,o=c();n(13),p("noMargin",!0),n(3),b((i=_(17,3,o.allLanguagePairs$))?16:-1,i),n(2),b((e=_(19,5,o.columnLanguages$))?18:-1,e);}}function Kt(d,t){if(d&1&&(a(0,"app-page-frame")(1,"section",82)(2,"div",83)(3,"div",84)(4,"span",85),L(5,14),l(),a(6,"div",86)(7,"p",87),L(8,15),l(),a(9,"h1",88),s(10),l(),a(11,"p",89),s(12),l(),a(13,"app-button",90),s(14),l()()()()()()),d&2){let i=c(2);n(10),S(" ",i.firstUsefulWordLabel," "),n(2),S(" ",i.installedBodyLabel," "),n(),p("noMargin",!0),n(),u(i.viewDashboardLabel);}}function qt(d,t){d&1&&(a(0,"p",93),L(1,16),l());}function Jt(d,t){if(d&1&&(a(0,"p",94),s(1),l(),a(2,"app-button",95),s(3),l()),d&2){let i=c(3);n(),S(" ",i.installBodyLabel," "),n(),p("noMargin",!0)("trackingParameters",Ce(4,Wt)),n(),S(" ",i.visitChromeWebStoreLabel," ");}}function Qt(d,t){if(d&1&&(a(0,"section",81)(1,"h1",91),s(2),l(),a(3,"h2",92),s(4),l(),w(5,qt,2,0,"p",93)(6,Jt,4,5),l()),d&2){let i=c(2);n(2),u(i.wordListTitle),n(2),u(i.collectionHeading),n(),b(i.nativeAppSession.isNativeShell?5:6);}}function Zt(d,t){if(d&1&&(w(0,Kt,15,4,"app-page-frame"),m(1,"async"),we(2,Qt,7,3,"section",81)),d&2){let i=c();b(_(1,1,i.extensionIsInstalled)?0:2);}}var fe=class d{constructor(t,i,e,o,r,x,C){this.wordsService=t;this.userService=i;this.toast=e;this.analytics=o;this.extensionService=r;this.modal=x;this.nativeAppSession=C;this.words=this.wordsService.words,this.reviewLogs=this.wordsService.reviewLogs,this.extensionIsInstalled=this.extensionService.isInstalled$;}wordsService;userService;toast;analytics;extensionService;modal;nativeAppSession;destroy$=new Te();filteredWordIds=[];pagination$=new ee({pageIndex:0,pageSize:25,length:0});filterCriteria$=new ee({searchTerm:"",filter:"due"});selectedWordIds$=new ee([]);languageScope$=new ee({kind:"main-pair"});columnLanguages$=$({left:"",right:""});words=$([]);reviewLogs=$([]);hubViewModel$=$(null);allLanguagePairs$=$([]);selectedPairKey$=$(null);displayedWords=$([]);filteredWords=$([]);dueFilterIsEmpty$=$(!1);selectionHeader=this.buildSelectionHeaderState();extensionIsInstalled;editingWordId=null;editDraft=null;savingWordId=null;blurredColumn=null;filters=[{value:"due",label:"Due now"},{value:"recent",label:"Recent"},{value:"missing-context",label:"Missing context"},{value:"all",label:"All words"}];ngOnInit(){this.hubViewModel$=D([this.words,this.reviewLogs,this.languageScope$]).pipe(P(([t,i,e])=>mt({words:t??[],reviewLogs:i??[],learnLanguage:this.userService.getLearnLanguagePreference(),nativeLanguage:this.userService.getNativeLanguagePreference(),scope:e})),E(this.destroy$),z({bufferSize:1,refCount:!0}
1)),this.allLanguagePairs$=this.words.pipe(P(t=>it(t??[],this.userService.getLearnLanguagePreference(),this.userService.getNativeLanguagePreference())),E(this.destroy$),z({bufferSize:1,refCount:!0})),D([this.languageScope$,this.allLanguagePairs$]).pipe(E(this.destroy$)).subscribe(([t,i])=>{let e=Ze(t,i);(e.kind!==t.kind||e.sourceLang!==t.sourceLang||e.targetLang!==t.targetLang)&&this.languageScope$.next(e);}),this.selectedPairKey$=D([this.languageScope$,this.allLanguagePairs$]).pipe(P(([t,i])=>et(t,i)),E(this.destroy$),z({bufferSize:1,refCount:!0})),this.columnLanguages$=D([this.languageScope$,this.allLanguagePairs$,this.hubViewModel$]).pipe(P(([t,i,e])=>tt(t,i,{learnLanguage:e?.learnLanguage??this.userService.getLearnLanguagePreference(),nativeLanguage:e?.nativeLanguage??this.userService.getNativeLanguagePreference()})),E(this.destroy$),z({bufferSize:1,refCount:!0})),this.filteredWords=D([this.hubViewModel$,this.filterCriteria$,this.selectedWordIds$]).pipe(P(([t,i,e])=>{if(!t)return[];let o=Date.now();return _t(t.scopedWords,i).map(r=>Z(R({},r),{encounteredLabel:xt(r,o),selected:e.includes(r.id||"")}));}),E(this.destroy$),z({bufferSize:1,refCount:!0})),this.filteredWords.pipe(P(t=>t.flatMap(i=>i.id?[i.id]:[])),E(this.destroy$)).subscribe(t=>{this.filteredWordIds=t,this.refreshSelectionHeader();}),this.displayedWords=D([this.filteredWords,this.pagination$]).pipe(P(([t,i])=>{let e=i.pageIndex*i.pageSize;return t.slice(e,e+i.pageSize);}),E(this.destroy$),z({bufferSize:1,refCount:!0})),this.selectedWordIds$.pipe(E(this.destroy$)).subscribe(()=>this.refreshSelectionHeader()),this.dueFilterIsEmpty$=D([this.filterCriteria$,this.hubViewModel$,this.filteredWords]).pipe(P(([t,i,e])=>{let o=(i?.scopedWords.length??0)>0;return t.filter==="due"&&!t.searchTerm.trim()&&e.length===0&&o;}),E(this.destroy$),z({bufferSize:1,refCount:!0})),this.analytics.trackEvent("View word list");}setLanguageScope(t){this.languageScope$.next(t),this.resetPagination(),this.selectedWordIds$.next([]);}selectLanguagePair(t){this.setLanguageScope({kind:"pair",sourceLang:t.sourceLang,targetLang:t.targetLang}),this.analytics.trackEvent("Change word list language pair",{pair:t.key,count:t.count,due:t.due,isMainPair:t.isMainPair});}pairColumnTerms(t,i,e){return Le(t,i,e);}setFilter(t){this.filterCriteria$.next(Z(R({},this.filterCriteria$.value),{filter:t})),this.resetPagination();}updateFilterCriteria(t){this.filterCriteria$.next(Z(R({},this.filterCriteria$.value),{searchTerm:t})),this.resetPagination();}editPaginator(t){this.pagination$.next(t);}onRowMenuEdit(t,i,e){this.startEditing(t,i,e);}onRowMenuDelete(t){return A(this,null,function*(){yield this.remove(t);});}startEditing(t,i,e){if(!t.id)return;let o=Le(t,i,e);this.editingWordId=t.id,this.editDraft={leftTerm:o.leftTerm,rightTerm:o.rightTerm,leftContext:pe(t,i),rightContext:pe(t,e)},this.analytics.trackEvent("Edit word from review hub");}cancelEditing(){this.editingWordId=null,this.editDraft=null;}saveEditing(t,i,e){return A(this,null,function*(){if(!(!t.id||!this.editDraft?.leftTerm.trim()||!this.editDraft.rightTerm.trim())){this.savingWordId=t.id;try{yield this.wordsService.updateWord(t.id,this.buildWordChangesFromDraft(t,i,e)),this.toast.open(this.wordUpdatedToast,void 0,{duration:2e3}),this.analytics.trackEvent("Save word from review hub",{contextAdded:!ve(t)&&this.hasDraftContext()}),this.cancelEditing();}catch{this.toast.open(this.saveWordFailedToast,void 0,{duration:4e3});}finally{this.savingWordId=null;}}});}remove(t){return A(this,null,function*(){yield this.wordsService.removeWord(t),this.toast.open(this.wordRemovedToast,void 0,{duration:2e3});});}selectWord(t,i){if(!t.id)return;let e=this.selectedWordIds$.value;this.selectedWordIds$.next(i?[...new Set([...e,t.id])]:e.filter(o=>o!==t.id)),this.refreshSelectionHeader();}onHeaderCheckboxClick(t){t.preventDefault(),this.toggleAllWordsSelection();}toggleAllWordsSelection(){let t=this.selectedWordIds$.value,i=this.filteredWordIds,e=i.length>0&&i.every(o=>t.includes(o));this.selectedWordIds$.next(e?[]:[...i]),this.refreshSelectionHeader();}deleteWords(){return A(this,null,function*(){let t=yield F(this.selectedWordIds$.pipe(B(1)));yield Promise.all(t.map(i=>
1this.wordsService.removeWord(i))),this.toast.open(this.wordsRemovedToast(t.length),void 0,{duration:2e3}),this.selectedWordIds$.next([]);});}openAnkiExportModal(){return A(this,null,function*(){let[t,i,e,o]=yield F(D([this.selectedWordIds$,this.languageScope$,this.allLanguagePairs$,this.filteredWords.pipe(P(x=>x.flatMap(C=>C.id?[C.id]:[])))]).pipe(B(1))),r=yield F(this.hubViewModel$.pipe(B(1)));this.modal.open(_e,{width:"min(44rem, 92vw)",data:{selectedWordIds:t,visibleWordIds:o,languageScope:i,learnLanguage:r?.learnLanguage??this.userService.getLearnLanguagePreference(),nativeLanguage:r?.nativeLanguage??this.userService.getNativeLanguagePreference(),languagePairOptions:e}});});}isDue(t){return ut(t);}isRecent(t){return gt(t);}hasContext(t){return ve(t);}contextForColumn(t,i){return pe(t,i);}hasContextForColumn(t,i){return ot(t,i);}ttsLanguageCode(t){return nt(t);}toggleColumnBlur(t){this.blurredColumn=this.blurredColumn===t?null:t;}columnBlurIcon(t){return this.blurredColumn===t?"visibility_off":"visibility";}columnBlurClasses(t){return{"select-none blur-md transition-[filter] duration-150 group-hover/row:blur-none":this.blurredColumn===t};}reviewLabel(t){if((t.flashcardLevel??0)>=7)return"Mastered";if(this.isDue(t))return(t.flashcardLevel??0)===0?"New word":"Due now";let i=pt(t);if(!i)return"Ready to review";let e=Math.max(1,Math.ceil((i.getTime()-Date.now())/(1440*60*1e3)));return e===1?"Review in "+e+" day":"Review in "+e+" days";}proficiencyLabel(t){let i=Math.max(0,Math.min(7,t.flashcardLevel??0));return["New","Learning","Fresh","Growing","Familiar","Known","Embedded","Mastered"][i];}proficiencyPercent(t){return Math.round(Math.max(0,Math.min(7,t.flashcardLevel??0))/7*100);}languagePairLabel(t){return ue(t.sourceLang,t.targetLang);}wordUpdatedToast="Word updated";wordRemovedToast="Word removed";saveWordFailedToast="We could not save that change. Please try again.";selectedLabel="selected";deleteSelectedLabel="Delete selected";reviewStateLabel="Review state";actionsLabel="Actions";allCaughtUpLabel="All caught up";reviewedAllWordsLabel="You reviewed all your words.";noDueWordsLabel="Nothing is due right now. Switch to All words to browse your collection or keep translating while you read.";saveLabel="Save";savingLabel="Saving\u2026";cancelLabel="Cancel";editLabel="Edit";deleteLabel="Delete";noWordsYetTitle="No words in this language pair yet";noWordsYetBody="Select unfamiliar text on any page, translate it with Stickly, and your words will appear here.";noWordsMatchTitle="No words match this view";noWordsMatchBody="Try another search, another language pair, or change the active filter.";showAllWordsLabel="Show all words";browserExtensionInstalledLabel="Browser extension installed";firstUsefulWordLabel="Your first useful word will appear here.";installedBodyLabel="Select unfamiliar text on any page, translate it with Stickly, and your words will collect here for review and listening practice.";viewDashboardLabel="View dashboard";collectionHeading="Collect vocabulary while you browse.";wordListTitle="Word list";installBodyLabel="Install Stickly, translate a word on any page, and it will appear here when it is ready to hear and use.";visitChromeWebStoreLabel="Visit Chrome Web Store";wordListControlsLabel="Word list controls";filterWordsLabel="Filter words";selectAllFilteredWordsLabel="Select all filtered words";searchWordsLabel="Search your words";addContextLabel="Add context";wordsRemovedToast(t){return""+t+" words removed";}blurAriaLabel(t,i){return this.blurredColumn===t?"Show all "+i+" terms":"Blur all "+i+" terms";}selectWordAriaLabel(t){return"Select "+t.learning.learnedTerm+"";}listenToLabel(t){return"Listen to "+t+"";}editTermAriaLabel(t){return"Edit "+t+" term";}contextAriaLabel(t){return"Context for "+t+"";}actionsAriaLabel(t){return"Actions for "+t+"";}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete();}resetPagination(){this.pagination$.next(Z(R({},this.pagination$.value),{pageIndex:0}));}refreshSelectionHeader(){this.selectionHeader=this.buildSelectionHeaderState();}buildSelectionHeaderState(){let t=this.selectedWordIds$.value,i=this.filteredWordIds,e=i.filter(o=>t.includes(o)).length;return{selectedCount:t.length,selectedInFilter:e,allSelected:i.length>0&&e===i.length,someSelected:e>0&&e<i.length};}hasDraftContext(){return!!(this.editDraft?.leftContext.trim()||this.editDraft?.rightContext.trim());}buildWordChangesFromDraft(t,i,e){let o=this.editDraft,r=o.leftTerm.trim(),x=o.rightTerm.trim(),C=this.mapDraftContextToWordFields(t,i,e,o.leftContext.trim(),o.right
1Context.trim());return V(t.sourceLang,i)&&V(t.targetLang,e)?R({text:r,translation:x},C):V(t.sourceLang,e)&&V(t.targetLang,i)?R({text:x,translation:r},C):R({text:r,translation:x},C);}mapDraftContextToWordFields(t,i,e,o,r){return V(t.sourceLang,i)?{context:void 0,context_source:o,context_target:r}:V(t.sourceLang,e)?{context:void 0,context_source:r,context_target:o}:{context:void 0,context_source:o,context_target:r};}static ɵfac=function(i){return new(i||d)(W(ge),W(Qe),W(me),W(ne),W(je),W(Je),W(Xe));};static ɵcmp=N({type:d,selectors:[["app-wordlist"]],decls:3,vars:3,consts:()=>{let t;t="Word list";let i;i="Your collected words";let e;e="Filter by language pair, search, edit, and export. Source language on the left, target on the right.";let o;o="Export to Anki";let r;r="selected";let x;x="Review state";let C;C="Actions";let H;H="All caught up";let U;U="You reviewed all your words.";let G;G="Nothing is due right now. Switch to All words to browse your collection or keep translating while you read.";let j;j="Level "+"\uFFFD0\uFFFD"+" of 7";let X;X="Edit";let Y;Y="Delete";let K;K="Try another search, another language pair, or change the active filter.";let ie;ie=" Browser extension installed ";let q;q="Word list";let oe;return oe=" Open Safari, select unfamiliar text, and use Stickly to translate it. Your saved word will appear here automatically. ",[t,i,e,o,r,x,C,H,U,G,j,X,Y,K,ie,q,oe,[1,"stickly-blocked","mx-auto","min-h-[calc(100vh-var(--app-navbar-height))]","w-full","max-w-[1200px]","px-4","pb-24","pt-10","text-ink","max-[800px]:pt-6"],[1,"mb-7","flex","items-end","justify-between","gap-6","max-[800px]:mb-4","max-[800px]:flex-col","max-[800px]:items-stretch"],[1,"m-0","text-xs","font-extrabold","uppercase","tracking-[0.16em]","text-border"],[1,"my-2","text-[clamp(2.25rem,5vw,4rem)]","font-bold","leading-none","tracking-[-0.045em]"],[1,"m-0","max-w-[680px]","text-[1.05rem]","leading-7","text-muted","max-[800px]:text-[0.92rem]"],[1,"flex","shrink-0","flex-col","items-end","gap-2","max-[800px]:items-stretch"],["type","secondary",1,"max-[800px]:w-full",3,"click","noMargin"],[1,"mb-6"],[3,"pairSelect","pairs","selectedKey"],[1,"my-4","grid","grid-cols-[minmax(0,1fr)_minmax(240px,320px)]","items-center","gap-4","max-[800px]:flex","max-[800px]:flex-col-reverse","max-[800px]:items-stretch","max-[800px]:gap-2"],["role","tablist",1,"flex","items-center","gap-1","overflow-x-auto","pb-1","[scrollbar-width:none]","[&::-webkit-scrollbar]:hidden","max-[800px]:grid","max-[800px]:grid-cols-2","max-[800px]:overflow-visible"],["size","small","theme","dark","role","tab",3,"type","noMargin","ariaSelected","tabIndex","opacity-70"],["type","search","size","small","theme","dark","variant","chrome","name","word-search",3,"valueChange","ariaLabel","placeholder","value"],["aria-live","polite",1,"stickly-blocked","overflow-hidden","rounded-lg","border","border-border/20","bg-surface/95","shadow-medium"],[1,"grid","min-h-[54px]","grid-cols-[40px_minmax(0,1fr)_minmax(0,1fr)_188px_112px]","items-center","border-b","border-solid","border-border/20","px-4","max-[800px]:grid-cols-[42px_minmax(0,1fr)_minmax(0,1fr)]",3,"ngClass"],["theme","dark",3,"click","ariaLabel","checked","indeterminate"],[1,"col-span-4","flex","min-w-0","flex-wrap","items-center","gap-3","text-sm","font-bold","normal-case","tracking-normal","max-[800px]:col-span-2"],["aria-live","polite",1,"border-b","border-success/25","bg-success/10","px-6","py-8","text-center"],[1,"group/row","grid","grid-cols-[40px_minmax(0,1fr)_minmax(0,1fr)_188px_112px]","border-l-4","border-t","border-solid","border-l-transparent","border-t-border/20","bg-canvas/35","px-4","py-4","transition-colors","hover:bg-surface/20","max-[800px]:grid-cols-[38px_minmax(0,1fr)_minmax(0,1fr)]","max-[800px]:px-3.5","max-[800px]:py-4",3,"ngClass"],[1,"px-6","py-12","text-center"],[3,"length","pageSize","pageIndex","pageSizeOptions"],["size","small","theme","dark","role","tab",3,"click","type","noMargin","ariaSelected","tabIndex"],["type","danger","size","small",3,"click","noMargin"],[1,"inline-flex","items-center","gap-1.5","normal-case"],["type","button",1,"inline-flex","
1size-7","items-center","justify-center","rounded-full","border","border-border/25","bg-canvas/70","text-muted","transition","hover:border-accent/50","hover:bg-accent/10","hover:text-accent","focus-visible:outline","focus-visible:outline-2","focus-visible:outline-offset-2","focus-visible:outline-accent",3,"click"],[1,"!p-0","text-[1rem]",3,"name","interactive"],[1,"max-[800px]:hidden"],[1,"sr-only","max-[800px]:hidden"],[1,"m-0","text-xs","font-extrabold","uppercase","tracking-[0.14em]","text-success"],[1,"mb-2","mt-2","text-xl","font-bold"],[1,"m-0","text-sm","leading-6","text-muted"],["theme","dark",1,"-mt-0.5","self-start",3,"checkedChange","ariaLabel","checked"],[1,"self-start","pr-5","pt-0.5","max-[800px]:col-span-2","max-[800px]:col-start-2","max-[800px]:mt-4","max-[800px]:border-t","max-[800px]:border-border/20","max-[800px]:px-0","max-[800px]:pt-4"],[1,"mb-3","block","text-[0.8rem]","font-extrabold","text-due"],[1,"mb-1.5","flex","justify-between","gap-3","text-[0.68rem]","text-muted"],["aria-hidden","true",1,"h-1","overflow-hidden","rounded-full","bg-ink/15"],[1,"block","h-full","rounded-full","bg-success"],[1,"flex","flex-col","items-end","gap-2","self-start","pt-0.5","max-[800px]:flex-row","max-[800px]:col-span-2","max-[800px]:col-start-2","max-[800px]:mt-2","max-[800px]:items-start"],[1,"flex","self-start","justify-end","pt-0.5","max-[800px]:col-span-2","max-[800px]:col-start-2","max-[800px]:mt-2","max-[800px]:justify-start"],[1,"min-w-0","border-r","border-border/15","pr-4","max-[800px]:border-r-0","max-[800px]:pr-2"],[1,"flex","items-start","gap-2"],[1,"mt-0.5",3,"word","language","label"],[1,"min-w-0","flex-1",3,"ngClass"],[1,"stickly-blocked","m-0","overflow-hidden","text-ellipsis","text-[1.02rem]","font-bold","leading-5"],[1,"m-0","mt-1","text-[0.72rem]","uppercase","text-muted"],[1,"amp-block","stickly-blocked","mb-1","mt-2","overflow-hidden","text-ellipsis","whitespace-nowrap","text-[0.9rem]","leading-5","text-muted","max-[800px]:whitespace-normal"],[1,"min-w-0","pl-4","max-[800px]:pl-2"],[1,"stickly-blocked","m-0","text-[0.95rem]","font-bold","leading-5","text-border"],[1,"m-0","text-[0.72rem]","text-muted"],[1,"contents"],[1,"contents",3,"ngSubmit"],[1,"m-0","text-[0.72rem]","uppercase","text-muted"],["size","small","theme","dark","autocomplete","off",1,"mt-1",3,"ngModelChange","name","required","ariaLabel","ngModel"],["size","small","theme","dark","resize","none",1,"mt-2",3,"ngModelChange","name","rows","placeholder","ngModel","ariaLabel"],["type","highlight","size","small",3,"click","noMargin","disabled"],["type","ghost","size","small","theme","dark",3,"click","noMargin"],[3,"click","ariaLabel"],["type","button","appDropdownItem","",3,"click"],["type","button","appDropdownItem","","variant","danger",3,"click"],[1,"mb-2","text-xl","font-bold"],[1,"mx-auto","mb-4","max-w-md","text-muted"],[1,"text-muted"],["type","ghost",3,"click","noMargin"],[3,"page","length","pageSize","pageIndex","pageSizeOptions"],[1,"stickly-blocked","mx-auto","min-h-[calc(100vh-var(--app-navbar-height))]","w-full","max-w-[680px]","px-4","pb-28","pt-14","text-center","text-ink","max-[800px]:pt-8"],[1,"stickly-blocked","relative","overflow-hidden","rounded-[2rem]","border","border-border/20","bg-[var(--gradient-panel)]","px-6","py-6","text-ink","shadow-medium","max-[800px]:rounded-[1.5rem]","max-[800px]:px-4","max-[800px]:py-5"],[1,"relative","grid","gap-7","lg:grid-cols-[1.05fr_0.95fr]","lg:items-center"],[1,"space-y-5","text-left"],[1,"inline-flex","items-center","gap-2","rounded-full","border","border-white/12","bg-white/8","px-4","py-2","text-xs","font-extrabold","uppercase","tracking-[0.14em]","text-white/80"],[1,"space-y-3"],[1,"text-[0.72rem]","font-extrabold","uppercase","tracking-[0.22em]","text-brand/90"],[1,"max-w-2xl","text-[clamp(2.1rem,5vw,3.7rem)]","font-bold","leading-[0.96]","tracking-[-0.055em]","text-white"],[1,"max-w-2xl","text-base","leading-7","text-white/72"],["routerLink","/dashboard","type","secondary",3,"noMargin"],[1,"text-[clamp(2.5rem,8vw,4rem)]","font-bold"],[1,"mt-10","text-2xl","font-bold"],[1,"mx-auto","mb-0","mt-3","text-lg","leading-relaxed","text-muted"],[1,"mx-auto","mb-7","mt-3","text-lg","leading-relaxed","text-muted"],["size","large","href","https://chromewebstore.google.com/detail/stickly-translate-learn/laeipbjogjlofdhpgegljdbodeoodpio?utm_source=stickly&utm_medium=webapp&utm_campaign=word-list-empty-state","trackEvent","Click link to extension",3,"noMargin","trackingParameters"]];},template:function(i,e){if(i&1&&(w(0,Yt,20,7,"app-page-frame"),m(1,"async"),we(2,Zt,3,3)),i&2){let o;b((o=_(1,1,e.words))!=null&&o.length?0:2);}},dependencies:[ze,De,se,de,Fe,ae,Ve,Be,le,Ne,xe,ce,rt,re,J,He,dt,he,ct,Ue,Ge,Re,st],encapsulation:2});};var qi=[{path:"",component:fe}];export{qi as WORD_LIST_ROUTES};/**i18n:d66136fa260c67025c6e37fa0875946a09ce0639e213b57559c7174a0b1cad56*/
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.