PageSourceSearch

https://bookshipapp.com/4941.18b599b1b12a4740.js

js bookshipapp.com collected 2026-10-04 22:32:35 UTC 14,383 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkapp=self.webpackChunkapp||[]).push([[4941],{866:(x,k,d)=>{d.d(k,{In:()=>m,Z$:()=>g});var v=d(5083),g=function(c){return c.Home="home",c.Work="work",c.Other="other",c.Custom="custom",c.Mobile="mobile",c}(g||{});const m=(0,v.F3)("Contacts",{web:()=>d.e(8323).then(d.bind(d,8323)).then(c=>new c.ContactsWeb)})},4941:(x,k,d)=>{d.d(k,{$:()=>h});var v=d(467),t=d(7705),g=d(177),E=d(4341),m=d(5933),c=d(7618),y=d(935),R=d(3592),M=d(8670);function P(i,f){if(1&i){const r=t.RV6();t.j41(0,"ion-buttons",3)(1,"ion-button",12),t.EFF(2),t.k0s(),t.j41(3,"ion-button",2),t.bIt("click",function(){t.eBV(r);const _=t.XpG(2);return t.Njj(_.addContacts(1))}),t.EFF(4,"OK"),t.k0s()()}if(2&i){const r=t.XpG(2);t.R7$(2),t.SpI("Selected: ",r.selectedDetails.length,"")}}function O(i,f){1&i&&(t.j41(0,"div",19),t.EFF(1,"No contacts found"),t.k0s())}function D(i,f){1&i&&t.nrm(0,"ion-icon",24)}function p(i,f){1&i&&t.nrm(0,"ion-icon",25)}function e(i,f){if(1&i){const r=t.RV6();t.j41(0,"h3",26)(1,"ion-checkbox",27),t.bIt("ionChange",function(){const l=t.eBV(r).$implicit,C=t.XpG().$implicit,b=t.XpG(3);return t.Njj(b.addedContact(l,C))}),t.EFF(2),t.k0s()()}if(2&i){const r=f.$implicit;t.R7$(2),t.JRh(r.address)}}function a(i,f){if(1&i){const r=t.RV6();t.j41(0,"h3",26)(1,"ion-checkbox",27),t.bIt("ionChange",function(){const l=t.eBV(r).$implicit,C=t.XpG().$implicit,b=t.XpG(3);return t.Njj(b.addedContactPhone(l,C))}),t.EFF(2),t.k0s()()}if(2&i){const r=f.$implicit;t.R7$(2),t.JRh(r.number)}}function n(i,f){if(1&i&&(t.j41(0,"ion-item")(1,"ion-label")(2,"h2",20),t.DNE(3,D,1,0,"ion-icon",21),t.DNE(4,p,1,0,"ion-icon",22),t.EFF(5),t.k0s(),t.DNE(6,e,3,1,"h3",23),t.DNE(7,a,3,1,"h3",23),t.k0s()()),2&i){const r=f.$implicit;t.R7$(3),t.Y8G("ngIf",r.historyitem),t.R7$(1),t.Y8G("ngIf",r.groupid),t.R7$(1),t.SpI(" ",r.name.display," "),t.R7$(1),t.Y8G("ngForOf",r.emails),t.R7$(1),t.Y8G("ngForOf",r.phones)}}function o(i,f){if(1&i){const r=t.RV6();t.j41(0,"div",13)(1,"ion-toolbar",14)(2,"ion-searchbar",15),t.bIt("ngModelChange",function(_){t.eBV(r);const l=t.XpG(2);return t.Njj(l.query.value=_)})("ionInput",function(_){t.eBV(r);const l=t.XpG(2);return t.Njj(l.searchForContacts(_))}),t.k0s()(),t.DNE(3,O,2,0,"div",16),t.j41(4,"ion-list",17),t.DNE(5,n,8,5,"ion-item",18),t.k0s()()}if(2&i){const r=t.XpG(2);t.R7$(2),t.Y8G("ngModel",r.query.value),t.R7$(1),t.Y8G("ngIf",!r.contacts||0===r.contacts.length),t.R7$(2),t.Y8G("ngForOf",r.contacts)}}function u(i,f){if(1&i){const r=t.RV6();t.j41(0,"ion-header")(1,"ion-toolbar")(2,"ion-buttons",1)(3,"ion-button",2),t.bIt("click",function(){t.eBV(r);const _=t.XpG();return t.Njj(_.addContacts(0))}),t.EFF(4,"Cancel"),t.k0s()(),t.j41(5,"ion-title"),t.EFF(6,"Contacts"),t.k0s(),t.nrm(7,"ion-buttons",3),t.DNE(8,P,5,1,"ion-buttons",4),t.k0s()(),t.j41(9,"ion-content",5),t.DNE(10,o,6,3,"div",6),t.j41(11,"ion-fab",7)(12,"ion-fab-button",8),t.bIt("click",function(){t.eBV(r);const _=t.XpG();return t.Njj(_.addContacts(0))}),t.nrm(13,"ion-icon",9),t.k0s(),t.j41(14,"ion-fab-button",10),t.bIt("click",function(){t.eBV(r);const _=t.XpG();return t.Njj(_.addContacts(1))}),t.nrm(15,"ion-icon",11),t.k0s()()()}if(2&i){const r=t.XpG();t.R7$(8),t.Y8G("ngIf",r.selectedDetails&&r.selectedDetails.length>0),t.R7$(2),t.Y8G("ngIf",r.contacts&&r.show),t.R7$(4),t.Y8G("disabled",!r.canProceedAdding)}}let h=(()=>{var i;class f{constructor(s,_,l,C,b){this.routerOutlet=s,this.userService=_,this.contactsService=l,this.ux=C,this.textUtils=b,this.show=!1,this.done=new t.bkB,this.contacts=[],this.selectedContacts=[],this.selectedDetails=[],this.canProceedAdding=!1,this.query={}}modalOpening(){var s=this;return(0,v.A)(function*(){yield s.getAllContacts(),console.log("restarting contact picker",s.contacts)})()}addedContact(s,_){var l=s.address||"";l=this.textUtils.removeFromTextList(this.userService.getUserEmail(),l),s.addToReading=!s.hasOwnProperty("addToReading")||!s.addToReading,this.query.value="",s.addToReading?(this.selectedDetails.indexOf(l)<0&&this.selectedDetails.push(l),this.canProceedAdding=!0):this.selectedDetails.indexOf(l)>
1-1&&this.selectedDetails.splice(this.selectedDetails.indexOf(l),1)}addedContactPhone(s,_){var l=s.number?s.number.replace(/\s+/g,""):"";s.addToReading=!s.hasOwnProperty("addToReading")||!s.addToReading,this.query.value="",s.addToReading?(this.selectedDetails.indexOf(l)<0&&this.selectedDetails.push(l),this.canProceedAdding=!0):this.selectedDetails.indexOf(l)>-1&&this.selectedDetails.splice(this.selectedDetails.indexOf(l),1)}onWillDismiss(s){s&&s.detail&&s.detail.role&&"backdrop"===s.detail.role&&(this.resetState(),this.done.emit({name:"contactsCancel",contactsString:"",contacts:[]}))}resetState(){this.contacts&&this.contacts.forEach(s=>{s.phones&&s.phones.forEach(_=>{_.addToReading=!1}),s.emails&&s.emails.forEach(_=>{_.addToReading=!1})}),this.contacts=[],this.selectedContacts=[],this.selectedDetails=[],this.canProceedAdding=!1,this.query={},this.show=!1}addContacts(s){let _="";if(s){let l=[];this.selectedDetails.map(C=>{l=l.concat(C.replace(/, /g,",").split(","))}),l=[...new Set(l)],_=l.join(", ")}this.contacts&&(this.selectedContacts=this.contacts.filter(l=>l&&l.emails&&l.emails.some(C=>C.addToReading)||l&&l.phones&&l.phones.some(C=>C.addToReading))),this.done.emit({name:"contactsSelected",contactsString:_,contacts:this.selectedContacts}),this.resetState()}getAllContacts(){var s=this;return(0,v.A)(function*(){s.contactsService.get("includeHistory").then(_=>((!_||0===_.length)&&s.ux.say("No Contacts Found","We didn't find any contacts. Please manually enter email addresses.").then(l=>{l&&s.addContacts(0)}),_=_.filter(l=>l.name),s.contacts=[..._],s.contacts)).catch(_=>{s.ux.say("Error","Sorry, some kind of error occurred; please check your network connection and try again."),console.log("error",_)})})()}searchForContacts(s){this.contacts=this.contactsService.searchContacts(s.target.value)}}return(i=f).\u0275fac=function(s){return new(s||i)(t.rXU(m.Rg),t.rXU(c.D),t.rXU(y.F),t.rXU(R.S),t.rXU(M.O))},i.\u0275cmp=t.VBU({type:i,selectors:[["app-contacts-picker"]],inputs:{show:"show"},outputs:{done:"done"},standalone:!0,features:[t.aNF],decls:3,vars:2,consts:[[3,"isOpen","presentingElement","willPresent","willDismiss"],["slot","start"],[3,"click"],["slot","end"],["slot","end",4,"ngIf"],[1,"contacts-picker-width"],["class","contacts-picker",4,"ngIf"],["horizontal","end","vertical","bottom","slot","fixed"],["color","light",3,"click"],["name","close"],[3,"disabled","click"],["name","checkmark"],["color","dark"],[1,"contacts-picker"],[1,"new-background-color",2,"overflow","visible","position","relative"],["type","text","placeholder","Search contacts by email or phone #","debounce","250","show-clear-button","always",3,"ngModel","ngModelChange","ionInput"],["class","fullwidth ion-text-center",4,"ngIf"],[1,"contacts-container"],[4,"ngFor","ngForOf"],[1,"fullwidth","ion-text-center"],[1,"header-font","font-medium","nlines2","flex","ion-align-items-center"],["name","time","size","large",4,"ngIf"],["name","people-circle","size","large",4,"ngIf"],["class","header-font font-small",4,"ngFor","ngForOf"],["name","time","size","large"],["name","people-circle","size","large"],[1,"header-font","font-small"],["labelPlacement","start",3,"ionChange"]],template:function(s,_){1&s&&(t.nrm(0,"div"),t.j41(1,"ion-modal",0),t.bIt("willPresent",function(){return _.modalOpening()})("willDismiss",function(C){return _.onWillDismiss(C)}),t.DNE(2,u,16,3,"ng-template"),t.k0s()),2&s&&(t.R7$(1),t.Y8G("isOpen",_.show)("presentingElement",null==_.routerOutlet.parentOutlet?null:_.routerOutlet.parentOutlet.nativeEl))},dependencies:[m.bv,m.Jm,m.QW,m.eY,m.W9,m.Q8,m.YW,m.eU,m.iq,m.uz,m.he,m.nf,m.S1,m.BC,m.ai,m.Sb,m.hB,m.Gw,g.MD,g.Sq,g.bT,E.YN,E.BC,E.vS],styles:[".contacts-picker[_ngcontent-%COMP%]{padding-bottom:80px}.contacts-picker[_ngcontent-%COMP%]   h3[_ngcontent-%COMP%]{padding-left:.5rem}ion-fab[_ngcontent-%COMP%]{display:flex}ion-fab-button[_ngcontent-%COMP%]{margin-left:.5rem}.fab-button-disabled[_ngcontent-%COMP%]{--background: grey;opacity:1}"]}),f})()},935:(x,k,d)=>{d.d(k,{F:()=>M});var v=d(467),t=d(866),g=d(7705),E=d(7157),m=d(8802),c=d(66),y=d(8670),R=d(3592);let M=(()=>{var P;class O{constructor(p,e,a,n,o){this.platform=p,this.thpRequest=e,this.groupsService=a,this.textUtils=n,this.ux=o,this.contacts=[],this.locale=navigator.languages?navigator.languages[0]:navigator.language||navigator.userLanguage}validate(p,e,a){var n=this;return(0,v.A)(function*(){let o=n.textUtils.contactStringToArray(e);return n.thpRequest.post("validate.php",{userkey:p,contacts:o,readingid:a,xd:0}).then(i=>{if("error"in i)return{valid:!1,premium:!0,reason:"too many",rawdata:i.error};if(i.hasOwnProperty("contacts")&&i.contacts){let f=[];
1if(i.contacts.forEach(r=>{r.valid||f.push(r)}),0==f.length)return{valid:!0,premium:!1,contactstring:o.join(", "),rawdata:i};{let r="";return f.forEach(s=>{r+=`<div>${s.contact} (${s.reason})</div>`}),r+="<br/>",{valid:!1,premium:!1,invalid:f,rawdata:i,errorstring:r}}}return{valid:!1,premium:!1,invalid:[],rawdata:"",errorstring:"No contacts were provided."}})})()}get(p){var e=this;return(0,v.A)(function*(){if(e.contacts&&e.contacts.length>0&&"includeHistory"!==p)return new Promise(a=>{a(e.contacts)});if(e.ux.isCapacitor()&&typeof t.In<"u"){const a={name:!0,emails:!0,phones:!0,image:!0};let n=yield t.In.getContacts({projection:a}).catch(o=>{console.log("error on contacts",o)});if(e.platform.is("android")&&n&&n.contacts&&(n.contacts=n.contacts.filter(o=>o.name),n.contacts.forEach(o=>{if(o.emails&&Array.isArray(o.emails)){const u=new Map;o.emails.forEach(h=>{let i=h.address.toLowerCase();u.set(i,h)}),o.emails=Array.from(u.values())}if(o.phones&&Array.isArray(o.phones)){const u=new Map;o.phones=o.phones.filter((h,i,f)=>{let r=h.number.replace(/\(|\)|-| | /g,"");for(var s=0;s<i;s++)if(r===f[s].number.replace(/\(|\)|-| | /g,""))return!1;return!0}),o.phones.forEach(h=>{u.set(h.number,h)}),o.phones=Array.from(u.values())}})),n&&n.contacts&&(n.contacts=n.contacts.sort((o,u)=>e.nameSort(o,u))),e.contacts=n&&n.hasOwnProperty("contacts")?n.contacts:[],p){const o=yield e.groupsService.allAsContacts();return o&&o.contacts.reverse().forEach(u=>{e.contacts.unshift(u)}),e.contacts}return e.contacts}if(p){const a=yield e.groupsService.allAsContacts();return a&&a.contacts.reverse().forEach(n=>{e.contacts.unshift(n)}),e.contacts}return e.contacts})()}GroupsToContactsResult(p){let e;return e=p.map(n=>{let h={contactId:"",name:{display:n.title,given:"",middle:"",family:"",suffix:"",prefix:""},emails:[{type:t.Z$.Home,address:n.emails}],phones:[],image:{base64String:""}};return n.hasOwnProperty("historyitem")&&(h.historyitem=n.historyitem),n.hasOwnProperty("groupid")&&(h.groupid=n.groupid),h}),{contacts:e}}searchContacts(p){if(!this.contacts)return!1;if(!p)return this.contacts;var e=new RegExp(p,"i");return this.contacts.filter(n=>{let o=!(!n.name||!n.name.display)&&n.name.display.search(e)>-1,u=!!n.emails&&n.emails.find(i=>i.address&&i.address.search(e)>-1),h=!!n.phones&&n.phones.find(i=>i.number&&i.number.search(e)>-1);return o||u||h})}clearCache(){this.contacts=[]}reCacheGroups(p){if(this.contacts){let e=this.contacts.filter(n=>"historyitem"in n),a=this.contacts.filter(n=>!("historyitem"in n)&&!("groupid"in n));return this.contacts=[...e.concat(p.reverse()).concat(a)],this.contacts=[],this.contacts}return!1}nameSort(p,e){return p.name&&e.name&&p.name.display&&e.name.display?p.name.display.localeCompare(e.name.display,this.locale,{ignorePunctuation:!0}):1}}return(P=O).\u0275fac=function(p){return new(p||P)(g.KVO(E.OD),g.KVO(m.l),g.KVO(c.U),g.KVO(y.O),g.KVO(R.S))},P.\u0275prov=g.jDH({token:P,factory:P.\u0275fac,providedIn:"root"}),O})()},66:(x,k,d)=>{d.d(k,{U:()=>P});var v=d(467),t=d(866),g=d(5312),E=d(5941),m=d(7705),c=d(8802),y=d(2109),R=d(7618),M=d(7942);let P=(()=>{var O;class D{constructor(e,a,n,o){this.thpRequest=e,this.record=a,this.userService=n,this.S3ImageStore=o,this.theGroups=[]}get(e){var a=this;return(0,v.A)(function*(){const n=new E.zd;n.groupid=e,n.userkey=a.userService.getUserkey();const o="get_groups.php?"+n.urlize();return a.thpRequest.get(o).then(u=>{if(u&&u.groups&&u.groups.length>0)return a.clean(u.groups[0]);throw new Error("Group not found")})})()}all(e){var a=this;return(0,v.A)(function*(){const n=new E.zd;n.userkey=a.userService.getUserkey();let o="get_groups.php?"+n.urlize();return"includeHistory"===e&&(o+="&includeinvites=1"),a.thpRequest.get(o).then(u=>{const h=[];return u&&u.groups&&(u.groups.forEach(i=>{h.push(a.clean(i))}),a.userService.theUser&&"includeHistory"!==e&&(a.userService.theUser.groups=h.filter(i=>i.groupid))),a.theGroups=h,[...h]})})()}allAsContacts(){var e=this;return(0,v.A)(function*(){return e.all("includeHistory").then(a=>e.GroupsToContactsResult(a))})()}GroupsToContactsResult(e){let a;return a=e.map(o=>{let i={contactId:"",name:{display:o.title,given:"",middle:"",family:"",suffix:"",prefix:""},emails:[{type:t.Z$.Home,address:o.emails}],phones:[],image:{base64String:""}};return o.hasOwnProperty("historyitem")&&(i.historyitem=o.historyitem),o.hasOwnProperty("groupid")&&(i.groupid=o.groupid),i}
1),{contacts:a}}clean(e){const a=new E.YJ(e);return a.avatar="https://images.thehawaiiproject.com/bookshiplogo.svg",a.displayName=e.title,a.emailsString=e.emails||"",a.emails=e.emails||"",a.listbookids&&(a.listbookids=a.listbookids.map(n=>parseInt(n))),a}add(e,a,n){var o=this;return(0,v.A)(function*(){const h={operation:"addGroup",emails:e,title:a,userkey:o.userService.getUserkey(),xd:0};return n&&(h.groupid=n),o.record.group(n?"Edit":"Save"),o.thpRequest.post("doUpdate.php",h)})()}save(e){var a=this;return(0,v.A)(function*(){const o={operation:"addGroup",emails:e.emailsString,title:e.title,avatarimageurl:e.avatarimageurl,userkey:a.userService.getUserkey(),xd:0};return a.record.group("Save"),e.groupid&&(o.groupid=e.groupid),a.thpRequest.post("doUpdate.php",o)})()}delete(e,a){var n=this;return(0,v.A)(function*(){return n.thpRequest.post("doUpdate.php",{operation:"deleteGroup",id:`${e}`,userkey:a,xd:0})})()}saveAvatar(e,a){const n=`/group${e}/`,o=this.userService.getUserkey()+n+(new Date).getTime()+".jpg",u=g.c.imageBase+o;return this.S3ImageStore.storeImage(a,o,()=>u)}}return(O=D).\u0275fac=function(e){return new(e||O)(m.KVO(c.l),m.KVO(y.n),m.KVO(R.D),m.KVO(M.Y))},O.\u0275prov=m.jDH({token:O,factory:O.\u0275fac,providedIn:"root"}),D})()}}]);

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.