@tapni/auth 0.0.103 β†’ 0.0.105

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,7 +8,7 @@ import { Capacitor as Vt, registerPlugin as In, WebPlugin as Wo } from "@capacit
8
8
  import { Browser as hn } from "@capacitor/browser";
9
9
  import $o from "qr-code-styling";
10
10
  import { sanitizeUrl as Jo } from "@braintree/sanitize-url";
11
- const Xo = "0.0.103";
11
+ const Xo = "0.0.105";
12
12
  let Un;
13
13
  const qt = {
14
14
  setApiRootFromOptions(n) {
@@ -4563,8 +4563,14 @@ const ze = {
4563
4563
  return e ? this.errorHandler(e) : t;
4564
4564
  },
4565
4565
  async logout(n, e = !0) {
4566
- e && n && Ne.logout({ token: n }, this.$storage), this.$storage && (this.$storage.username = "", this.$storage.UserId = "", this.$storage.localUser = ""), this.setLoggedInUserId(""), this.setToken(""), this.unsetRefreshToken(n), n ? Object.keys(this.loggedInAccounts).forEach((t) => {
4567
- this.loggedInAccounts[t].refreshToken === n && this.refreshTokenAction(this.loggedInAccounts[t]).then(() => (this.setLoggedInUserId(this.loggedInAccounts[t].id), this.$storage && (this.$storage.username = t, this.$storage.UserId = this.loggedInAccounts[t].id), this.getLoggedInAccounts(), this.$router.push("/" + t)));
4566
+ e && n && Ne.logout({ token: n }, this.$storage), this.$storage && (this.$storage.username = "", this.$storage.UserId = "", this.$storage.localUser = "", this.setToken("")), this.setLoggedInUserId("");
4567
+ const t = this.unsetRefreshToken(n);
4568
+ t.length >= 1 ? Object.keys(this.loggedInAccounts).forEach((r) => {
4569
+ this.loggedInAccounts[r].refreshToken === t[0] && this.refreshTokenAction({ ...this.loggedInAccounts[r], storage: this.$storage }).then(() => {
4570
+ this.setLoggedInUserId(this.loggedInAccounts[r].id), this.$storage && (this.$storage.username = r, this.$storage.UserId = this.loggedInAccounts[r].id), this.getLoggedInAccounts(), this.$router.push("/" + r), setTimeout(() => {
4571
+ location.reload();
4572
+ }, 1500);
4573
+ });
4568
4574
  }) : (this.setUser(null), this.$router.push("/welcome"));
4569
4575
  },
4570
4576
  async getCompanyBySSOEmail(n) {
@@ -4612,7 +4618,7 @@ const ze = {
4612
4618
  },
4613
4619
  unsetRefreshToken(n) {
4614
4620
  let e = this.getRefreshTokens();
4615
- e = e.filter((t) => t !== n), this.$storage.refreshTokens = e.join(",");
4621
+ return e = e.filter((t) => t !== n), this.$storage.refreshTokens = e.join(","), e;
4616
4622
  },
4617
4623
  setToken(n) {
4618
4624
  this.$storage.token = n, this.token = n;
@@ -1,4 +1,4 @@
1
- (function(c,At){typeof exports=="object"&&typeof module<"u"?module.exports=At(require("vue"),require("vue-router"),require("await-to-js"),require("axios"),require("jwt-decode"),require("@capacitor/device"),require("@capacitor/core"),require("@capacitor/browser"),require("qr-code-styling"),require("@braintree/sanitize-url")):typeof define=="function"&&define.amd?define(["vue","vue-router","await-to-js","axios","jwt-decode","@capacitor/device","@capacitor/core","@capacitor/browser","qr-code-styling","@braintree/sanitize-url"],At):(c=typeof globalThis<"u"?globalThis:c||self,c.TapniAuth=At(c.Vue,c.vueRouter,c.to,c.axios,c.jwtDecode,c.device,c.core,c.browser,c.QRCodeStyling,c.sanitizeUrl))})(this,function(c,At,Z,fn,Kn,Kt,Ne,Vt,so,co){"use strict";const lo="0.0.103";let _n;const ht={setApiRootFromOptions(n){_n=n},instance(n,e=null){const t=lo;let r="https://api.tapni.co/v1/";_n&&(r=_n);let o=fn.create({baseURL:r,headers:{...n?{Authorization:`Bearer ${n.token}`}:{},"X-Client-Name":"sso-"+t.platform,"X-Client-Version":t.version}});return o.interceptors.request.use(async function(i){if(["post","put","delete"].includes(i.method.toLowerCase())?i.data={...i.data,...n?{lang:n.appLanguage,realm:n.realm||"app"}:{}}:i.method.toLowerCase()==="get"&&(i.params={...i.params,...n?{lang:n.appLanguage,realm:n.realm||"app"}:{}}),n&&n.token&&!e){const a=Kn.jwtDecode(n.token);if(a.exp-30<Math.floor(Date.now()/1e3))return Ce.methods.refreshTokenAction({...a,refreshToken:n.refreshTokens?n.refreshTokens.split(",")[0]:null,storage:n}).then(s=>(i.headers={...i.headers,Authorization:`Bearer ${s}`},i))}return i}),o}},je=ht.instance,Gt={getMe(){return ht(storage).get("/users/me")},getByUsername(n,e){let t=document.referrer||"",r=n.utmParams||{};return n.dontTap&&(r.dontTap=!0),je(e).get(`/users/${n.username}`,{params:r,headers:{"X-Referer":t}})},getByNumber(n,e){let t=document.referrer||"",r=n.utmParams||{};return n.dontTap&&(r.dontTap=!0),je(e).get(`/users/tag/${n.serial}`,{params:r,headers:{"X-Referer":t}})},save(n,e){return je(e).put("/users",n)},newPassword(n,e){return je(e).put("/users/new-password",n)},connect(n,e){return je(e).post("/users/connect",n)},eventLog(n,e){return je(e).post("/users/log",n)},deleteAccount(n,e){return je(e).post("/users/profile/delete",n)},registerDevice(n,e){return je(e).post("/users/device/register",n)},addFcmToken(n,e){return je(e).post("/users/device/fcm",n)},loginUsingQR(n,e){return je(e).post("/users/qr/login",n)}},Vn=ht.instance,Gn={registerDevice(n,e){return Vn(e).post("/devices/add",n)},addFcmToken(n,e){return Vn(e).post("/devices/fcm/add",n)}},ue=ht.instance;let Oe;Kt.Device.getId().then(n=>Oe=n.uuid);const be={register(n,e){return n.device_id=Oe,ue(e).post("/users/register",n)},login(n,e){return n.device_id=Oe,ue(e).post("/users/login",n)},logout(n,e){return n.device_id=Oe,ue(e).post("/users/logout",n)},refreshToken(n,e){return ue(e,!0).get(`/users/refresh-token?UserId=${n.id}&token=${n.refreshToken}`)},getLoggedInAccounts(n,e){return ue(e).post("/users/tokens",n)},sendResetEmail(n,e){return n.device_id=Oe,ue(e).post("/users/reset",n)},changePassword(n,e){return ue(e).put("/users/password",n,{headers:{Authorization:"Bearer "+n.token}})},verify(n,e){return ue(e).get("/users/verify?c="+n.code+"&e="+n.email+"&captchatoken="+n.captchaToken)},googleUrl(n){return ue(n).get("/users/google/url")},google(n,e){return n.device_id=Oe,ue(e).post("/users/google",n)},facebook(n,e){return n.device_id=Oe,ue(e).post("/users/facebook",n)},googleSDK(n,e){return n.device_id=Oe,ue(e).post("/users/google/sdk",n)},facebookSDK(n,e){return n.device_id=Oe,ue(e).post("/users/facebook/sdk",n)},appleSDK(n,e){return n.device_id=Oe,ue(e).post("/users/apple/sdk",n)},microsoftSDK(n,e){return n.device_id=Oe,ue(e).post("/users/microsoft/sdk",n)},oktaSDK(n,e){return n.device_id=Oe,ue(e).post("/users/okta/sdk",n)},samlLoginUrl(n,e){return ue(e).post("/saml/url",n)},exchangeAuthCode(n,e){return ue(e).post("/users/auth-code",n)}},vn=ht.instance,yn={getBySSOEmail(n,e){return vn(e).get(`/company/sso/${n}`)},acceptCompanyInvitation(n,e){return vn(e).get(`/users/invitation?ic=${n}`)},qrCodePooling(n,e){return vn(e).post("/company/login/qr",n)}},Qt=c.reactive(new Map),z={$on(n,e){let t=Qt.get(n);t||(t=new Set,Qt.set(n,t)),t.add(e)},$emit(n,...e){const t=Qt.get(n);if(t)for(const r of t)r(...e)},$off(n,e){const t=Qt.get(n);t&&t.delete(e)}};c.readonly(z);const Qn={state:{english:"English",spanish:"Spanish",german:"German",korean:"Korean",italian:"Italian",french:"French",serbian:"Serbian",turkish:"Turkish",chinese:"Chinese",app_language:"Language",profile_preview:"Profile preview",edit_profile:"Edit profile",login:"Login",referral_reach:"Provide us with more information about you and your reach.",referral_apply_placeholder:"How do you plan to promote Tapni?",referral_apply_note:`Add as many links as possible in your account, <br>
1
+ (function(c,At){typeof exports=="object"&&typeof module<"u"?module.exports=At(require("vue"),require("vue-router"),require("await-to-js"),require("axios"),require("jwt-decode"),require("@capacitor/device"),require("@capacitor/core"),require("@capacitor/browser"),require("qr-code-styling"),require("@braintree/sanitize-url")):typeof define=="function"&&define.amd?define(["vue","vue-router","await-to-js","axios","jwt-decode","@capacitor/device","@capacitor/core","@capacitor/browser","qr-code-styling","@braintree/sanitize-url"],At):(c=typeof globalThis<"u"?globalThis:c||self,c.TapniAuth=At(c.Vue,c.vueRouter,c.to,c.axios,c.jwtDecode,c.device,c.core,c.browser,c.QRCodeStyling,c.sanitizeUrl))})(this,function(c,At,Z,fn,Kn,Kt,Ne,Vt,so,co){"use strict";const lo="0.0.105";let _n;const ht={setApiRootFromOptions(n){_n=n},instance(n,e=null){const t=lo;let r="https://api.tapni.co/v1/";_n&&(r=_n);let o=fn.create({baseURL:r,headers:{...n?{Authorization:`Bearer ${n.token}`}:{},"X-Client-Name":"sso-"+t.platform,"X-Client-Version":t.version}});return o.interceptors.request.use(async function(i){if(["post","put","delete"].includes(i.method.toLowerCase())?i.data={...i.data,...n?{lang:n.appLanguage,realm:n.realm||"app"}:{}}:i.method.toLowerCase()==="get"&&(i.params={...i.params,...n?{lang:n.appLanguage,realm:n.realm||"app"}:{}}),n&&n.token&&!e){const a=Kn.jwtDecode(n.token);if(a.exp-30<Math.floor(Date.now()/1e3))return Ce.methods.refreshTokenAction({...a,refreshToken:n.refreshTokens?n.refreshTokens.split(",")[0]:null,storage:n}).then(s=>(i.headers={...i.headers,Authorization:`Bearer ${s}`},i))}return i}),o}},je=ht.instance,Gt={getMe(){return ht(storage).get("/users/me")},getByUsername(n,e){let t=document.referrer||"",r=n.utmParams||{};return n.dontTap&&(r.dontTap=!0),je(e).get(`/users/${n.username}`,{params:r,headers:{"X-Referer":t}})},getByNumber(n,e){let t=document.referrer||"",r=n.utmParams||{};return n.dontTap&&(r.dontTap=!0),je(e).get(`/users/tag/${n.serial}`,{params:r,headers:{"X-Referer":t}})},save(n,e){return je(e).put("/users",n)},newPassword(n,e){return je(e).put("/users/new-password",n)},connect(n,e){return je(e).post("/users/connect",n)},eventLog(n,e){return je(e).post("/users/log",n)},deleteAccount(n,e){return je(e).post("/users/profile/delete",n)},registerDevice(n,e){return je(e).post("/users/device/register",n)},addFcmToken(n,e){return je(e).post("/users/device/fcm",n)},loginUsingQR(n,e){return je(e).post("/users/qr/login",n)}},Vn=ht.instance,Gn={registerDevice(n,e){return Vn(e).post("/devices/add",n)},addFcmToken(n,e){return Vn(e).post("/devices/fcm/add",n)}},ue=ht.instance;let Oe;Kt.Device.getId().then(n=>Oe=n.uuid);const be={register(n,e){return n.device_id=Oe,ue(e).post("/users/register",n)},login(n,e){return n.device_id=Oe,ue(e).post("/users/login",n)},logout(n,e){return n.device_id=Oe,ue(e).post("/users/logout",n)},refreshToken(n,e){return ue(e,!0).get(`/users/refresh-token?UserId=${n.id}&token=${n.refreshToken}`)},getLoggedInAccounts(n,e){return ue(e).post("/users/tokens",n)},sendResetEmail(n,e){return n.device_id=Oe,ue(e).post("/users/reset",n)},changePassword(n,e){return ue(e).put("/users/password",n,{headers:{Authorization:"Bearer "+n.token}})},verify(n,e){return ue(e).get("/users/verify?c="+n.code+"&e="+n.email+"&captchatoken="+n.captchaToken)},googleUrl(n){return ue(n).get("/users/google/url")},google(n,e){return n.device_id=Oe,ue(e).post("/users/google",n)},facebook(n,e){return n.device_id=Oe,ue(e).post("/users/facebook",n)},googleSDK(n,e){return n.device_id=Oe,ue(e).post("/users/google/sdk",n)},facebookSDK(n,e){return n.device_id=Oe,ue(e).post("/users/facebook/sdk",n)},appleSDK(n,e){return n.device_id=Oe,ue(e).post("/users/apple/sdk",n)},microsoftSDK(n,e){return n.device_id=Oe,ue(e).post("/users/microsoft/sdk",n)},oktaSDK(n,e){return n.device_id=Oe,ue(e).post("/users/okta/sdk",n)},samlLoginUrl(n,e){return ue(e).post("/saml/url",n)},exchangeAuthCode(n,e){return ue(e).post("/users/auth-code",n)}},vn=ht.instance,yn={getBySSOEmail(n,e){return vn(e).get(`/company/sso/${n}`)},acceptCompanyInvitation(n,e){return vn(e).get(`/users/invitation?ic=${n}`)},qrCodePooling(n,e){return vn(e).post("/company/login/qr",n)}},Qt=c.reactive(new Map),z={$on(n,e){let t=Qt.get(n);t||(t=new Set,Qt.set(n,t)),t.add(e)},$emit(n,...e){const t=Qt.get(n);if(t)for(const r of t)r(...e)},$off(n,e){const t=Qt.get(n);t&&t.delete(e)}};c.readonly(z);const Qn={state:{english:"English",spanish:"Spanish",german:"German",korean:"Korean",italian:"Italian",french:"French",serbian:"Serbian",turkish:"Turkish",chinese:"Chinese",app_language:"Language",profile_preview:"Profile preview",edit_profile:"Edit profile",login:"Login",referral_reach:"Provide us with more information about you and your reach.",referral_apply_placeholder:"How do you plan to promote Tapni?",referral_apply_note:`Add as many links as possible in your account, <br>
2
2
  so that we can know who you are.
3
3
  <br><br>Be exclusive.
4
4
  <br>Not everyone gets accepted.πŸ˜‰`,referral_apply_now:"Apply now",referral_apply_thanks:"Thanks for applying. We will review your application soon!",connect:"Connect",with:"with",exchange_contact:"Exchange Contact",add_details:"Add more",show_details:"Show more",download_contact:"Download Contact",stay_in_touch:"Stay in touch with",no_thanks:"No Thanks",connect_join:"Join Tapni",connect_with:"Exchange contact with",connect_required_fields:"One of the two contact fields must be provided",name:"Name",first_name:"First name",last_name:"Last name",email:"Email",phone:"Phone number",phone_p:"Phone",company:"Company",address:"Address",website:"Website",open:"Open",delete:"Delete",confirm:"Confirm",cancel:"Cancel",save:"Save",code:"Code",note:"Note",note_p:"Add a note",contact_card_icon:"Set text under the contact card icon",contact_card_name:"Enter first and lastname",contact_card_name_p:"Contact card name",contact_card_email:"Enter personal email address",contact_card_email_p:"Contact card email",contact_card_phone:"Enter personal phone number",contact_card_phone_p:"Contact card phone",contact_card_website:"Enter personal website",contact_card_website_p:"Contact card website",contact_card_company_name:"Enter company name",contact_card_company_name_p:"Contact card company name",contact_card_job_title:"Job title",contact_card_job_title_p:"Enter job title",contact_card_company_website:"Company website",contact_card_company_website_p:"Enter company website",contact_card_bio:"Enter bio for the contact card",contact_card_bio_p:"Enter bio for the contact card",contact_card_home_address:"Enter home address",contact_card_home_address_p:"Contact card home address",contact_card_work_address:"Enter work address",contact_card_work_address_p:"Contact card work address",contact_card_social:"Choose social media links to your Tapni profile <br>in order to add them in the contact card",contact_card_social_p:"Choose social media links for the contact card",link_text_p:"Link Text",link_icon:"Set text under the link icon",direct_pick:"Pick a direct link",direct_p:"When you tap someone's phone, <br> this link will be opened instead of your full profile.",password_change:"Change password",password_repeat:"Repeat password",password_reset_t:"Password reset",password_current:"Enter your current password",password_current_p:"Current Password",password_new:"Enter your new password",password_new_p:"New Password",password_new_repeat:"Enter your new password again",password_new_repeat_p:"Enter your new password again",password_update:"Password update",password_reset:`If you can't remember your current password,<br>
@@ -99,7 +99,7 @@ TanıştığınΔ±z herkesi etkileyin 😎 <br> Kendinize bir tane ayΔ±rΔ±n πŸ‘‡`
99
99
  λ˜λŠ” κΆκΈˆν•œ 게 있으면,<br>
100
100
  μ €ν¬μ—κ²Œ μ—°λ½μ£Όμ„Έμš”`,referral_p5:"μ§€κΈˆλΆ€ν„° λˆμ„ 벌기 μ‹œμž‘ν•˜μ„Έμš”!",referral_p66:"제휴링크λ₯Ό κ³΅μœ ν•˜κ³  λˆμ„ λ²Œμ–΄λ³΄μ„Έμš”!",referral_p6:`λΈ”λ‘œκ±°, μΈν”Œλ£¨μ–Έμ„œ λ˜λŠ” μ†Œμ…œ λ―Έλ””μ–΄ λ§€λ‹ˆμ•„λΌλ©΄ λ‹Ήμ‚¬μ˜ μ— λ²„μ„œλ” ν”„λ‘œκ·Έλž¨ 에 μ™„λ²½ν•˜κ²Œ μ ν•©ν•©λ‹ˆλ‹€.
101
101
  λΈŒλžœλ“œλ₯Ό ν™λ³΄ν•˜κ³  할인 μ½”λ“œ λ˜λŠ” μΆ”μ²œ 링크λ₯Ό μ‚¬μš©ν•˜μ—¬ κ΅¬μž…ν•œ 경우 20%의 수수료λ₯Ό λ°›μœΌμ‹­μ‹œμ˜€.`,referral_p7:`νƒ­λ‹ˆ μ— λ²„μ„œλ” ν”„λ‘œκ·Έλž¨μ— λ“±λ‘ν•˜λ©΄ 개인 μΆ”μ²œ 링크와 할인 μ½”λ“œκ°€ λ°œκΈ‰λ©λ‹ˆλ‹€.
102
- μ›Ή μ‚¬μ΄νŠΈ 및 μ†Œμ…œ 미디어에 κ³΅μœ ν•˜μ—¬ λˆμ„ λ²„λŠ” λ™μ‹œμ— 졜고의 μ—°κ²° κ²½ν—˜μ„ μ œκ³΅ν•˜μ‹­μ‹œμ˜€.`,referral_p8:"μ§€λΆˆ λ©”λͺ¨",referral_p9:"Paypal (세계적인) λ˜λŠ” κ³„μ’Œμ΄μ²΄ (EU) <br> μ΅œμ†Œ 지급앑은 25β‚¬μž…λ‹ˆλ‹€.",referral_p10:"μ§€κΈ‰ μš”μ²­",referral_p11:"μš”μ²­λœ μ§€λΆˆ",your_connections:"λ‚˜μ˜ μ—°κ²° 기둝",connections_p1:"μ‚¬λžŒλ“€κ³Ό λ§Œλ‚˜μ„œ 탭을 ν•˜μ„Έμš”.",connections_p2:"<br><br>μ§€κΈˆκΉŒμ§€ 연결이 μ—†μŠ΅λ‹ˆλ‹€. <br> 탭을 μ‹œμž‘ν•΄λ³ΌκΉŒμš”πŸ’₯",connections_p3:"연결을 찾을 수 μ—†μŠ΅λ‹ˆλ‹€.",connection_success:"μ—°κ²° μš”μ²­μ„ λ³΄λƒˆμŠ΅λ‹ˆλ‹€.",exchange_success:"μ—°λ½μ²˜λ₯Ό κ΅ν™˜ν–ˆμŠ΅λ‹ˆλ‹€.",create_free_account:"무료 Tapni 계정을 λ§Œλ“€κ³  μ—°λ½μ²˜λ₯Ό μ΅œμ‹  μƒνƒœλ‘œ μœ μ§€ν•˜μ‹­μ‹œμ˜€!",connection_edit:"μ—°κ²° νŽΈμ§‘",connection_edit_success:"μ„±κ³΅μ μœΌλ‘œ μ—…λ°μ΄νŠΈλœ μ—°κ²°",connection_delete_success:"연결을 μ‚­μ œν–ˆμŠ΅λ‹ˆλ‹€.",search:"검색",devices_p1:"μž₯치 ν˜Έν™˜μ„± λͺ©λ‘",devices_p2:"νƒ­λ‹ˆλŠ” λŒ€λΆ€λΆ„μ˜ μ΅œμ‹  아이폰 및 μ•ˆλ“œλ‘œμ΄λ“œμ™€ ν˜Έν™˜μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€.",devices_p3:"일뢀 μ•ˆλ“œλ‘œμ΄λ“œ 폰은 NFCκ°€ κΊΌμ Έ μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. νƒ­λ‹ˆκ°€ μ•ˆλ“œλ‘œμ΄λ“œ μž₯μΉ˜μ—μ„œ μž‘λ™ν•˜μ§€ μ•ŠλŠ” 경우 μ„€μ •μ—μ„œ NFCλ₯Ό κ²€μƒ‰ν•˜κ³  켜져 μžˆλŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€.",devices_p4:"μ œμ–΄ 센터에 iOS 14 NFC μœ„μ ― 포함",download_p1:"νƒ­λ‹ˆ μ•± λ‹€μš΄λ‘œλ“œ",download_p2:"μ• ν”Œ 및 μ•ˆλ“œλ‘œμ΄λ“œ κΈ°κΈ°μ—μ„œ μ‚¬μš© κ°€λŠ₯",user_not_found:"μ‚¬μš©μžλ₯Ό 찾을 수 μ—†μŒ",user_not_found_p:"λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ μ‚¬μš©μžλ₯Ό 찾을 수 μ—†μŠ΅λ‹ˆλ‹€.🀷",taps:"νƒ­",private_profile:"개인 ν”„λ‘œν•„",private_profile_p:"은 개인 ν”„λ‘œν•„μž…λ‹ˆλ‹€. <br> ν”„λ‘œν•„μ€ νƒ­λ‹ˆ νƒœκ·Έμ—μ„œλ§Œ μ‚¬μš©ν•˜λ©° ν‘œμ‹œλ©λ‹ˆλ‹€.",profile_bio_p:"자기 μ†Œκ°œλ₯Ό ν•΄μ£Όμ„Έμš”.",add_to_contacts:"μ—°λ½μ²˜μ— μΆ”κ°€",drag_and_drop_links:"링크λ₯Ό μ›ν•˜λŠ” μˆœμ„œλŒ€λ‘œ λŒμ–΄μ„œ 놓기",no_links:"ν”„λ‘œν•„μ— 링크가 μ—†μŠ΅λ‹ˆλ‹€.",add_link:"링크 μΆ”κ°€",direct_link_p1:"λ°©λ¬ΈμžλŠ” λ‹€μŒμœΌλ‘œ μžλ™ μ΄λ™λ©λ‹ˆλ‹€:",profile_not_active:"ν”„λ‘œν•„μ΄ ν˜„μž¬ ν™œμ„±ν™”λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. <br> λ‘œκ·ΈμΈμ„ ν•΄μ•Ό λ³Ό 수 μžˆμ–΄μš”.",profile_not_public:"ν”„λ‘œν•„μ΄ ν˜„μž¬ κ³΅κ°œλ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. <br> λˆ„λ₯΄μ‹  λΆ„λ“€λ§Œ λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.",activate_profile_now:"ν”„λ‘œν•„ ν™œμ„±ν™” μ™„λ£Œ",publish_profile_now:"μ§€κΈˆ ν”„λ‘œν•„μ„ κ³΅κ°œν•˜μ‹­μ‹œμ˜€.",link_add_p1:"링크 μœ ν˜• 선택",link_add_not_found:"링크λ₯Ό 찾을 수 μ—†μŠ΅λ‹ˆλ‹€. 🀷",link_add_not_found_p2:"μ¦κ²¨μ°ΎλŠ” ν”Œλž«νΌμ„ λ†“μΉ˜μ…¨λ‹€λ©΄, μ €ν¬μ—κ²Œ 이메일을 λ³΄λ‚΄μ£Όμ‹œκΈ° λ°”λžλ‹ˆλ‹€. (<b>support@tapni.com</b>) μ•„λ‹ˆλ©΄ μ†Œμ…œ λ―Έλ””μ–΄λ‘œ DM을 ν•΄μ£Όμ„Έμš”.(<b>@tapni</b>)",link_add_not_found_p3:"λͺ¨λ“  ν”Œλž«νΌμ„ 지원할 수 μžˆλ„λ‘ μ΅œμ„ μ„ λ‹€ν•˜κ² μŠ΅λ‹ˆλ‹€. πŸ˜‰",featured:"ν”Όμ²˜λ§",social_media:"μ†Œμ…œ λ―Έλ””μ–΄",contact:"μ—°λ½μ²˜",finance:"금육",portfolio:"포트폴리였",music:"μŒμ•…",business:"λΉ„μ§€λ‹ˆμŠ€",fun:"재미",ecommerce:"μ „μžμƒκ±°λž˜",more:"더 보기",email_username:"이메일 / μ‚¬μš©μž 이름",username:"μ‚¬μš©μž 이름",password:"λΉ„λ°€λ²ˆν˜Έ",sign_in:"둜그인",sign_in_with:"둜그인",sign_in_with_new:"μƒˆ κ³„μ •μœΌλ‘œ 둜그인",sign_up_with:"λ“±λ‘ν•˜κΈ°",select_sign_method:"둜그인 방법 선택",verify_account:"계정 확인",terms_by_signing_in:"νšŒμ›λ‹˜μ˜ λ™μ˜λ‘œ νšŒμ›κ°€μž…μ„ ν•©λ‹ˆλ‹€.",terms_by_registering:"λ™μ˜ν•˜μ‹œλ©΄ λ“±λ‘ν•˜μ—¬ μ£Όμ‹­μ‹œμ˜€.",terms_by_submitting:"이 양식을 μ œμΆœν•˜λ©΄ μ„œλΉ„μŠ€ 약관에 λ™μ˜ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€",terms_of_service:"μ„œλΉ„μŠ€ μ•½κ΄€",and:"그리고",refresh:"μƒˆλ‘œ κ³ μΉ¨",privacy_policy:"개인 정보 보호 μ •μ±…",create_account:"계정 λ§Œλ“€κΈ°",reset_password:"λΉ„λ°€λ²ˆν˜Έ μž¬μ„€μ •",reset_password_p1:"μ•”ν˜Έλ₯Ό μž¬μ„€μ •ν•  수 μ—†μœΌλ©΄, <br> μ–Έμ œλ“ μ§€ λ‹€μŒ μ£Όμ†Œλ‘œ μ—°λ½ν•˜μ‹­μ‹œμ˜€.",reset_password_p2:"μ•”ν˜Έλ₯Ό μž¬μ„€μ •ν•  수 μ—†μœΌλ©΄, <br> μ–Έμ œλ“ μ§€ λ‹€μŒ μ£Όμ†Œλ‘œ μ—°λ½ν•˜μ‹­μ‹œμ˜€.",create_new_account:"μƒˆ 계정 λ§Œλ“€κΈ°",maintenance_p1:"μš°λ¦¬λŠ” κ³§ λŒμ•„μ˜¬ 것이닀.",maintenance_p2:"κ·Έλ™μ•ˆ νƒ­λ‹ˆ μ»¬λ ‰μ…˜ μ‚΄νŽ΄λ³΄κΈ°",maintenance_p3:"νƒ­λ‹ˆλŠ” μ˜ˆμ •λœ μ κ²€μœΌλ‘œ μΈν•˜μ—¬ μž μ‹œ μ€‘λ‹¨λ˜μ—ˆμŠ΅λ‹ˆλ‹€. <br> λͺ‡ λΆ„ λ‚΄λ‘œ λ‹€μ‹œ 온라인 μƒνƒœκ°€ 될 κ²ƒμž…λ‹ˆλ‹€.",offline_p1:"인터넷에 μ—°κ²°λ˜μ§€ μ•ŠμŒ",offline_p2:"연결을 ν™•μΈν•œ λ‹€μŒ νŽ˜μ΄μ§€λ₯Ό μƒˆλ‘œ κ³ μΉ˜μ‹­μ‹œμ˜€.",offline_p3_1:"μ˜€ν”„λΌμΈμΌ λ•Œ 이 QR μ½”λ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μ—°λ½μ²˜ μΉ΄λ“œλ₯Ό κ³΅μœ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.",offline_p3_2:"",products_p1:"λ§Œλ‚˜λŠ” λͺ¨λ“  μ‚¬λžŒμ—κ²Œ κΉŠμ€ 인상을 λ‚¨κΉλ‹ˆλ‹€. 😎 <br> μ§€κΈˆ λ°”λ‘œ κ΅¬μž…ν•˜μ‹­μ‹œμ˜€ πŸ‘‡",cards:"μΉ΄λ“œ",stickers:"μŠ€ν‹°μ»€",keychains:"ν‚€ 체인",explore_collection:"μ»¬λ ‰μ…˜ 탐색",register:"등둝",register_success:"거의 λ‹€ μ™„λ£Œν•˜μ˜€μŠ΅λ‹ˆλ‹€. 이메일을 확인해 μ£Όμ„Έμš”.",register_success_modal:"λ‹€λ₯Έ κ³„μ •μœΌλ‘œ λ‘œκ·ΈμΈν–ˆμŠ΅λ‹ˆλ‹€.",check_your_inbox:"첫 번째 링크λ₯Ό μΆ”κ°€ ν•΄ μ£Όμ„Έμš”.",tapni_tags:"νƒ­λ‹ˆ νƒœκ·Έ",tapni_tags_p1:"ν”„λ‘œν•„μ— μ—°κ²°λœ νƒœκ·Έ ꡬ성",tapni_tags_p2:"ν”„λ‘œν•„μ— μ—°κ²°λœ νƒœκ·Έκ°€ μ—†μŠ΅λ‹ˆλ‹€. <br> μ§€κΈˆ μ—°κ²°ν•˜μ„Έμš”!",verify_account_p1:"μ½”λ“œλ₯Ό λ°›μ§€ λͺ»ν•œ 경우 λ‹€μŒμ„ ν™•μΈν•˜μ‹­μ‹œμ˜€. <br> 슀팸 폴더 λ˜λŠ” μ—°λ½μ£Όμ„Έμš”:",verify_account_success:"계정을 ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€. μ§€κΈˆ λΉ„λ°€λ²ˆν˜Έλ₯Ό λ³€κ²½ν•΄ μ£Όμ„Έμš”.",verify_account_success2:"계정을 ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€. λͺ¨λ‘ μ™„λ£Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.!πŸ₯³",welcome:"λ°˜κ°‘μŠ΅λ‹ˆλ‹€.",welcome_p1:"λΉ„μ§€λ‹ˆμŠ€ μΉ΄λ“œμ˜ λ―Έλž˜κΉŒμ§€",how_it_works:"μž‘λ™ 방식",already_registered:"이미 λ“±λ‘λ˜μ–΄μžˆμŠ΅λ‹ˆλ‹€",error:"였λ₯˜",success:"성곡",copied:"ν΄λ¦½λ³΄λ“œμ— 볡사됨",connect_validate:"두 개의 μ—°λ½μ²˜ ν•„λ“œ 쀑 ν•˜λ‚˜λ₯Ό μ œκ³΅ν•΄μ•Ό ν•©λ‹ˆλ‹€.",connect_validate_name:"이름을 μž…λ ₯ν•˜μ‹­μ‹œμ˜€.",connect_validate_email:"μœ νš¨ν•œ 이메일을 μž…λ ₯ν•˜μ„Έμš”",link_validate:"잘λͺ»λœ 링크 λ°μ΄ν„°μž…λ‹ˆλ‹€.",link_text_contact_card:"μ—°λ½μ²˜ μΉ΄λ“œ",link_text_custom_link:"μ‚¬μš©μž μ§€μ • 링크",link_text_menu:"메뉴",link_text_phone:"νœ΄λŒ€ν°",save_to_apple_wallet:"Apple 지갑에 μ €μž₯",save_to_google_wallet:"Google 지갑에 μ €μž₯",card:"μΉ΄λ“œ",sticker:"μƒν‘œ",keychain:"킀체인",band:"λ°΄λ“œ",case:"사둀",standee:"μ„œλ‹€",decoded:"Decoded",wristbanditz:"Wristbanditz",update_p1:"였래된 μ•± 버전이 κ°μ§€λ˜μ—ˆμŠ΅λ‹ˆλ‹€",update_p2:"μ—…λ°μ΄νŠΈ",update_p3:"앱을 μ΅œμ‹  λ²„μ „μœΌλ‘œ μ—…λ°μ΄νŠΈν•˜μ„Έμš”",company_domain:"κ·€ν•˜μ˜ νšŒμ‚¬ 도메인",search_company_domain:"νšŒμ‚¬ 도메인 검색",enter_company_email:"νšŒμ‚¬ 이메일을 μž…λ ₯ν•˜μ„Έμš”",company_not_found:"νšŒμ‚¬λ₯Ό 찾을 수 μ—†μŒ",ik_company_domain:"νšŒμ‚¬ 도메인을 μ•Œκ³  μžˆμŠ΅λ‹ˆλ‹€",idk_company_domain:"νšŒμ‚¬ 도메인을 λͺ¨λ¦…λ‹ˆλ‹€",continue:"계속",forbidden_rule:"이 μ˜΅μ…˜μ€ λΉ„ν™œμ„±ν™”λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. νšŒμ‚¬ κ΄€λ¦¬μžμ—κ²Œ λ¬Έμ˜ν•˜μ‹­μ‹œμ˜€.",companyName:"νšŒμ‚¬ 이름",createMarkerPlaceholder:"마컀 생성 λ˜λŠ” 선택",clickToCreateMarker:"마컀λ₯Ό λ§Œλ“€λ €λ©΄ μ—¬κΈ°λ₯Ό ν΄λ¦­ν•˜μ„Έμš”.",pleaseInviteUser:"데이터λ₯Ό λ™κΈ°ν™”ν•˜λ €λ©΄ μ‚¬μš©μžλ₯Ό Tapni에 κ°€μž…ν•˜λ„λ‘ μ΄ˆλŒ€ν•˜μ„Έμš”.",connectionSynchronized:"μ—°κ²° 데이터가 μžλ™μœΌλ‘œ λ™κΈ°ν™”λ©λ‹ˆλ‹€.",viewProfile:"ν”„λ‘œν•„λ³΄κΈ°",createConnectionHeader:"μƒˆ μ—°κ²° μΆ”κ°€",createConnectionButton:"μΆ”κ°€ν•˜λ‹€",createConnectionSuccess:"연결이 μƒμ„±λ˜μ—ˆμŠ΅λ‹ˆλ‹€.",allow_company_management:"νšŒμ‚¬ 관리 ν—ˆμš©",company_join_request:"이 κ·€ν•˜μ˜ ν”„λ‘œν•„μ„ κ΄€λ¦¬ν•˜κ³  이λ₯Ό κΈ°μ—… 계정에 μ—°κ²°ν•˜λ„λ‘ μš”μ²­ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.",account_ownership_transfer:"κ·€ν•˜κ°€ μš”μ²­μ„ μˆ˜λ½ν•˜λ©΄ κ·€ν•˜μ˜ 계정 μ†Œμœ κΆŒμ΄ νšŒμ‚¬λ‘œ μ΄μ „λ©λ‹ˆλ‹€. νšŒμ‚¬λŠ” κ·€ν•˜μ˜ ν”„λ‘œν•„μ„ μˆ˜μ •ν•˜κ³ , 링크λ₯Ό νŽΈμ§‘ 및 μΆ”κ°€ν•˜κ³ , 연결을 ν™•μΈν•˜κ³ , λΉ„λ°€λ²ˆν˜Έλ₯Ό μˆ˜μ •ν•˜κ³ , 계정을 μ‚­μ œν•˜λŠ” λ“±μ˜ μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μš”μ²­μ„ μˆ˜λ½ν•˜κΈ° 전에 νšŒμ‚¬μ— ν™•μΈν•˜μ‹­μ‹œμ˜€.",request_expired:"μš”μ²­μ΄ λ§Œλ£Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€. νšŒμ‚¬μ— μƒˆ μš”μ²­μ„ 보내도둝 μš”μ²­ν•˜μ‹­μ‹œμ˜€.",request_expiration_desc:"λ³΄μ•ˆ κ°•ν™”λ₯Ό μœ„ν•΄ μš”μ²­μ€ μ „μ†‘λœ ν›„ 14일 λ™μ•ˆλ§Œ μž‘λ™ν•©λ‹ˆλ‹€.",invitation_link_not_valid:"μ΄ˆλŒ€ 링크가 μœ νš¨ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€!",invitation_link_not_valid2:"μ΄ˆλŒ€ μ΄λ©”μΌμ—μ„œ λ²„νŠΌμ„ λ‹€μ‹œ ν΄λ¦­ν•˜κ±°λ‚˜ μ΄ˆλŒ€ 링크λ₯Ό λ³΅μ‚¬ν•©λ‹ˆλ‹€.",accept_request:"μš”μ²­ 수락",close:"λ‹«λ‹€",request_accepted:"μš”μ²­μ΄ μ„±κ³΅μ μœΌλ‘œ μˆ˜λ½λ˜μ—ˆμŠ΅λ‹ˆλ‹€.",companyEmail:"νšŒμ‚¬ 이메일",companyPhone:"νšŒμ‚¬ μ „ν™”",addBusinessInformations:"λΉ„μ¦ˆλ‹ˆμŠ€ 정보 μΆ”κ°€",resetFilter:"μ΄ˆκΈ°ν™”",selectMarkers:"마컀 선택",filterConnectionsHeader:"ν•„ν„° μ—°κ²°",selectConnectionType:"μ—°κ²° μœ ν˜• 선택",all:"λͺ¨λ‘",direct:"직접",form:"ν˜•νƒœ",manually:"μˆ˜λ™μœΌλ‘œ",scan:"주사",sortOptions:"μ •λ ¬ μ˜΅μ…˜",date:"μ œμž‘ 일",fullName:"μ„±λͺ…",descending:"λ‚΄λ¦Όμ°¨μˆœ",ascending:"μ˜€λ¦„μ°¨μˆœ",selectDateRange:"λ‚ μ§œ λ²”μœ„ 선택",follow_up_reminder:"후속 μ•Œλ¦Ό",now:"μ§€κΈˆ",one_hour:"1 ν† ",one_day:"1 일",three_days:"3 일",one_week:"일주",two_weeks:"이주",one_month:"κ°œμ›”",custom:"μ‹œκ°„ 선택",set_reminder:"μ•Œλ¦Ό μ„€μ •",select_date_time:"λ‚ μ§œ 및 μ‹œκ°„ 선택",enter_reminder_text:"μ•Œλ¦Ό ν…μŠ€νŠΈ μž…λ ₯",reminder_created:"μ•Œλ¦Όμ΄ μƒμ„±λ˜μ—ˆμŠ΅λ‹ˆλ‹€.",connectionNameLabel:"μ—°κ²° 이름 μž…λ ₯",connectionEmailLabel:"개인 이메일 μ£Όμ†Œ μž…λ ₯",privatePhoneLabel:"개인 μ „ν™”λ²ˆν˜Έ μž…λ ₯",companyNameLabel:"νšŒμ‚¬ 이름 μž…λ ₯",businessEmail:"λΉ„μ¦ˆλ‹ˆμŠ€ 이메일 μ£Όμ†Œ",businessEmailLabel:"λΉ„μ¦ˆλ‹ˆμŠ€ 이메일 μ£Όμ†Œ μž…λ ₯",businessPhone:"νšŒμ‚¬ μ „ν™”λ²ˆν˜Έ",businessPhoneLabel:"νšŒμ‚¬ μ „ν™”λ²ˆν˜Έ μž…λ ₯",noteLabel:"λ©”λͺ¨ μž…λ ₯",markersLabel:"μ—°κ²° 마컀 μΆ”κ°€",showScan:"μŠ€μΊ” ν‘œμ‹œ",hideScan:"μŠ€μΊ” 숨기기",create_connection:"μ—°κ²° μΆ”κ°€",create_manually:"μˆ˜λ™μœΌλ‘œ μΆ”κ°€",create_using_scanner:"μΉ΄λ“œ μŠ€μΊλ„ˆλ₯Ό μ‚¬μš©ν•˜μ—¬ μΆ”κ°€",companyTitle:"νšŒμ‚¬λͺ…",companyTitleLabel:"νšŒμ‚¬λͺ… μž…λ ₯",allConnectionsLabel:"λͺ¨λ“  μ—°κ²° μœ ν˜•",directConnectionsLabel:"Tapni μ‚¬μš©μžμ™€ 직접 μ•± λ‚΄ μ—°κ²°",formConnectionsLabel:"μ—°κ²° 양식에 μ±„μ›Œμ§„ μ—°κ²°",manualConnectionsLabel:"μˆ˜λ™μœΌλ‘œ μƒμ„±λœ μ—°κ²°",scanConnectionsLabel:"μΉ΄λ“œ μŠ€μΊλ„ˆκ°€ 연결을 μƒμ„±ν–ˆμŠ΅λ‹ˆλ‹€.",analyticsHeader:"뢄석",analyticsProfileViews:"ν”„λ‘œν•„ 보기",analyticsLinkClicks:"링크 클릭 수",analyticsClickTroughRatio:"νŠΈλ‘œν”„ λΉ„μœ¨ 클릭",analyticsTotalConnections:"총 μ—°κ²° 수",analyticsTopLinks:"κ°€μž₯ 인기 μžˆλŠ” 링크",analyticsProfileVisits:"ν”„λ‘œν•„ λ°©λ¬Έ",analyticsLinkVisits:"링크 λ°©λ¬Έ",analyticsNewConnections:"μƒˆλ‘œμš΄ μ—°κ²°",analyticsTopCountries:"μƒμœ„ κ΅­κ°€",analyticsTopReferers:"μƒμœ„ μΆ”μ²œμΈ",please_wait:"μž μ‹œλ§Œ κΈ°λ‹€λ € μ£Όμ„Έμš”...",click_here:"μ—¬κΈ°λ₯Ό ν΄λ¦­ν•˜μ„Έμš”",if_redirect_not_directly:"λ¦¬λ””λ ‰μ…˜μ΄ μžλ™μœΌλ‘œ μˆ˜ν–‰λ˜μ§€ μ•ŠλŠ” 경우",you_will_be_redirected:"Tapni μ• ν”Œλ¦¬μΌ€μ΄μ…˜μœΌλ‘œ λ¦¬λ””λ ‰μ…˜λ©λ‹ˆλ‹€.",use_tapni_on_the_web:"μ›Ήμ—μ„œ Tapni μ‚¬μš©ν•˜κΈ°",login_by_scanning_qr_code:"QR μ½”λ“œ μŠ€μΊ”ν•˜μ—¬ λ‘œκ·ΈμΈν•˜κΈ°",open_tapni_app_on_your_phone:"1. νœ΄λŒ€ν°μ—μ„œ Tapni μ•± μ—΄κΈ°",go_to_settings_link_a_device:"2. μ„€μ • > μž₯치 μ—°κ²°λ‘œ μ΄λ™ν•˜κΈ°",point_your_phone_at_this_qr_code:"3. νœ΄λŒ€ν°μ„ 이 QR μ½”λ“œμ— λ§žμΆ”κΈ°",choose_other_login_methods:"λ‹€λ₯Έ 둜그인 방법 μ„ νƒν•˜κΈ°",no_sso_logins:"κ·€ν•˜μ˜ νšŒμ‚¬λŠ” SSO λ‘œκ·ΈμΈμ„ μ‚¬μš©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. κ΄€λ¦¬μžμ—κ²Œ λ¬Έμ˜ν•˜μ‹­μ‹œμ˜€."}},po={computed:{home(){return this.$storage&&this.$storage.token&&this.$storage.username?"/"+this.$storage.username:"/welcome"},isAndroid(){return/Android/i.test(navigator.userAgent)||Ne.Capacitor.getPlatform()==="android"},isiOS(){return["iPad Simulator","iPhone Simulator","iPod Simulator","iPad","iPhone","iPod"].includes(navigator.platform)||navigator.userAgent.includes("Mac")&&"ontouchend"in document||Ne.Capacitor.getPlatform()==="ios"},isNative(){return Ne.Capacitor.isNativePlatform()}},methods:{errorHandler(n){return n&&n.response&&n.response.data&&n.response.data.error&&((n.response.data.error==="ACCESS_DENIED"||n.response.data.error==="TOKEN_EXPIRED")&&this.logout(),!n.response.data.error.includes("Network Error")&&!n.response.data.error.includes("Cannot read properties")&&this.errorSnack(n.response.data.error)),n},errorSnack(n){let e=document.getElementById("snackbar"),t=document.getElementById("errorMessage"),r=document.getElementById("errorSnack");t.innerHTML=n,e.classList.add("show-snack"),r.classList.add("active-snack"),setTimeout(function(){r.classList.remove("active-snack"),e.classList.remove("show-snack")},3e3)},successSnack(n){let e=document.getElementById("snackbar"),t=document.getElementById("successMessage"),r=document.getElementById("successSnack");t.innerHTML=n,e.classList.add("show-snack"),r.classList.add("active-snack"),setTimeout(function(){r.classList.remove("active-snack"),e.classList.remove("show-snack")},3e3)},closeSnacks(){document.getElementById("snackbar").classList.remove("show-snack"),document.getElementById("successSnack").classList.remove("active-snack"),document.getElementById("errorSnack").classList.remove("active-snack")},tapsEmoji(n){return n<10?"":n<=50?"πŸ”₯":n<=100?"πŸ’₯":n<=300?"πŸ’Ž":n>300?"πŸš€":""},isEmpty(n){if(!n)return!0;for(let e in n)if(n.hasOwnProperty(e))return!1;return JSON.stringify(n)===JSON.stringify({})},copy(n=""){const e=document.createElement("textarea");e.value=n,e.setAttribute("readonly",""),e.style.position="absolute",e.style.left="-9999px",document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e),this.successSnack(this.ssoLang[this.appLanguage].copied)},async getCaptchaToken(n){try{return await window.grecaptcha.execute("6LenkC0mAAAAADWBxPOhpmwXCwzCJd7cilNgtOLk",{action:n})}catch(e){return console.log(e),null}}}};var ho={VITE_APP_MODE:"npm",VITE_APP_APP_ROOT:"https://t.link",VITE_APP_API_ROOT:"https://api.tapni.co",VITE_APP_GOOGLE_RECAPTCHA_SITE_KEY:"6LenkC0mAAAAADWBxPOhpmwXCwzCJd7cilNgtOLk",VITE_APP_SSO_ID:"9cd47053-080a-4df8-8fd8-ca4389163fde",VITE_APP_POPUP_LOGIN_ALLOWED_ORIGIN:"https://auth.tapni.com",BASE_URL:"/",MODE:"production",DEV:!1,PROD:!0,SSR:!1};const Ce={mixins:[po],data(){return{lang:"en",token:"",refreshToken:"",refreshing:"",loggedInUserId:"",ssoUser:{},ssoCompany:{},device:{},loggedInAccounts:{},ssoLang:{en:Qn.state,de:Yn.state,es:Wn.state,fr:$n.state,it:Jn.state,sr:Xn.state,tr:Zn.state,cn:uo.state,kr:er.state},display:"npm",redirect_uri:"https://t.link/callback/auth",response_type:"token",state:"",allowedOrigins:["https://business.tapni.com","https://business-dev.tapni.com","https://tapni.com","https://tapni.co","https://t.link","https://my.tapni.com","https://my.tapni.co","https://dev.tapni.co","https://dev.tapni.com","https://auth.tapni.com","https://auth.tapni.co","https://mailsign.link","https://sign.tapni.com","https://qrcodetoolkit.com","https://qr.tapni.com","https://designer.tapni.com","https://designer-dev.tapni.com"]}},computed:{isLoggedIn(){return!!this.token&&this.token!==""&&this.token!=="null"},renderView(){return this.display==="redirect"?!1:this.view},appLanguage(){return this.display==="npm"?this.appLang:this.lang}},mounted(){this.$route.query.redirect_uri&&(this.redirect_uri=this.$route.query.redirect_uri),this.$route.query.display&&(this.display=this.$route.query.display),this.$route.query.state&&(this.state=this.$route.query.state),this.$route.query.response_type&&(this.response_type=this.$route.query.response_type),this.$route.query.realm&&(this.$storage.realm=this.$route.query.realm),z.$on("updateLang",this.updateLang),ho.NODE_ENV==="development"&&(this.allowedOrigins.push("http://localhost:8082"),this.allowedOrigins.push("http://localhost:7777"),this.allowedOrigins.push("http://localhost:5173"))},methods:{errorHandler(n){if(n&&n.response&&n.response.data&&n.response.data.error){if(n.response.data.error==="ACCESS_DENIED")return this.logout();!n.response.data.error.includes("Network Error")&&!n.response.data.error.includes("TOKEN_EXPIRED")&&!n.response.data.error.includes("Cannot read properties")&&this.errorSnack(n.response.data.error)}return n},errorSnack(n){let e=document.getElementById("snackbar"),t=document.getElementById("errorMessage"),r=document.getElementById("errorSnack");t.innerHTML=n,e.classList.add("show-snack"),r.classList.add("active-snack"),setTimeout(function(){r.classList.remove("active-snack"),e.classList.remove("show-snack")},3e3)},successSnack(n){let e=document.getElementById("snackbar"),t=document.getElementById("successMessage"),r=document.getElementById("successSnack");t.innerHTML=n,e.classList.add("show-snack"),r.classList.add("active-snack"),setTimeout(function(){r.classList.remove("active-snack"),e.classList.remove("show-snack")},3e3)},closeSnacks(){document.getElementById("snackbar").classList.remove("show-snack"),document.getElementById("successSnack").classList.remove("active-snack"),document.getElementById("errorSnack").classList.remove("active-snack")},async eventLog(n){const[e,t]=await Z(Gt.eventLog(n,this.$storage));return e?this.errorHandler(e):t},async maintenance(){const[n,e]=await Z(fn.get("https://status.tapni.co/data/maintenance.json"));if(n)return console.error(n);if(e){let t=e.data;typeof e.data=="string"&&(t=JSON.parse(e.data)),t.api&&t.api.maintenanceActive&&(location.href="https://t.link/maintenance?msg="+t.api.msg)}},async loginSetup(n){n.data.refreshToken&&this.setRefreshToken(n.data.refreshToken),n.data.token&&this.setToken(n.data.token),this.setLoggedInUserId(n.data.data.id),this.$storage.UserId=n.data.data.id,this.$storage.username=n.data.data.username,this.$storage.localUser=n.data.data,n.isModal===!0&&this.setLoggedInAccounts([{id:n.data.data.id,username:n.data.data.username,refreshToken:n.data.refreshToken,photo:n.data.data.photo}])},async switchAccount(n){this.$storage.username=n,this.loggedInAccounts[n]&&(this.$storage.UserId=this.loggedInAccounts[n].id,this.setLoggedInUserId(this.loggedInAccounts[n].id),this.setRefreshToken(this.loggedInAccounts[n].refreshToken),await this.refreshTokenAction({...this.loggedInAccounts[n],storage:this.$storage})),z.$emit("ssoEvent",{name:"switchAccount",data:{username:n}})},async refreshTokenAction(n){return new Promise(async(e,t)=>{if(!n.refreshToken||this.refreshing)return e(null);this.refreshing=!0;const[r,o]=await Z(be.refreshToken({id:n.id,refreshToken:n.refreshToken,refreshTokenAction:!0},n.storage));if(r&&r.response&&r.response.data.error==="ACCESS_DENIED")return this.logout(n.refreshToken,!1),location.reload();o&&o.data&&(z.$emit("setToken",o.data.token),n.storage.token=o.data.token,z.$emit("ssoEvent",{name:"setStorage",data:n.storage}),e(o.data.token)),this.refreshing=!1})},async login(n){const[e,t]=await Z(be.login(n,this.$storage));if(e)return this.errorHandler(e);if(t.data.success)return this.display==="npm"&&(this.loginSetup({...t,isModal:n.isModal}),await this.getLoggedInAccounts()),this.loginSuccess({...t,isModal:n.isModal}),!0},loginSuccess(n){if(this.display==="redirect"){if(this.redirect_uri&&!this.allowedOrigins.some(e=>this.redirect_uri.startsWith(e)))return console.error("Redirect URI not allowed");location.href=this.redirect_uri+"?code="+n.data.auth_code+"&state="+this.state}else this.display==="popup"?this.allowedOrigins.forEach(e=>{var t;(t=window.parent)==null||t.postMessage({code:n.data.auth_code,state:this.$route.query.state},e)}):this.display==="npm"&&(z.$emit("ssoEvent",{name:"setLoading",data:!0}),z.$emit("ssoEvent",{name:"setStorage",data:this.$storage}),z.$emit("ssoEvent",{name:"getUser",data:{username:this.$storage.username}}),n.isModal&&(z.$emit("closeModal"),this.successSnack(this.ssoLang[this.appLanguage].success_login),setTimeout(()=>{location.reload()},1500)),this.$router.push("/"+n.data.data.username+"#edit"))},async register(n){const[e,t]=await Z(be.register(n,this.$storage));return e?this.errorHandler(e):t},async verify(n){const[e,t]=await Z(be.verify(n,this.$storage));return e?this.errorHandler(e):t},async reset(n){const[e,t]=await Z(be.sendResetEmail(n,this.$storage));if(e)return this.errorHandler(e);t.data.success&&this.successSnack(this.ssoLang[this.appLanguage].password_reset_success)},async exchangeAuthCode(n){const[e,t]=await Z(be.exchangeAuthCode(n,this.$storage));if(e)return this.errorHandler(e);await this.loginSetup(t),await this.getLoggedInAccounts(),this.loginSuccess(t)},async changePassword(n){const[e,t]=await Z(be.changePassword(n,this.$storage));return e?this.errorHandler(e):t.data.success},async newPassword(n){const[e,t]=await Z(Gt.newPassword(n,this.$storage));return e?this.errorHandler(e):t.data.success},async deleteAccount(n){const[e,t]=await Z(Gt.deleteAccount(n,this.$storage));return e?this.errorHandler(e):t.data.success},async registerDevice(){const n=await Kt.Device.getId(),e=await Kt.Device.getInfo();let t={device_id:n.uuid,platform:e.platform,device_info:{model:e.model,manufacturer:e.manufacturer,operatingSystem:e.operatingSystem,osVersion:e.osVersion,isVirtual:e.isVirtual,webViewVersion:e.webViewVersion}};const[r,o]=await Z(Gn.registerDevice(t,this.$storage));return r?this.errorHandler(r):o},async addFcmToken(n){const[e,t]=await Z(Gn.addFcmToken(n,this.$storage));return e?this.errorHandler(e):t},async acceptCompanyInvitation(n){const[e,t]=await Z(yn.acceptCompanyInvitation(n,this.$storage));return e?this.errorHandler(e):t},async logout(n,e=!0){e&&n&&be.logout({token:n},this.$storage),this.$storage&&(this.$storage.username="",this.$storage.UserId="",this.$storage.localUser=""),this.setLoggedInUserId(""),this.setToken(""),this.unsetRefreshToken(n),n?Object.keys(this.loggedInAccounts).forEach(t=>{this.loggedInAccounts[t].refreshToken===n&&this.refreshTokenAction(this.loggedInAccounts[t]).then(()=>(this.setLoggedInUserId(this.loggedInAccounts[t].id),this.$storage&&(this.$storage.username=t,this.$storage.UserId=this.loggedInAccounts[t].id),this.getLoggedInAccounts(),this.$router.push("/"+t)))}):(this.setUser(null),this.$router.push("/welcome"))},async getCompanyBySSOEmail(n){const[e,t]=await Z(yn.getBySSOEmail(n.email,this.$storage));if(e)return this.errorHandler(e);if(t.data.success)return t.data},async getLoggedInAccounts(n){if(n||(n=this.getRefreshTokens()),n&&n.length>=1){const[e,t]=await Z(be.getLoggedInAccounts({refreshTokens:n},this.$storage));if(e)return this.errorHandler(e);t&&t.data&&t.data.success&&this.setLoggedInAccounts(t.data.accounts)}},async loginUsingQR(n){const[e,t]=await Z(Gt.loginUsingQR(n,this.$storage));return e?this.errorHandler(e):t.data.success},setLoggedInAccounts(n){this.loggedInAccounts={},n.forEach(e=>{this.loggedInAccounts[e.username]=e}),z.$emit("ssoEvent",{name:"setLoggedInAccounts",data:n})},setLoggedInUserId(n){this.loggedInUserId=n},setUser(n){this.ssoUser=n,this.$storage&&this.ssoUser&&this.$storage.username===this.ssoUser.username&&(this.appLanguage=n.ssoLang)},getRefreshTokens(){return this.$storage&&this.$storage.refreshTokens?this.$storage.refreshTokens.split(","):[]},setRefreshToken(n){let e=this.getRefreshTokens();e.includes(n)&&(e=e.filter(t=>t!==n)),e.unshift(n),this.$storage.refreshTokens=e.join(",")},unsetRefreshToken(n){let e=this.getRefreshTokens();e=e.filter(t=>t!==n),this.$storage.refreshTokens=e.join(",")},setToken(n){this.$storage.token=n,this.token=n},setUserID(n){this.$storage.UserId=n},updateLang(n){this.lang=n}},watch:{"$route.query":{handler:function(){this.$route.query.redirect_uri&&(this.redirect_uri=this.$route.query.redirect_uri),this.$route.query.display&&(this.display=this.$route.query.display),this.$route.query.state&&(this.state=this.$route.query.state),this.$route.query.response_type&&(this.response_type=this.$route.query.response_type),this.$route.query.realm&&(this.$storage.realm=this.$route.query.realm),this.$route.query.qrLogin&&this.changeLoginToQr()},deep:!0}}},He=(n,e)=>{const t=n.__vccOpts||n;for(const[r,o]of e)t[r]=o;return t},mo={name:"AuthWelcome",mixins:[Ce],data(){return{loading:!0}},async mounted(){let n=document.getElementById("tapniVideo");n.addEventListener("canplay",function(){document.body.contains(n)&&n.play().catch(e=>{console.log("Play was interrupted:",e)})}),setTimeout(()=>{this.$storage.token?this.$router.push(this.home):z.$emit("ssoEvent",{name:"setLoading",data:!1})},2500)},methods:{}},tr=n=>(c.pushScopeId("data-v-67088d6f"),n=n(),c.popScopeId(),n),go={class:"page-login content-boxed content-boxed-padding center-text",style:{"margin-top":"-1px",overflow:"hidden",border:"solid 0px #ffffff"}},fo=["autoplay"],_o=[tr(()=>c.createElementVNode("source",{src:"https://cdn.tapni.co/images/tapni-card-tap-video-white.mp4",type:"video/mp4"},null,-1))],vo={class:"bold full-top no-bottom center-text"},yo={class:"full-bottom half-top center-text color-black font-16"},ko={class:"page-login-links center-text"},wo=tr(()=>c.createElementVNode("div",{class:"clear"},null,-1)),bo={key:2,style:{display:"flex","flex-direction":"row","justify-content":"space-around",width:"90%",margin:"0 auto","margin-top":"40px"}},Co=[c.createStaticVNode('<a href="https://play.google.com/store/apps/details?id=co.tapni.app" target="_blank" data-v-67088d6f><img src="https://cdn.tapni.co/images/playstore.png" class="app-store-icon pointer" style="width:55px;" data-v-67088d6f></a><a href="https://apps.apple.com/ag/app/tapni/id1552930233" target="_blank" data-v-67088d6f><img src="https://cdn.tapni.co/images/appstore.png" class="app-store-icon pointer" style="width:55px;" data-v-67088d6f></a><a href="https://appgallery.huawei.com/#/app/C103931997" target="_blank" data-v-67088d6f><img src="https://cdn.tapni.co/images/appgallery.png" class="app-store-icon pointer" style="width:55px;" data-v-67088d6f></a>',3)];function Eo(n,e,t,r,o,i){const a=c.resolveComponent("router-link");return c.openBlock(),c.createElementBlock("div",go,[c.createElementVNode("video",{id:"tapniVideo",muted:"",loop:"",playsinline:"",width:"350",style:{margin:"0 auto","max-width":"100%","margin-top":"63px",overflow:"hidden"},autoplay:n.isNative},_o,8,fo),c.createElementVNode("h1",vo,c.toDisplayString(n.ssoLang[this.appLanguage].welcome),1),c.createElementVNode("p",yo,c.toDisplayString(n.ssoLang[this.appLanguage].welcome_p1),1),c.createCommentVNode("",!0),c.createCommentVNode("",!0),c.createVNode(a,{to:"register",exact:"",class:"button-center button button-90 google-button bg-tapni-grey pointer"},{default:c.withCtx(()=>[c.createElementVNode("span",null,c.toDisplayString(n.ssoLang[this.appLanguage].create_account),1)]),_:1}),c.createElementVNode("div",ko,[c.createVNode(a,{to:"/login"},{default:c.withCtx(()=>[c.createTextVNode(c.toDisplayString(n.ssoLang[this.appLanguage].already_registered)+"? ",1),c.createElementVNode("b",null,c.toDisplayString(n.ssoLang[this.appLanguage].sign_in),1)]),_:1}),wo]),this.isNative?c.createCommentVNode("",!0):(c.openBlock(),c.createElementBlock("div",bo,Co))])}const nr=He(mo,[["render",Eo],["__scopeId","data-v-67088d6f"]]),rr=Ne.registerPlugin("GoogleAuth",{web:()=>Promise.resolve().then(()=>ql).then(n=>new n.GoogleAuthWeb)}),or={data(){return{googleLoad:!1}},computed:{displayGoogleLogin(){var n,e;return(((e=(n=this.ssoCompany)==null?void 0:n.login)==null?void 0:e.google_login)&&!this.isModal)??!0}},mounted(){rr.initialize()},methods:{async googleLogin(){var t;this.googleLoad=!0;let[n,e]=await Z(rr.signIn());if(n)return this.googleLoad=!1;if(this.referral&&(e.ref=this.referral),e.authentication&&(e.authentication.accessToken||e.authentication.idToken)){this.referral&&(e.ref=this.referral),this.display==="popup"&&(e.response_type="code");const[r,o]=await Z(be.googleSDK(e,this.$storage));if(r)return this.googleLoad=!1,z.$emit("ssoEvent",{name:"setLoading",data:!1}),this.errorHandler(r);if(o.data.success){if(this.display==="popup")return(t=window.parent)==null?void 0:t.postMessage({code:o.data.auth_code,state:this.$route.query.state},"*");await this.loginSetup(o),await this.getLoggedInAccounts(),this.loginSuccess({...o,isModal:this.isModal}),setTimeout(()=>{this.googleLoad=!1},1e3)}else this.errorSnack(this.ssoLang[this.appLanguage].unexpected_err)}else this.googleLoad=!1,z.$emit("ssoEvent",{name:"setLoading",data:!1})}}},To=Ne.registerPlugin("FacebookLogin",{web:()=>Promise.resolve().then(()=>jl).then(n=>new n.FacebookLoginWeb)});window.fbAsyncInit=function(){FB.init({appId:"202577611527680",cookie:!0,xfbml:!0,version:"v16.0"})},function(n,e,t){var r,o=n.getElementsByTagName(e)[0];n.getElementById(t)||(r=n.createElement(e),r.id=t,r.src="https://connect.facebook.net/en_US/sdk.js",o.parentNode.insertBefore(r,o))}(document,"script","facebook-jssdk");const ir={data(){return{facebookLoad:!1}},computed:{fbLoginUrl(){return'https://www.facebook.com/v16.0/dialog/oauth?client_id=202577611527680&state={"oauth":"facebook"}&response_type=code%20granted_scopes&scope=email&redirect_uri=https://'+window.location.host+"/login"},displayFacebookLogin(){return!1}},methods:{async facebookLogin(){var r;this.facebookLoad=!0;const n=["email"],[e,t]=await Z(To.login({permissions:n}));if(e)return this.facebookLoad=!1;if(this.referral&&(t.ref=this.referral),this.display==="popup"&&(t.response_type="code"),t&&t.accessToken){const[o,i]=await Z(be.facebookSDK(t,this.$storage));if(o)return this.facebookLoad=!1,z.$emit("ssoEvent",{name:"setLoading",data:!1}),this.errorHandler(o);if(i.data.success){if(this.display==="popup")return(r=window.parent)==null?void 0:r.postMessage({code:i.data.auth_code,state:this.$route.query.state},"*");await this.loginSetup(i),await this.getLoggedInAccounts(),this.$router.push("/"+i.data.data.username+"#edit"),setTimeout(()=>{this.facebookLoad=!1,z.$emit("ssoEvent",{name:"setLoading",data:!1})},1e3)}else this.errorSnack(this.ssoLang[this.appLanguage].unexpected_err)}else this.facebookLoad=!1,z.$emit("ssoEvent",{name:"setLoading",data:!1})}}},Io=Ne.registerPlugin("SignInWithApple",{web:()=>Promise.resolve().then(()=>Gl).then(n=>new n.SignInWithAppleWeb)}),ar={data(){return{appleLoad:!1}},computed:{displayAppleLogin(){var n,e;return(((e=(n=this.ssoCompany)==null?void 0:n.login)==null?void 0:e.apple_login)&&!this.isModal)??(Capacitor.isNativePlatform()&&Capacitor.getPlatform()==="ios"||!Capacitor.isNativePlatform()&&this.isiOS)}},methods:{async appleLogin(){var t;this.appleLoad=!0;const[n,e]=await Z(Io.authorize({clientId:"co.tapni.applelogin",redirectURI:"https://"+window.location.host+"/login",scopes:"email name"}));if(n)return this.appleLoad=!1;if(e.response.tokenData=Kn.jwtDecode(e.response.identityToken),e&&e.response&&e.response.identityToken){this.referral&&(e.response.ref=this.referral),this.display==="popup"&&(e.response_type="code");const[r,o]=await Z(be.appleSDK(e.response,this.$storage));if(r)return this.appleLoad=!1,z.$emit("ssoEvent",{name:"setLoading",data:!1}),this.errorHandler(r);if(o.data.success){if(this.display==="popup")return(t=window.parent)==null?void 0:t.postMessage({code:o.data.auth_code,state:this.$route.query.state},"*");await this.loginSetup(o),await this.getLoggedInAccounts(),this.loginSuccess({...o,isModal:this.isModal}),setTimeout(()=>{this.appleLoad=!1},1e3)}else this.errorSnack(this.ssoLang[this.appLanguage].unexpected_err)}else this.appleLoad=!1,z.$emit("ssoEvent",{name:"setLoading",data:!1})}}};/*! @azure/msal-browser v2.38.3 2023-10-27 *//*! *****************************************************************************
102
+ μ›Ή μ‚¬μ΄νŠΈ 및 μ†Œμ…œ 미디어에 κ³΅μœ ν•˜μ—¬ λˆμ„ λ²„λŠ” λ™μ‹œμ— 졜고의 μ—°κ²° κ²½ν—˜μ„ μ œκ³΅ν•˜μ‹­μ‹œμ˜€.`,referral_p8:"μ§€λΆˆ λ©”λͺ¨",referral_p9:"Paypal (세계적인) λ˜λŠ” κ³„μ’Œμ΄μ²΄ (EU) <br> μ΅œμ†Œ 지급앑은 25β‚¬μž…λ‹ˆλ‹€.",referral_p10:"μ§€κΈ‰ μš”μ²­",referral_p11:"μš”μ²­λœ μ§€λΆˆ",your_connections:"λ‚˜μ˜ μ—°κ²° 기둝",connections_p1:"μ‚¬λžŒλ“€κ³Ό λ§Œλ‚˜μ„œ 탭을 ν•˜μ„Έμš”.",connections_p2:"<br><br>μ§€κΈˆκΉŒμ§€ 연결이 μ—†μŠ΅λ‹ˆλ‹€. <br> 탭을 μ‹œμž‘ν•΄λ³ΌκΉŒμš”πŸ’₯",connections_p3:"연결을 찾을 수 μ—†μŠ΅λ‹ˆλ‹€.",connection_success:"μ—°κ²° μš”μ²­μ„ λ³΄λƒˆμŠ΅λ‹ˆλ‹€.",exchange_success:"μ—°λ½μ²˜λ₯Ό κ΅ν™˜ν–ˆμŠ΅λ‹ˆλ‹€.",create_free_account:"무료 Tapni 계정을 λ§Œλ“€κ³  μ—°λ½μ²˜λ₯Ό μ΅œμ‹  μƒνƒœλ‘œ μœ μ§€ν•˜μ‹­μ‹œμ˜€!",connection_edit:"μ—°κ²° νŽΈμ§‘",connection_edit_success:"μ„±κ³΅μ μœΌλ‘œ μ—…λ°μ΄νŠΈλœ μ—°κ²°",connection_delete_success:"연결을 μ‚­μ œν–ˆμŠ΅λ‹ˆλ‹€.",search:"검색",devices_p1:"μž₯치 ν˜Έν™˜μ„± λͺ©λ‘",devices_p2:"νƒ­λ‹ˆλŠ” λŒ€λΆ€λΆ„μ˜ μ΅œμ‹  아이폰 및 μ•ˆλ“œλ‘œμ΄λ“œμ™€ ν˜Έν™˜μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€.",devices_p3:"일뢀 μ•ˆλ“œλ‘œμ΄λ“œ 폰은 NFCκ°€ κΊΌμ Έ μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. νƒ­λ‹ˆκ°€ μ•ˆλ“œλ‘œμ΄λ“œ μž₯μΉ˜μ—μ„œ μž‘λ™ν•˜μ§€ μ•ŠλŠ” 경우 μ„€μ •μ—μ„œ NFCλ₯Ό κ²€μƒ‰ν•˜κ³  켜져 μžˆλŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€.",devices_p4:"μ œμ–΄ 센터에 iOS 14 NFC μœ„μ ― 포함",download_p1:"νƒ­λ‹ˆ μ•± λ‹€μš΄λ‘œλ“œ",download_p2:"μ• ν”Œ 및 μ•ˆλ“œλ‘œμ΄λ“œ κΈ°κΈ°μ—μ„œ μ‚¬μš© κ°€λŠ₯",user_not_found:"μ‚¬μš©μžλ₯Ό 찾을 수 μ—†μŒ",user_not_found_p:"λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ μ‚¬μš©μžλ₯Ό 찾을 수 μ—†μŠ΅λ‹ˆλ‹€.🀷",taps:"νƒ­",private_profile:"개인 ν”„λ‘œν•„",private_profile_p:"은 개인 ν”„λ‘œν•„μž…λ‹ˆλ‹€. <br> ν”„λ‘œν•„μ€ νƒ­λ‹ˆ νƒœκ·Έμ—μ„œλ§Œ μ‚¬μš©ν•˜λ©° ν‘œμ‹œλ©λ‹ˆλ‹€.",profile_bio_p:"자기 μ†Œκ°œλ₯Ό ν•΄μ£Όμ„Έμš”.",add_to_contacts:"μ—°λ½μ²˜μ— μΆ”κ°€",drag_and_drop_links:"링크λ₯Ό μ›ν•˜λŠ” μˆœμ„œλŒ€λ‘œ λŒμ–΄μ„œ 놓기",no_links:"ν”„λ‘œν•„μ— 링크가 μ—†μŠ΅λ‹ˆλ‹€.",add_link:"링크 μΆ”κ°€",direct_link_p1:"λ°©λ¬ΈμžλŠ” λ‹€μŒμœΌλ‘œ μžλ™ μ΄λ™λ©λ‹ˆλ‹€:",profile_not_active:"ν”„λ‘œν•„μ΄ ν˜„μž¬ ν™œμ„±ν™”λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. <br> λ‘œκ·ΈμΈμ„ ν•΄μ•Ό λ³Ό 수 μžˆμ–΄μš”.",profile_not_public:"ν”„λ‘œν•„μ΄ ν˜„μž¬ κ³΅κ°œλ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. <br> λˆ„λ₯΄μ‹  λΆ„λ“€λ§Œ λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.",activate_profile_now:"ν”„λ‘œν•„ ν™œμ„±ν™” μ™„λ£Œ",publish_profile_now:"μ§€κΈˆ ν”„λ‘œν•„μ„ κ³΅κ°œν•˜μ‹­μ‹œμ˜€.",link_add_p1:"링크 μœ ν˜• 선택",link_add_not_found:"링크λ₯Ό 찾을 수 μ—†μŠ΅λ‹ˆλ‹€. 🀷",link_add_not_found_p2:"μ¦κ²¨μ°ΎλŠ” ν”Œλž«νΌμ„ λ†“μΉ˜μ…¨λ‹€λ©΄, μ €ν¬μ—κ²Œ 이메일을 λ³΄λ‚΄μ£Όμ‹œκΈ° λ°”λžλ‹ˆλ‹€. (<b>support@tapni.com</b>) μ•„λ‹ˆλ©΄ μ†Œμ…œ λ―Έλ””μ–΄λ‘œ DM을 ν•΄μ£Όμ„Έμš”.(<b>@tapni</b>)",link_add_not_found_p3:"λͺ¨λ“  ν”Œλž«νΌμ„ 지원할 수 μžˆλ„λ‘ μ΅œμ„ μ„ λ‹€ν•˜κ² μŠ΅λ‹ˆλ‹€. πŸ˜‰",featured:"ν”Όμ²˜λ§",social_media:"μ†Œμ…œ λ―Έλ””μ–΄",contact:"μ—°λ½μ²˜",finance:"금육",portfolio:"포트폴리였",music:"μŒμ•…",business:"λΉ„μ§€λ‹ˆμŠ€",fun:"재미",ecommerce:"μ „μžμƒκ±°λž˜",more:"더 보기",email_username:"이메일 / μ‚¬μš©μž 이름",username:"μ‚¬μš©μž 이름",password:"λΉ„λ°€λ²ˆν˜Έ",sign_in:"둜그인",sign_in_with:"둜그인",sign_in_with_new:"μƒˆ κ³„μ •μœΌλ‘œ 둜그인",sign_up_with:"λ“±λ‘ν•˜κΈ°",select_sign_method:"둜그인 방법 선택",verify_account:"계정 확인",terms_by_signing_in:"νšŒμ›λ‹˜μ˜ λ™μ˜λ‘œ νšŒμ›κ°€μž…μ„ ν•©λ‹ˆλ‹€.",terms_by_registering:"λ™μ˜ν•˜μ‹œλ©΄ λ“±λ‘ν•˜μ—¬ μ£Όμ‹­μ‹œμ˜€.",terms_by_submitting:"이 양식을 μ œμΆœν•˜λ©΄ μ„œλΉ„μŠ€ 약관에 λ™μ˜ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€",terms_of_service:"μ„œλΉ„μŠ€ μ•½κ΄€",and:"그리고",refresh:"μƒˆλ‘œ κ³ μΉ¨",privacy_policy:"개인 정보 보호 μ •μ±…",create_account:"계정 λ§Œλ“€κΈ°",reset_password:"λΉ„λ°€λ²ˆν˜Έ μž¬μ„€μ •",reset_password_p1:"μ•”ν˜Έλ₯Ό μž¬μ„€μ •ν•  수 μ—†μœΌλ©΄, <br> μ–Έμ œλ“ μ§€ λ‹€μŒ μ£Όμ†Œλ‘œ μ—°λ½ν•˜μ‹­μ‹œμ˜€.",reset_password_p2:"μ•”ν˜Έλ₯Ό μž¬μ„€μ •ν•  수 μ—†μœΌλ©΄, <br> μ–Έμ œλ“ μ§€ λ‹€μŒ μ£Όμ†Œλ‘œ μ—°λ½ν•˜μ‹­μ‹œμ˜€.",create_new_account:"μƒˆ 계정 λ§Œλ“€κΈ°",maintenance_p1:"μš°λ¦¬λŠ” κ³§ λŒμ•„μ˜¬ 것이닀.",maintenance_p2:"κ·Έλ™μ•ˆ νƒ­λ‹ˆ μ»¬λ ‰μ…˜ μ‚΄νŽ΄λ³΄κΈ°",maintenance_p3:"νƒ­λ‹ˆλŠ” μ˜ˆμ •λœ μ κ²€μœΌλ‘œ μΈν•˜μ—¬ μž μ‹œ μ€‘λ‹¨λ˜μ—ˆμŠ΅λ‹ˆλ‹€. <br> λͺ‡ λΆ„ λ‚΄λ‘œ λ‹€μ‹œ 온라인 μƒνƒœκ°€ 될 κ²ƒμž…λ‹ˆλ‹€.",offline_p1:"인터넷에 μ—°κ²°λ˜μ§€ μ•ŠμŒ",offline_p2:"연결을 ν™•μΈν•œ λ‹€μŒ νŽ˜μ΄μ§€λ₯Ό μƒˆλ‘œ κ³ μΉ˜μ‹­μ‹œμ˜€.",offline_p3_1:"μ˜€ν”„λΌμΈμΌ λ•Œ 이 QR μ½”λ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μ—°λ½μ²˜ μΉ΄λ“œλ₯Ό κ³΅μœ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.",offline_p3_2:"",products_p1:"λ§Œλ‚˜λŠ” λͺ¨λ“  μ‚¬λžŒμ—κ²Œ κΉŠμ€ 인상을 λ‚¨κΉλ‹ˆλ‹€. 😎 <br> μ§€κΈˆ λ°”λ‘œ κ΅¬μž…ν•˜μ‹­μ‹œμ˜€ πŸ‘‡",cards:"μΉ΄λ“œ",stickers:"μŠ€ν‹°μ»€",keychains:"ν‚€ 체인",explore_collection:"μ»¬λ ‰μ…˜ 탐색",register:"등둝",register_success:"거의 λ‹€ μ™„λ£Œν•˜μ˜€μŠ΅λ‹ˆλ‹€. 이메일을 확인해 μ£Όμ„Έμš”.",register_success_modal:"λ‹€λ₯Έ κ³„μ •μœΌλ‘œ λ‘œκ·ΈμΈν–ˆμŠ΅λ‹ˆλ‹€.",check_your_inbox:"첫 번째 링크λ₯Ό μΆ”κ°€ ν•΄ μ£Όμ„Έμš”.",tapni_tags:"νƒ­λ‹ˆ νƒœκ·Έ",tapni_tags_p1:"ν”„λ‘œν•„μ— μ—°κ²°λœ νƒœκ·Έ ꡬ성",tapni_tags_p2:"ν”„λ‘œν•„μ— μ—°κ²°λœ νƒœκ·Έκ°€ μ—†μŠ΅λ‹ˆλ‹€. <br> μ§€κΈˆ μ—°κ²°ν•˜μ„Έμš”!",verify_account_p1:"μ½”λ“œλ₯Ό λ°›μ§€ λͺ»ν•œ 경우 λ‹€μŒμ„ ν™•μΈν•˜μ‹­μ‹œμ˜€. <br> 슀팸 폴더 λ˜λŠ” μ—°λ½μ£Όμ„Έμš”:",verify_account_success:"계정을 ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€. μ§€κΈˆ λΉ„λ°€λ²ˆν˜Έλ₯Ό λ³€κ²½ν•΄ μ£Όμ„Έμš”.",verify_account_success2:"계정을 ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€. λͺ¨λ‘ μ™„λ£Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.!πŸ₯³",welcome:"λ°˜κ°‘μŠ΅λ‹ˆλ‹€.",welcome_p1:"λΉ„μ§€λ‹ˆμŠ€ μΉ΄λ“œμ˜ λ―Έλž˜κΉŒμ§€",how_it_works:"μž‘λ™ 방식",already_registered:"이미 λ“±λ‘λ˜μ–΄μžˆμŠ΅λ‹ˆλ‹€",error:"였λ₯˜",success:"성곡",copied:"ν΄λ¦½λ³΄λ“œμ— 볡사됨",connect_validate:"두 개의 μ—°λ½μ²˜ ν•„λ“œ 쀑 ν•˜λ‚˜λ₯Ό μ œκ³΅ν•΄μ•Ό ν•©λ‹ˆλ‹€.",connect_validate_name:"이름을 μž…λ ₯ν•˜μ‹­μ‹œμ˜€.",connect_validate_email:"μœ νš¨ν•œ 이메일을 μž…λ ₯ν•˜μ„Έμš”",link_validate:"잘λͺ»λœ 링크 λ°μ΄ν„°μž…λ‹ˆλ‹€.",link_text_contact_card:"μ—°λ½μ²˜ μΉ΄λ“œ",link_text_custom_link:"μ‚¬μš©μž μ§€μ • 링크",link_text_menu:"메뉴",link_text_phone:"νœ΄λŒ€ν°",save_to_apple_wallet:"Apple 지갑에 μ €μž₯",save_to_google_wallet:"Google 지갑에 μ €μž₯",card:"μΉ΄λ“œ",sticker:"μƒν‘œ",keychain:"킀체인",band:"λ°΄λ“œ",case:"사둀",standee:"μ„œλ‹€",decoded:"Decoded",wristbanditz:"Wristbanditz",update_p1:"였래된 μ•± 버전이 κ°μ§€λ˜μ—ˆμŠ΅λ‹ˆλ‹€",update_p2:"μ—…λ°μ΄νŠΈ",update_p3:"앱을 μ΅œμ‹  λ²„μ „μœΌλ‘œ μ—…λ°μ΄νŠΈν•˜μ„Έμš”",company_domain:"κ·€ν•˜μ˜ νšŒμ‚¬ 도메인",search_company_domain:"νšŒμ‚¬ 도메인 검색",enter_company_email:"νšŒμ‚¬ 이메일을 μž…λ ₯ν•˜μ„Έμš”",company_not_found:"νšŒμ‚¬λ₯Ό 찾을 수 μ—†μŒ",ik_company_domain:"νšŒμ‚¬ 도메인을 μ•Œκ³  μžˆμŠ΅λ‹ˆλ‹€",idk_company_domain:"νšŒμ‚¬ 도메인을 λͺ¨λ¦…λ‹ˆλ‹€",continue:"계속",forbidden_rule:"이 μ˜΅μ…˜μ€ λΉ„ν™œμ„±ν™”λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. νšŒμ‚¬ κ΄€λ¦¬μžμ—κ²Œ λ¬Έμ˜ν•˜μ‹­μ‹œμ˜€.",companyName:"νšŒμ‚¬ 이름",createMarkerPlaceholder:"마컀 생성 λ˜λŠ” 선택",clickToCreateMarker:"마컀λ₯Ό λ§Œλ“€λ €λ©΄ μ—¬κΈ°λ₯Ό ν΄λ¦­ν•˜μ„Έμš”.",pleaseInviteUser:"데이터λ₯Ό λ™κΈ°ν™”ν•˜λ €λ©΄ μ‚¬μš©μžλ₯Ό Tapni에 κ°€μž…ν•˜λ„λ‘ μ΄ˆλŒ€ν•˜μ„Έμš”.",connectionSynchronized:"μ—°κ²° 데이터가 μžλ™μœΌλ‘œ λ™κΈ°ν™”λ©λ‹ˆλ‹€.",viewProfile:"ν”„λ‘œν•„λ³΄κΈ°",createConnectionHeader:"μƒˆ μ—°κ²° μΆ”κ°€",createConnectionButton:"μΆ”κ°€ν•˜λ‹€",createConnectionSuccess:"연결이 μƒμ„±λ˜μ—ˆμŠ΅λ‹ˆλ‹€.",allow_company_management:"νšŒμ‚¬ 관리 ν—ˆμš©",company_join_request:"이 κ·€ν•˜μ˜ ν”„λ‘œν•„μ„ κ΄€λ¦¬ν•˜κ³  이λ₯Ό κΈ°μ—… 계정에 μ—°κ²°ν•˜λ„λ‘ μš”μ²­ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.",account_ownership_transfer:"κ·€ν•˜κ°€ μš”μ²­μ„ μˆ˜λ½ν•˜λ©΄ κ·€ν•˜μ˜ 계정 μ†Œμœ κΆŒμ΄ νšŒμ‚¬λ‘œ μ΄μ „λ©λ‹ˆλ‹€. νšŒμ‚¬λŠ” κ·€ν•˜μ˜ ν”„λ‘œν•„μ„ μˆ˜μ •ν•˜κ³ , 링크λ₯Ό νŽΈμ§‘ 및 μΆ”κ°€ν•˜κ³ , 연결을 ν™•μΈν•˜κ³ , λΉ„λ°€λ²ˆν˜Έλ₯Ό μˆ˜μ •ν•˜κ³ , 계정을 μ‚­μ œν•˜λŠ” λ“±μ˜ μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μš”μ²­μ„ μˆ˜λ½ν•˜κΈ° 전에 νšŒμ‚¬μ— ν™•μΈν•˜μ‹­μ‹œμ˜€.",request_expired:"μš”μ²­μ΄ λ§Œλ£Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€. νšŒμ‚¬μ— μƒˆ μš”μ²­μ„ 보내도둝 μš”μ²­ν•˜μ‹­μ‹œμ˜€.",request_expiration_desc:"λ³΄μ•ˆ κ°•ν™”λ₯Ό μœ„ν•΄ μš”μ²­μ€ μ „μ†‘λœ ν›„ 14일 λ™μ•ˆλ§Œ μž‘λ™ν•©λ‹ˆλ‹€.",invitation_link_not_valid:"μ΄ˆλŒ€ 링크가 μœ νš¨ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€!",invitation_link_not_valid2:"μ΄ˆλŒ€ μ΄λ©”μΌμ—μ„œ λ²„νŠΌμ„ λ‹€μ‹œ ν΄λ¦­ν•˜κ±°λ‚˜ μ΄ˆλŒ€ 링크λ₯Ό λ³΅μ‚¬ν•©λ‹ˆλ‹€.",accept_request:"μš”μ²­ 수락",close:"λ‹«λ‹€",request_accepted:"μš”μ²­μ΄ μ„±κ³΅μ μœΌλ‘œ μˆ˜λ½λ˜μ—ˆμŠ΅λ‹ˆλ‹€.",companyEmail:"νšŒμ‚¬ 이메일",companyPhone:"νšŒμ‚¬ μ „ν™”",addBusinessInformations:"λΉ„μ¦ˆλ‹ˆμŠ€ 정보 μΆ”κ°€",resetFilter:"μ΄ˆκΈ°ν™”",selectMarkers:"마컀 선택",filterConnectionsHeader:"ν•„ν„° μ—°κ²°",selectConnectionType:"μ—°κ²° μœ ν˜• 선택",all:"λͺ¨λ‘",direct:"직접",form:"ν˜•νƒœ",manually:"μˆ˜λ™μœΌλ‘œ",scan:"주사",sortOptions:"μ •λ ¬ μ˜΅μ…˜",date:"μ œμž‘ 일",fullName:"μ„±λͺ…",descending:"λ‚΄λ¦Όμ°¨μˆœ",ascending:"μ˜€λ¦„μ°¨μˆœ",selectDateRange:"λ‚ μ§œ λ²”μœ„ 선택",follow_up_reminder:"후속 μ•Œλ¦Ό",now:"μ§€κΈˆ",one_hour:"1 ν† ",one_day:"1 일",three_days:"3 일",one_week:"일주",two_weeks:"이주",one_month:"κ°œμ›”",custom:"μ‹œκ°„ 선택",set_reminder:"μ•Œλ¦Ό μ„€μ •",select_date_time:"λ‚ μ§œ 및 μ‹œκ°„ 선택",enter_reminder_text:"μ•Œλ¦Ό ν…μŠ€νŠΈ μž…λ ₯",reminder_created:"μ•Œλ¦Όμ΄ μƒμ„±λ˜μ—ˆμŠ΅λ‹ˆλ‹€.",connectionNameLabel:"μ—°κ²° 이름 μž…λ ₯",connectionEmailLabel:"개인 이메일 μ£Όμ†Œ μž…λ ₯",privatePhoneLabel:"개인 μ „ν™”λ²ˆν˜Έ μž…λ ₯",companyNameLabel:"νšŒμ‚¬ 이름 μž…λ ₯",businessEmail:"λΉ„μ¦ˆλ‹ˆμŠ€ 이메일 μ£Όμ†Œ",businessEmailLabel:"λΉ„μ¦ˆλ‹ˆμŠ€ 이메일 μ£Όμ†Œ μž…λ ₯",businessPhone:"νšŒμ‚¬ μ „ν™”λ²ˆν˜Έ",businessPhoneLabel:"νšŒμ‚¬ μ „ν™”λ²ˆν˜Έ μž…λ ₯",noteLabel:"λ©”λͺ¨ μž…λ ₯",markersLabel:"μ—°κ²° 마컀 μΆ”κ°€",showScan:"μŠ€μΊ” ν‘œμ‹œ",hideScan:"μŠ€μΊ” 숨기기",create_connection:"μ—°κ²° μΆ”κ°€",create_manually:"μˆ˜λ™μœΌλ‘œ μΆ”κ°€",create_using_scanner:"μΉ΄λ“œ μŠ€μΊλ„ˆλ₯Ό μ‚¬μš©ν•˜μ—¬ μΆ”κ°€",companyTitle:"νšŒμ‚¬λͺ…",companyTitleLabel:"νšŒμ‚¬λͺ… μž…λ ₯",allConnectionsLabel:"λͺ¨λ“  μ—°κ²° μœ ν˜•",directConnectionsLabel:"Tapni μ‚¬μš©μžμ™€ 직접 μ•± λ‚΄ μ—°κ²°",formConnectionsLabel:"μ—°κ²° 양식에 μ±„μ›Œμ§„ μ—°κ²°",manualConnectionsLabel:"μˆ˜λ™μœΌλ‘œ μƒμ„±λœ μ—°κ²°",scanConnectionsLabel:"μΉ΄λ“œ μŠ€μΊλ„ˆκ°€ 연결을 μƒμ„±ν–ˆμŠ΅λ‹ˆλ‹€.",analyticsHeader:"뢄석",analyticsProfileViews:"ν”„λ‘œν•„ 보기",analyticsLinkClicks:"링크 클릭 수",analyticsClickTroughRatio:"νŠΈλ‘œν”„ λΉ„μœ¨ 클릭",analyticsTotalConnections:"총 μ—°κ²° 수",analyticsTopLinks:"κ°€μž₯ 인기 μžˆλŠ” 링크",analyticsProfileVisits:"ν”„λ‘œν•„ λ°©λ¬Έ",analyticsLinkVisits:"링크 λ°©λ¬Έ",analyticsNewConnections:"μƒˆλ‘œμš΄ μ—°κ²°",analyticsTopCountries:"μƒμœ„ κ΅­κ°€",analyticsTopReferers:"μƒμœ„ μΆ”μ²œμΈ",please_wait:"μž μ‹œλ§Œ κΈ°λ‹€λ € μ£Όμ„Έμš”...",click_here:"μ—¬κΈ°λ₯Ό ν΄λ¦­ν•˜μ„Έμš”",if_redirect_not_directly:"λ¦¬λ””λ ‰μ…˜μ΄ μžλ™μœΌλ‘œ μˆ˜ν–‰λ˜μ§€ μ•ŠλŠ” 경우",you_will_be_redirected:"Tapni μ• ν”Œλ¦¬μΌ€μ΄μ…˜μœΌλ‘œ λ¦¬λ””λ ‰μ…˜λ©λ‹ˆλ‹€.",use_tapni_on_the_web:"μ›Ήμ—μ„œ Tapni μ‚¬μš©ν•˜κΈ°",login_by_scanning_qr_code:"QR μ½”λ“œ μŠ€μΊ”ν•˜μ—¬ λ‘œκ·ΈμΈν•˜κΈ°",open_tapni_app_on_your_phone:"1. νœ΄λŒ€ν°μ—μ„œ Tapni μ•± μ—΄κΈ°",go_to_settings_link_a_device:"2. μ„€μ • > μž₯치 μ—°κ²°λ‘œ μ΄λ™ν•˜κΈ°",point_your_phone_at_this_qr_code:"3. νœ΄λŒ€ν°μ„ 이 QR μ½”λ“œμ— λ§žμΆ”κΈ°",choose_other_login_methods:"λ‹€λ₯Έ 둜그인 방법 μ„ νƒν•˜κΈ°",no_sso_logins:"κ·€ν•˜μ˜ νšŒμ‚¬λŠ” SSO λ‘œκ·ΈμΈμ„ μ‚¬μš©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. κ΄€λ¦¬μžμ—κ²Œ λ¬Έμ˜ν•˜μ‹­μ‹œμ˜€."}},po={computed:{home(){return this.$storage&&this.$storage.token&&this.$storage.username?"/"+this.$storage.username:"/welcome"},isAndroid(){return/Android/i.test(navigator.userAgent)||Ne.Capacitor.getPlatform()==="android"},isiOS(){return["iPad Simulator","iPhone Simulator","iPod Simulator","iPad","iPhone","iPod"].includes(navigator.platform)||navigator.userAgent.includes("Mac")&&"ontouchend"in document||Ne.Capacitor.getPlatform()==="ios"},isNative(){return Ne.Capacitor.isNativePlatform()}},methods:{errorHandler(n){return n&&n.response&&n.response.data&&n.response.data.error&&((n.response.data.error==="ACCESS_DENIED"||n.response.data.error==="TOKEN_EXPIRED")&&this.logout(),!n.response.data.error.includes("Network Error")&&!n.response.data.error.includes("Cannot read properties")&&this.errorSnack(n.response.data.error)),n},errorSnack(n){let e=document.getElementById("snackbar"),t=document.getElementById("errorMessage"),r=document.getElementById("errorSnack");t.innerHTML=n,e.classList.add("show-snack"),r.classList.add("active-snack"),setTimeout(function(){r.classList.remove("active-snack"),e.classList.remove("show-snack")},3e3)},successSnack(n){let e=document.getElementById("snackbar"),t=document.getElementById("successMessage"),r=document.getElementById("successSnack");t.innerHTML=n,e.classList.add("show-snack"),r.classList.add("active-snack"),setTimeout(function(){r.classList.remove("active-snack"),e.classList.remove("show-snack")},3e3)},closeSnacks(){document.getElementById("snackbar").classList.remove("show-snack"),document.getElementById("successSnack").classList.remove("active-snack"),document.getElementById("errorSnack").classList.remove("active-snack")},tapsEmoji(n){return n<10?"":n<=50?"πŸ”₯":n<=100?"πŸ’₯":n<=300?"πŸ’Ž":n>300?"πŸš€":""},isEmpty(n){if(!n)return!0;for(let e in n)if(n.hasOwnProperty(e))return!1;return JSON.stringify(n)===JSON.stringify({})},copy(n=""){const e=document.createElement("textarea");e.value=n,e.setAttribute("readonly",""),e.style.position="absolute",e.style.left="-9999px",document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e),this.successSnack(this.ssoLang[this.appLanguage].copied)},async getCaptchaToken(n){try{return await window.grecaptcha.execute("6LenkC0mAAAAADWBxPOhpmwXCwzCJd7cilNgtOLk",{action:n})}catch(e){return console.log(e),null}}}};var ho={VITE_APP_MODE:"npm",VITE_APP_APP_ROOT:"https://t.link",VITE_APP_API_ROOT:"https://api.tapni.co",VITE_APP_GOOGLE_RECAPTCHA_SITE_KEY:"6LenkC0mAAAAADWBxPOhpmwXCwzCJd7cilNgtOLk",VITE_APP_SSO_ID:"9cd47053-080a-4df8-8fd8-ca4389163fde",VITE_APP_POPUP_LOGIN_ALLOWED_ORIGIN:"https://auth.tapni.com",BASE_URL:"/",MODE:"production",DEV:!1,PROD:!0,SSR:!1};const Ce={mixins:[po],data(){return{lang:"en",token:"",refreshToken:"",refreshing:"",loggedInUserId:"",ssoUser:{},ssoCompany:{},device:{},loggedInAccounts:{},ssoLang:{en:Qn.state,de:Yn.state,es:Wn.state,fr:$n.state,it:Jn.state,sr:Xn.state,tr:Zn.state,cn:uo.state,kr:er.state},display:"npm",redirect_uri:"https://t.link/callback/auth",response_type:"token",state:"",allowedOrigins:["https://business.tapni.com","https://business-dev.tapni.com","https://tapni.com","https://tapni.co","https://t.link","https://my.tapni.com","https://my.tapni.co","https://dev.tapni.co","https://dev.tapni.com","https://auth.tapni.com","https://auth.tapni.co","https://mailsign.link","https://sign.tapni.com","https://qrcodetoolkit.com","https://qr.tapni.com","https://designer.tapni.com","https://designer-dev.tapni.com"]}},computed:{isLoggedIn(){return!!this.token&&this.token!==""&&this.token!=="null"},renderView(){return this.display==="redirect"?!1:this.view},appLanguage(){return this.display==="npm"?this.appLang:this.lang}},mounted(){this.$route.query.redirect_uri&&(this.redirect_uri=this.$route.query.redirect_uri),this.$route.query.display&&(this.display=this.$route.query.display),this.$route.query.state&&(this.state=this.$route.query.state),this.$route.query.response_type&&(this.response_type=this.$route.query.response_type),this.$route.query.realm&&(this.$storage.realm=this.$route.query.realm),z.$on("updateLang",this.updateLang),ho.NODE_ENV==="development"&&(this.allowedOrigins.push("http://localhost:8082"),this.allowedOrigins.push("http://localhost:7777"),this.allowedOrigins.push("http://localhost:5173"))},methods:{errorHandler(n){if(n&&n.response&&n.response.data&&n.response.data.error){if(n.response.data.error==="ACCESS_DENIED")return this.logout();!n.response.data.error.includes("Network Error")&&!n.response.data.error.includes("TOKEN_EXPIRED")&&!n.response.data.error.includes("Cannot read properties")&&this.errorSnack(n.response.data.error)}return n},errorSnack(n){let e=document.getElementById("snackbar"),t=document.getElementById("errorMessage"),r=document.getElementById("errorSnack");t.innerHTML=n,e.classList.add("show-snack"),r.classList.add("active-snack"),setTimeout(function(){r.classList.remove("active-snack"),e.classList.remove("show-snack")},3e3)},successSnack(n){let e=document.getElementById("snackbar"),t=document.getElementById("successMessage"),r=document.getElementById("successSnack");t.innerHTML=n,e.classList.add("show-snack"),r.classList.add("active-snack"),setTimeout(function(){r.classList.remove("active-snack"),e.classList.remove("show-snack")},3e3)},closeSnacks(){document.getElementById("snackbar").classList.remove("show-snack"),document.getElementById("successSnack").classList.remove("active-snack"),document.getElementById("errorSnack").classList.remove("active-snack")},async eventLog(n){const[e,t]=await Z(Gt.eventLog(n,this.$storage));return e?this.errorHandler(e):t},async maintenance(){const[n,e]=await Z(fn.get("https://status.tapni.co/data/maintenance.json"));if(n)return console.error(n);if(e){let t=e.data;typeof e.data=="string"&&(t=JSON.parse(e.data)),t.api&&t.api.maintenanceActive&&(location.href="https://t.link/maintenance?msg="+t.api.msg)}},async loginSetup(n){n.data.refreshToken&&this.setRefreshToken(n.data.refreshToken),n.data.token&&this.setToken(n.data.token),this.setLoggedInUserId(n.data.data.id),this.$storage.UserId=n.data.data.id,this.$storage.username=n.data.data.username,this.$storage.localUser=n.data.data,n.isModal===!0&&this.setLoggedInAccounts([{id:n.data.data.id,username:n.data.data.username,refreshToken:n.data.refreshToken,photo:n.data.data.photo}])},async switchAccount(n){this.$storage.username=n,this.loggedInAccounts[n]&&(this.$storage.UserId=this.loggedInAccounts[n].id,this.setLoggedInUserId(this.loggedInAccounts[n].id),this.setRefreshToken(this.loggedInAccounts[n].refreshToken),await this.refreshTokenAction({...this.loggedInAccounts[n],storage:this.$storage})),z.$emit("ssoEvent",{name:"switchAccount",data:{username:n}})},async refreshTokenAction(n){return new Promise(async(e,t)=>{if(!n.refreshToken||this.refreshing)return e(null);this.refreshing=!0;const[r,o]=await Z(be.refreshToken({id:n.id,refreshToken:n.refreshToken,refreshTokenAction:!0},n.storage));if(r&&r.response&&r.response.data.error==="ACCESS_DENIED")return this.logout(n.refreshToken,!1),location.reload();o&&o.data&&(z.$emit("setToken",o.data.token),n.storage.token=o.data.token,z.$emit("ssoEvent",{name:"setStorage",data:n.storage}),e(o.data.token)),this.refreshing=!1})},async login(n){const[e,t]=await Z(be.login(n,this.$storage));if(e)return this.errorHandler(e);if(t.data.success)return this.display==="npm"&&(this.loginSetup({...t,isModal:n.isModal}),await this.getLoggedInAccounts()),this.loginSuccess({...t,isModal:n.isModal}),!0},loginSuccess(n){if(this.display==="redirect"){if(this.redirect_uri&&!this.allowedOrigins.some(e=>this.redirect_uri.startsWith(e)))return console.error("Redirect URI not allowed");location.href=this.redirect_uri+"?code="+n.data.auth_code+"&state="+this.state}else this.display==="popup"?this.allowedOrigins.forEach(e=>{var t;(t=window.parent)==null||t.postMessage({code:n.data.auth_code,state:this.$route.query.state},e)}):this.display==="npm"&&(z.$emit("ssoEvent",{name:"setLoading",data:!0}),z.$emit("ssoEvent",{name:"setStorage",data:this.$storage}),z.$emit("ssoEvent",{name:"getUser",data:{username:this.$storage.username}}),n.isModal&&(z.$emit("closeModal"),this.successSnack(this.ssoLang[this.appLanguage].success_login),setTimeout(()=>{location.reload()},1500)),this.$router.push("/"+n.data.data.username+"#edit"))},async register(n){const[e,t]=await Z(be.register(n,this.$storage));return e?this.errorHandler(e):t},async verify(n){const[e,t]=await Z(be.verify(n,this.$storage));return e?this.errorHandler(e):t},async reset(n){const[e,t]=await Z(be.sendResetEmail(n,this.$storage));if(e)return this.errorHandler(e);t.data.success&&this.successSnack(this.ssoLang[this.appLanguage].password_reset_success)},async exchangeAuthCode(n){const[e,t]=await Z(be.exchangeAuthCode(n,this.$storage));if(e)return this.errorHandler(e);await this.loginSetup(t),await this.getLoggedInAccounts(),this.loginSuccess(t)},async changePassword(n){const[e,t]=await Z(be.changePassword(n,this.$storage));return e?this.errorHandler(e):t.data.success},async newPassword(n){const[e,t]=await Z(Gt.newPassword(n,this.$storage));return e?this.errorHandler(e):t.data.success},async deleteAccount(n){const[e,t]=await Z(Gt.deleteAccount(n,this.$storage));return e?this.errorHandler(e):t.data.success},async registerDevice(){const n=await Kt.Device.getId(),e=await Kt.Device.getInfo();let t={device_id:n.uuid,platform:e.platform,device_info:{model:e.model,manufacturer:e.manufacturer,operatingSystem:e.operatingSystem,osVersion:e.osVersion,isVirtual:e.isVirtual,webViewVersion:e.webViewVersion}};const[r,o]=await Z(Gn.registerDevice(t,this.$storage));return r?this.errorHandler(r):o},async addFcmToken(n){const[e,t]=await Z(Gn.addFcmToken(n,this.$storage));return e?this.errorHandler(e):t},async acceptCompanyInvitation(n){const[e,t]=await Z(yn.acceptCompanyInvitation(n,this.$storage));return e?this.errorHandler(e):t},async logout(n,e=!0){e&&n&&be.logout({token:n},this.$storage),this.$storage&&(this.$storage.username="",this.$storage.UserId="",this.$storage.localUser="",this.setToken("")),this.setLoggedInUserId("");const t=this.unsetRefreshToken(n);t.length>=1?Object.keys(this.loggedInAccounts).forEach(r=>{this.loggedInAccounts[r].refreshToken===t[0]&&this.refreshTokenAction({...this.loggedInAccounts[r],storage:this.$storage}).then(()=>{this.setLoggedInUserId(this.loggedInAccounts[r].id),this.$storage&&(this.$storage.username=r,this.$storage.UserId=this.loggedInAccounts[r].id),this.getLoggedInAccounts(),this.$router.push("/"+r),setTimeout(()=>{location.reload()},1500)})}):(this.setUser(null),this.$router.push("/welcome"))},async getCompanyBySSOEmail(n){const[e,t]=await Z(yn.getBySSOEmail(n.email,this.$storage));if(e)return this.errorHandler(e);if(t.data.success)return t.data},async getLoggedInAccounts(n){if(n||(n=this.getRefreshTokens()),n&&n.length>=1){const[e,t]=await Z(be.getLoggedInAccounts({refreshTokens:n},this.$storage));if(e)return this.errorHandler(e);t&&t.data&&t.data.success&&this.setLoggedInAccounts(t.data.accounts)}},async loginUsingQR(n){const[e,t]=await Z(Gt.loginUsingQR(n,this.$storage));return e?this.errorHandler(e):t.data.success},setLoggedInAccounts(n){this.loggedInAccounts={},n.forEach(e=>{this.loggedInAccounts[e.username]=e}),z.$emit("ssoEvent",{name:"setLoggedInAccounts",data:n})},setLoggedInUserId(n){this.loggedInUserId=n},setUser(n){this.ssoUser=n,this.$storage&&this.ssoUser&&this.$storage.username===this.ssoUser.username&&(this.appLanguage=n.ssoLang)},getRefreshTokens(){return this.$storage&&this.$storage.refreshTokens?this.$storage.refreshTokens.split(","):[]},setRefreshToken(n){let e=this.getRefreshTokens();e.includes(n)&&(e=e.filter(t=>t!==n)),e.unshift(n),this.$storage.refreshTokens=e.join(",")},unsetRefreshToken(n){let e=this.getRefreshTokens();return e=e.filter(t=>t!==n),this.$storage.refreshTokens=e.join(","),e},setToken(n){this.$storage.token=n,this.token=n},setUserID(n){this.$storage.UserId=n},updateLang(n){this.lang=n}},watch:{"$route.query":{handler:function(){this.$route.query.redirect_uri&&(this.redirect_uri=this.$route.query.redirect_uri),this.$route.query.display&&(this.display=this.$route.query.display),this.$route.query.state&&(this.state=this.$route.query.state),this.$route.query.response_type&&(this.response_type=this.$route.query.response_type),this.$route.query.realm&&(this.$storage.realm=this.$route.query.realm),this.$route.query.qrLogin&&this.changeLoginToQr()},deep:!0}}},He=(n,e)=>{const t=n.__vccOpts||n;for(const[r,o]of e)t[r]=o;return t},mo={name:"AuthWelcome",mixins:[Ce],data(){return{loading:!0}},async mounted(){let n=document.getElementById("tapniVideo");n.addEventListener("canplay",function(){document.body.contains(n)&&n.play().catch(e=>{console.log("Play was interrupted:",e)})}),setTimeout(()=>{this.$storage.token?this.$router.push(this.home):z.$emit("ssoEvent",{name:"setLoading",data:!1})},2500)},methods:{}},tr=n=>(c.pushScopeId("data-v-67088d6f"),n=n(),c.popScopeId(),n),go={class:"page-login content-boxed content-boxed-padding center-text",style:{"margin-top":"-1px",overflow:"hidden",border:"solid 0px #ffffff"}},fo=["autoplay"],_o=[tr(()=>c.createElementVNode("source",{src:"https://cdn.tapni.co/images/tapni-card-tap-video-white.mp4",type:"video/mp4"},null,-1))],vo={class:"bold full-top no-bottom center-text"},yo={class:"full-bottom half-top center-text color-black font-16"},ko={class:"page-login-links center-text"},wo=tr(()=>c.createElementVNode("div",{class:"clear"},null,-1)),bo={key:2,style:{display:"flex","flex-direction":"row","justify-content":"space-around",width:"90%",margin:"0 auto","margin-top":"40px"}},Co=[c.createStaticVNode('<a href="https://play.google.com/store/apps/details?id=co.tapni.app" target="_blank" data-v-67088d6f><img src="https://cdn.tapni.co/images/playstore.png" class="app-store-icon pointer" style="width:55px;" data-v-67088d6f></a><a href="https://apps.apple.com/ag/app/tapni/id1552930233" target="_blank" data-v-67088d6f><img src="https://cdn.tapni.co/images/appstore.png" class="app-store-icon pointer" style="width:55px;" data-v-67088d6f></a><a href="https://appgallery.huawei.com/#/app/C103931997" target="_blank" data-v-67088d6f><img src="https://cdn.tapni.co/images/appgallery.png" class="app-store-icon pointer" style="width:55px;" data-v-67088d6f></a>',3)];function Eo(n,e,t,r,o,i){const a=c.resolveComponent("router-link");return c.openBlock(),c.createElementBlock("div",go,[c.createElementVNode("video",{id:"tapniVideo",muted:"",loop:"",playsinline:"",width:"350",style:{margin:"0 auto","max-width":"100%","margin-top":"63px",overflow:"hidden"},autoplay:n.isNative},_o,8,fo),c.createElementVNode("h1",vo,c.toDisplayString(n.ssoLang[this.appLanguage].welcome),1),c.createElementVNode("p",yo,c.toDisplayString(n.ssoLang[this.appLanguage].welcome_p1),1),c.createCommentVNode("",!0),c.createCommentVNode("",!0),c.createVNode(a,{to:"register",exact:"",class:"button-center button button-90 google-button bg-tapni-grey pointer"},{default:c.withCtx(()=>[c.createElementVNode("span",null,c.toDisplayString(n.ssoLang[this.appLanguage].create_account),1)]),_:1}),c.createElementVNode("div",ko,[c.createVNode(a,{to:"/login"},{default:c.withCtx(()=>[c.createTextVNode(c.toDisplayString(n.ssoLang[this.appLanguage].already_registered)+"? ",1),c.createElementVNode("b",null,c.toDisplayString(n.ssoLang[this.appLanguage].sign_in),1)]),_:1}),wo]),this.isNative?c.createCommentVNode("",!0):(c.openBlock(),c.createElementBlock("div",bo,Co))])}const nr=He(mo,[["render",Eo],["__scopeId","data-v-67088d6f"]]),rr=Ne.registerPlugin("GoogleAuth",{web:()=>Promise.resolve().then(()=>ql).then(n=>new n.GoogleAuthWeb)}),or={data(){return{googleLoad:!1}},computed:{displayGoogleLogin(){var n,e;return(((e=(n=this.ssoCompany)==null?void 0:n.login)==null?void 0:e.google_login)&&!this.isModal)??!0}},mounted(){rr.initialize()},methods:{async googleLogin(){var t;this.googleLoad=!0;let[n,e]=await Z(rr.signIn());if(n)return this.googleLoad=!1;if(this.referral&&(e.ref=this.referral),e.authentication&&(e.authentication.accessToken||e.authentication.idToken)){this.referral&&(e.ref=this.referral),this.display==="popup"&&(e.response_type="code");const[r,o]=await Z(be.googleSDK(e,this.$storage));if(r)return this.googleLoad=!1,z.$emit("ssoEvent",{name:"setLoading",data:!1}),this.errorHandler(r);if(o.data.success){if(this.display==="popup")return(t=window.parent)==null?void 0:t.postMessage({code:o.data.auth_code,state:this.$route.query.state},"*");await this.loginSetup(o),await this.getLoggedInAccounts(),this.loginSuccess({...o,isModal:this.isModal}),setTimeout(()=>{this.googleLoad=!1},1e3)}else this.errorSnack(this.ssoLang[this.appLanguage].unexpected_err)}else this.googleLoad=!1,z.$emit("ssoEvent",{name:"setLoading",data:!1})}}},To=Ne.registerPlugin("FacebookLogin",{web:()=>Promise.resolve().then(()=>jl).then(n=>new n.FacebookLoginWeb)});window.fbAsyncInit=function(){FB.init({appId:"202577611527680",cookie:!0,xfbml:!0,version:"v16.0"})},function(n,e,t){var r,o=n.getElementsByTagName(e)[0];n.getElementById(t)||(r=n.createElement(e),r.id=t,r.src="https://connect.facebook.net/en_US/sdk.js",o.parentNode.insertBefore(r,o))}(document,"script","facebook-jssdk");const ir={data(){return{facebookLoad:!1}},computed:{fbLoginUrl(){return'https://www.facebook.com/v16.0/dialog/oauth?client_id=202577611527680&state={"oauth":"facebook"}&response_type=code%20granted_scopes&scope=email&redirect_uri=https://'+window.location.host+"/login"},displayFacebookLogin(){return!1}},methods:{async facebookLogin(){var r;this.facebookLoad=!0;const n=["email"],[e,t]=await Z(To.login({permissions:n}));if(e)return this.facebookLoad=!1;if(this.referral&&(t.ref=this.referral),this.display==="popup"&&(t.response_type="code"),t&&t.accessToken){const[o,i]=await Z(be.facebookSDK(t,this.$storage));if(o)return this.facebookLoad=!1,z.$emit("ssoEvent",{name:"setLoading",data:!1}),this.errorHandler(o);if(i.data.success){if(this.display==="popup")return(r=window.parent)==null?void 0:r.postMessage({code:i.data.auth_code,state:this.$route.query.state},"*");await this.loginSetup(i),await this.getLoggedInAccounts(),this.$router.push("/"+i.data.data.username+"#edit"),setTimeout(()=>{this.facebookLoad=!1,z.$emit("ssoEvent",{name:"setLoading",data:!1})},1e3)}else this.errorSnack(this.ssoLang[this.appLanguage].unexpected_err)}else this.facebookLoad=!1,z.$emit("ssoEvent",{name:"setLoading",data:!1})}}},Io=Ne.registerPlugin("SignInWithApple",{web:()=>Promise.resolve().then(()=>Gl).then(n=>new n.SignInWithAppleWeb)}),ar={data(){return{appleLoad:!1}},computed:{displayAppleLogin(){var n,e;return(((e=(n=this.ssoCompany)==null?void 0:n.login)==null?void 0:e.apple_login)&&!this.isModal)??(Capacitor.isNativePlatform()&&Capacitor.getPlatform()==="ios"||!Capacitor.isNativePlatform()&&this.isiOS)}},methods:{async appleLogin(){var t;this.appleLoad=!0;const[n,e]=await Z(Io.authorize({clientId:"co.tapni.applelogin",redirectURI:"https://"+window.location.host+"/login",scopes:"email name"}));if(n)return this.appleLoad=!1;if(e.response.tokenData=Kn.jwtDecode(e.response.identityToken),e&&e.response&&e.response.identityToken){this.referral&&(e.response.ref=this.referral),this.display==="popup"&&(e.response_type="code");const[r,o]=await Z(be.appleSDK(e.response,this.$storage));if(r)return this.appleLoad=!1,z.$emit("ssoEvent",{name:"setLoading",data:!1}),this.errorHandler(r);if(o.data.success){if(this.display==="popup")return(t=window.parent)==null?void 0:t.postMessage({code:o.data.auth_code,state:this.$route.query.state},"*");await this.loginSetup(o),await this.getLoggedInAccounts(),this.loginSuccess({...o,isModal:this.isModal}),setTimeout(()=>{this.appleLoad=!1},1e3)}else this.errorSnack(this.ssoLang[this.appLanguage].unexpected_err)}else this.appleLoad=!1,z.$emit("ssoEvent",{name:"setLoading",data:!1})}}};/*! @azure/msal-browser v2.38.3 2023-10-27 *//*! *****************************************************************************
103
103
  Copyright (c) Microsoft Corporation.
104
104
 
105
105
  Permission to use, copy, modify, and/or distribute this software for any
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tapni/auth",
3
- "version": "0.0.103",
3
+ "version": "0.0.105",
4
4
  "type": "module",
5
5
  "main": "./dist/TapniAuth.umd.js",
6
6
  "module": "./dist/TapniAuth.es.js",
@@ -385,24 +385,28 @@ export default {
385
385
  this.$storage.username = '';
386
386
  this.$storage.UserId = '';
387
387
  this.$storage.localUser = '';
388
+ this.setToken('');
388
389
  }
389
390
  this.setLoggedInUserId('');
390
- this.setToken('');
391
- this.unsetRefreshToken(refreshToken);
392
391
 
393
- if (refreshToken) {
392
+ const remainingRefreshTokens = this.unsetRefreshToken(refreshToken);
393
+
394
+ if (remainingRefreshTokens.length >= 1) {
394
395
  Object.keys(this.loggedInAccounts).forEach((username) => {
395
- if (
396
- this.loggedInAccounts[username].refreshToken === refreshToken
397
- ) {
398
- this.refreshTokenAction(this.loggedInAccounts[username]).then(() => {
396
+ if (this.loggedInAccounts[username].refreshToken === remainingRefreshTokens[0]) {
397
+
398
+ this.refreshTokenAction({...this.loggedInAccounts[username], storage: this.$storage }).then(() => {
399
399
  this.setLoggedInUserId(this.loggedInAccounts[username].id);
400
400
  if (this.$storage) {
401
401
  this.$storage.username = username;
402
402
  this.$storage.UserId = this.loggedInAccounts[username].id;
403
403
  }
404
404
  this.getLoggedInAccounts();
405
- return this.$router.push("/" + username);
405
+ this.$router.push("/" + username);
406
+
407
+ setTimeout(() => {
408
+ location.reload();
409
+ }, 1500)
406
410
  });
407
411
  }
408
412
  });
@@ -485,6 +489,8 @@ export default {
485
489
  refreshTokens = refreshTokens.filter((t) => t !== refreshToken);
486
490
 
487
491
  this.$storage.refreshTokens = refreshTokens.join(",");
492
+
493
+ return refreshTokens;
488
494
  },
489
495
  setToken(token) {
490
496
  this.$storage.token = token;