{"version":3,"file":"main.lpHok8.js","sources":["theme-367/virtual:theme","theme-367/discourse/components/modal/customer-project-template.gjs","theme-367/discourse/api-initializers/meta-to-dev-topic-creation.js","theme-367/virtual:entrypoint:main"],"sourcesContent":["import { getObjectForTheme } from \"discourse/lib/theme-settings-store\";\n\nexport const settings = getObjectForTheme(367);\n\nexport function themePrefix(key) {\n  return `theme_translations.367.${key}`;\n}\n","import Component from \"@glimmer/component\";\nimport { tracked } from \"@glimmer/tracking\";\nimport { on } from \"@ember/modifier\";\nimport { action } from \"@ember/object\";\nimport DButton from \"discourse/components/d-button\";\nimport DModal from \"discourse/components/d-modal\";\nimport ComboBox from \"discourse/select-kit/components/combo-box\";\nimport { i18n } from \"discourse-i18n\";\n\nconst CUSTOMER_PROJECT_CATEGORY = \"customer-project\";\nconst DEFAULT_TAG = \"discussion\";\nconst CUSTOMER_PROJECT_TAGS = [\n  { label: \"discussion\", value: \"discussion\" },\n  { label: \"estimated\", value: \"estimated\" },\n  { label: \"sow-sent\", value: \"sow-sent\" },\n  { label: \"sow-approval\", value: \"sow-approval\" },\n  { label: \"work-started\", value: \"work-started\" },\n  { label: \"delivered\", value: \"delivered\" },\n  { label: \"signed-off\", value: \"signed-off\" },\n];\n\nexport default class CustomerProjectTemplate extends Component {\n  @tracked tag = DEFAULT_TAG;\n  @tracked customerUrl = \"Insert Mothership Link Here\";\n  @tracked estimatedHours = \"X\";\n  @tracked maintenanceFee = \"X\";\n\n  get devTemplateUrl() {\n    return `https://dev.discourse.org/new-topic?title=${this.topicTitle}&body=${this.templateBody}&category=${CUSTOMER_PROJECT_CATEGORY}&tags=${this.tag}`;\n  }\n\n  get metaUsername() {\n    return this.args.model.topic.postStream.posts[0].username;\n  }\n\n  get summary() {\n    return this.args.model.topic.postStream.posts[0].cooked;\n  }\n\n  get topicTitle() {\n    return encodeURIComponent(this.args.model.topic.title);\n  }\n\n  get topicCreatedAt() {\n    return new Date(this.args.model.topic.created_at).toLocaleDateString(\n      \"en-US\",\n      {\n        month: \"short\",\n        day: \"2-digit\",\n        year: \"numeric\",\n      }\n    );\n  }\n\n  get templateBody() {\n    return encodeURIComponent(`\n*[] Todo: Link back to this topic on the corresponding meta topic(s) housing most of the discussion*\n\n[details=\"Summary\"]\n[quote]\n${this.summary}\n[/quote]\n[/details]\n\n**Client**\n[Customer](${this.customerUrl})\n[Meta Topic](https://meta.discourse.org${this.args.model.topic.url})\n\n**Estimated Hours**\n${this.estimatedHours} Hours\n\n**Monthly Maintenance Fee**\n${this.maintenanceFee}/month\n\n[details=\"How to quote maintenance fees\"]\nMust be included as part of the estimate (even if it's $0). Read the [guidelines](https://dev.discourse.org/t/custom-development-estimations-pricing-and-maintenance/119775) to help determine an appropriate fee. Speak to your CSM when quoting maintenance fees for FTEE (or similar) customers.\n[/details]\n\n**Actual Hours**\nTBD\n\n| | Topic | By | Date | Notes |\n| --- | --- | --- | --- | ---|\n| Discussion | https://meta.discourse.org${this.args.model.topic.url} | ${this.metaUsername} | ${this.topicCreatedAt} | - |\n| Estimated | - | - | - | - |\n| SOW Sent | - | - | - | - |\n| SOW Approval | - | - | - | - |\n| Work started | - | - | - | - |\n| Delivered | - | - | - | - |\n| Customer Sign-Off | - | - | - | - |\n| Invoiced | - | - | - | - |\n`);\n  }\n\n  @action\n  createTemplate() {\n    window.open(this.devTemplateUrl, \"_blank\");\n  }\n\n  @action\n  setTag(tag) {\n    this.tag = tag;\n  }\n\n  @action\n  setCustomerUrl(eventOrValue) {\n    if (typeof eventOrValue === \"string\") {\n      this.customerUrl = eventOrValue;\n    } else {\n      this.customerUrl = eventOrValue.target.value;\n    }\n  }\n\n  @action\n  setEstimatedHours(event) {\n    this.estimatedHours = event.target.value;\n  }\n\n  @action\n  setMaintenanceFee(event) {\n    this.maintenanceFee = event.target.value;\n  }\n\n  <template>\n    <DModal\n      @closeModal={{@closeModal}}\n      @title={{i18n\n        (themePrefix \"discourse_meta_to_dev_cp_template.modal_title\")\n      }}\n    >\n      <:body>\n        <p>\n          {{i18n (themePrefix \"discourse_meta_to_dev_cp_template.modal_body\")}}\n        </p>\n\n        <label>\n          <span>\n            {{i18n (themePrefix \"discourse_meta_to_dev_cp_template.tag\")}}\n          </span>\n        </label>\n\n        <ComboBox\n          @content={{CUSTOMER_PROJECT_TAGS}}\n          @valueProperty=\"value\"\n          @value={{this.tag}}\n          @onChange={{this.setTag}}\n        />\n        <br /><br />\n\n        <label>\n          <span>\n            {{i18n\n              (themePrefix \"discourse_meta_to_dev_cp_template.customer_url\")\n            }}\n          </span>\n        </label>\n        <input\n          type=\"text\"\n          {{on \"input\" this.setCustomerUrl}}\n          value={{this.customerUrl}}\n        />\n\n        <label>\n          <span>\n            {{i18n\n              (themePrefix \"discourse_meta_to_dev_cp_template.estimated_hours\")\n            }}\n          </span>\n        </label>\n        <input type=\"text\" {{on \"input\" this.setEstimatedHours}} />\n\n        <label>\n          <span>\n            {{i18n\n              (themePrefix \"discourse_meta_to_dev_cp_template.maintenance_fee\")\n            }}\n          </span>\n        </label>\n        <input type=\"text\" {{on \"input\" this.setMaintenanceFee}} />\n      </:body>\n      <:footer>\n        <DButton\n          @action={{this.createTemplate}}\n          @label={{themePrefix\n            \"discourse_meta_to_dev_cp_template.create_template\"\n          }}\n          class=\"btn-primary\"\n        />\n      </:footer>\n    </DModal>\n  </template>\n}\n","import { apiInitializer } from \"discourse/lib/api\";\nimport CustomerProjectTemplate from \"../components/modal/customer-project-template\";\n\nexport default apiInitializer((api) => {\n  const currentUser = api.container.lookup(\"service:current-user\");\n  const modal = api.container.lookup(\"service:modal\");\n\n  if (currentUser?.admin) {\n    api.addTopicAdminMenuButton((topic) => {\n      return {\n        action: () => {\n          modal.show(CustomerProjectTemplate, { model: { topic } });\n        },\n        icon: \"link\",\n        label: themePrefix(\"discourse_meta_to_dev_cp_template.action_label\"),\n      };\n    });\n  }\n});\n","import * as Mod1 from \"./discourse/api-initializers/meta-to-dev-topic-creation\";\nimport * as Mod2 from \"./discourse/components/modal/customer-project-template\";\nconst compatModules = {\n  \"discourse/api-initializers/meta-to-dev-topic-creation\": Mod1,\n  \"discourse/components/modal/customer-project-template\": Mod2,\n};\nexport { compatModules };\nexport default compatModules;\n"],"names":["themePrefix","key","getObjectForTheme","CUSTOMER_PROJECT_TAGS","label","value","CustomerProjectTemplate","Component","dt7948","g","this","prototype","tracked","tag","i","customerUrl","estimatedHours","maintenanceFee","devTemplateUrl","topicTitle","templateBody","metaUsername","args","model","topic","postStream","posts","username","summary","cooked","encodeURIComponent","title","topicCreatedAt","Date","created_at","toLocaleDateString","month","day","year","url","createTemplate","window","open","n","action","setTag","setCustomerUrl","eventOrValue","target","setEstimatedHours","event","setMaintenanceFee","setComponentTemplate","createTemplateFactory","id","block","moduleName","scope","DModal","i18n","ComboBox","on","DButton","isStrictMode","metaToDevTopicCreation","apiInitializer","api","currentUser","container","lookup","modal","admin","addTopicAdminMenuButton","show","icon","compatModules","Mod2"],"mappings":"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"}