{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-jsx/src/client/reactive/components/rewritten/conduit/src/components/article-preview-rp19.js"],"names":["articleStore","ReactiveMorph","TagList","convertTimestampToString","ArticlePreview","onFavoriteButton","article","favorited","slug","unmakeFavorite","makeFavorite","render","favoriteButtonClass","tagList","tags","target","username"],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEOA,kB;;AACAC,mB;;AACAC,a;;AACEC,8B,iEAAAA,wB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEM,YAAMC,cAAN,SAA6BH,aAA7B,CAA2C;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAExDI,2BAAmB;AAAA;;AACjB,gBAAM,EAAEC,SAAS,EAAEC,SAAF,EAAaC,IAAb,EAAX,gBAAmC,IAAnC,UAAN;AACA,qGAAID,SAAJ;AAAA;;AACE,uHAAaE,cAAb,+EAA4BD,IAA5B;AADF;AAAA;;AAGE,uHAAaE,YAAb,+EAA0BF,IAA1B;AAHF;AAID;;AAED,cAAMG,MAAN,GAAe;AAAA;;AACb,cAAI,uBAAC,IAAD,sBAAJ;AAAyB;AAAzB,WACA,MAAMC,sBAAsB,4EAA+B,aAA/B,GAA+C,qBAA3E;AACA,gBAAMC,UAAU,EAAEC,uCAAM,IAAN,kCAAF,EAAhB;AACA,8EACa,iBADb,mHAEe,cAFf,sIAGsC;AAC9BC,oBAAQ,QADsB;AAE9BC,kEAAU,IAAV;AAF8B,WAHtC,8JAOmB,IAPnB,6EAOyD,EAPzD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wHAUiB,MAVjB,iIAW6B,QAX7B,+CAW2D;AACjDD,oBAAQ,QADyC;AAEjDC,kEAAU,IAAV;AAFiD,WAX3D,2GAeY,IAfZ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yHAiBoB,MAjBpB,+DAkBY,gLAAyB,IAAzB,qCAlBZ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wHAsBiB,eAtBjB,uHAuBmB,gBAvBnB,iCAuB6C,cAAD,4GAAcJ,mBAAd,CAAkC,EAvB9E,uHAwBmB,WAxBnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kGAyBY,IAzBZ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gIA8ByB,cA9BzB,+CA8B6D;AACvDG,oBAAQ,SAD+C;AAEvDP,mDAAM,IAAN;AAFuD,WA9B7D,kJAkCY,IAlCZ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kJAmCW,IAnCX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yEAsCQ,MAAM,gLAAQK,OAAR,EAtCd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA0CD;;AAxDuD;;AAAA;;yBAArCT,c","file":"article-preview-rp19.js","sourcesContent":["'enable rp19-jsx';\n\nimport articleStore from 'src/client/reactive/components/rewritten/conduit/src/stores/articleStore.js';\nimport ReactiveMorph from 'src/client/reactive/components/rewritten/conduit/rpComponents/reactiveMorph.js';\nimport TagList from 'src/client/reactive/components/rewritten/conduit/src/components/generic/tag-list-rp19.js';\nimport { convertTimestampToString } from 'src/client/reactive/components/rewritten/conduit/src/date-util-rp19.js';\n\nexport default class ArticlePreview extends ReactiveMorph {\n\n  onFavoriteButton() {\n    const { article: { favorited, slug } } = this.props;\n    if (favorited)\n      articleStore.unmakeFavorite(slug);\n    else\n      articleStore.makeFavorite(slug);\n  }\n  \n  async render() {\n    if (!this.props.article) return;\n    const favoriteButtonClass = this.props.article.favorited ? 'btn-primary' : 'btn-outline-primary';\n    const tagList = { tags: this.props.article.tagList };\n    return (\n      <div class='article-preview'>\n        <div class='article-meta'>\n          <link-rp19 v-targetDestination={{ \n            target: 'author', \n            username: this.props.article.author.username \n          }}>\n            <img src={ this.props.article.author.image } alt='' />\n          </link-rp19>\n\n          <div class='info'>\n            <link-rp19 className='author' v-targetDestination={{ \n              target: 'author', \n              username: this.props.article.author.username \n            }}>\n              { this.props.article.author.username }\n            </link-rp19>\n            <span class='date'>\n              { convertTimestampToString(this.props.article.createdAt) }\n            </span>\n          </div>\n\n          <div class='pull-xs-right'>\n            <button id='favoriteButton' class={ `btn btn-sm ${favoriteButtonClass}` }>\n              <i class='ion-heart' /> \n              { this.props.article.favoritesCount }\n            </button>\n          </div>\n        </div>\n\n        <link-rp19 className='preview-link' v-targetDestination={{ \n          target: 'article', \n          slug: this.props.article.slug\n        }}>\n          <h1>{ this.props.article.title }</h1>\n          <p>{ this.props.article.description }</p>\n          <span>Read more...</span>\n          \n          { await TagList(tagList) }\n        </link-rp19>\n      </div>\n    );\n  }\n}"]}