1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1959],{21959:function(t,e,i){i.d(e,{h:function(){return s}});var n=i(26816),a=i(19584),r=i(59280);function s(){let{getToken:t}=(0,n.aC)();return(0,a.useEffect)(()=>{r.x1.setAuthProvider(t)},[t]),(0,a.useMemo)(()=>r.x1,[])}},59280:function(t,e,i){i.d(e,{x1:function(){return c}});var n=i(68368),a=i(65114),r=i(80413),s=i(89626);class o{setAuthProvider(t){this.getToken=t}async getOwnerEventToken(){let t=this.getToken?await this.getToken():null;return t&&(this.lastOwnerEventToken=t),t}peekOwnerEventToken(){return this.lastOwnerEventToken}async buildHeaders(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i={"Content-Type":"application/json",...e.customHeaders};if(!e.skipAuth&&this.getToken){let t=await this.getToken();if(t){i.Authorization="Bearer ".concat(t),this.lastOwnerEventToken=t;try{let t=(0,s.Fl)((0,s.VA)());t&&(i[s.OU]=t)}catch(t){}!function(t){try{let e=(0,r.sW)();e&&(t[r.To]=e)}catch(t){}}(i)}}if(["POST","PUT","PATCH","DELETE"].includes(t.toUpperCase())&&!e.skipCSRF){let t=(0,n.pU)();document.cookie="csrfToken=".concat(t,"; path=/; SameSite=Lax"),i["X-CSRF-Token"]=t}return i}async request(t,e,i){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};try{let a="".concat(this.baseUrl).concat(t),r=await this.buildHeaders(e,n),s=await fetch(a,{method:e,headers:r,credentials:"include",body:i?JSON.stringify(i):void 0,signal:n.signal}),o=s.headers.get("content-type");if(o&&!o.includes("application/json")){if(s.ok)return{success:!0,data:s};return{success:!1,error:"HTTP ".concat(s.status,": ").concat(s.statusText)}}let l=await s.json();if(!s.ok)return{success:!1,error:l.error||l.message||"HTTP ".concat(s.status,": ").concat(s.statusText),message:l.message};return l}catch(t){if(t instanceof TypeError&&t.message.includes("fetch"))return{success:!1,error:"Network error. Please check your connection."};return{success:!1,error:t instanceof Error?t.message:"An unexpected error occurred"}}}async get(t,e){return this.request(t,"GET",void 0,e)}async post(t,e,i){return this.request(t,"POST",e,i)}async put(t,e,i){return this.request(t,"PUT",e,i)}async patch(t,e,i){return this.request(t,"PATCH",e,i)}async delete(t,e){return this.request(t,"DELETE",void 0,e)}async uploadFile(t,e){let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};try{let r="".concat(this.baseUrl).concat(t),s={};if(!a.skipAuth&&this.getToken){let t=await this.getToken();t&&(s.Authorization="Bearer ".concat(t))}if(!a.skipCSRF){let t=(0,n.pU)();document.cookie="csrfToken=".concat(t,"; path=/; SameSite=Lax"),s["X-CSRF-Token"]=t}Object.assign(s,a.customHeaders);let{default:o}=await Promise.all([i.e(7643),i.e(6949)]).then(i.bind(i,56949)),l=await o.post(r,e,{headers:s,withCredentials:!0,signal:a.signal,validateStatus:()=>!0,onUploadProgress:a.onUploadProgress?t=>{if(t.total){var e;null===(e=a.onUploadProgress)||void 0===e||e.call(a,Math.min(100,Math.round(t.loaded/t.total*100)))}}:void 0}),c=l.data;if(l.status<200||l.status>=300)return{success:!1,error:(null==c?void 0:c.error)||(null==c?void 0:c.message)||"HTTP ".concat(l.status,": ").concat(l.statusText)};return c}catch(t){return{success:!1,error:t instanceof Error?t.message:"Upload error"}}}constructor(t){this.lastOwnerEventToken=null,this.files={list:t=>{let e=new URLSearchParams;(null==t?void 0:t.page)&&e.append("page",t.page.toString()),(null==t?void 0:t.limit)&&e.append("limit",t.limit.toString()),(null==t?void 0:t.search)&&e.append("search",t.search),(null==t?void 0:t.folderId)!==void 0&&e.append("folderId",t.folderId.toString());let i=e.toString();return this.get("/api/files".concat(i?"?".concat(i):""))},get:t=>this.get("/api/files/".concat(t)),upload:(t,e)=>this.uploadFile("/api/files/upload",t,e),delete:t=>this.delete("/api/files/".concat(t)),download:t=>this.get("/api/files/".concat(t,"/download"),{skipCSRF:!0}),update:(t,e)=>this.patch("/api/files/".concat(t),e),versions:{list:t=>this.get("/api/files/".concat(t,"/versions")),upload:(t,e,i)=>this.uploadFile("/api/files/".concat(t,"/versions"),e,i),restore:(t,e)=>this.post("/api/files/".concat(t,"/versions/").concat(e,"/restore"))}},this.folders={list:()=>this.get("/api/folders"),create:t=>this.post("/api/folders",t),rename:(t,e)=>this.patch("/api/folders/".concat(t),{name:e}),delete:t=>this.delete("/api/folders/".concat(t))},this.shareLinks={list:t=>this.get("/api/share/file/".concat(t)),create:t=>this.post("/api/share",t),bulkCreate:t=>this.post("/api/share/bulk",t),get:(t,e)=>this.get("/api/share/".concat(t),{skipCSRF:!0,skipAuth:!0,...e}),update:(t,e)=>this.patch("/api/share/".concat(t),e,{skipCSRF:!0}),delete:t=>this.delete("/api/share/".concat(t),{skipCSRF:!0}),access:(t,e)=>this.post("/api/share/".concat(t,"/access"),e,{skipCSRF:!0,skipAuth:!0})},this.users={profile:()=>this.get("/api/users/profile"),proSignal:()=>this.get("/api/users/pro-signal"),activationSignal:()=>this.get("/api/users/activation-signal"),stats:()=>this.get("/api/users/stats"),settings:()=>this.get("/api/users/settings"),updateSettings:t=>this.patch("/api/users/settings",t)},this.waitlist={join:t=>this.post("/api/waitlist",t,{skipAuth:!0})},this.upgrade={startCheckout:t=>{let{interval:e,surface:i}=t;return this.post("/api/upgrade/plan",{interval:e},i?{customHeaders:{[r.oc]:i}}:void 0)},openPortal:()=>this.post("/api/upgrade/portal",{})},this.feedback={submit:t=>this.post("/api/feedback",t),getHistory:t=>{let e=new URLSearchParams;(null==t?void 0:t.page)&&e.append("page",t.page.toString()),(null==t?void 0:t.limit)&&e.append("limit",t.limit.toString());let i=e.toString();return this.get("/api/feedback".concat(i?"?".concat(i):""))},getRateLimit:()=>this.get("/api/feedback/rate-limit")},this.support={messages:t=>{let e=new URLSearchParams;(null==t?void 0:t.before)&&e.append("before",String(t.before)),(null==t?void 0:t.limit)&&e.append("limit",String(t.limit));let i=e.toString();return this.get("/api/support/messages".concat(i?"?".concat(i):""))},send:t=>this.post("/api/support/messages",{body:t}),read:()=>this.post("/api/support/read",{}),status:()=>this.get("/api/support/status")},this.adminSupport={conversations:()=>this.get("/api/admin/support/conversations"),unreadCount:()=>this.get("/api/admin/support/unread-count"),thread:t=>this.get("/api/admin/support/conversations/by-user/".concat(t)),send:(t,e)=>this.post("/api/admin/support/conversations/by-user/".concat(t,"/messages"),{body:e}),setStatus:(t,e)=>this.patch("/api/admin/support/conversations/by-user/".concat(t),{adminStatus:e})},this.dataRights={request:t=>this.post("/api/data-rights",t),getStatus:()=>this.get("/api/data-rights/status")},this.analytics={file:t=>this.get("/api/analytics/files/".concat(t)),exportCsv:t=>this.get("/api/analytics/files/".concat(t,"/export.csv"),{skipCSRF:!0}),aggregate:(t,e,i)=>{let n=new URLSearchParams;e&&n.append("days",e.toString()),i&&n.append("pageRange",i),n.append("_t",Date.now().toString());let a=n.toString();return this.get("/api/analytics/files/".concat(t,"/aggregate?").concat(a))},sessions:(t,e)=>{let i=new URLSearchParams;(null==e?void 0:e.page)&&i.append("page",e.page.toString()),(null==e?void 0:e.limit)&&i.append("limit",e.limit.toString()),(null==e?void 0:e.email)&&i.append("email",e.email),(null==e?void 0:e.device)&&i.append("device",e.device),(null==e?void 0:e.country)&&i.append("country",e.country),(null==e?void 0:e.dateFrom)&&i.append("dateFrom",e.dateFrom),(null==e?void 0:e.dateTo)&&i.append("dateTo",e.dateTo);let n=i.toString();return this.get("/api/analytics/files/".concat(t,"/sessions").concat(n?"?".concat(n):""))},individual:(t,e)=>{let i=new URLSearchParams;(null==e?void 0:e.page)&&i.append("page",e.page.toString()),(null==e?void 0:e.limit)&&i.append("limit",e.limit.toString()),(null==e?void 0:e.email)&&i.append("email",e.email),(null==e?void 0:e.device)&&i.append("device",e.device),(null==e?void 0:e.country)&&i.append("country",e.country),(null==e?void 0:e.dateFrom)&&i.append("dateFrom",e.dateFrom),(null==e?void 0:e.dateTo)&&i.append("dateTo",e.dateTo);let n=i.toString();return this.get("/api/analytics/files/".concat(t,"/individual").concat(n?"?".concat(n):""))},emailCaptures:(t,e)=>{let i=new URLSearchParams;(null==e?void 0:e.page)&&i.append("page",e.page.toString()),(null==e?void 0:e.limit)&&i.append("limit",e.limit.toString()),(null==e?void 0:e.verifiedOnly)&&i.append("verifiedOnly","true");let n=i.toString();return this.get("/api/analytics/files/".concat(t,"/email-captures").concat(n?"?".concat(n):""))},share:(t,e)=>{let i=new URLSearchParams;(null==e?void 0:e.page)&&i.append("page",e.page.toString()),(null==e?void 0:e.limit)&&i.append("limit",e.limit.toString());let n=i.toString();return this.get("/api/analytics/shares/".concat(t).concat(n?"?".concat(n):""))},dashboard:t=>{let e=new URLSearchParams;(null==t?void 0:t.days)!==void 0&&e.append("days",String(t.days));let i=e.toString();return this.get("/api/analytics/dashboard".concat(i?"?".concat(i):""))},signals:t=>this.get("/api/analytics/files/".concat(t,"/signals")),benchmark:t=>this.get("/api/analytics/files/".concat(t,"/benchmark")),journeys:t=>this.get("/api/analytics/files/".concat(t,"/journeys")),verdicts:t=>this.get("/api/analytics/files/".concat(t,"/verdicts")),trackPageView:t=>this.post("/api/analytics/page-view",t,{skipCSRF:!0,skipAuth:!0}
1),trackSessionEnd:t=>this.post("/api/analytics/session-end",t,{skipCSRF:!0,skipAuth:!0}),updateSessionActivity:t=>this.post("/api/analytics/session-activity",t,{skipCSRF:!0,skipAuth:!0}),trackDownload:t=>this.post("/api/analytics/download",t,{skipCSRF:!0,skipAuth:!0}),trackViewerEvent:t=>this.post("/api/analytics/viewer-event",t,{skipCSRF:!0,skipAuth:!0}),getDocumentStats:t=>this.get("/api/analytics/document/".concat(t,"/stats"),{skipCSRF:!0,skipAuth:!0})},this.baseUrl=t}}function l(t,e,i){let{url:n,init:s}=function(t,e,i,n){let s={"Content-Type":"text/plain",Authorization:"Bearer ".concat(t)};return e&&(s[r.To]=e),{url:"".concat(a.v.api.url,"/api/analytics/owner-event"),init:{method:"POST",headers:s,credentials:"include",keepalive:n.keepalive,body:JSON.stringify({events:i})}}}(t,(0,r.sW)(),e,{keepalive:i});return fetch(n,s).then(t=>{var e;if(!t.ok&&(429===(e=t.status)||e>=500))throw Error("owner-event ".concat(t.status))})}let c=new o(a.v.api.url);(0,r.v0)((t,e)=>{let{keepalive:i}=e;if(i){let e=c.peekOwnerEventToken();return e?l(e,t,!0):Promise.reject(Error("owner-event: no cached token"))}return c.getOwnerEventToken().then(e=>e?l(e,t,!1):void 0)})},65114:function(t,e,i){i.d(e,{s:function(){return o},v:function(){return s}});var n=i(49059),a=i(11782);let r=n.Ry({NODE_ENV:n.Km(["development","production","test"]).default("development"),NEXT_PUBLIC_API_URL:n.Z_().default("http://localhost:3001"),NEXT_PUBLIC_APP_URL:n.Z_().optional(),NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY:n.Z_().default("pk_test_placeholder"),CLERK_SECRET_KEY:n.Z_().optional(),NEXT_PUBLIC_APP_ENV:n.Z_().default("development")}).parse(a.env),s={env:r.NODE_ENV,api:{url:"",baseUrl:""},app:{url:r.NEXT_PUBLIC_APP_URL||window.location.origin,env:r.NEXT_PUBLIC_APP_ENV},viewerCtaUrl:"https://veodocs.com/see-who-reads?utm_source=viewer&utm_medium=share_cta&utm_campaign=free_tier",clerk:{publishableKey:r.NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY,secretKey:r.CLERK_SECRET_KEY},features:{analytics:!0,waitlist:!0,fileUpload:!0,shareLinks:!0},seo:{publicLandingPages:["/","/free-pdf-tracking","/how-to-track-pdf-views","/secure-pdf-sharing-guide","/pdf-analytics-tutorial","/pdf-tracking-faq","/pdf-privacy-policy","/pdf-sharing-terms"]}},o=()=>"https://veodocs.com"},80413:function(t,e,i){i.d(e,{H8:function(){return v},To:function(){return n},Xg:function(){return f},lg:function(){return m},oc:function(){return a},sW:function(){return d},v0:function(){return p}});let n="x-owner-session",a="x-owner-surface",r="pdftrackr.ownerSessionId",s=null,o=[],l=0,c=null,u=!1;function p(t){s=t}function d(){try{let t=globalThis.sessionStorage;if(!t)return null;let e=t.getItem(r);if(e&&/^[A-Za-z0-9_-]{1,64}$/.test(e))return e;let i=function(){try{let t=globalThis.crypto;if(null==t?void 0:t.randomUUID)return t.randomUUID()}catch(t){}return"s".concat(Date.now().toString(36)).concat(Math.random().toString(36).slice(2,10))}();return t.setItem(r,i),i}catch(t){return null}}function h(t){let e=t.map(t=>({...t,attempts:t.attempts+1})).filter(t=>t.attempts<3);if(0!==e.length&&(o=[...e,...o]).length>200){let t=o.length-200;o=o.slice(t),l+=t}}function g(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};try{if(null!==c&&(clearTimeout(c),c=null),0===o.length||null===s)return;let e=o.slice(0,50);o=o.slice(50);try{let i=s(e.map(t=>{let{event:e,props:i}=t;return{event:e,props:i}}),{keepalive:!0===t.keepalive});"function"==typeof(null==i?void 0:i.catch)&&i.catch(()=>h(e))}catch(t){h(e)}}catch(t){}}function f(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};try{if(!function(){if(u||"function"!=typeof globalThis.addEventListener)return;u=!0;let t=()=>{g({keepalive:!0})};globalThis.addEventListener("pagehide",t),globalThis.addEventListener("visibilitychange",()=>{var e;(null===(e=globalThis.document)||void 0===e?void 0:e.visibilityState)==="hidden"&&t()})}(),o.push({event:t,props:e,attempts:0}),o.length>=10){g();return}if(null===c){var i;c=setTimeout(()=>{c=null,g()},5e3),null===(i=c.unref)||void 0===i||i.call(c)}}catch(t){}}function m(t){return!Number.isFinite(t)||t<=0?"0":t<=2?"1-2":t<=10?"3-10":"10+"}function v(t){let e=t/1048576;return e<1?"<1MB":e<5?"1-5MB":e<20?"5-20MB":e<=50?"20-50MB":">50MB"}}
1,89626:function(t,e,i){i.d(e,{Fl:function(){return l},OU:function(){return a},VA:function(){return o},qS:function(){return s}});let n="pdftrackr:signup-source",a="x-signup-source";function r(t,e){if("string"!=typeof t)return null;let i=t.replace(/[\u0000-\u001F\u007F]/g,"").trim();return 0===i.length?null:i.slice(0,e)}function s(){let t=null;try{t=window.sessionStorage}catch(t){return}!function(t){let{storage:e}=t;if(e)try{if(null!==e.getItem(n))return;let i=function(t){let e;try{e=new URL(t.url)}catch(t){return null}return"/view"===e.pathname||e.pathname.startsWith("/view/")?null:{referrerHost:function(t,e){let i;try{i=new URL(t)}catch(t){return null}if("http:"!==i.protocol&&"https:"!==i.protocol)return null;let n=i.hostname.toLowerCase();return 0===n.length||n===e.toLowerCase()?null:r(n,255)}(t.referrer,e.hostname),landingPath:r(e.pathname,255),utmSource:r(e.searchParams.get("utm_source"),100),utmMedium:r(e.searchParams.get("utm_medium"),100),utmCampaign:r(e.searchParams.get("utm_campaign"),100)}}({referrer:t.referrer,url:t.url});if(!i)return;e.setItem(n,JSON.stringify(i))}catch(t){}}({referrer:document.referrer||"",url:window.location.href,storage:t})}function o(){try{return function(t){let e,i;if(!t)return null;try{e=t.getItem(n),t.removeItem(n)}catch(t){return null}if(!e)return null;try{let t=JSON.parse(e);if("object"!=typeof t||null===t)return null;i=t}catch(t){return null}return{referrerHost:r(i.referrerHost,255),landingPath:r(i.landingPath,255),utmSource:r(i.utmSource,100),utmMedium:r(i.utmMedium,100),utmCampaign:r(i.utmCampaign,100)}}(window.sessionStorage)}catch(t){return null}}function l(t){if(!t||!(null!==t.referrerHost||null!==t.landingPath||null!==t.utmSource||null!==t.utmMedium||null!==t.utmCampaign))return null;let e=encodeURIComponent(JSON.stringify(t));return e.length>7e3?null:e}},68368:function(t,e,i){i.d(e,{pU:function(){return s},MI:function(){return r}});var n=i(49059);n.Km(["free","pro"]),n.Km(["starter","pro","business","either"]),n.Z_().email().max(254),n.Z_().max(1e3).trim(),n.Z_().max(255).regex(/^[^<>:"|?*\\/]+$/u);let a=t=>t?t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/").replace(/`/g,"`").replace(/=/g,"="):"",r=t=>t?/^(javascript|data|vbscript|file|ftp):/i.test(t)?"":a(t.trim()):"",s=()=>{let t=new Uint8Array(32);return crypto.getRandomValues(t),Array.from(t,t=>t.toString(16).padStart(2,"0")).join("")}}}]);
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.