diff --git a/frontend/nos-crossposting-service-frontend/src/App.vue b/frontend/nos-crossposting-service-frontend/src/App.vue index 80eb80f..feed501 100644 --- a/frontend/nos-crossposting-service-frontend/src/App.vue +++ b/frontend/nos-crossposting-service-frontend/src/App.vue @@ -72,6 +72,16 @@ body { } } } + +@media screen and (max-width: 1200px) { + #app { + .wrapper { + .content { + padding: 0; + } + } + } +}
\ No newline at end of file +X Connect
\ No newline at end of file diff --git a/service/ports/http/frontend/js/app.11f9e838.js b/service/ports/http/frontend/js/app.11f9e838.js new file mode 100644 index 0000000..3069307 --- /dev/null +++ b/service/ports/http/frontend/js/app.11f9e838.js @@ -0,0 +1,2 @@ +(function(){"use strict";var e={3664:function(e,t,r){var o=r(9242),n=r(3396);const s={class:"wrapper"},i={class:"content"};function c(e,t,r,o,c,a){const l=(0,n.up)("Header"),u=(0,n.up)("Notifications"),d=(0,n.up)("router-view");return(0,n.wg)(),(0,n.iD)("div",s,[(0,n.Wm)(l),(0,n._)("div",i,[(0,n.Wm)(u),(0,n.Wm)(d)])])}var a,l=r(7327),u=r(6520),d=r(65),f=r(4161);class p{constructor(e,t){(0,l.Z)(this,"style",void 0),(0,l.Z)(this,"text",void 0),this.style=e,this.text=t}}(function(e){e["SetUser"]="setUser",e["PushNotificationError"]="pushNotificationError",e["DismissNotification"]="dismissNotification"})(a||(a={}));var h=(0,d.MT)({state:{user:void 0,notifications:[]},getters:{},mutations:{[a.SetUser](e,t){e.user=t},[a.PushNotificationError](e,t){e.notifications?.push(new p("error",t))},[a.DismissNotification](e,t){e.notifications?.splice(t,1)}},actions:{},modules:{}});class v{constructor(e){(0,l.Z)(this,"store",void 0),(0,l.Z)(this,"axios",f.Z.create()),this.store=e}currentUser(){const e="/api/current-user";return this.axios.get(e)}logout(){const e="/api/current-user";return this.axios.delete(e)}publicKeys(){const e="/api/public-keys";return this.axios.get(e)}addPublicKey(e){const t="/api/public-keys";return this.axios.post(t,e)}logoutCurrentUser(){return new Promise(((e,t)=>{this.logout().then((()=>{this.store.commit(a.SetUser,null),e()}),(e=>{t(e)}))}))}refreshCurrentUser(){return new Promise(((e,t)=>{this.currentUser().then((t=>{this.store.commit(a.SetUser,t.data.user),e(t.data)}),(e=>{t(e)}))}))}}var g=r.p+"img/logo.79c97fb0.svg";const b=e=>((0,n.dD)("data-v-41f23fd0"),e=e(),(0,n.Cn)(),e),y=b((()=>(0,n._)("a",{class:"logo",href:"/"},[(0,n._)("img",{src:g})],-1))),m=b((()=>(0,n._)("nav",null,[(0,n._)("ul",null,[(0,n._)("li",null,[(0,n._)("a",{href:"https://nos.social"},"Download Nos")]),(0,n._)("li",null,[(0,n._)("a",{href:"https://github.com/planetary-social/nos-crossposting-service"},"Source code")])])],-1)));function w(e,t,r,o,s,i){const c=(0,n.up)("LogoutButton");return(0,n.wg)(),(0,n.iD)("header",null,[y,m,e.userIsLoggedIn?((0,n.wg)(),(0,n.j4)(c,{key:0})):(0,n.kq)("",!0)])}var _=r.p+"img/logout_on_light.d9f6b5e8.svg";const k=e=>((0,n.dD)("data-v-5ac017a3"),e=e(),(0,n.Cn)(),e),D=k((()=>(0,n._)("div",{class:"label"}," Logout ",-1))),R=k((()=>(0,n._)("img",{class:"icon",src:_},null,-1))),O=[D,R];function P(e,t,r,o,s,i){return(0,n.wg)(),(0,n.iD)("a",{class:"logout-button",onClick:t[0]||(t[0]=(...t)=>e.logout&&e.logout(...t))},O)}var j=function(e,t,r,o){var n,s=arguments.length,i=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)i=Reflect.decorate(e,t,r,o);else for(var c=e.length-1;c>=0;c--)(n=e[c])&&(i=(s<3?n(i):s>3?n(t,r,i):n(t,r))||i);return s>3&&i&&Object.defineProperty(t,r,i),i};let Z=class extends u.w3{constructor(...e){super(...e),(0,l.Z)(this,"apiService",new v((0,d.oR)())),(0,l.Z)(this,"store",(0,d.oR)())}logout(){this.apiService.logoutCurrentUser().catch((()=>{this.store.commit(a.PushNotificationError,"Error logging out the user.")}))}};Z=j([(0,u.Ei)({})],Z);var x=Z,C=r(89);const E=(0,C.Z)(x,[["render",P],["__scopeId","data-v-5ac017a3"]]);var U=E,I=function(e,t,r,o){var n,s=arguments.length,i=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)i=Reflect.decorate(e,t,r,o);else for(var c=e.length-1;c>=0;c--)(n=e[c])&&(i=(s<3?n(i):s>3?n(t,r,i):n(t,r))||i);return s>3&&i&&Object.defineProperty(t,r,i),i};let K=class extends u.w3{constructor(...e){super(...e),(0,l.Z)(this,"store",(0,d.oR)())}get userIsLoggedIn(){return!!this.store.state.user}};K=I([(0,u.Ei)({components:{LogoutButton:U}})],K);var N=K;const S=(0,C.Z)(N,[["render",w],["__scopeId","data-v-41f23fd0"]]);var L=S,W=r(7139);const B={class:"notifications"},V={class:"text"},q=["onClick"];function z(e,t,r,o,s,i){return(0,n.wg)(),(0,n.iD)("ul",B,[((0,n.wg)(!0),(0,n.iD)(n.HY,null,(0,n.Ko)(e.notifications,((t,r)=>((0,n.wg)(),(0,n.iD)("li",{class:(0,W.C_)(["notification",[t.style]]),key:r},[(0,n._)("div",V,(0,W.zw)(t.text),1),(0,n._)("div",{class:"button",onClick:t=>e.dismiss(r)}," X ",8,q)],2)))),128))])}var T=function(e,t,r,o){var n,s=arguments.length,i=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)i=Reflect.decorate(e,t,r,o);else for(var c=e.length-1;c>=0;c--)(n=e[c])&&(i=(s<3?n(i):s>3?n(t,r,i):n(t,r))||i);return s>3&&i&&Object.defineProperty(t,r,i),i};let X=class extends u.w3{constructor(...e){super(...e),(0,l.Z)(this,"store",(0,d.oR)())}get notifications(){return this.store.state.notifications}dismiss(e){this.store.commit(a.DismissNotification,e)}};X=T([(0,u.Ei)({components:{}})],X);var H=X;const Y=(0,C.Z)(H,[["render",z],["__scopeId","data-v-11301b3e"]]);var M=Y,$=function(e,t,r,o){var n,s=arguments.length,i=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)i=Reflect.decorate(e,t,r,o);else for(var c=e.length-1;c>=0;c--)(n=e[c])&&(i=(s<3?n(i):s>3?n(t,r,i):n(t,r))||i);return s>3&&i&&Object.defineProperty(t,r,i),i};let A=class extends u.w3{constructor(...e){super(...e),(0,l.Z)(this,"apiService",new v((0,d.oR)())),(0,l.Z)(this,"store",(0,d.oR)())}created(){this.apiService.refreshCurrentUser().catch((()=>{this.store.commit(a.PushNotificationError,"Error loading the user.")}))}};A=$([(0,u.Ei)({components:{Notifications:M,Header:L}})],A);var F=A;const G=(0,C.Z)(F,[["render",c]]);var J=G,Q=r(2483);const ee=e=>((0,n.dD)("data-v-0a5bd406"),e=e(),(0,n.Cn)(),e),te={class:"home"},re={key:0},oe=ee((()=>(0,n._)("div",{class:"step"}," 1. Link your X account: ",-1))),ne={key:1},se=ee((()=>(0,n._)("div",{class:"step"}," 1. Logged in as ",-1))),ie=ee((()=>(0,n._)("div",{class:"step"}," 2. Your nostr identities: ",-1))),ce={key:2,class:"public-keys-wrapper"},ae={key:0},le={key:1,class:"public-keys"},ue={class:"npub"},de={class:"link-npub-form"};function fe(e,t,r,o,s,i){const c=(0,n.up)("Explanation"),a=(0,n.up)("LogInWithTwitterButton"),l=(0,n.up)("CurrentUser"),u=(0,n.up)("Checkmark"),d=(0,n.up)("Input"),f=(0,n.up)("Button");return(0,n.wg)(),(0,n.iD)("div",te,[(0,n.Wm)(c),e.loadingUser||e.user?(0,n.kq)("",!0):((0,n.wg)(),(0,n.iD)("div",re,[oe,(0,n.Wm)(a)])),!e.loadingUser&&e.user?((0,n.wg)(),(0,n.iD)("div",ne,[se,(0,n.Wm)(l,{user:e.user},null,8,["user"])])):(0,n.kq)("",!0),ie,!e.loadingUser&&e.user?((0,n.wg)(),(0,n.iD)("div",ce,[e.publicKeys?(0,n.kq)("",!0):((0,n.wg)(),(0,n.iD)("div",ae," Loading public keys... ")),e.publicKeys&&e.publicKeys.publicKeys?.length>0?((0,n.wg)(),(0,n.iD)("ul",le,[((0,n.wg)(!0),(0,n.iD)(n.HY,null,(0,n.Ko)(e.publicKeys.publicKeys,(e=>((0,n.wg)(),(0,n.iD)("li",{key:e.npub},[(0,n._)("div",ue,(0,W.zw)(e.npub),1),(0,n.Wm)(u)])))),128))])):(0,n.kq)("",!0)])):(0,n.kq)("",!0),(0,n._)("div",de,[(0,n.Wm)(d,{placeholder:"Paste your npub address",modelValue:e.npub,"onUpdate:modelValue":t[0]||(t[0]=t=>e.npub=t),disabled:e.formDisabled},null,8,["modelValue","disabled"]),(0,n.Wm)(f,{text:"Add",onClick:e.addPublicKey,disabled:e.formDisabled},null,8,["onClick","disabled"])])])}var pe=r(4815);const he=e=>((0,n.dD)("data-v-5ace9f54"),e=e(),(0,n.Cn)(),e),ve={class:"explanation"},ge=he((()=>(0,n._)("div",{class:"large"}," Start posting your Nostr content on X ",-1))),be=he((()=>(0,n._)("div",{class:"small"}," Log in to your X account and add your Nostr identities so that everything you publish on Nostr will be mirrored on X ",-1))),ye=[ge,be];function me(e,t,r,o,s,i){return(0,n.wg)(),(0,n.iD)("div",ve,ye)}var we=function(e,t,r,o){var n,s=arguments.length,i=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)i=Reflect.decorate(e,t,r,o);else for(var c=e.length-1;c>=0;c--)(n=e[c])&&(i=(s<3?n(i):s>3?n(t,r,i):n(t,r))||i);return s>3&&i&&Object.defineProperty(t,r,i),i};let _e=class extends u.w3{};_e=we([(0,u.Ei)({})],_e);var ke=_e;const De=(0,C.Z)(ke,[["render",me],["__scopeId","data-v-5ace9f54"]]);var Re=De,Oe=r.p+"img/login_with_x.b3cda31f.svg";const Pe=e=>((0,n.dD)("data-v-58fab459"),e=e(),(0,n.Cn)(),e),je={href:"/login",class:"log-in-with-twitter-button"},Ze=Pe((()=>(0,n._)("div",{class:"img-wrapper"},[(0,n._)("img",{src:Oe})],-1))),xe=[Ze];function Ce(e,t,r,o,s,i){return(0,n.wg)(),(0,n.iD)("a",je,xe)}var Ee=function(e,t,r,o){var n,s=arguments.length,i=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)i=Reflect.decorate(e,t,r,o);else for(var c=e.length-1;c>=0;c--)(n=e[c])&&(i=(s<3?n(i):s>3?n(t,r,i):n(t,r))||i);return s>3&&i&&Object.defineProperty(t,r,i),i};let Ue=class extends u.w3{};Ue=Ee([(0,u.Ei)({})],Ue);var Ie=Ue;const Ke=(0,C.Z)(Ie,[["render",Ce],["__scopeId","data-v-58fab459"]]);var Ne=Ke,Se=r.p+"img/logout_on_dark.2eaec2bd.svg";const Le=e=>((0,n.dD)("data-v-bf1931c6"),e=e(),(0,n.Cn)(),e),We={class:"current-user"},Be={class:"user-info"},Ve=["src"],qe={class:"name"},ze={class:"username"},Te=Le((()=>(0,n._)("img",{src:Se},null,-1))),Xe=[Te];function He(e,t,r,o,s,i){const c=(0,n.up)("Checkmark");return(0,n.wg)(),(0,n.iD)("div",We,[(0,n._)("div",Be,[(0,n._)("img",{class:"image",src:e.user?.twitterProfileImageURL},null,8,Ve),(0,n._)("div",qe,(0,W.zw)(e.user.twitterName),1),(0,n._)("div",ze,"@"+(0,W.zw)(e.user.twitterUsername),1),(0,n._)("a",{class:"logout-button",onClick:t[0]||(t[0]=(...t)=>e.logout&&e.logout(...t))},Xe)]),(0,n.Wm)(c)])}class Ye{constructor(){(0,l.Z)(this,"accountID",void 0),(0,l.Z)(this,"twitterID",void 0),(0,l.Z)(this,"twitterName",void 0),(0,l.Z)(this,"twitterUsername",void 0),(0,l.Z)(this,"twitterProfileImageURL",void 0)}}var Me=r.p+"img/checkmark.3921dcf8.svg";const $e={class:"checkmark",src:Me};function Ae(e,t,r,o,s,i){return(0,n.wg)(),(0,n.iD)("img",$e)}var Fe=function(e,t,r,o){var n,s=arguments.length,i=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)i=Reflect.decorate(e,t,r,o);else for(var c=e.length-1;c>=0;c--)(n=e[c])&&(i=(s<3?n(i):s>3?n(t,r,i):n(t,r))||i);return s>3&&i&&Object.defineProperty(t,r,i),i};let Ge=class extends u.w3{};Ge=Fe([(0,u.Ei)({})],Ge);var Je=Ge;const Qe=(0,C.Z)(Je,[["render",Ae]]);var et=Qe,tt=function(e,t,r,o){var n,s=arguments.length,i=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)i=Reflect.decorate(e,t,r,o);else for(var c=e.length-1;c>=0;c--)(n=e[c])&&(i=(s<3?n(i):s>3?n(t,r,i):n(t,r))||i);return s>3&&i&&Object.defineProperty(t,r,i),i};let rt=class extends u.w3{constructor(...e){super(...e),(0,l.Z)(this,"user",void 0),(0,l.Z)(this,"apiService",new v((0,d.oR)())),(0,l.Z)(this,"store",(0,d.oR)())}logout(){this.apiService.logoutCurrentUser().catch((()=>{this.store.commit(a.PushNotificationError,"Error logging out the user.")}))}};rt=tt([(0,u.Ei)({components:{Checkmark:et},props:{user:Ye}})],rt);var ot=rt;const nt=(0,C.Z)(ot,[["render",He],["__scopeId","data-v-bf1931c6"]]);var st=nt;class it{constructor(e){(0,l.Z)(this,"npub",void 0),this.npub=e}}const ct=["placeholder","value","disabled"];function at(e,t,r,o,s,i){return(0,n.wg)(),(0,n.iD)("input",{type:"text",placeholder:e.placeholder,value:e.modelValue,class:(0,W.C_)(["input",{disabled:e.disabled}]),onInput:t[0]||(t[0]=(...t)=>e.onInput&&e.onInput(...t)),disabled:e.disabled},null,42,ct)}var lt=function(e,t,r,o){var n,s=arguments.length,i=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)i=Reflect.decorate(e,t,r,o);else for(var c=e.length-1;c>=0;c--)(n=e[c])&&(i=(s<3?n(i):s>3?n(t,r,i):n(t,r))||i);return s>3&&i&&Object.defineProperty(t,r,i),i};let ut=class extends u.w3{constructor(...e){super(...e),(0,l.Z)(this,"placeholder",void 0),(0,l.Z)(this,"modelValue",void 0),(0,l.Z)(this,"disabled",void 0)}onInput(e){this.$emit("update:modelValue",e.target.value)}};ut=lt([(0,u.Ei)({props:{placeholder:String,modelValue:String,disabled:Boolean},emits:["update:modelValue"]})],ut);var dt=ut;const ft=(0,C.Z)(dt,[["render",at],["__scopeId","data-v-a3a07d36"]]);var pt=ft;function ht(e,t,r,o,s,i){return(0,n.wg)(),(0,n.iD)("button",{onClick:t[0]||(t[0]=(...t)=>e.onClick&&e.onClick(...t)),class:(0,W.C_)({button:!0,disabled:e.disabled})},(0,W.zw)(e.text),3)}var vt=function(e,t,r,o){var n,s=arguments.length,i=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)i=Reflect.decorate(e,t,r,o);else for(var c=e.length-1;c>=0;c--)(n=e[c])&&(i=(s<3?n(i):s>3?n(t,r,i):n(t,r))||i);return s>3&&i&&Object.defineProperty(t,r,i),i};let gt=class extends u.w3{constructor(...e){super(...e),(0,l.Z)(this,"text",void 0),(0,l.Z)(this,"disabled",void 0)}onClick(e){this.$emit("click",e)}};gt=vt([(0,u.Ei)({props:{text:String,disabled:Boolean}})],gt);var bt=gt;const yt=(0,C.Z)(bt,[["render",ht],["__scopeId","data-v-6881488a"]]);var mt=yt,wt=function(e,t,r,o){var n,s=arguments.length,i=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)i=Reflect.decorate(e,t,r,o);else for(var c=e.length-1;c>=0;c--)(n=e[c])&&(i=(s<3?n(i):s>3?n(t,r,i):n(t,r))||i);return s>3&&i&&Object.defineProperty(t,r,i),i};let _t=class extends u.w3{constructor(...e){super(...e),(0,l.Z)(this,"apiService",new v((0,d.oR)())),(0,l.Z)(this,"store",(0,d.oR)()),(0,l.Z)(this,"publicKeys",null),(0,l.Z)(this,"npub","")}get loadingUser(){return void 0===this.store.state.user}get user(){return this.store.state.user}get formDisabled(){return this.loadingUser||!this.user}watchUser(e,t){t?this.reloadPublicKeys():this.publicKeys={publicKeys:[]}}addPublicKey(){this.apiService.addPublicKey(new it(this.npub)).then((()=>{this.npub="",this.reloadPublicKeys()})).catch((()=>{this.store.commit(a.PushNotificationError,"Error adding the public key.")}))}reloadPublicKeys(){this.publicKeys=null,this.apiService.publicKeys().then((e=>{this.publicKeys=e.data})).catch((e=>{e.response&&401===e.response.status||this.store.commit(a.PushNotificationError,"Error loading the public keys.")}))}};wt([(0,pe.RL)("user")],_t.prototype,"watchUser",null),_t=wt([(0,u.Ei)({components:{Checkmark:et,Button:mt,CurrentUser:st,LogInWithTwitterButton:Ne,Explanation:Re,Input:pt}})],_t);var kt=_t;const Dt=(0,C.Z)(kt,[["render",fe],["__scopeId","data-v-0a5bd406"]]);var Rt=Dt;const Ot=[{path:"/",name:"home",component:Rt}],Pt=(0,Q.p7)({history:(0,Q.PO)("/"),routes:Ot});var jt=Pt;(0,o.ri)(J).use(h).use(jt).mount("#app")}},t={};function r(o){var n=t[o];if(void 0!==n)return n.exports;var s=t[o]={exports:{}};return e[o].call(s.exports,s,s.exports,r),s.exports}r.m=e,function(){var e=[];r.O=function(t,o,n,s){if(!o){var i=1/0;for(u=0;u=s)&&Object.keys(r.O).every((function(e){return r.O[e](o[a])}))?o.splice(a--,1):(c=!1,s0&&e[u-1][2]>s;u--)e[u]=e[u-1];e[u]=[o,n,s]}}(),function(){r.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return r.d(t,{a:t}),t}}(),function(){r.d=function(e,t){for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})}}(),function(){r.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}}(),function(){r.p="/"}(),function(){var e={143:0};r.O.j=function(t){return 0===e[t]};var t=function(t,o){var n,s,i=o[0],c=o[1],a=o[2],l=0;if(i.some((function(t){return 0!==e[t]}))){for(n in c)r.o(c,n)&&(r.m[n]=c[n]);if(a)var u=a(r)}for(t&&t(o);l\n
\n
\n
\n \n \n
\n
\n\n\n\n\n\n","import {createStore} from 'vuex'\nimport {User} from \"@/dto/User\";\n\nclass Notification {\n constructor(\n public style: string,\n public text: string,\n ) {\n }\n}\n\nexport enum Mutation {\n SetUser = 'setUser',\n PushNotificationError = 'pushNotificationError',\n DismissNotification = 'dismissNotification',\n}\n\nexport class State {\n user?: User;\n notifications?: Notification[];\n}\n\nexport default createStore({\n state: {\n user: undefined,\n notifications: [],\n },\n getters: {},\n mutations: {\n [Mutation.SetUser](state: State, user: User): void {\n state.user = user;\n },\n [Mutation.PushNotificationError](state: State, text: string): void {\n state.notifications?.push(new Notification('error', text));\n },\n [Mutation.DismissNotification](state: State, index: number): void {\n state.notifications?.splice(index, 1);\n },\n },\n actions: {},\n modules: {}\n})\n","import axios, {AxiosResponse} from 'axios';\nimport {CurrentUser} from \"@/dto/CurrentUser\";\nimport {Mutation, State} from '@/store';\nimport {PublicKeys} from \"@/dto/PublicKeys\";\nimport {AddPublicKeyRequest} from \"@/dto/AddPublicKeyRequest\";\nimport {Store} from \"vuex\";\n\nexport class APIService {\n\n private readonly axios = axios.create();\n\n constructor(private store: Store) {\n }\n\n private currentUser(): Promise> {\n const url = `/api/current-user`;\n return this.axios.get(url);\n }\n\n private logout(): Promise> {\n const url = `/api/current-user`;\n return this.axios.delete(url);\n }\n\n publicKeys(): Promise> {\n const url = `/api/public-keys`;\n return this.axios.get(url);\n }\n\n addPublicKey(req: AddPublicKeyRequest): Promise> {\n const url = `/api/public-keys`;\n return this.axios.post(url, req);\n }\n\n logoutCurrentUser(): Promise {\n return new Promise((resolve, reject) => {\n this.logout()\n .then(\n () => {\n this.store.commit(Mutation.SetUser, null);\n resolve();\n },\n error => {\n reject(error);\n },\n );\n });\n }\n\n refreshCurrentUser(): Promise {\n return new Promise((resolve, reject) => {\n this.currentUser()\n .then(\n response => {\n this.store.commit(Mutation.SetUser, response.data.user);\n resolve(response.data);\n },\n error => {\n reject(error);\n },\n );\n });\n }\n}","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\nimport _imports_0 from '../assets/logo.svg'\n\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-41f23fd0\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"a\", {\n class: \"logo\",\n href: \"/\"\n}, [\n /*#__PURE__*/_createElementVNode(\"img\", { src: _imports_0 })\n], -1))\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"nav\", null, [\n /*#__PURE__*/_createElementVNode(\"ul\", null, [\n /*#__PURE__*/_createElementVNode(\"li\", null, [\n /*#__PURE__*/_createElementVNode(\"a\", { href: \"https://nos.social\" }, \"Download Nos\")\n ]),\n /*#__PURE__*/_createElementVNode(\"li\", null, [\n /*#__PURE__*/_createElementVNode(\"a\", { href: \"https://github.com/planetary-social/nos-crossposting-service\" }, \"Source code\")\n ])\n ])\n], -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_LogoutButton = _resolveComponent(\"LogoutButton\")!\n\n return (_openBlock(), _createElementBlock(\"header\", null, [\n _hoisted_1,\n _hoisted_2,\n (_ctx.userIsLoggedIn)\n ? (_openBlock(), _createBlock(_component_LogoutButton, { key: 0 }))\n : _createCommentVNode(\"\", true)\n ]))\n}","\n\n\n\n\n","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\nimport _imports_0 from '../assets/logout_on_light.svg'\n\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5ac017a3\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"label\" }, \" Logout \", -1))\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"img\", {\n class: \"icon\",\n src: _imports_0\n}, null, -1))\nconst _hoisted_3 = [\n _hoisted_1,\n _hoisted_2\n]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"a\", {\n class: \"logout-button\",\n onClick: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.logout && _ctx.logout(...args)))\n }, _hoisted_3))\n}","\n\n\n\n\n","import { render } from \"./LogoutButton.vue?vue&type=template&id=5ac017a3&scoped=true&ts=true\"\nimport script from \"./LogoutButton.vue?vue&type=script&lang=ts\"\nexport * from \"./LogoutButton.vue?vue&type=script&lang=ts\"\n\nimport \"./LogoutButton.vue?vue&type=style&index=0&id=5ac017a3&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5ac017a3\"]])\n\nexport default __exports__","import { render } from \"./Header.vue?vue&type=template&id=41f23fd0&scoped=true&ts=true\"\nimport script from \"./Header.vue?vue&type=script&lang=ts\"\nexport * from \"./Header.vue?vue&type=script&lang=ts\"\n\nimport \"./Header.vue?vue&type=style&index=0&id=41f23fd0&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-41f23fd0\"]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-11301b3e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"notifications\" }\nconst _hoisted_2 = { class: \"text\" }\nconst _hoisted_3 = [\"onClick\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"ul\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.notifications, (notification, index) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n class: _normalizeClass([\"notification\", [notification.style]]),\n key: index\n }, [\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(notification.text), 1),\n _createElementVNode(\"div\", {\n class: \"button\",\n onClick: ($event: any) => (_ctx.dismiss(index))\n }, \" X \", 8, _hoisted_3)\n ], 2))\n }), 128))\n ]))\n}","\n\n\n\n\n","import { render } from \"./Notifications.vue?vue&type=template&id=11301b3e&scoped=true&ts=true\"\nimport script from \"./Notifications.vue?vue&type=script&lang=ts\"\nexport * from \"./Notifications.vue?vue&type=script&lang=ts\"\n\nimport \"./Notifications.vue?vue&type=style&index=0&id=11301b3e&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-11301b3e\"]])\n\nexport default __exports__","import { render } from \"./App.vue?vue&type=template&id=ea67d5b6&ts=true\"\nimport script from \"./App.vue?vue&type=script&lang=ts\"\nexport * from \"./App.vue?vue&type=script&lang=ts\"\n\nimport \"./App.vue?vue&type=style&index=0&id=ea67d5b6&lang=scss\"\n\nimport exportComponent from \"../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, toDisplayString as _toDisplayString, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0a5bd406\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"home\" }\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"step\" }, \" 1. Link your X account: \", -1))\nconst _hoisted_4 = { key: 1 }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"step\" }, \" 1. Logged in as \", -1))\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"step\" }, \" 2. Your nostr identities: \", -1))\nconst _hoisted_7 = {\n key: 2,\n class: \"public-keys-wrapper\"\n}\nconst _hoisted_8 = { key: 0 }\nconst _hoisted_9 = {\n key: 1,\n class: \"public-keys\"\n}\nconst _hoisted_10 = { class: \"npub\" }\nconst _hoisted_11 = { class: \"link-npub-form\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Explanation = _resolveComponent(\"Explanation\")!\n const _component_LogInWithTwitterButton = _resolveComponent(\"LogInWithTwitterButton\")!\n const _component_CurrentUser = _resolveComponent(\"CurrentUser\")!\n const _component_Checkmark = _resolveComponent(\"Checkmark\")!\n const _component_Input = _resolveComponent(\"Input\")!\n const _component_Button = _resolveComponent(\"Button\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Explanation),\n (!_ctx.loadingUser && !_ctx.user)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _hoisted_3,\n _createVNode(_component_LogInWithTwitterButton)\n ]))\n : _createCommentVNode(\"\", true),\n (!_ctx.loadingUser && _ctx.user)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _hoisted_5,\n _createVNode(_component_CurrentUser, { user: _ctx.user }, null, 8, [\"user\"])\n ]))\n : _createCommentVNode(\"\", true),\n _hoisted_6,\n (!_ctx.loadingUser && _ctx.user)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [\n (!_ctx.publicKeys)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, \" Loading public keys... \"))\n : _createCommentVNode(\"\", true),\n (_ctx.publicKeys && _ctx.publicKeys.publicKeys?.length > 0)\n ? (_openBlock(), _createElementBlock(\"ul\", _hoisted_9, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.publicKeys.publicKeys, (publicKey) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: publicKey.npub\n }, [\n _createElementVNode(\"div\", _hoisted_10, _toDisplayString(publicKey.npub), 1),\n _createVNode(_component_Checkmark)\n ]))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_11, [\n _createVNode(_component_Input, {\n placeholder: \"Paste your npub address\",\n modelValue: _ctx.npub,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.npub) = $event)),\n disabled: _ctx.formDisabled\n }, null, 8, [\"modelValue\", \"disabled\"]),\n _createVNode(_component_Button, {\n text: \"Add\",\n onClick: _ctx.addPublicKey,\n disabled: _ctx.formDisabled\n }, null, 8, [\"onClick\", \"disabled\"])\n ])\n ]))\n}","\n\n\n\n\n","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5ace9f54\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"explanation\" }\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"large\" }, \" Start posting your Nostr content on X \", -1))\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"small\" }, \" Log in to your X account and add your Nostr identities so that everything you publish on Nostr will be mirrored on X \", -1))\nconst _hoisted_4 = [\n _hoisted_2,\n _hoisted_3\n]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, _hoisted_4))\n}","\n\n\n\n\n","import { render } from \"./Explanation.vue?vue&type=template&id=5ace9f54&scoped=true&ts=true\"\nimport script from \"./Explanation.vue?vue&type=script&lang=ts\"\nexport * from \"./Explanation.vue?vue&type=script&lang=ts\"\n\nimport \"./Explanation.vue?vue&type=style&index=0&id=5ace9f54&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5ace9f54\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\nimport _imports_0 from '../assets/login_with_x.svg'\n\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-58fab459\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n href: \"/login\",\n class: \"log-in-with-twitter-button\"\n}\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"img-wrapper\" }, [\n /*#__PURE__*/_createElementVNode(\"img\", { src: _imports_0 })\n], -1))\nconst _hoisted_3 = [\n _hoisted_2\n]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"a\", _hoisted_1, _hoisted_3))\n}","\n\n\n\n\n","import { render } from \"./LogInWithTwitterButton.vue?vue&type=template&id=58fab459&scoped=true&ts=true\"\nimport script from \"./LogInWithTwitterButton.vue?vue&type=script&lang=ts\"\nexport * from \"./LogInWithTwitterButton.vue?vue&type=script&lang=ts\"\n\nimport \"./LogInWithTwitterButton.vue?vue&type=style&index=0&id=58fab459&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-58fab459\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\nimport _imports_0 from '../assets/logout_on_dark.svg'\n\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-bf1931c6\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"current-user\" }\nconst _hoisted_2 = { class: \"user-info\" }\nconst _hoisted_3 = [\"src\"]\nconst _hoisted_4 = { class: \"name\" }\nconst _hoisted_5 = { class: \"username\" }\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"img\", { src: _imports_0 }, null, -1))\nconst _hoisted_7 = [\n _hoisted_6\n]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Checkmark = _resolveComponent(\"Checkmark\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"img\", {\n class: \"image\",\n src: _ctx.user?.twitterProfileImageURL\n }, null, 8, _hoisted_3),\n _createElementVNode(\"div\", _hoisted_4, _toDisplayString(_ctx.user.twitterName), 1),\n _createElementVNode(\"div\", _hoisted_5, \"@\" + _toDisplayString(_ctx.user.twitterUsername), 1),\n _createElementVNode(\"a\", {\n class: \"logout-button\",\n onClick: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.logout && _ctx.logout(...args)))\n }, _hoisted_7)\n ]),\n _createVNode(_component_Checkmark)\n ]))\n}","\n\n\n\n\n","export class User {\n accountID?: string;\n twitterID?: number;\n twitterName?: string;\n twitterUsername?: string;\n twitterProfileImageURL?: string;\n}","import { openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\nimport _imports_0 from '../assets/checkmark.svg'\n\n\nconst _hoisted_1 = {\n class: \"checkmark\",\n src: _imports_0\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"img\", _hoisted_1))\n}","\n\n\n","import { render } from \"./Checkmark.vue?vue&type=template&id=4ebda3e8&ts=true\"\nimport script from \"./Checkmark.vue?vue&type=script&lang=ts\"\nexport * from \"./Checkmark.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./CurrentUser.vue?vue&type=template&id=bf1931c6&scoped=true&ts=true\"\nimport script from \"./CurrentUser.vue?vue&type=script&lang=ts\"\nexport * from \"./CurrentUser.vue?vue&type=script&lang=ts\"\n\nimport \"./CurrentUser.vue?vue&type=style&index=0&id=bf1931c6&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-bf1931c6\"]])\n\nexport default __exports__","export class AddPublicKeyRequest {\n npub: string;\n\n constructor(npub: string) {\n this.npub = npub\n }\n}","import { normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-a3a07d36\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"placeholder\", \"value\", \"disabled\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"input\", {\n type: \"text\",\n placeholder: _ctx.placeholder,\n value: _ctx.modelValue,\n class: _normalizeClass([\"input\", { disabled: _ctx.disabled }]),\n onInput: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.onInput && _ctx.onInput(...args))),\n disabled: _ctx.disabled\n }, null, 42, _hoisted_1))\n}","\n\n\n\n\n","import { render } from \"./Input.vue?vue&type=template&id=a3a07d36&scoped=true&ts=true\"\nimport script from \"./Input.vue?vue&type=script&lang=ts\"\nexport * from \"./Input.vue?vue&type=script&lang=ts\"\n\nimport \"./Input.vue?vue&type=style&index=0&id=a3a07d36&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-a3a07d36\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"button\", {\n onClick: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.onClick && _ctx.onClick(...args))),\n class: _normalizeClass({ button: true, disabled: _ctx.disabled })\n }, _toDisplayString(_ctx.text), 3))\n}","\n\n\n\n\n","import { render } from \"./Button.vue?vue&type=template&id=6881488a&scoped=true&ts=true\"\nimport script from \"./Button.vue?vue&type=script&lang=ts\"\nexport * from \"./Button.vue?vue&type=script&lang=ts\"\n\nimport \"./Button.vue?vue&type=style&index=0&id=6881488a&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6881488a\"]])\n\nexport default __exports__","import { render } from \"./HomeView.vue?vue&type=template&id=0a5bd406&scoped=true&ts=true\"\nimport script from \"./HomeView.vue?vue&type=script&lang=ts\"\nexport * from \"./HomeView.vue?vue&type=script&lang=ts\"\n\nimport \"./HomeView.vue?vue&type=style&index=0&id=0a5bd406&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0a5bd406\"]])\n\nexport default __exports__","import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router'\nimport HomeView from '../views/HomeView.vue'\n\nconst routes: Array = [\n {\n path: '/',\n name: 'home',\n component: HomeView\n },\n]\n\nconst router = createRouter({\n history: createWebHistory(process.env.BASE_URL),\n routes\n})\n\nexport default router\n","import { createApp } from 'vue'\nimport App from './App.vue'\nimport router from './router'\nimport store from './store'\n\ncreateApp(App).use(store).use(router).mount('#app')\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t143: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknos_crossposting_service_frontend\"] = self[\"webpackChunknos_crossposting_service_frontend\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [998], function() { return __webpack_require__(3664); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["_hoisted_1","class","_hoisted_2","render","_ctx","_cache","$props","$setup","$data","$options","_component_Header","_resolveComponent","_component_Notifications","_component_router_view","_openBlock","_createElementBlock","_createVNode","_createElementVNode","Mutation","Notification","constructor","style","text","_defineProperty","createStore","state","user","undefined","notifications","getters","mutations","SetUser","PushNotificationError","push","DismissNotification","index","splice","actions","modules","APIService","store","axios","create","currentUser","url","this","get","logout","delete","publicKeys","addPublicKey","req","post","logoutCurrentUser","Promise","resolve","reject","then","commit","error","refreshCurrentUser","response","data","_withScopeId","n","_pushScopeId","_popScopeId","href","src","_imports_0","_component_LogoutButton","userIsLoggedIn","_createBlock","key","_createCommentVNode","_hoisted_3","onClick","args","LogOutButton","Vue","useStore","apiService","catch","__decorate","Options","__exports__","Header","components","LogoutButton","_Fragment","_renderList","notification","_normalizeClass","_toDisplayString","$event","dismiss","Notifications","App","created","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_component_Explanation","_component_LogInWithTwitterButton","_component_CurrentUser","_component_Checkmark","_component_Input","_component_Button","loadingUser","length","publicKey","npub","placeholder","modelValue","disabled","formDisabled","Explanation","LogInWithTwitterButton","twitterProfileImageURL","twitterName","twitterUsername","User","Checkmark","CurrentUser","props","AddPublicKeyRequest","type","value","onInput","Input","event","$emit","target","String","Boolean","emits","button","Button","HomeView","watchUser","oldUser","newUser","reloadPublicKeys","status","Watch","routes","path","name","component","router","createRouter","history","createWebHistory","process","createApp","use","mount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","call","m","deferred","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","Object","keys","every","r","getter","__esModule","d","a","definition","o","defineProperty","enumerable","g","globalThis","Function","e","window","obj","prop","prototype","hasOwnProperty","p","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","id","chunkLoadingGlobal","self","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/service/ports/http/frontend/js/app.6154432e.js b/service/ports/http/frontend/js/app.6154432e.js deleted file mode 100644 index 1648004..0000000 --- a/service/ports/http/frontend/js/app.6154432e.js +++ /dev/null @@ -1,2 +0,0 @@ -(function(){"use strict";var e={2884:function(e,t,r){var o=r(9242),s=r(3396);const n={class:"wrapper"},i={class:"content"};function c(e,t,r,o,c,a){const l=(0,s.up)("Header"),u=(0,s.up)("Notifications"),d=(0,s.up)("router-view");return(0,s.wg)(),(0,s.iD)("div",n,[(0,s.Wm)(l),(0,s._)("div",i,[(0,s.Wm)(u),(0,s.Wm)(d)])])}var a,l=r(7327),u=r(6520),d=r(65),p=r(4161);class f{constructor(e,t){(0,l.Z)(this,"style",void 0),(0,l.Z)(this,"text",void 0),this.style=e,this.text=t}}(function(e){e["SetUser"]="setUser",e["PushNotificationError"]="pushNotificationError",e["DismissNotification"]="dismissNotification"})(a||(a={}));var h=(0,d.MT)({state:{user:void 0,notifications:[]},getters:{},mutations:{[a.SetUser](e,t){e.user=t},[a.PushNotificationError](e,t){e.notifications?.push(new f("error",t))},[a.DismissNotification](e,t){e.notifications?.splice(t,1)}},actions:{},modules:{}});class v{constructor(e){(0,l.Z)(this,"store",void 0),(0,l.Z)(this,"axios",p.Z.create()),this.store=e}currentUser(){const e="/api/current-user";return this.axios.get(e)}logout(){const e="/api/current-user";return this.axios.delete(e)}publicKeys(){const e="/api/public-keys";return this.axios.get(e)}addPublicKey(e){const t="/api/public-keys";return this.axios.post(t,e)}logoutCurrentUser(){return new Promise(((e,t)=>{this.logout().then((()=>{this.store.commit(a.SetUser,null),e()}),(e=>{t(e)}))}))}refreshCurrentUser(){return new Promise(((e,t)=>{this.currentUser().then((t=>{this.store.commit(a.SetUser,t.data.user),e(t.data)}),(e=>{t(e)}))}))}}var g=r.p+"img/logo.79c97fb0.svg";const b=e=>((0,s.dD)("data-v-5ad51a16"),e=e(),(0,s.Cn)(),e),y=b((()=>(0,s._)("a",{class:"logo",href:"/"},[(0,s._)("img",{src:g})],-1))),m=b((()=>(0,s._)("nav",null,[(0,s._)("ul",null,[(0,s._)("li",null,[(0,s._)("a",{href:"https://nos.social"},"Download Nos")]),(0,s._)("li",null,[(0,s._)("a",{href:"https://github.com/planetary-social/nos-crossposting-service"},"Source code")])])],-1)));function w(e,t,r,o,n,i){const c=(0,s.up)("LogoutButton");return(0,s.wg)(),(0,s.iD)("header",null,[y,m,e.userIsLoggedIn?((0,s.wg)(),(0,s.j4)(c,{key:0})):(0,s.kq)("",!0)])}var _=r.p+"img/logout_on_light.d9f6b5e8.svg";const k=e=>((0,s.dD)("data-v-5ac017a3"),e=e(),(0,s.Cn)(),e),D=k((()=>(0,s._)("div",{class:"label"}," Logout ",-1))),R=k((()=>(0,s._)("img",{class:"icon",src:_},null,-1))),O=[D,R];function P(e,t,r,o,n,i){return(0,s.wg)(),(0,s.iD)("a",{class:"logout-button",onClick:t[0]||(t[0]=(...t)=>e.logout&&e.logout(...t))},O)}var j=function(e,t,r,o){var s,n=arguments.length,i=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)i=Reflect.decorate(e,t,r,o);else for(var c=e.length-1;c>=0;c--)(s=e[c])&&(i=(n<3?s(i):n>3?s(t,r,i):s(t,r))||i);return n>3&&i&&Object.defineProperty(t,r,i),i};let Z=class extends u.w3{constructor(...e){super(...e),(0,l.Z)(this,"apiService",new v((0,d.oR)())),(0,l.Z)(this,"store",(0,d.oR)())}logout(){this.apiService.logoutCurrentUser().catch((()=>{this.store.commit(a.PushNotificationError,"Error logging out the user.")}))}};Z=j([(0,u.Ei)({})],Z);var x=Z,C=r(89);const E=(0,C.Z)(x,[["render",P],["__scopeId","data-v-5ac017a3"]]);var U=E,I=function(e,t,r,o){var s,n=arguments.length,i=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)i=Reflect.decorate(e,t,r,o);else for(var c=e.length-1;c>=0;c--)(s=e[c])&&(i=(n<3?s(i):n>3?s(t,r,i):s(t,r))||i);return n>3&&i&&Object.defineProperty(t,r,i),i};let K=class extends u.w3{constructor(...e){super(...e),(0,l.Z)(this,"store",(0,d.oR)())}get userIsLoggedIn(){return!!this.store.state.user}};K=I([(0,u.Ei)({components:{LogoutButton:U}})],K);var N=K;const S=(0,C.Z)(N,[["render",w],["__scopeId","data-v-5ad51a16"]]);var L=S,W=r(7139);const B={class:"notifications"},V={class:"text"},q=["onClick"];function z(e,t,r,o,n,i){return(0,s.wg)(),(0,s.iD)("ul",B,[((0,s.wg)(!0),(0,s.iD)(s.HY,null,(0,s.Ko)(e.notifications,((t,r)=>((0,s.wg)(),(0,s.iD)("li",{class:(0,W.C_)(["notification",[t.style]]),key:r},[(0,s._)("div",V,(0,W.zw)(t.text),1),(0,s._)("div",{class:"button",onClick:t=>e.dismiss(r)}," X ",8,q)],2)))),128))])}var T=function(e,t,r,o){var s,n=arguments.length,i=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)i=Reflect.decorate(e,t,r,o);else for(var c=e.length-1;c>=0;c--)(s=e[c])&&(i=(n<3?s(i):n>3?s(t,r,i):s(t,r))||i);return n>3&&i&&Object.defineProperty(t,r,i),i};let X=class extends u.w3{constructor(...e){super(...e),(0,l.Z)(this,"store",(0,d.oR)())}get notifications(){return this.store.state.notifications}dismiss(e){this.store.commit(a.DismissNotification,e)}};X=T([(0,u.Ei)({components:{}})],X);var H=X;const Y=(0,C.Z)(H,[["render",z],["__scopeId","data-v-11301b3e"]]);var M=Y,$=function(e,t,r,o){var s,n=arguments.length,i=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)i=Reflect.decorate(e,t,r,o);else for(var c=e.length-1;c>=0;c--)(s=e[c])&&(i=(n<3?s(i):n>3?s(t,r,i):s(t,r))||i);return n>3&&i&&Object.defineProperty(t,r,i),i};let A=class extends u.w3{constructor(...e){super(...e),(0,l.Z)(this,"apiService",new v((0,d.oR)())),(0,l.Z)(this,"store",(0,d.oR)())}created(){this.apiService.refreshCurrentUser().catch((()=>{this.store.commit(a.PushNotificationError,"Error loading the user.")}))}};A=$([(0,u.Ei)({components:{Notifications:M,Header:L}})],A);var F=A;const G=(0,C.Z)(F,[["render",c]]);var J=G,Q=r(2483);const ee=e=>((0,s.dD)("data-v-2aac08a8"),e=e(),(0,s.Cn)(),e),te={class:"home"},re={key:0},oe=ee((()=>(0,s._)("div",{class:"step"}," 1. Link your X account: ",-1))),se={key:1},ne=ee((()=>(0,s._)("div",{class:"step"}," 1. Logged in as ",-1))),ie=ee((()=>(0,s._)("div",{class:"step"}," 2. Your nostr identities: ",-1))),ce={key:2,class:"public-keys-wrapper"},ae={key:0},le={key:1,class:"public-keys"},ue={class:"npub"},de={class:"link-npub-form"};function pe(e,t,r,o,n,i){const c=(0,s.up)("Explanation"),a=(0,s.up)("LogInWithTwitterButton"),l=(0,s.up)("CurrentUser"),u=(0,s.up)("Checkmark"),d=(0,s.up)("Input"),p=(0,s.up)("Button");return(0,s.wg)(),(0,s.iD)("div",te,[(0,s.Wm)(c),e.loadingUser||e.user?(0,s.kq)("",!0):((0,s.wg)(),(0,s.iD)("div",re,[oe,(0,s.Wm)(a)])),!e.loadingUser&&e.user?((0,s.wg)(),(0,s.iD)("div",se,[ne,(0,s.Wm)(l,{user:e.user},null,8,["user"])])):(0,s.kq)("",!0),ie,!e.loadingUser&&e.user?((0,s.wg)(),(0,s.iD)("div",ce,[e.publicKeys?(0,s.kq)("",!0):((0,s.wg)(),(0,s.iD)("div",ae," Loading public keys... ")),e.publicKeys&&e.publicKeys.publicKeys?.length>0?((0,s.wg)(),(0,s.iD)("ul",le,[((0,s.wg)(!0),(0,s.iD)(s.HY,null,(0,s.Ko)(e.publicKeys.publicKeys,(e=>((0,s.wg)(),(0,s.iD)("li",{key:e.npub},[(0,s._)("div",ue,(0,W.zw)(e.npub),1),(0,s.Wm)(u)])))),128))])):(0,s.kq)("",!0)])):(0,s.kq)("",!0),(0,s._)("div",de,[(0,s.Wm)(d,{placeholder:"Paste your npub address",modelValue:e.npub,"onUpdate:modelValue":t[0]||(t[0]=t=>e.npub=t),disabled:e.formDisabled},null,8,["modelValue","disabled"]),(0,s.Wm)(p,{text:"Add",onClick:e.addPublicKey,disabled:e.formDisabled},null,8,["onClick","disabled"])])])}var fe=r(4815);const he=e=>((0,s.dD)("data-v-e0b84cee"),e=e(),(0,s.Cn)(),e),ve={class:"explanation"},ge=he((()=>(0,s._)("div",{class:"large"}," Start posting your Nostr content on X ",-1))),be=he((()=>(0,s._)("div",{class:"small"}," Log in to your X account and add your Nostr identities so that everything you publish on Nostr will be mirrored on X ",-1))),ye=[ge,be];function me(e,t,r,o,n,i){return(0,s.wg)(),(0,s.iD)("div",ve,ye)}var we=function(e,t,r,o){var s,n=arguments.length,i=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)i=Reflect.decorate(e,t,r,o);else for(var c=e.length-1;c>=0;c--)(s=e[c])&&(i=(n<3?s(i):n>3?s(t,r,i):s(t,r))||i);return n>3&&i&&Object.defineProperty(t,r,i),i};let _e=class extends u.w3{};_e=we([(0,u.Ei)({})],_e);var ke=_e;const De=(0,C.Z)(ke,[["render",me],["__scopeId","data-v-e0b84cee"]]);var Re=De,Oe=r.p+"img/login_with_x.b3cda31f.svg";const Pe=e=>((0,s.dD)("data-v-153ecc92"),e=e(),(0,s.Cn)(),e),je={href:"/login",class:"log-in-with-twitter-button"},Ze=Pe((()=>(0,s._)("div",{class:"img-wrapper"},[(0,s._)("img",{src:Oe})],-1))),xe=[Ze];function Ce(e,t,r,o,n,i){return(0,s.wg)(),(0,s.iD)("a",je,xe)}var Ee=function(e,t,r,o){var s,n=arguments.length,i=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)i=Reflect.decorate(e,t,r,o);else for(var c=e.length-1;c>=0;c--)(s=e[c])&&(i=(n<3?s(i):n>3?s(t,r,i):s(t,r))||i);return n>3&&i&&Object.defineProperty(t,r,i),i};let Ue=class extends u.w3{};Ue=Ee([(0,u.Ei)({})],Ue);var Ie=Ue;const Ke=(0,C.Z)(Ie,[["render",Ce],["__scopeId","data-v-153ecc92"]]);var Ne=Ke,Se=r.p+"img/logout_on_dark.2eaec2bd.svg";const Le=e=>((0,s.dD)("data-v-769a601f"),e=e(),(0,s.Cn)(),e),We={class:"current-user"},Be={class:"user-info"},Ve=["src"],qe={class:"name"},ze={class:"username"},Te=Le((()=>(0,s._)("img",{src:Se},null,-1))),Xe=[Te];function He(e,t,r,o,n,i){const c=(0,s.up)("Checkmark");return(0,s.wg)(),(0,s.iD)("div",We,[(0,s._)("div",Be,[(0,s._)("img",{class:"image",src:e.user?.twitterProfileImageURL},null,8,Ve),(0,s._)("div",qe,(0,W.zw)(e.user.twitterName),1),(0,s._)("div",ze,"@"+(0,W.zw)(e.user.twitterUsername),1),(0,s._)("a",{class:"logout-button",onClick:t[0]||(t[0]=(...t)=>e.logout&&e.logout(...t))},Xe)]),(0,s.Wm)(c)])}class Ye{constructor(){(0,l.Z)(this,"accountID",void 0),(0,l.Z)(this,"twitterID",void 0),(0,l.Z)(this,"twitterName",void 0),(0,l.Z)(this,"twitterUsername",void 0),(0,l.Z)(this,"twitterProfileImageURL",void 0)}}var Me=r.p+"img/checkmark.3921dcf8.svg";const $e={class:"checkmark",src:Me};function Ae(e,t,r,o,n,i){return(0,s.wg)(),(0,s.iD)("img",$e)}var Fe=function(e,t,r,o){var s,n=arguments.length,i=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)i=Reflect.decorate(e,t,r,o);else for(var c=e.length-1;c>=0;c--)(s=e[c])&&(i=(n<3?s(i):n>3?s(t,r,i):s(t,r))||i);return n>3&&i&&Object.defineProperty(t,r,i),i};let Ge=class extends u.w3{};Ge=Fe([(0,u.Ei)({})],Ge);var Je=Ge;const Qe=(0,C.Z)(Je,[["render",Ae]]);var et=Qe,tt=function(e,t,r,o){var s,n=arguments.length,i=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)i=Reflect.decorate(e,t,r,o);else for(var c=e.length-1;c>=0;c--)(s=e[c])&&(i=(n<3?s(i):n>3?s(t,r,i):s(t,r))||i);return n>3&&i&&Object.defineProperty(t,r,i),i};let rt=class extends u.w3{constructor(...e){super(...e),(0,l.Z)(this,"user",void 0),(0,l.Z)(this,"apiService",new v((0,d.oR)())),(0,l.Z)(this,"store",(0,d.oR)())}logout(){this.apiService.logoutCurrentUser().catch((()=>{this.store.commit(a.PushNotificationError,"Error logging out the user.")}))}};rt=tt([(0,u.Ei)({components:{Checkmark:et},props:{user:Ye}})],rt);var ot=rt;const st=(0,C.Z)(ot,[["render",He],["__scopeId","data-v-769a601f"]]);var nt=st;class it{constructor(e){(0,l.Z)(this,"npub",void 0),this.npub=e}}const ct=["placeholder","value","disabled"];function at(e,t,r,o,n,i){return(0,s.wg)(),(0,s.iD)("input",{type:"text",placeholder:e.placeholder,value:e.modelValue,onInput:t[0]||(t[0]=(...t)=>e.onInput&&e.onInput(...t)),class:(0,W.C_)({disabled:e.disabled}),disabled:e.disabled},null,42,ct)}var lt=function(e,t,r,o){var s,n=arguments.length,i=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)i=Reflect.decorate(e,t,r,o);else for(var c=e.length-1;c>=0;c--)(s=e[c])&&(i=(n<3?s(i):n>3?s(t,r,i):s(t,r))||i);return n>3&&i&&Object.defineProperty(t,r,i),i};let ut=class extends u.w3{constructor(...e){super(...e),(0,l.Z)(this,"placeholder",void 0),(0,l.Z)(this,"modelValue",void 0),(0,l.Z)(this,"disabled",void 0)}onInput(e){this.$emit("update:modelValue",e.target.value)}};ut=lt([(0,u.Ei)({props:{placeholder:String,modelValue:String,disabled:Boolean},emits:["update:modelValue"]})],ut);var dt=ut;const pt=(0,C.Z)(dt,[["render",at],["__scopeId","data-v-745941ea"]]);var ft=pt;function ht(e,t,r,o,n,i){return(0,s.wg)(),(0,s.iD)("button",{onClick:t[0]||(t[0]=(...t)=>e.onClick&&e.onClick(...t)),class:(0,W.C_)({disabled:e.disabled})},(0,W.zw)(e.text),3)}var vt=function(e,t,r,o){var s,n=arguments.length,i=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)i=Reflect.decorate(e,t,r,o);else for(var c=e.length-1;c>=0;c--)(s=e[c])&&(i=(n<3?s(i):n>3?s(t,r,i):s(t,r))||i);return n>3&&i&&Object.defineProperty(t,r,i),i};let gt=class extends u.w3{constructor(...e){super(...e),(0,l.Z)(this,"text",void 0),(0,l.Z)(this,"disabled",void 0)}onClick(e){this.$emit("click",e)}};gt=vt([(0,u.Ei)({props:{text:String,disabled:Boolean}})],gt);var bt=gt;const yt=(0,C.Z)(bt,[["render",ht],["__scopeId","data-v-6b71f555"]]);var mt=yt,wt=function(e,t,r,o){var s,n=arguments.length,i=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)i=Reflect.decorate(e,t,r,o);else for(var c=e.length-1;c>=0;c--)(s=e[c])&&(i=(n<3?s(i):n>3?s(t,r,i):s(t,r))||i);return n>3&&i&&Object.defineProperty(t,r,i),i};let _t=class extends u.w3{constructor(...e){super(...e),(0,l.Z)(this,"apiService",new v((0,d.oR)())),(0,l.Z)(this,"store",(0,d.oR)()),(0,l.Z)(this,"publicKeys",null),(0,l.Z)(this,"npub","")}get loadingUser(){return void 0===this.store.state.user}get user(){return this.store.state.user}get formDisabled(){return this.loadingUser||!this.user}watchUser(e,t){t?this.reloadPublicKeys():this.publicKeys={publicKeys:[]}}addPublicKey(){this.apiService.addPublicKey(new it(this.npub)).then((()=>{this.npub="",this.reloadPublicKeys()})).catch((()=>{this.store.commit(a.PushNotificationError,"Error adding the public key.")}))}reloadPublicKeys(){this.publicKeys=null,this.apiService.publicKeys().then((e=>{this.publicKeys=e.data})).catch((e=>{e.response&&401===e.response.status||this.store.commit(a.PushNotificationError,"Error loading the public keys.")}))}};wt([(0,fe.RL)("user")],_t.prototype,"watchUser",null),_t=wt([(0,u.Ei)({components:{Checkmark:et,Button:mt,CurrentUser:nt,LogInWithTwitterButton:Ne,Explanation:Re,Input:ft}})],_t);var kt=_t;const Dt=(0,C.Z)(kt,[["render",pe],["__scopeId","data-v-2aac08a8"]]);var Rt=Dt;const Ot=[{path:"/",name:"home",component:Rt}],Pt=(0,Q.p7)({history:(0,Q.PO)("/"),routes:Ot});var jt=Pt;(0,o.ri)(J).use(h).use(jt).mount("#app")}},t={};function r(o){var s=t[o];if(void 0!==s)return s.exports;var n=t[o]={exports:{}};return e[o].call(n.exports,n,n.exports,r),n.exports}r.m=e,function(){var e=[];r.O=function(t,o,s,n){if(!o){var i=1/0;for(u=0;u=n)&&Object.keys(r.O).every((function(e){return r.O[e](o[a])}))?o.splice(a--,1):(c=!1,n0&&e[u-1][2]>n;u--)e[u]=e[u-1];e[u]=[o,s,n]}}(),function(){r.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return r.d(t,{a:t}),t}}(),function(){r.d=function(e,t){for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})}}(),function(){r.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}}(),function(){r.p="/"}(),function(){var e={143:0};r.O.j=function(t){return 0===e[t]};var t=function(t,o){var s,n,i=o[0],c=o[1],a=o[2],l=0;if(i.some((function(t){return 0!==e[t]}))){for(s in c)r.o(c,s)&&(r.m[s]=c[s]);if(a)var u=a(r)}for(t&&t(o);l\n
\n
\n
\n \n \n
\n
\n\n\n\n\n\n","import {createStore} from 'vuex'\nimport {User} from \"@/dto/User\";\n\nclass Notification {\n constructor(\n public style: string,\n public text: string,\n ) {\n }\n}\n\nexport enum Mutation {\n SetUser = 'setUser',\n PushNotificationError = 'pushNotificationError',\n DismissNotification = 'dismissNotification',\n}\n\nexport class State {\n user?: User;\n notifications?: Notification[];\n}\n\nexport default createStore({\n state: {\n user: undefined,\n notifications: [],\n },\n getters: {},\n mutations: {\n [Mutation.SetUser](state: State, user: User): void {\n state.user = user;\n },\n [Mutation.PushNotificationError](state: State, text: string): void {\n state.notifications?.push(new Notification('error', text));\n },\n [Mutation.DismissNotification](state: State, index: number): void {\n state.notifications?.splice(index, 1);\n },\n },\n actions: {},\n modules: {}\n})\n","import axios, {AxiosResponse} from 'axios';\nimport {CurrentUser} from \"@/dto/CurrentUser\";\nimport {Mutation, State} from '@/store';\nimport {PublicKeys} from \"@/dto/PublicKeys\";\nimport {AddPublicKeyRequest} from \"@/dto/AddPublicKeyRequest\";\nimport {Store} from \"vuex\";\n\nexport class APIService {\n\n private readonly axios = axios.create();\n\n constructor(private store: Store) {\n }\n\n private currentUser(): Promise> {\n const url = `/api/current-user`;\n return this.axios.get(url);\n }\n\n private logout(): Promise> {\n const url = `/api/current-user`;\n return this.axios.delete(url);\n }\n\n publicKeys(): Promise> {\n const url = `/api/public-keys`;\n return this.axios.get(url);\n }\n\n addPublicKey(req: AddPublicKeyRequest): Promise> {\n const url = `/api/public-keys`;\n return this.axios.post(url, req);\n }\n\n logoutCurrentUser(): Promise {\n return new Promise((resolve, reject) => {\n this.logout()\n .then(\n () => {\n this.store.commit(Mutation.SetUser, null);\n resolve();\n },\n error => {\n reject(error);\n },\n );\n });\n }\n\n refreshCurrentUser(): Promise {\n return new Promise((resolve, reject) => {\n this.currentUser()\n .then(\n response => {\n this.store.commit(Mutation.SetUser, response.data.user);\n resolve(response.data);\n },\n error => {\n reject(error);\n },\n );\n });\n }\n}","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\nimport _imports_0 from '../assets/logo.svg'\n\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5ad51a16\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"a\", {\n class: \"logo\",\n href: \"/\"\n}, [\n /*#__PURE__*/_createElementVNode(\"img\", { src: _imports_0 })\n], -1))\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"nav\", null, [\n /*#__PURE__*/_createElementVNode(\"ul\", null, [\n /*#__PURE__*/_createElementVNode(\"li\", null, [\n /*#__PURE__*/_createElementVNode(\"a\", { href: \"https://nos.social\" }, \"Download Nos\")\n ]),\n /*#__PURE__*/_createElementVNode(\"li\", null, [\n /*#__PURE__*/_createElementVNode(\"a\", { href: \"https://github.com/planetary-social/nos-crossposting-service\" }, \"Source code\")\n ])\n ])\n], -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_LogoutButton = _resolveComponent(\"LogoutButton\")!\n\n return (_openBlock(), _createElementBlock(\"header\", null, [\n _hoisted_1,\n _hoisted_2,\n (_ctx.userIsLoggedIn)\n ? (_openBlock(), _createBlock(_component_LogoutButton, { key: 0 }))\n : _createCommentVNode(\"\", true)\n ]))\n}","\n\n\n\n\n","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\nimport _imports_0 from '../assets/logout_on_light.svg'\n\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5ac017a3\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"label\" }, \" Logout \", -1))\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"img\", {\n class: \"icon\",\n src: _imports_0\n}, null, -1))\nconst _hoisted_3 = [\n _hoisted_1,\n _hoisted_2\n]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"a\", {\n class: \"logout-button\",\n onClick: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.logout && _ctx.logout(...args)))\n }, _hoisted_3))\n}","\n\n\n\n\n","import { render } from \"./LogoutButton.vue?vue&type=template&id=5ac017a3&scoped=true&ts=true\"\nimport script from \"./LogoutButton.vue?vue&type=script&lang=ts\"\nexport * from \"./LogoutButton.vue?vue&type=script&lang=ts\"\n\nimport \"./LogoutButton.vue?vue&type=style&index=0&id=5ac017a3&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5ac017a3\"]])\n\nexport default __exports__","import { render } from \"./Header.vue?vue&type=template&id=5ad51a16&scoped=true&ts=true\"\nimport script from \"./Header.vue?vue&type=script&lang=ts\"\nexport * from \"./Header.vue?vue&type=script&lang=ts\"\n\nimport \"./Header.vue?vue&type=style&index=0&id=5ad51a16&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5ad51a16\"]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-11301b3e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"notifications\" }\nconst _hoisted_2 = { class: \"text\" }\nconst _hoisted_3 = [\"onClick\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"ul\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.notifications, (notification, index) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n class: _normalizeClass([\"notification\", [notification.style]]),\n key: index\n }, [\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(notification.text), 1),\n _createElementVNode(\"div\", {\n class: \"button\",\n onClick: ($event: any) => (_ctx.dismiss(index))\n }, \" X \", 8, _hoisted_3)\n ], 2))\n }), 128))\n ]))\n}","\n\n\n\n\n","import { render } from \"./Notifications.vue?vue&type=template&id=11301b3e&scoped=true&ts=true\"\nimport script from \"./Notifications.vue?vue&type=script&lang=ts\"\nexport * from \"./Notifications.vue?vue&type=script&lang=ts\"\n\nimport \"./Notifications.vue?vue&type=style&index=0&id=11301b3e&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-11301b3e\"]])\n\nexport default __exports__","import { render } from \"./App.vue?vue&type=template&id=79c6b057&ts=true\"\nimport script from \"./App.vue?vue&type=script&lang=ts\"\nexport * from \"./App.vue?vue&type=script&lang=ts\"\n\nimport \"./App.vue?vue&type=style&index=0&id=79c6b057&lang=scss\"\n\nimport exportComponent from \"../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, toDisplayString as _toDisplayString, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2aac08a8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"home\" }\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"step\" }, \" 1. Link your X account: \", -1))\nconst _hoisted_4 = { key: 1 }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"step\" }, \" 1. Logged in as \", -1))\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"step\" }, \" 2. Your nostr identities: \", -1))\nconst _hoisted_7 = {\n key: 2,\n class: \"public-keys-wrapper\"\n}\nconst _hoisted_8 = { key: 0 }\nconst _hoisted_9 = {\n key: 1,\n class: \"public-keys\"\n}\nconst _hoisted_10 = { class: \"npub\" }\nconst _hoisted_11 = { class: \"link-npub-form\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Explanation = _resolveComponent(\"Explanation\")!\n const _component_LogInWithTwitterButton = _resolveComponent(\"LogInWithTwitterButton\")!\n const _component_CurrentUser = _resolveComponent(\"CurrentUser\")!\n const _component_Checkmark = _resolveComponent(\"Checkmark\")!\n const _component_Input = _resolveComponent(\"Input\")!\n const _component_Button = _resolveComponent(\"Button\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Explanation),\n (!_ctx.loadingUser && !_ctx.user)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _hoisted_3,\n _createVNode(_component_LogInWithTwitterButton)\n ]))\n : _createCommentVNode(\"\", true),\n (!_ctx.loadingUser && _ctx.user)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _hoisted_5,\n _createVNode(_component_CurrentUser, { user: _ctx.user }, null, 8, [\"user\"])\n ]))\n : _createCommentVNode(\"\", true),\n _hoisted_6,\n (!_ctx.loadingUser && _ctx.user)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [\n (!_ctx.publicKeys)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, \" Loading public keys... \"))\n : _createCommentVNode(\"\", true),\n (_ctx.publicKeys && _ctx.publicKeys.publicKeys?.length > 0)\n ? (_openBlock(), _createElementBlock(\"ul\", _hoisted_9, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.publicKeys.publicKeys, (publicKey) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: publicKey.npub\n }, [\n _createElementVNode(\"div\", _hoisted_10, _toDisplayString(publicKey.npub), 1),\n _createVNode(_component_Checkmark)\n ]))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_11, [\n _createVNode(_component_Input, {\n placeholder: \"Paste your npub address\",\n modelValue: _ctx.npub,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.npub) = $event)),\n disabled: _ctx.formDisabled\n }, null, 8, [\"modelValue\", \"disabled\"]),\n _createVNode(_component_Button, {\n text: \"Add\",\n onClick: _ctx.addPublicKey,\n disabled: _ctx.formDisabled\n }, null, 8, [\"onClick\", \"disabled\"])\n ])\n ]))\n}","\n\n\n\n\n","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-e0b84cee\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"explanation\" }\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"large\" }, \" Start posting your Nostr content on X \", -1))\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"small\" }, \" Log in to your X account and add your Nostr identities so that everything you publish on Nostr will be mirrored on X \", -1))\nconst _hoisted_4 = [\n _hoisted_2,\n _hoisted_3\n]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, _hoisted_4))\n}","\n\n\n\n\n","import { render } from \"./Explanation.vue?vue&type=template&id=e0b84cee&scoped=true&ts=true\"\nimport script from \"./Explanation.vue?vue&type=script&lang=ts\"\nexport * from \"./Explanation.vue?vue&type=script&lang=ts\"\n\nimport \"./Explanation.vue?vue&type=style&index=0&id=e0b84cee&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-e0b84cee\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\nimport _imports_0 from '../assets/login_with_x.svg'\n\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-153ecc92\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n href: \"/login\",\n class: \"log-in-with-twitter-button\"\n}\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"img-wrapper\" }, [\n /*#__PURE__*/_createElementVNode(\"img\", { src: _imports_0 })\n], -1))\nconst _hoisted_3 = [\n _hoisted_2\n]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"a\", _hoisted_1, _hoisted_3))\n}","\n\n\n\n\n","import { render } from \"./LogInWithTwitterButton.vue?vue&type=template&id=153ecc92&scoped=true&ts=true\"\nimport script from \"./LogInWithTwitterButton.vue?vue&type=script&lang=ts\"\nexport * from \"./LogInWithTwitterButton.vue?vue&type=script&lang=ts\"\n\nimport \"./LogInWithTwitterButton.vue?vue&type=style&index=0&id=153ecc92&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-153ecc92\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\nimport _imports_0 from '../assets/logout_on_dark.svg'\n\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-769a601f\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"current-user\" }\nconst _hoisted_2 = { class: \"user-info\" }\nconst _hoisted_3 = [\"src\"]\nconst _hoisted_4 = { class: \"name\" }\nconst _hoisted_5 = { class: \"username\" }\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"img\", { src: _imports_0 }, null, -1))\nconst _hoisted_7 = [\n _hoisted_6\n]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Checkmark = _resolveComponent(\"Checkmark\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"img\", {\n class: \"image\",\n src: _ctx.user?.twitterProfileImageURL\n }, null, 8, _hoisted_3),\n _createElementVNode(\"div\", _hoisted_4, _toDisplayString(_ctx.user.twitterName), 1),\n _createElementVNode(\"div\", _hoisted_5, \"@\" + _toDisplayString(_ctx.user.twitterUsername), 1),\n _createElementVNode(\"a\", {\n class: \"logout-button\",\n onClick: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.logout && _ctx.logout(...args)))\n }, _hoisted_7)\n ]),\n _createVNode(_component_Checkmark)\n ]))\n}","\n\n\n\n\n","export class User {\n accountID?: string;\n twitterID?: number;\n twitterName?: string;\n twitterUsername?: string;\n twitterProfileImageURL?: string;\n}","import { openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\nimport _imports_0 from '../assets/checkmark.svg'\n\n\nconst _hoisted_1 = {\n class: \"checkmark\",\n src: _imports_0\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"img\", _hoisted_1))\n}","\n\n\n","import { render } from \"./Checkmark.vue?vue&type=template&id=4ebda3e8&ts=true\"\nimport script from \"./Checkmark.vue?vue&type=script&lang=ts\"\nexport * from \"./Checkmark.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./CurrentUser.vue?vue&type=template&id=769a601f&scoped=true&ts=true\"\nimport script from \"./CurrentUser.vue?vue&type=script&lang=ts\"\nexport * from \"./CurrentUser.vue?vue&type=script&lang=ts\"\n\nimport \"./CurrentUser.vue?vue&type=style&index=0&id=769a601f&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-769a601f\"]])\n\nexport default __exports__","export class AddPublicKeyRequest {\n npub: string;\n\n constructor(npub: string) {\n this.npub = npub\n }\n}","import { normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-745941ea\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"placeholder\", \"value\", \"disabled\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"input\", {\n type: \"text\",\n placeholder: _ctx.placeholder,\n value: _ctx.modelValue,\n onInput: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.onInput && _ctx.onInput(...args))),\n class: _normalizeClass({ disabled: _ctx.disabled }),\n disabled: _ctx.disabled\n }, null, 42, _hoisted_1))\n}","\n\n\n\n\n","import { render } from \"./Input.vue?vue&type=template&id=745941ea&scoped=true&ts=true\"\nimport script from \"./Input.vue?vue&type=script&lang=ts\"\nexport * from \"./Input.vue?vue&type=script&lang=ts\"\n\nimport \"./Input.vue?vue&type=style&index=0&id=745941ea&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-745941ea\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"button\", {\n onClick: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.onClick && _ctx.onClick(...args))),\n class: _normalizeClass({ disabled: _ctx.disabled })\n }, _toDisplayString(_ctx.text), 3))\n}","\n\n\n\n\n","import { render } from \"./Button.vue?vue&type=template&id=6b71f555&scoped=true&ts=true\"\nimport script from \"./Button.vue?vue&type=script&lang=ts\"\nexport * from \"./Button.vue?vue&type=script&lang=ts\"\n\nimport \"./Button.vue?vue&type=style&index=0&id=6b71f555&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6b71f555\"]])\n\nexport default __exports__","import { render } from \"./HomeView.vue?vue&type=template&id=2aac08a8&scoped=true&ts=true\"\nimport script from \"./HomeView.vue?vue&type=script&lang=ts\"\nexport * from \"./HomeView.vue?vue&type=script&lang=ts\"\n\nimport \"./HomeView.vue?vue&type=style&index=0&id=2aac08a8&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2aac08a8\"]])\n\nexport default __exports__","import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router'\nimport HomeView from '../views/HomeView.vue'\n\nconst routes: Array = [\n {\n path: '/',\n name: 'home',\n component: HomeView\n },\n]\n\nconst router = createRouter({\n history: createWebHistory(process.env.BASE_URL),\n routes\n})\n\nexport default router\n","import { createApp } from 'vue'\nimport App from './App.vue'\nimport router from './router'\nimport store from './store'\n\ncreateApp(App).use(store).use(router).mount('#app')\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t143: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknos_crossposting_service_frontend\"] = self[\"webpackChunknos_crossposting_service_frontend\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [998], function() { return __webpack_require__(2884); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["_hoisted_1","class","_hoisted_2","render","_ctx","_cache","$props","$setup","$data","$options","_component_Header","_resolveComponent","_component_Notifications","_component_router_view","_openBlock","_createElementBlock","_createVNode","_createElementVNode","Mutation","Notification","constructor","style","text","_defineProperty","createStore","state","user","undefined","notifications","getters","mutations","SetUser","PushNotificationError","push","DismissNotification","index","splice","actions","modules","APIService","store","axios","create","currentUser","url","this","get","logout","delete","publicKeys","addPublicKey","req","post","logoutCurrentUser","Promise","resolve","reject","then","commit","error","refreshCurrentUser","response","data","_withScopeId","n","_pushScopeId","_popScopeId","href","src","_imports_0","_component_LogoutButton","userIsLoggedIn","_createBlock","key","_createCommentVNode","_hoisted_3","onClick","args","LogOutButton","Vue","useStore","apiService","catch","__decorate","Options","__exports__","Header","components","LogoutButton","_Fragment","_renderList","notification","_normalizeClass","_toDisplayString","$event","dismiss","Notifications","App","created","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_component_Explanation","_component_LogInWithTwitterButton","_component_CurrentUser","_component_Checkmark","_component_Input","_component_Button","loadingUser","length","publicKey","npub","placeholder","modelValue","disabled","formDisabled","Explanation","LogInWithTwitterButton","twitterProfileImageURL","twitterName","twitterUsername","User","Checkmark","CurrentUser","props","AddPublicKeyRequest","type","value","onInput","Input","event","$emit","target","String","Boolean","emits","Button","HomeView","watchUser","oldUser","newUser","reloadPublicKeys","status","Watch","routes","path","name","component","router","createRouter","history","createWebHistory","process","createApp","use","mount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","call","m","deferred","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","Object","keys","every","r","getter","__esModule","d","a","definition","o","defineProperty","enumerable","g","globalThis","Function","e","window","obj","prop","prototype","hasOwnProperty","p","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","id","chunkLoadingGlobal","self","forEach","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file