PageSourceSearch

https://sidequestvr.com/chunk-OOHUGTFI.js

js sidequestvr.com collected 2026-09-24 09:00:38 UTC 42,724 bytes, 4 lines download raw bytes

1import{k as Ue,z as Ne}from"./chunk-DIXJWRCP.js";import"./chunk-P4ISFSE6.js";import"./chunk-SYXPZLFH.js";import"./chunk-CT6PQCFX.js";import"./chunk-SVZHPJTL.js";import{e as V}from"./chunk-3YWJJ6H7.js";import"./chunk-BG2HXLYR.js";import{d as Ve,e as $e}from"./chunk-QDH32N2S.js";import{a as Fe}from"./chunk-TTXJ7XNK.js";import"./chunk-YTBTYGSE.js";import{a as F}from"./chunk-BDV4INWL.js";import"./chunk-OFX3RRAU.js";import{a as Me,b as be,c as we,d as Oe,e as Ee,f as Pe,g as De,h as Ie,i as ke,j as Ae}from"./chunk-I3XS62JJ.js";import"./chunk-SDDXUERA.js";import{c as Re,d as Le}from"./chunk-3HXKTBTL.js";import"./chunk-TRYKQVDB.js";import"./chunk-XO227CWY.js";import{d as z,e as J,f as q,g as Q,h as X}from"./chunk-SWEXEN52.js";import"./chunk-UR63MCV4.js";import"./chunk-WPIVAFMM.js";import"./chunk-AMFHR4NE.js";import"./chunk-B7XIZYOU.js";import"./chunk-OMFK2WVH.js";import"./chunk-POVQ464Z.js";import"./chunk-AAYASV7G.js";import"./chunk-WX6AEPHG.js";import"./chunk-FHIZW6A6.js";import"./chunk-KW63L2IR.js";import"./chunk-HX5IX7NU.js";import"./chunk-6FLUK5JM.js";import"./chunk-KOX63QTR.js";import"./chunk-FMVSYVNZ.js";import"./chunk-IN5VGZCA.js";import{a as xe,b as Ce,c as ve,d as Se,e as ye,f as Te}from"./chunk-M7G6HZGU.js";import"./chunk-XJNGS2MG.js";import"./chunk-AVVJIOZM.js";import{a as he}from"./chunk-G477PCL2.js";import"./chunk-J5CFKZFC.js";import"./chunk-BSWFNN3E.js";import"./chunk-TKDXKJ7R.js";import"./chunk-27U4C3ZP.js";import"./chunk-PH4SC4EF.js";import{b as fe}from"./chunk-CIBY6B7Q.js";import"./chunk-WV4B4HPR.js";import{e as de,k as ge}from"./chunk-RHKHZH2I.js";import{a as _e,c as me,i as ue}from"./chunk-3RUUGTJM.js";import"./chunk-6GZWOG4L.js";import"./chunk-KBHJCIXU.js";import"./chunk-DKUGA3RG.js";import"./chunk-XMC2SEUW.js";import"./chunk-F5X5MWHG.js";import{a as ae}from"./chunk-LLN6G6BG.js";import"./chunk-RG5YD2XA.js";import"./chunk-CESQ635M.js";import"./chunk-WWELLGFK.js";import"./chunk-YG4272UT.js";import"./chunk-YU7BL3NK.js";import"./chunk-PZQZVEM4.js";import"./chunk-36QUTK7Z.js";import"./chunk-PKCZEC2M.js";import"./chunk-EF7V633C.js";import"./chunk-HABETXAF.js";import"./chunk-IYKCVKQQ.js";import"./chunk-S7HRMRUH.js";import"./chunk-G7W5QCDB.js";import{a as se,c as L}from"./chunk-XC2ZVVIB.js";import"./chunk-BDS2Q76J.js";import"./chunk-77LUYYJW.js";import{B as pe,C as ce,c as re,h as K,o as W,q as le}from"./chunk-ULUX7TUZ.js";import{b as R}from"./chunk-E5H7XEDV.js";import{$b as l,Ac as B,Bb as a,Cb as i,Da as j,Db as v,Eb as y,Fb as T,Gc as k,Hb as C,Jb as h,Kb as s,Sa as ee,Wc as ne,Xc as H,Ya as o,Yc as A,ab as M,ac as m,bc as x,cc as E,gb as O,gc as P,gd as ie,hb as te,hc as D,ic as I,ka as Z,mb as _,oc as w,qb as c,sb as U,te as oe,ua as N,va as g,wa as f,yc as G}from"./chunk-Z4JINGEV.js";import{h as b}from"./chunk-WWX6BADO.js";var je=()=>[];function tt(t,p){t&1&&(a(0,"div",6)(1,"p"),l(2,'Click "Run Tool" above to find duplicate apps.'),i()())}function nt(t,p){t&1&&(a(0,"div",7),v(1,"mat-spinner",8),a(2,"span"),l(3,"Finding duplicate apps..."),i()())}function it(t,p){if(t&1&&(a(0,"div",9)(1,"mat-icon",10),l(2,"error"),i(),a(3,"span"),l(4),i()()),t&2){let e=s();o(4),m(e.error)}}function at(t,p){t&1&&(a(0,"div",11)(1,"mat-icon"),l(2,"check_circle"),i(),a(3,"span"),l(4,"No duplicate apps found"),i()())}function ot(t,p){if(t&1&&(a(0,"span",30),l(1),i()),t&2){let e=s().$implicit,n=s(3);o(),x(" Created: ",n.formatDate(n.getDateField(e.app_doc,"created"))," ")}}function rt(t,p){if(t&1&&(a(0,"span",30),l(1),i()),t&2){let e=s().$implicit,n=s(3);o(),x(" Updated: ",n.formatDate(n.getDateField(e.app_doc,"updated"))," ")}}function lt(t,p){if(t&1&&(a(0,"span",30),l(1),i()),t&2){let e=s().$implicit;o(),x(" ",e.app_doc.active?"Active":"Inactive"," ")}}function pt(t,p){if(t&1&&(a(0,"div",33)(1,"strong"),l(2,"Slug:"),i(),l(3),i()),t&2){let e=s(2).$implicit;o(3),x(" ",e.app_doc.slug_name," ")}}function ct(t,p){if(t&1&&(a(0,"div",33)(1,"strong"),l(2,"Description:"),i(),a(3,"span",34),l(4),i()()),t&2){let e=s(2).$implicit;o(4),E("",(e.app_doc.description||"").substring(0,100),"",(e.app_doc.description||"").length>100?"...":"","")}}function st(t,p){if(t&1&&(a(0,"li"),l(1),i()),t&2){let e=p.$implicit;o(),m(e)}}function dt(t,p){if(t&1&&(a(0,"div",33)(1,"strong"),l(2,"Platform Links:"),i(),a(3,"ul",35),_(4,st,2,1,"li",36),i()()),t&2){let e=s(2).$implicit,n=s(3);o(4),c("ngForOf",n.getPlatformLinks(e.app_doc))}}function _t(t,p){if(t&1&&(a(0,"div",33)(1,"strong"),l(2,"Downloads:"),i(),l(3),i()),t&2){let e=s(2).$implicit,n=s(3);o(3),x(" ",n.formatNumber(e.app_doc.downloads)," ")}}function mt(t,p){if(t&1&&(a(0,"div",33)(1,"strong"),l(2,"Image URL:"),i(),a(3,"a",37),l(4),i()()),t&2){let e=s(2).$implicit;o(3),c("href",e.app_doc.image_url,ee),o(),m(e.app_doc.image_url)}}function ut(t,p){if(t&1&&(a(0,"mat-card-content",31),_(1,pt,4,1,"div",32)(2,ct,5,2,"div",32)(3,dt,5,1,"div",32)(4,_t,4,1,"div",32)(5,mt,5,2,"div",32),i()),t&2){let e=s().$implicit,n=s(3);o(),c("ngIf",e.app_doc.slug_name),o(),c("ngIf",e.app_doc.description),o(),c("ngIf",n.getPlatformLinks(e.app_doc).length>0),o(),c("ngIf",e.app_doc.downloads!==void 0&&e.app_doc.downloads!==null),o(),c("ngIf",e.app_doc.image_url)}}function gt(t,p){if(t&1&&(a(0,"div",38)(1,"pre",39),l(2),i()()),t&2){let e=s().$implicit,n=s(3);o(2),m(n.getAppDocJson(e))}}function ft(t,p){if(t&1&&(a(0,"mat-tab",43)(1,"div",38)(2,"pre",39),l(3),i()()()),t&2){let e=p.$implicit,n=s(2).$implicit,r=s(3);
1c("label",r.getLocaleString(e)),o(3),m(r.getSummaryDocJson(n,r.getLocaleString(e)))}}function ht(t,p){if(t&1){let e=C();a(0,"div",40)(1,"mat-tab-group",41),h("selectedIndexChange",function(r){g(e);let d=s().$implicit,u=s(3);return f(u.onTabChange(d.apps_id,r))}),_(2,ft,4,2,"mat-tab",42),i()()}if(t&2){let e=s().$implicit,n=s(3);o(),c("selectedIndex",n.getTabIndex(e.apps_id)),o(),c("ngForOf",e.unified_summaries)}}function xt(t,p){if(t&1){let e=C();a(0,"mat-card",21)(1,"mat-card-header")(2,"mat-card-title"),l(3),i(),a(4,"mat-card-subtitle")(5,"div",22)(6,"span"),l(7),i(),_(8,ot,2,1,"span",23)(9,rt,2,1,"span",23),i(),a(10,"div",22)(11,"span"),l(12),i(),_(13,lt,2,1,"span",23),i()()(),_(14,ut,6,5,"mat-card-content",24),a(15,"mat-card-actions")(16,"button",25),h("click",function(){let r=g(e).$implicit,d=s(3);return f(d.selectApp(r,"left"))}),l(17," Select Left "),i(),a(18,"button",25),h("click",function(){let r=g(e).$implicit,d=s(3);return f(d.selectApp(r,"right"))}),l(19," Select Right "),i()(),a(20,"mat-card-content")(21,"mat-accordion",26)(22,"mat-expansion-panel",27),h("opened",function(){let r=g(e).$implicit,d=s(3);return f(d.onAppDocOpened(r.apps_id))})("closed",function(){let r=g(e).$implicit,d=s(3);return f(d.onAppDocClosed(r.apps_id))}),a(23,"mat-expansion-panel-header")(24,"mat-panel-title")(25,"mat-icon"),l(26,"description"),i(),a(27,"span"),l(28,"App Document"),i()()(),_(29,gt,3,1,"div",28),i(),a(30,"mat-expansion-panel",27),h("opened",function(){let r=g(e).$implicit,d=s(3);return f(d.onUnifiedSummariesOpened(r.apps_id))})("closed",function(){let r=g(e).$implicit,d=s(3);return f(d.onUnifiedSummariesClosed(r.apps_id))}),a(31,"mat-expansion-panel-header")(32,"mat-panel-title")(33,"mat-icon"),l(34,"language"),i(),a(35,"span"),l(36,"Unified Summaries"),i()(),a(37,"mat-panel-description"),l(38),i()(),_(39,ht,3,2,"div",29),i()()()()}if(t&2){let e=p.$implicit,n=s(3);U("selected-left",(n.selectedApps.left==null?null:n.selectedApps.left.apps_id)===e.apps_id)("selected-right",(n.selectedApps.right==null?null:n.selectedApps.right.apps_id)===e.apps_id),o(3),x(" ",(e.app_doc==null?null:e.app_doc.name)||"App #"+e.apps_id," "),o(4),x("ID: ",e.apps_id,""),o(),c("ngIf",n.hasDate(e.app_doc,"created")),o(),c("ngIf",n.hasDate(e.app_doc,"updated")),o(3),E("",e.unified_summaries.length," locale",e.unified_summaries.length!==1?"s":"",""),o(),c("ngIf",(e.app_doc==null?null:e.app_doc.active)!==void 0),o(),c("ngIf",e.app_doc),o(2),c("color",(n.selectedApps.left==null?null:n.selectedApps.left.apps_id)===e.apps_id?"primary":""),o(2),c("color",(n.selectedApps.right==null?null:n.selectedApps.right.apps_id)===e.apps_id?"primary":""),o(4),c("expanded",n.isAppDocExpanded(e.apps_id)),o(7),c("ngIf",n.isAppDocExpanded(e.apps_id)),o(),c("expanded",n.isUnifiedSummariesExpanded(e.apps_id)),o(8),E(" ",e.unified_summaries.length," locale",e.unified_summaries.length!==1?"s":""," "),o(),c("ngIf",n.isUnifiedSummariesExpanded(e.apps_id))}}function Ct(t,p){if(t&1&&(a(0,"mat-option",57),l(1),i()),t&2){let e=p.$implicit,n=s(5);c("value",n.getLocaleString(e)),o(),x(" ",n.getLocaleString(e)," ")}}function vt(t,p){if(t&1&&(a(0,"mat-option",57),l(1),i()),t&2){let e=p.$implicit,n=s(5);c("value",n.getLocaleString(e)),o(),x(" ",n.getLocaleString(e)," ")}}function St(t,p){if(t&1){let e=C();a(0,"div",53)(1,"div",54)(2,"label"),l(3,"Left Locale:"),i(),a(4,"mat-select",55),I("ngModelChange",function(r){g(e);let d=s(4);return D(d.selectedSummaryLocale.left,r)||(d.selectedSummaryLocale.left=r),f(r)}),h("selectionChange",function(){g(e);let r=s(4);return f(r.generateDiffAsync())}),_(5,Ct,2,2,"mat-option",56),i()(),a(6,"div",54)(7,"label"),l(8,"Right Locale:"),i(),a(9,"mat-select",55),I("ngModelChange",function(r){g(e);let d=s(4);return D(d.selectedSummaryLocale.right,r)||(d.selectedSummaryLocale.right=r),f(r)}),h("selectionChange",function(){g(e);let r=s(4);return f(r.generateDiffAsync())}),_(10,vt,2,2,"mat-option",56),i()()()}if(t&2){let e=s(4);o(4),P("ngModel",e.selectedSummaryLocale.left),c("disabled",!e.selectedApps.left),o(),c("ngForOf",(e.selectedApps.left==null?null:e.selectedApps.left.unified_summaries)||w(6,je)),o(4),P("ngModel",e.selectedSummaryLocale.right),c("disabled",!e.selectedApps.right),o(),c("ngForOf",(e.selectedApps.right==null?null:e.selectedApps.right.unified_summaries)||w(7,je))}}function yt(t,p){if(t&1&&(a(0,"div",58)(1,"mat-icon"),l(2,"info"),i(),a(3,"span"),l(4),i()()),t&2){let e=s(4);o(4),x("Select two apps",e.compareMode==="unified_summary"?" and their locales":""," to compare")}}function Tt(t,p){t&1&&(a(0,"div",59),v(1,"mat-progress-bar",60),a(2,"p"),l(3,"Generating diff comparison..."),i()())}function Mt(t,p){if(t&1&&(a(0,"div",61),v(1,"custom-inline-diff",62),i()),t&2){let e=s(4);o(),c("versions",e.diffVersions)("diffView","split")}}function bt(t,p){if(t&1){let e=C();a(0,"div",44)(1,"h4"),l(2,"Comparison"),i(),a(3,"div",45)(4,"mat-button-toggle-group",46),h("ngModelChange",function(r){g(e);let d=s(3);return d.onCompareModeChange(r),f(d.generateDiffAsync())}),a(5,"mat-button-toggle",47),l(6,"App Document"),i(),a(7,"mat-button-toggle",48),l(8,"Unified Summary"),i()()(),_(9,St,11,8,"div",49)(10,yt,5,1,"div",50)(11,Tt,4,0,"div",51)(12,Mt,2,2,"div",52),i()}if(t&2){let e=s(3);o(4),c("ngModel",e.compareMode),o(5),c("ngIf",e.compareMode==="unified_summary"),o(),c("ngIf",!e.canCompare()),o(),c("ngIf",e.canCompare()&&e.generatingDiff),o(),c("ngIf",e.canCompare()&&!e.generatingDiff&&e.diffVersions)}}function wt(t,p){if(t&1&&(a(0,"mat-expansion-panel",16)(1,"mat-expansion-panel-header")(2,"mat-panel-title")(3,"mat-icon"),l(4,"apps"),i(),a(5,"span"),l(6),i()(),a(7,"mat-panel-description"),l(8),i()(),a(9,"div",17)(10,"div",18),_(11,xt,40,20,"mat-card",19),i(),_(12,bt,13,5,"div",20),i()()),t&2){let e=p.$implicit,n=s(2);c("expanded",(n.selectedGroup==null?null:n.selectedGroup.name)===e.name),o(6),m(e.name),o(2),E(" ",e.count," app",e.count!==1?"s":""," "),o(3),c("ngForOf",e.apps),o(),c("ngIf",n.selectedApps.left||n.selectedApps.right)}}function Ot(t,p){if(t&1&&(a(0,"div",12)(1,"div",13)(2,"h3"),l(3),i()(),a(4,"mat-accordion",14),_(5,wt,13,6,"mat-expansion-panel",15),i()()),t&2){let e=s();o(3),E("Found ",e.duplicates.length," duplicate name",e.duplicates.length!==1?"s":"",""),o(2),c("ngForOf",e.duplicates)}}var ze=(()=>{class t{constructor(e,n){this._api=e,this._cdr=n,this.triggerRun=!1,this.onResultUpd
1ate=new j,this.loading=!1,this.error=null,this.duplicates=[],this.selectedGroup=null,this.selectedApps={left:null,right:null},this.compareMode="app_doc",this.selectedSummaryLocale={left:null,right:null},this.expandedAppDocs=new Map,this.expandedUnifiedSummaries=new Map,this.selectedSummaryTab=new Map,this.generatingDiff=!1,this.diffVersions=null,this._cachedLeftDocument=null,this._cachedRightDocument=null,this._cachedLeftKey=null,this._cachedRightKey=null}ngOnChanges(e){e.triggerRun&&this.triggerRun&&!this.loading&&this.duplicates.length===0&&!this.error&&this.run()}run(){return b(this,null,function*(){this.loading=!0,this.error=null,this.duplicates=[],this.selectedGroup=null,this.selectedApps={left:null,right:null},this._cdr.markForCheck();try{let e=yield this._api.getDuplicateApps();this.duplicates=e.duplicates,this.loading=!1,this._cdr.markForCheck(),this.onResultUpdate.emit(JSON.stringify(e,null,2))}catch(e){this.loading=!1,this.error=e?.message||"Failed to find duplicate apps",this._cdr.markForCheck()}})}selectGroup(e){this.selectedGroup=e,this.selectedApps={left:null,right:null},this.selectedSummaryLocale={left:null,right:null},this._cdr.markForCheck()}selectApp(e,n){this.selectedApps[n]=e,n==="left"?(this.selectedSummaryLocale.left=null,this._cachedLeftDocument=null,this._cachedLeftKey=null):(this.selectedSummaryLocale.right=null,this._cachedRightDocument=null,this._cachedRightKey=null),this.diffVersions=null,this.generatingDiff=!1,this._cdr.markForCheck(),this.selectedApps.left&&this.selectedApps.right&&this.compareMode==="app_doc"&&this.generateDiffAsync()}selectSummaryLocale(e,n,r){this.selectedApps[r]?.apps_id===e.apps_id&&(this.selectedSummaryLocale[r]=n,r==="left"?(this._cachedLeftDocument=null,this._cachedLeftKey=null):(this._cachedRightDocument=null,this._cachedRightKey=null),this.diffVersions=null,this.generatingDiff=!1,this._cdr.markForCheck())}getSummaryForLocale(e,n){let[r,d,u]=n.split(":");return e.unified_summaries.find($=>$.language_code===r&&$.country_code===d&&$.currency_code===u)?.doc||null}getLocaleString(e){return`${e.language_code}:${e.country_code}:${e.currency_code}`}getLeftDocument(){let e=this.compareMode==="app_doc"?`app_doc_${this.selectedApps.left?.apps_id||"null"}`:`summary_${this.selectedApps.left?.apps_id||"null"}_${this.selectedSummaryLocale.left||"null"}`;if(this._cachedLeftKey===e&&this._cachedLeftDocument!==null)return this._cachedLeftDocument;let n;if(this.compareMode==="app_doc")n=JSON.stringify(this.selectedApps.left?.app_doc||{},null,2);else{let r=this.selectedSummaryLocale.left;if(!r||!this.selectedApps.left)n="";else{let d=this.getSummaryForLocale(this.selectedApps.left,r);n=JSON.stringify(d||{},null,2)}}return this._cachedLeftDocument=n,this._cachedLeftKey=e,n}getRightDocument(){let e=this.compareMode==="app_doc"?`app_doc_${this.selectedApps.right?.apps_id||"null"}`:`summary_${this.selectedApps.right?.apps_id||"null"}_${this.selectedSummaryLocale.right||"null"}`;if(this._cachedRightKey===e&&this._cachedRightDocument!==null)return this._cachedRightDocument;let n;if(this.compareMode==="app_doc")n=JSON.stringify(this.selectedApps.right?.app_doc||{},null,2);else{let r=this.selectedSummaryLocale.right;if(!r||!this.selectedApps.right)n="";else{let d=this.getSummaryForLocale(this.selectedApps.right,r);n=JSON.stringify(d||{},null,2)}}return this._cachedRightDocument=n,this._cachedRightKey=e,n}onCompareModeChange(e){this.compareMode=e,this._cachedLeftDocument=null,this._cachedRightDocument=null,this._cachedLeftKey=null,this._cachedRightKey=null,this.diffVersions=null,this.generatingDiff=!1,this._cdr.markForCheck()}generateDiffAsync(){return b(this,null,function*(){if(!(!this.canCompare()||this.generatingDiff)){this.generatingDiff=!0,this.diffVersions=null,this._cdr.markForCheck(),yield new Promise(e=>setTimeout(e,0));try{let e=this.getLeftDocument(),n=this.getRightDocument();yield new Promise(r=>setTimeout(r,50)),this.diffVersions=[{value:e,timestamp:""},{value:n,timestamp:""}]}catch(e){console.error("Error generating diff:",e),this.diffVersions=null}finally{this.generatingDiff=!1,this._cdr.markForCheck()}}})}canCompare(){return this.compareMode==="app_doc"?this.selectedApps.left!==null&&this.selectedApps.right!==null:this.selectedApps.left!==null&&this.selectedApps.right!==null&&this.selectedSummaryLocale.left!==null&&this.selectedSummaryLocale.right!==null}toggleAppDoc(e){let n=this.expandedAppDocs.get(e)||!1;this.expandedAppDocs.set(e,!n),this._cdr.markForCheck()}isAppDocExpanded(e){return this.expandedAppDocs.get(e)||!1}onAppDocOpened(e){this.expandedAppDocs.set(e,!0),this._cdr.markForCheck()}onAppDocClosed(e){this.expandedAppDocs.set(e,!1),this._cdr.markForCheck()}toggleUnifiedSummaries(e){let n=this.expandedUnifiedSummaries.get(e)||!1;this.expandedUnifiedSummaries.set(e,!n),this._cdr.markForCheck()}isUnifiedSummariesExpanded(e){return this.expandedUnifiedSummaries.get(e)||!1}
1onUnifiedSummariesOpened(e){this.expandedUnifiedSummaries.set(e,!0),this._cdr.markForCheck()}onUnifiedSummariesClosed(e){this.expandedUnifiedSummaries.set(e,!1),this._cdr.markForCheck()}setSummaryTab(e,n){this.selectedSummaryTab.set(e,n),this._cdr.markForCheck()}getSummaryTab(e){let n=this.selectedSummaryTab.get(e);if(n)return n;let d=this.duplicates.reduce((u,S)=>u.concat(S.apps),[]).find(u=>u.apps_id===e);if(d&&d.unified_summaries.length>0){let u=this.getLocaleString(d.unified_summaries[0]);return this.selectedSummaryTab.set(e,u),u}return""}getTabIndex(e){let r=this.duplicates.reduce((S,$)=>S.concat($.apps),[]).find(S=>S.apps_id===e);if(!r)return 0;let d=this.getSummaryTab(e),u=r.unified_summaries.findIndex(S=>this.getLocaleString(S)===d);return u>=0?u:0}onTabChange(e,n){let d=this.duplicates.reduce((u,S)=>u.concat(S.apps),[]).find(u=>u.apps_id===e);if(d&&d.unified_summaries[n]){let u=this.getLocaleString(d.unified_summaries[n]);this.setSummaryTab(e,u)}}getAppDocJson(e){return JSON.stringify(e.app_doc||{},null,2)}getSummaryDocJson(e,n){let r=this.getSummaryForLocale(e,n);return JSON.stringify(r||{},null,2)}getPlatformLinks(e){return!e||!e.app_urls?[]:Array.isArray(e.app_urls)?e.app_urls.map(n=>typeof n=="string"?n:n&&typeof n=="object"&&n.link_url?n.link_url:null).filter(n=>n!==null&&n!==""):e.app_urls&&typeof e.app_urls=="object"&&Array.isArray(e.app_urls.link_url)?e.app_urls.link_url.filter(n=>n&&n!==""):[]}formatNumber(e){if(e==null)return"0";let n=typeof e=="string"?parseInt(e,10):e;return isNaN(n)?"0":n.toLocaleString()}formatDate(e){if(!e)return"";let n;return typeof e=="number"?n=e<1e10?new Date(e*1e3):new Date(e):typeof e=="string"?n=new Date(e):n=e,isNaN(n.getTime())?"":n.toLocaleString()}hasDate(e,n){if(!e)return!1;let r=e[n]||e[`${n}_at`]||e[`${n}ed`]||e[`${n}ed_at`];if(r==null||r==="")return!1;let d=typeof r=="number"?r<1e10?new Date(r*1e3):new Date(r):new Date(r);return!isNaN(d.getTime())}
1getDateField(e,n){return e&&(e[n]||e[`${n}_at`]||e[`${n}ed`]||e[`${n}ed_at`])||null}static{this.\u0275fac=function(n){return new(n||t)(M(V),M(k))}}static{this.\u0275cmp=O({type:t,selectors:[["app-duplicate-apps-tool"]],inputs:{triggerRun:"triggerRun"},outputs:{onResultUpdate:"onResultUpdate"},standalone:!1,features:[N],decls:6,vars:5,consts:[[1,"duplicate-apps-tool"],["class","initial-state",4,"ngIf"],["class","loading",4,"ngIf"],["class","error-message",4,"ngIf"],["class","no-results",4,"ngIf"],["class","results",4,"ngIf"],[1,"initial-state"],[1,"loading"],["diameter","32"],[1,"error-message"],["color","warn"],[1,"no-results"],[1,"results"],[1,"summary"],[1,"duplicate-groups"],[3,"expanded",4,"ngFor","ngForOf"],[3,"expanded"],[1,"group-content"],[1,"apps-list"],["class","app-card",3,"selected-left","selected-right",4,"ngFor","ngForOf"],["class","comparison-section",4,"ngIf"],[1,"app-card"],[1,"app-info"],["class","info-item",4,"ngIf"],["class","app-details",4,"ngIf"],["mat-stroked-button","",3,"click","color"],[1,"document-sections"],[3,"opened","closed","expanded"],["class","json-container",4,"ngIf"],["class","summaries-container",4,"ngIf"],[1,"info-item"],[1,"app-details"],["class","detail-row",4,"ngIf"],[1,"detail-row"],[1,"description-text"],[1,"platform-links"],[4,"ngFor","ngForOf"],["target","_blank","rel","noopener noreferrer",1,"external-link",3,"href"],[1,"json-container"],[1,"json-display"],[1,"summaries-container"],[3,"selectedIndexChange","selectedIndex"],[3,"label",4,"ngFor","ngForOf"],[3,"label"],[1,"comparison-section"],[1,"comparison-controls"],[3,"ngModelChange","ngModel"],["value","app_doc"],["value","unified_summary"],["class","locale-selectors",4,"ngIf"],["class","comparison-hint",4,"ngIf"],["class","diff-generating",4,"ngIf"],["class","diff-viewer",4,"ngIf"],[1,"locale-selectors"],[1,"locale-selector"],["placeholder","Select locale",3,"ngModelChange","selectionChange","ngModel","disabled"],[3,"value",4,"ngFor","ngForOf"],[3,"value"],[1,"comparison-hint"],[1,"diff-generating"],["mode","indeterminate"],[1,"diff-viewer"],[3,"versions","diffView"]],template:function(n,r){n&1&&(a(0,"div",0),_(1,tt,3,0,"div",1)(2,nt,4,0,"div",2)(3,it,5,1,"div",3)(4,at,5,0,"div",4)(5,Ot,6,3,"div",5),i()),n&2&&(o(),c("ngIf",!r.triggerRun&&!r.loading&&r.duplicates.length===0),o(),c("ngIf",r.loading),o(),c("ngIf",r.error),o(),c("ngIf",!r.loading&&!r.error&&r.triggerRun&&r.duplicates.length===0),o(),c("ngIf",!r.loading&&!r.error&&r.duplicates.length>0))},dependencies:[H,A,K,W,L,R,X,z,J,Q,q,de,F,xe,ye,ve,Te,Se,Ce,ge,Re,Le,Ve,$e,Fe,Ue],styles:[".duplicate-apps-tool[_ngcontent-%COMP%]{padding:16px}.initial-state[_ngcontent-%COMP%]{padding:20px;text-align:center;color:#999}.loading[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;padding:20px;justify-content:center}.error-message[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;color:#f44336;padding:12px;background:#f443361a;border-radius:4px;margin-bottom:16px}.no-results[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;padding:20px;justify-content:center;color:#4caf50}.summary[_ngcontent-%COMP%]{margin-bottom:16px}.summary[_ngcontent-%COMP%]   h3[_ngcontent-%COMP%]{margin:0;color:#ddd}.duplicate-groups[_ngcontent-%COMP%]{margin-top:16px}.group-content[_ngcontent-%COMP%]{padding:16px 0}.apps-list[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px;margin-bottom:24px}.app-card[_ngcontent-%COMP%]{background:#1c1f24;color:#ddd}.app-card.selected-left[_ngcontent-%COMP%]{border:2px solid #2196f3}.app-card.selected-right[_ngcontent-%COMP%]{border:2px solid #4caf50}.app-info[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:12px;margin-top:4px;font-size:12px;color:#999}.app-info[_ngcontent-%COMP%]   .info-item[_ngcontent-%COMP%]{color:#bbb}.app-details[_ngcontent-%COMP%]{margin-top:12px;padding-top:12px;border-top:1px solid #333}.detail-row[_ngcontent-%COMP%]{margin-bottom:8px;font-size:13px;line-height:1.5}.detail-row[_ngcontent-%COMP%]   strong[_ngcontent-%COMP%]{color:#ddd;margin-right:8px}.platform-links[_ngcontent-%COMP%]{margin:4px 0 0 20px;padding:0;list-style:disc}.platform-links[_ngcontent-%COMP%]   li[_ngcontent-%COMP%]{margin-bottom:4px;word-break:break-all}.external-link[_ngcontent-%COMP%]{color:#2196f3;text-decoration:none}.external-link[_ngcontent-%COMP%]:hover{text-decoration:underline}.comparison-section[_ngcontent-%COMP%]{margin-top:24px;padding-top:24px;border-top:1px solid #333}
1.comparison-section[_ngcontent-%COMP%]   h4[_ngcontent-%COMP%]{margin:0 0 16px;color:#ddd}.comparison-controls[_ngcontent-%COMP%]{margin-bottom:16px}.locale-selectors[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}.locale-selector[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px}.locale-selector[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]{color:#ddd;font-size:14px}.diff-viewer[_ngcontent-%COMP%]{margin-top:16px;border:1px solid #333;border-radius:4px;overflow:hidden}.comparison-hint[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;padding:16px;background:#22252b;border-radius:4px;color:#999}.diff-generating[_ngcontent-%COMP%]{padding:24px;text-align:center}.diff-generating[_ngcontent-%COMP%]   mat-progress-bar[_ngcontent-%COMP%]{margin-bottom:12px}.diff-generating[_ngcontent-%COMP%]   p[_ngcontent-%COMP%]{margin:0;color:#ddd;font-size:14px}mat-expansion-panel[_ngcontent-%COMP%]{background:#1c1f24;color:#ddd;margin-bottom:8px}mat-panel-title[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.document-sections[_ngcontent-%COMP%]{margin-top:16px;width:100%}.document-sections[_ngcontent-%COMP%]   mat-expansion-panel[_ngcontent-%COMP%]{margin-bottom:12px}.json-container[_ngcontent-%COMP%]{padding:16px;background:#18181d;border-radius:4px;overflow:auto;max-height:70vh}.json-display[_ngcontent-%COMP%]{margin:0;padding:0;font-family:Courier New,Courier,monospace;font-size:12px;line-height:1.5;color:#e0e0e0;white-space:pre-wrap;word-break:break-word;background:transparent}.summaries-container[_ngcontent-%COMP%]{margin-top:8px}.summaries-container[_ngcontent-%COMP%]     .mat-mdc-tab-group{background:#1c1f24}.summaries-container[_ngcontent-%COMP%]     .mat-mdc-tab-header{background:#22252b;border-radius:4px 4px 0 0}.summaries-container[_ngcontent-%COMP%]     .mat-mdc-tab-body-wrapper{background:#18181d;border-radius:0 0 4px 4px}.summaries-container[_ngcontent-%COMP%]     .mat-mdc-tab-body{padding:16px}mat-card-content[_ngcontent-%COMP%]{padding-top:16px}"],changeDetection:0})}}return t})();var Je=()=>["scrape_url","priority","processed","created_at"],qe=()=>["scrape_url","derived_status","priority","last_modified","created_at"];function Pt(t,p){t&1&&(a(0,"mat-icon"),l(1,"search"),i())}function Dt(t,p){t&1&&v(0,"mat-spinner",11)}function It(t,p){if(t&1&&(a(0,"div",12)(1,"mat-icon",13),l(2,"error"),i(),a(3,"span"),l(4),i()()),t&2){let e=s();o(4),m(e.error)}}function kt(t,p){t&1&&(a(0,"th",29),l(1,"URL"),i())}function At(t,p){if(t&1){let e=C();a(0,"div",38)(1,"span",39),l(2,"Canonical:"),i(),a(3,"span",40),l(4),i(),a(5,"code",36),h("click",function(){g(e);let r=s().$implicit,d=s(3);return f(d.copyUrl(r.canonical_hash))}),l(6),i()()}if(t&2){let e=s().$implicit;o(4),m(e.canonical_url),o(2),m(e.canonical_hash)}}function Rt(t,p){if(t&1){let e=C();a(0,"td",30)(1,"div",31)(2,"span",32),l(3),i(),a(4,"button",33),h("click",function(){let r=g(e).$implicit,d=s(3);return f(d.copyUrl(r.scrape_url))}),a(5,"mat-icon"),l(6,"content_copy"),i()()(),a(7,"div",34)(8,"span",35),l(9,"Hash:"),i(),a(10,"code",36),h("click",function(){let r=g(e).$implicit,d=s(3);return f(d.copyUrl(r.url_hash))}),l(11),i()(),_(12,At,7,2,"div",37),i()}if(t&2){let e=p.$implicit;o(3),m(e.scrape_url),o(8),m(e.url_hash),o(),c("ngIf",e.scrape_url!==e.canonical_url)}}function Lt(t,p){t&1&&(a(0,"th",29),l(1,"Priority"),i())}function Ft(t,p){if(t&1&&(a(0,"td",30)(1,"span",41),l(2),i()()),t&2){let e=p.$implicit;o(),U("high",e.priority>=100),o(),m(e.priority)}}function Vt(t,p){t&1&&(a(0,"th",29),l(1,"Processed"),i())}function $t(t,p){if(t&1&&(a(0,"td",30)(1,"mat-icon",42),l(2),i()()),t&2){let e=p.$implicit;o(),c("color",e.processed?"primary":"warn"),o(),x(" ",e.processed?"check_circle":"pending"," ")}}function Ut(t,p){t&1&&(a(0,"th",29),l(1,"Created"),i())}function Nt(t,p){if(t&1&&(a(0,"td",30),l(1),G(2,"date"),i()),t&2){let e=p.$implicit;
1o(),m(B(2,1,e.created_at,"short"))}}function jt(t,p){t&1&&v(0,"tr",43)}function Gt(t,p){t&1&&v(0,"tr",44)}function Bt(t,p){if(t&1&&(a(0,"div",18)(1,"h4"),l(2,"Manual Queue Entries"),i(),a(3,"div",19)(4,"table",20),y(5,21),_(6,kt,2,0,"th",22)(7,Rt,13,3,"td",23),T(),y(8,24),_(9,Lt,2,0,"th",22)(10,Ft,3,3,"td",23),T(),y(11,25),_(12,Vt,2,0,"th",22)(13,$t,3,2,"td",23),T(),y(14,26),_(15,Ut,2,0,"th",22)(16,Nt,3,4,"td",23),T(),_(17,jt,1,0,"tr",27)(18,Gt,1,0,"tr",28),i()()()),t&2){let e=s(2);o(4),c("dataSource",e.result.manual_queue_results),o(13),c("matHeaderRowDef",w(3,Je)),o(),c("matRowDefColumns",w(4,Je))}}function Ht(t,p){t&1&&(a(0,"th",29),l(1,"URL"),i())}function Kt(t,p){if(t&1){let e=C();a(0,"div",38)(1,"span",39),l(2,"Canonical:"),i(),a(3,"span",40),l(4),i(),a(5,"code",36),h("click",function(){g(e);let r=s().$implicit,d=s(3);return f(d.copyUrl(r.canonical_hash))}),l(6),i()()}if(t&2){let e=s().$implicit;o(4),m(e.canonical_url),o(2),m(e.canonical_hash)}}function Wt(t,p){if(t&1){let e=C();a(0,"td",30)(1,"div",31)(2,"span",32),l(3),i(),a(4,"button",33),h("click",function(){let r=g(e).$implicit,d=s(3);return f(d.copyUrl(r.scrape_url))}),a(5,"mat-icon"),l(6,"content_copy"),i()()(),a(7,"div",34)(8,"span",35),l(9,"Hash:"),i(),a(10,"code",36),h("click",function(){let r=g(e).$implicit,d=s(3);return f(d.copyUrl(r.url_hash))}),l(11),i()(),_(12,Kt,7,2,"div",37),i()}if(t&2){let e=p.$implicit;o(3),m(e.scrape_url),o(8),m(e.url_hash),o(),c("ngIf",e.scrape_url!==e.canonical_url)}}function zt(t,p){t&1&&(a(0,"th",29),l(1,"Status"),i())}function Jt(t,p){if(t&1&&(a(0,"td",30)(1,"span",47),l(2),i()()),t&2){let e=p.$implicit;o(),c("ngClass",e.derived_status),o(),m(e.derived_status)}}function qt(t,p){t&1&&(a(0,"th",29),l(1,"Priority"),i())}function Qt(t,p){if(t&1&&(a(0,"td",30)(1,"span",41),l(2),i()()),t&2){let e=p.$implicit;o(),U("high",e.priority>=100),o(),m(e.priority)}}function Xt(t,p){t&1&&(a(0,"th",29),l(1,"Last Modified"),i())}function Yt(t,p){if(t&1&&(a(0,"td",30),l(1),G(2,"date"),i()),t&2){let e=p.$implicit;o(),m(B(2,1,e.last_modified,"short"))}}function Zt(t,p){t&1&&(a(0,"th",29),l(1,"Created"),i())}function en(t,p){if(t&1&&(a(0,"td",30),l(1),G(2,"date"),i()),t&2){let e=p.$implicit;
1o(),m(B(2,1,e.created_at,"short"))}}function tn(t,p){t&1&&v(0,"tr",43)}function nn(t,p){t&1&&v(0,"tr",44)}function an(t,p){if(t&1&&(a(0,"div",18)(1,"h4"),l(2,"Schedule Table Entries"),i(),a(3,"div",19)(4,"table",20),y(5,21),_(6,Ht,2,0,"th",22)(7,Wt,13,3,"td",23),T(),y(8,45),_(9,zt,2,0,"th",22)(10,Jt,3,2,"td",23),T(),y(11,24),_(12,qt,2,0,"th",22)(13,Qt,3,3,"td",23),T(),y(14,46),_(15,Xt,2,0,"th",22)(16,Yt,3,4,"td",23),T(),y(17,26),_(18,Zt,2,0,"th",22)(19,en,3,4,"td",23),T(),_(20,tn,1,0,"tr",27)(21,nn,1,0,"tr",28),i()()()),t&2){let e=s(2);o(4),c("dataSource",e.result.schedule_results),o(16),c("matHeaderRowDef",w(3,qe)),o(),c("matRowDefColumns",w(4,qe))}}function on(t,p){t&1&&(a(0,"div",48)(1,"mat-icon"),l(2,"search_off"),i(),a(3,"span"),l(4,"No schedule entries found matching this pattern"),i()())}function rn(t,p){if(t&1&&(a(0,"div",14)(1,"div",15)(2,"span"),l(3,"Pattern: "),a(4,"code"),l(5),i()(),a(6,"span"),l(7),i(),a(8,"span"),l(9),i()(),_(10,Bt,19,5,"div",16)(11,an,22,5,"div",16)(12,on,5,0,"div",17),i()),t&2){let e=s();o(5),m(e.result.pattern),o(2),x("Manual Queue: ",e.result.total_manual_queue," results"),o(2),x("Schedule Table: ",e.result.total_schedule," results"),o(),c("ngIf",e.result.manual_queue_results.length>0),o(),c("ngIf",e.result.schedule_results.length>0),o(),c("ngIf",e.result.manual_queue_results.length===0&&e.result.schedule_results.length===0)}}var Qe=(()=>{class t{constructor(e,n){this._api=e,this._cdr=n,this.triggerRun=!1,this.onResultUpdate=new j,this.urlPattern="",this.limit=20,this.loading=!1,this.error=null,this.result=null}ngOnChanges(e){e.triggerRun&&this.triggerRun&&this.onResultUpdate.emit("ready")}search(){return b(this,null,function*(){if(!this.urlPattern.trim()){this.error="Please enter a URL pattern to search",this._cdr.markForCheck();return}this.loading=!0,this.error=null,this.result=null,this._cdr.markForCheck();try{this.result=yield this._api.searchSchedulesByUrlPattern(this.urlPattern,this.limit),this.onResultUpdate.emit("completed")}catch(e){this.error=e?.message||"Failed to search schedules"}finally{this.loading=!1,this._cdr.markForCheck()}})}copyUrl(e){navigator.clipboard.writeText(e)}static{this.\u0275fac=function(n){return new(n||t)(M(V),M(k))}}static{this.\u0275cmp=O({type:t,selectors:[["app-schedule-search-tool"]],inputs:{triggerRun:"triggerRun"},outputs:{onResultUpdate:"onResultUpdate"},standalone:!1,features:[N],decls:19,vars:8,consts:[[1,"schedule-search-tool"],[1,"search-form"],["appearance","outline",1,"pattern-input"],["matInput","","placeholder","e.g., meta.com/experiences",3,"ngModelChange","keyup.enter","ngModel"],["appearance","outline",1,"limit-input"],["matInput","","type","number","min","1","max","100",3,"ngModelChange","ngModel"],["mat-raised-button","","color","primary",3,"click","disabled"],[4,"ngIf"],["diameter","20",4,"ngIf"],["class","error-message",4,"ngIf"],["class","results",4,"ngIf"],["diameter","20"],[1,"error-message"],["color","warn"],[1,"results"],[1,"results-summary"],["class","result-section",4,"ngIf"],["class","no-results",4,"ngIf"],[1,"result-section"],[1,"table-wrapper"],["mat-table","",1,"results-table",3,"dataSource"],["matColumnDef","scrape_url"],["mat-header-cell","",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","priority"],["matColumnDef","processed"],["matColumnDef","created_at"],["mat-header-row","",4,"matHeaderRowDef"],["mat-row","",4,"matRowDef","matRowDefColumns"],["mat-header-cell",""],["mat-cell",""],[1,"url-cell"],[1,"url-text"],["mat-icon-button","","matTooltip","Copy URL",3,"click"],[1,"hash-info"],[1,"hash-label"],[1,"hash-value",3,"click"],["class","canonical-info",4,"ngIf"],[1,"canonical-info"],[1,"canonical-label"],[1,"canonical-url"],[1,"priority-badge"],[3,"color"],["mat-header-row",""],["mat-row",""],["matColumnDef","derived_status"],["matColumnDef","last_modified"],[1,"status-chip",3,"ngClass"],[1,"no-results"]],template:function(n,r){n&1&&(a(0,"div",0)(1,"div",1)(2,"mat-form-field",2)(3,"mat-label"),l(4,"URL Pattern"),i(),a(5,"input",3),I("ngModelChange",function(u){return D(r.urlPattern,u)||(r.urlPattern=u),u}),h("keyup.enter",function(){return r.search()}),i(),a(6,"mat-hint"),l(7,"Enter part of a URL to search for matching schedule entries"),i()(),a(8,"mat-form-field",4)(9,"mat-label"),l(10,"Limit"),i(),a(11,"input",5),I("ngModelChange",function(u){return D(r.limit,u)||(r.limit=u),u}),i()(),a(12,"button",6),h("click",function(){return r.search()}),_(13,Pt,2,0,"mat-icon",7)(14,Dt,1,0,"mat-spinner",8),a(15,"span"),l(16),i()()(),_(17,It,5,1,"div",9)(18,rn,13,6,"div",10),i()),n&2&&(o(5),P("ngModel",r.urlPattern),o(6),P("ngModel",r.limit),o(),c("disabled",r.loading),o(),c("ngIf",!r.loading),o(),c("ngIf",r.loading),o(2),m(r.loading?"Searching...":"Search"),o(),c("ngIf",r.error),o(),c("ngIf",r.result))},dependencies:[ne,A,re,le,K,ce,pe,W,L,se,R,ae,Me,we,De,Oe,be,Ie,Ee,Pe,ke,Ae,ue,_e,me,fe,F,he,ie],styles:[".schedule-search-tool[_ngcontent-%COMP%]{padding:16px 0}.search-form[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:16px;margin-bottom:24px}.search-form[_ngcontent-%COMP%]   .pattern-input[_ngcontent-%COMP%]{flex:1;min-width:300px}.search-form[_ngcontent-%COMP%]   .limit-input[_ngcontent-%COMP%]{width:100px}.search-form[_ngcontent-%COMP%]   button[_ngcontent-%COMP%]{margin-top:4px}.error-message[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;color:#f44336;margin-bottom:16px}.results-summary[_ngcontent-%COMP%]{display:flex;gap:24px;padding:12px 16px;background:#ffffff0d;border-radius:4px;margin-bottom:16px}.results-summary[_ngcontent-%COMP%]   code[_ngcontent-%COMP%]{background:#0000004d;padding:2px 6px;border-radius:3px}.result-section[_ngcontent-%COMP%]{margin-bottom:24px}
1.result-section[_ngcontent-%COMP%]   h4[_ngcontent-%COMP%]{margin-bottom:12px;color:#90caf9}.table-wrapper[_ngcontent-%COMP%]{overflow-x:auto}.results-table[_ngcontent-%COMP%]{width:100%;background:transparent}.results-table[_ngcontent-%COMP%]   .url-cell[_ngcontent-%COMP%]{display:flex;align-items:center;gap:4px}.results-table[_ngcontent-%COMP%]   .url-cell[_ngcontent-%COMP%]   .url-text[_ngcontent-%COMP%]{max-width:400px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.results-table[_ngcontent-%COMP%]   .hash-info[_ngcontent-%COMP%], .results-table[_ngcontent-%COMP%]   .canonical-info[_ngcontent-%COMP%]{display:flex;align-items:center;gap:6px;margin-top:4px;font-size:.85em;color:#999}.results-table[_ngcontent-%COMP%]   .hash-label[_ngcontent-%COMP%], .results-table[_ngcontent-%COMP%]   .canonical-label[_ngcontent-%COMP%]{color:#666;font-weight:500}.results-table[_ngcontent-%COMP%]   .hash-value[_ngcontent-%COMP%]{background:#0000004d;padding:2px 6px;border-radius:3px;font-family:monospace;font-size:.9em;cursor:pointer}.results-table[_ngcontent-%COMP%]   .hash-value[_ngcontent-%COMP%]:hover{background:#00000080}.results-table[_ngcontent-%COMP%]   .canonical-url[_ngcontent-%COMP%]{max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#90caf9}.priority-badge[_ngcontent-%COMP%]{display:inline-block;padding:2px 8px;border-radius:4px;background:#ffffff1a;font-weight:500}.priority-badge.high[_ngcontent-%COMP%]{background:#ff9800;color:#000}.status-chip[_ngcontent-%COMP%]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:.85em}.status-chip.completed[_ngcontent-%COMP%]{background:#4caf50;color:#fff}.status-chip.scheduled[_ngcontent-%COMP%]{background:#2196f3;color:#fff}.status-chip.scraping[_ngcontent-%COMP%], .status-chip.constructing[_ngcontent-%COMP%], .status-chip.backfilling[_ngcontent-%COMP%]{background:#ff9800;color:#000}.status-chip.failed[_ngcontent-%COMP%]{background:#f44336;color:#fff}.no-results[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;gap:12px;padding:32px;color:#999}.no-results[_ngcontent-%COMP%]   mat-icon[_ngcontent-%COMP%]{font-size:32px;width:32px;height:32px}"],changeDetection:0})}}return t})();function pn(t,p){t&1&&(a(0,"mat-icon"),l(1,"play_arrow"),i())}function cn(t,p){t&1&&v(0,"mat-spinner",10)}function sn(t,p){if(t&1){let e=C();a(0,"div",7)(1,"button",8),h("click",function(){g(e);let r=s().$implicit,d=s();return f(d.runTool(r.id))}),_(2,pn,2,0,"mat-icon",5)(3,cn,1,0,"mat-spinner",9),a(4,"span"),l(5),i()()()}if(t&2){let e=s().$implicit;o(),c("disabled",e.loading),o(),c("ngIf",!e.loading),o(),c("ngIf",e.loading),o(2),m(e.loading?"Running...":"Run Tool")}}function dn(t,p){if(t&1&&(a(0,"div",11)(1,"mat-icon",12),l(2,"error"),i(),a(3,"span"),l(4),i()()),t&2){let e=s().$implicit;o(4),m(e.error)}}function _n(t,p){if(t&1){let e=C();a(0,"app-schedule-search-tool",14),h("onResultUpdate",function(r){g(e);let d=s(2).$implicit;return f(d.result=r)}),i()}if(t&2){let e=s(2).$implicit;c("triggerRun",e.result!==null)}}function mn(t,p){if(t&1){let e=C();a(0,"app-duplicate-apps-tool",14),h("onResultUpdate",function(r){g(e);let d=s(2).$implicit;return f(d.result=r)}),i()}if(t&2){let e=s(2).$implicit;c("triggerRun",e.result!==null)}}function un(t,p){if(t&1&&(a(0,"div"),_(1,_n,1,1,"app-schedule-search-tool",13)(2,mn,1,1,"app-duplicate-apps-tool",13),i()),t&2){let e=s().$implicit;o(),c("ngIf",e.id==="schedule-search"),o(),c("ngIf",e.id==="duplicate-apps")}}function gn(t,p){if(t&1&&(a(0,"div",15)(1,"pre",16),l(2),i()()),t&2){let e=s().$implicit;o(2),m(e.result)}}function fn(t,p){if(t&1&&(a(0,"mat-expansion-panel")(1,"mat-expansion-panel-header")(2,"mat-panel-title")(3,"mat-icon"),l(4),i(),a(5,"span"),l(6),i()(),a(7,"mat-panel-description"),l(8),i()(),a(9,"div",2),_(10,sn,6,4,"div",3)(11,dn,5,1,"div",4)(12,un,3,2,"div",5)(13,gn,3,1,"div",6),i()()),t&2){let e=p.$implicit;o(4),m(e.icon),o(2),m(e.title),o(2),x(" ",e.description," "),o(2),c("ngIf",!e.hasComponent||!e.result),o(),c("ngIf",e.error),o(),c("ngIf",e.hasComponent&&!e.loading&&!e.error),o(),c("ngIf",!e.hasComponent&&e.result)}}var Xe=(()=>{class t{constructor(e,n){this._api=e,this._cdr=n,this.tools=[{id:"schedule-search",title:"Schedule Search",description:'Search schedule entries by URL pattern to debug "L
1ast scraped" display issues',icon:"manage_search",loading:!1,error:null,result:null,hasComponent:!0},{id:"categories-genres",title:"Categories and Genres",description:"Get all unique categories and genres from apps_unified_summaries",icon:"category",loading:!1,error:null,result:null},{id:"duplicate-apps",title:"Find Duplicate Apps",description:"Find apps with duplicate names and compare their documents",icon:"find_in_page",loading:!1,error:null,result:null,hasComponent:!0}]}runTool(e){return b(this,null,function*(){let n=this.tools.find(r=>r.id===e);if(n){n.loading=!0,n.error=null,n.result=null,this._cdr.markForCheck();try{e==="categories-genres"?yield this._runCategoriesGenresTool(n):(e==="duplicate-apps"||e==="schedule-search")&&(n.loading=!1,n.result="ready",this._cdr.markForCheck())}catch(r){n.loading=!1,n.error=r?.message||"Failed to run tool",this._cdr.markForCheck()}}})}_runCategoriesGenresTool(e){return b(this,null,function*(){let n=yield this._api.getCategoriesAndGenres();if(e.loading=!1,n){let r=this._formatData("CATEGORIES",n.categories),d=this._formatData("GENRES",n.genres);e.result=`${r}
2
3${d}`}this._cdr.markForCheck()})}_formatData(e,n){let r=[`${e}:`];return n.forEach(d=>{r.push(`  ${d.key}: ${d.doc_count}`)}),r.join(`
4`)}static{this.\u0275fac=function(n){return new(n||t)(M(V),M(k))}}static{this.\u0275cmp=O({type:t,selectors:[["app-scraper-other"]],standalone:!1,decls:5,vars:1,consts:[[1,"tools-container"],[4,"ngFor","ngForOf"],[1,"tool-content"],["class","tool-actions",4,"ngIf"],["class","error-message",4,"ngIf"],[4,"ngIf"],["class","tool-result",4,"ngIf"],[1,"tool-actions"],["mat-raised-button","","color","primary",3,"click","disabled"],["diameter","20","class","button-spinner",4,"ngIf"],["diameter","20",1,"button-spinner"],[1,"error-message"],["color","warn"],[3,"triggerRun","onResultUpdate",4,"ngIf"],[3,"onResultUpdate","triggerRun"],[1,"tool-result"],[1,"text-block"]],template:function(n,r){n&1&&(a(0,"div",0)(1,"h2"),l(2,"Other Tools"),i(),a(3,"mat-accordion"),_(4,fn,14,7,"mat-expansion-panel",1),i()()),n&2&&(o(4),c("ngForOf",r.tools))},dependencies:[H,A,L,R,X,z,J,Q,q,F,ze,Qe],styles:[".tools-container[_ngcontent-%COMP%]{padding:16px}h2[_ngcontent-%COMP%]{margin:0 0 16px;color:#ddd}mat-accordion[_ngcontent-%COMP%]{display:block}mat-expansion-panel[_ngcontent-%COMP%]{margin-bottom:8px;background:#1c1f24;color:#ddd}mat-panel-title[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.tool-content[_ngcontent-%COMP%]{padding:16px 0}.tool-actions[_ngcontent-%COMP%]{margin-bottom:16px}.tool-actions[_ngcontent-%COMP%]   button[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.button-spinner[_ngcontent-%COMP%]{display:inline-block;margin-right:8px}.error-message[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;color:#f44336;margin-bottom:16px;padding:12px;background:#f443361a;border-radius:4px}.tool-result[_ngcontent-%COMP%]{margin-top:16px}.text-block[_ngcontent-%COMP%]{white-space:pre-wrap;word-break:break-word;max-height:70vh;overflow:auto;background:#18181d;color:#ddd;padding:16px;border-radius:4px;font-family:Courier New,monospace;font-size:14px;line-height:1.5;margin:0}"],changeDetection:0})}}return t})();var hn=[{path:"",component:Xe}],Jn=(()=>{class t{static{this.\u0275fac=function(n){return new(n||t)}}static{this.\u0275mod=te({type:t})}static{this.\u0275inj=Z({imports:[Ne,oe.forChild(hn)]})}}return t})();export{Jn as OtherModule};

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.