{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-jsx/src/client/reactive/components/rewritten/conduit/src/components/editor-rp19.js"],"names":["_","ReactiveMorph","editorStore","router","ListErrors","Editor","attachedCallback","isDummy","slug","getSlugFromRoutingProps","setArticleSlug","loadInitialData","routingProps","handleTagInputKeyDown","ev","preventDefault","handleAddTag","addTag","onArticleForm","event","submit","article","reset","target","render","errors","evt","map","tag","removeTag"],"mappings":"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","file":"editor-rp19.js","sourcesContent":["'enable rp19-jsx';\n\nimport _ from 'src/external/lodash/lodash.js';\nimport ReactiveMorph from 'src/client/reactive/components/rewritten/conduit/rpComponents/reactiveMorph.js';\nimport editorStore from 'src/client/reactive/components/rewritten/conduit/src/stores/articleEditorStore.js';\nimport { router } from 'src/client/reactive/components/rewritten/conduit/rpComponents/router-rp19.js';\nimport ListErrors from 'src/client/reactive/components/rewritten/conduit/src/components/generic/list-errors-rp19.js'\n\nexport default class Editor extends ReactiveMorph {\n  \n  attachedCallback() {\n    super.attachedCallback().then(() => {\n      if (this.isDummy()) return;\n      this.tagInput = '';\n      const slug = this.getSlugFromRoutingProps();\n      editorStore.setArticleSlug(slug);\n      editorStore.loadInitialData();\n    });\n  }\n  \n  getSlugFromRoutingProps() {\n    const routingProps = router() && router().current;\n    return routingProps && routingProps.slug;\n  }\n  \n  handleTagInputKeyDown(ev) {\n    switch (ev.keyCode) {\n      case 13: // Enter\n      case 9: // Tab\n      case 188: // ,\n        if (ev.keyCode !== 9) ev.preventDefault();\n        this.handleAddTag();\n        break;\n      default:\n        break;\n    }\n  }\n  \n  handleAddTag() {\n    if (this.tagInput) {\n      editorStore.addTag(this.tagInput.trim());\n      this.tagInput = '';\n    }\n  }\n  \n  onArticleForm(event) {\n    editorStore.submit()\n      .then(article => {\n        editorStore.reset();\n        router().navigateTo({ \n          target: 'article',  \n          slug: article.slug\n        });\n      });\n    event.preventDefault();\n  }\n  \n  render() {\n    return (\n      <div class='editor-page'>\n        <div class='container page'>\n          <div class='row'>\n            <div class='col-md-10 offset-md-1 col-xs-12'>\n\n              { ListErrors({ errors: editorStore.errors }) }\n\n              <form id='articleForm'>\n                <fieldset>\n\n                  <fieldset class='form-group'>\n                    <input\n                      id='titleInput'\n                      class='form-control form-control-lg'\n                      type='text'\n                      placeholder='Article Title'\n                      value={editorStore.title}\n                      disabled={editorStore.inProgress}\n                    />\n                  </fieldset>\n\n                  <fieldset class='form-group'>\n                    <input\n                      id='descriptionInput'\n                      class='form-control'\n                      type='text'\n                      placeholder=\"What's this article about?\"\n                      value={editorStore.description}\n                      disabled={editorStore.inProgress}\n                    />\n                  </fieldset>\n\n                  <fieldset class='form-group'>\n                    <textarea\n                      id='bodyTextArea'\n                      class='form-control'\n                      rows='8'\n                      placeholder='Write your article (in markdown)'\n                      value={editorStore.body}\n                      disabled={editorStore.inProgress}\n                    >{editorStore.body}</textarea>\n                  </fieldset>\n\n                  <fieldset class='form-group'>\n                    <input\n                      id='tagInput'\n                      class='form-control'\n                      type='text'\n                      placeholder='Enter tags'\n                      value={this.tagInput}\n                      blur={() => this.handleAddTag()}\n                      keydown={evt => this.handleTagInputKeyDown(evt)}\n                      disabled={editorStore.inProgress}\n                    />\n                    \n                    <div class='tag-list'>\n                      {\n                        ..._.map(editorStore.tagList, tag => (\n                            <span class='tag-default tag-pill'>\n                              <i\n                                class='ion-close-round'\n                                click={() => !editorStore.inProgress && editorStore.removeTag(tag)}\n                              />\n                              { tag }\n                            </span>\n                          ))\n                      }\n                    </div>\n                  </fieldset>\n\n                  <button\n                    id='publishButton'\n                    class='btn btn-lg pull-xs-right btn-primary'\n                    type='submit'\n                    disabled={editorStore.inProgress}\n                  >\n                    Publish Article\n                  </button>\n\n                </fieldset>\n              </form>\n\n            </div>\n          </div>\n        </div>\n      </div>\n    );\n  }\n}"]}