{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-jsx/src/client/reactive/components/rewritten/conduit/src/components/profile-rp19.js"],"names":["ReactiveMorph","profileStore","userStore","articleStore","router","ArticleList","FollowUserButton","MyArticlesTab","FavoritedArticlesTab","Profile","attachedCallback","isDummy","addAExpr","newTarget","setPredicate","loadProfile","getUsernameFromRoutingProps","routingProps","render","profile","isUser","tab","articleList","articles","loading","totalPagesCount","currentPage","onSetPage","page","followUserButton","username","following","follow","unfollow","myArticlesTab","favoritedArticlesTab","target"],"mappings":"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","file":"profile-rp19.js","sourcesContent":["'enable rp19-jsx';\n\nimport ReactiveMorph from 'src/client/reactive/components/rewritten/conduit/rpComponents/reactiveMorph.js';\nimport profileStore from 'src/client/reactive/components/rewritten/conduit/src/stores/profileStore.js';\nimport userStore from 'src/client/reactive/components/rewritten/conduit/src/stores/userStore.js';\nimport articleStore from 'src/client/reactive/components/rewritten/conduit/src/stores/articleStore.js';\nimport { router } from 'src/client/reactive/components/rewritten/conduit/rpComponents/router-rp19.js';\nimport ArticleList from 'src/client/reactive/components/rewritten/conduit/src/components/main-view/article-list-rp19.js';\nimport FollowUserButton from 'src/client/reactive/components/rewritten/conduit/src/components/profile/follow-user-button-rp19.js';\nimport MyArticlesTab from 'src/client/reactive/components/rewritten/conduit/src/components/profile/my-articles-tab-rp19.js';\nimport FavoritedArticlesTab from 'src/client/reactive/components/rewritten/conduit/src/components/profile/favorited-articles-tab-rp19.js';\n\nexport default class Profile extends ReactiveMorph {\n  \n  attachedCallback() {\n    super.attachedCallback().then(() => {\n      if (this.isDummy()) return;\n      this.addAExpr(\n        aexpr(() => router().current)\n          .onChange(newTarget => {\n            if (newTarget['target'] !== 'author') return;\n            articleStore.setPredicate(newTarget);\n            profileStore.loadProfile(this.getUsernameFromRoutingProps());\n          }));\n      articleStore.setPredicate(router().current);\n      profileStore.loadProfile(this.getUsernameFromRoutingProps());\n    });\n  }\n  \n  getUsernameFromRoutingProps() {\n    const routingProps = router() && router().current;\n    return routingProps && routingProps.author;\n  }\n  \n  async render() {\n    const routingProps = router() && router().current;\n    if (!routingProps) return;\n    if (profileStore.isLoadingProfile) return <loading-spinner-rp19 />;\n    if (!profileStore.profile) return <red-error-rp19 v-message=\"Can't load profile\"/>;\n    const profile = profileStore.profile;\n    const isUser = userStore.currentUser && profile.username === userStore.currentUser.username;\n    const tab = routingProps.tab;\n    const articleList = {\n      articles: articleStore.articles,\n      loading: articleStore.isLoading,\n      totalPagesCount: articleStore.totalPagesCount,\n      currentPage: articleStore.page,\n      onSetPage: page => articleStore.page = page\n    };\n    const followUserButton = {\n      username: profile.username,\n      following: profile.following,\n      follow: profileStore.follow,\n      unfollow: profileStore.unfollow\n    };\n    const myArticlesTab = { tab, username: profile.username, };\n    const favoritedArticlesTab = { tab, username: profile.username, };\n    return (\n      <div class='profile-page'>\n        <div class='user-info'>\n          <div class='container'>\n            <div class='row'>\n              <div class='col-xs-12 col-md-10 offset-md-1'>\n\n                <img src={profile.image} class='user-img' alt='' />\n                <h4>{profile.username}</h4>\n                <p>{profile.bio}</p>\n\n                { isUser && (\n                  <link-rp19 \n                    v-targetDestination={{ target: 'settings' }} \n                    className='btn btn-sm btn-outline-secondary action-btn'\n                  >\n                    <i class='ion-gear-a' /> Edit Profile Settings\n                  </link-rp19>\n                )}\n                { !isUser && FollowUserButton(followUserButton) }\n              </div>\n            </div>\n          </div>\n        </div>\n\n        <div class='container'>\n          <div class='row'>\n            <div class='col-xs-12 col-md-10 offset-md-1'>\n              <div class='articles-toggle'>\n                <div class='feed-toggle'>\n                  <ul class='nav nav-pills outline-active'>\n                    { await MyArticlesTab(myArticlesTab) }\n                    { await FavoritedArticlesTab(favoritedArticlesTab) }\n                  </ul>\n                </div>\n              </div>\n              { await ArticleList(articleList) }\n            </div>\n          </div>\n        </div>\n      </div>\n    );\n  }\n}"]}