{"version":3,"file":"poll.js","names":["define","_exports","_component","_object","_service","_string","_template","_ajax","_ajaxError","_loadScript","_decorators","_discourseI18n","_templateFactory","Object","defineProperty","value","default","__COLOCATED_TEMPLATE__","createTemplateFactory","id","block","moduleName","isStrictMode","PollBreakdownModal","static","dt7948","g","this","prototype","service","dialog","i","model","charts","groupedBy","highlightedOption","displayMode","init","set","groupableUserFields","then","fetchGroupedPollData","super","arguments","title","pollTitle","topicTitle","htmlSafe","n","fields","map","field","transformed","split","filter","Boolean","length","classify","label","join","totalVotes","options","reduce","sum","option","votes","ajax","data","post_id","post","poll_name","poll","name","user_field_name","catch","error","popupAjaxError","alert","t","result","isDestroying","isDestroyed","grouped_results","setGrouping","action","onSelectPanel","panel","setComponentTemplate","_computed","_object2","REGULAR_POLL_TYPE","PIE_CHART_TYPE","NUMBER_POLL_TYPE","MULTIPLE_POLL_TYPE","BAR_CHART_TYPE","ALWAYS_POLL_RESULT","PollUiBuilderModal","siteSettings","showAdvanced","pollType","pollOptions","create","pollOptionsText","pollMin","pollMax","pollStep","pollGroups","pollAutoClose","pollResult","chartType","publicPoll","poll_default_public","or","showNumber","gt","canRemoveOption","pollResults","staff","push","isRegular","isNumber","isMultiple","pollOptionsCount","siteGroups","groups","isPie","_setPollMinMax","poll_maximum_options","observes","pollOutput","pollHeader","output","match","toolbarEvent","getText","step","toISOString","trim","forEach","minNumOfOptionsValidation","failed","reason","count","ok","showMinNumOfOptionsValidation","minMaxValueValidation","parseInt","optionsCount","disableInsert","_comboboxOptions","startIndex","endIndex","Array","keys","number","onOptionsTextChange","e","target","insertPoll","addText","closeModal","toggleAdvanced","toggleProperty","x","updateValue","event","onInputKeydown","index","key","preventDefault","stopPropagation","addOption","atIndex","insertAt","removeOption","removeObject","updatePollType","togglePublic","_runloop","_component2","_chartColors","_pollUiBuilder","PollBreakdownChart","c","group","setHighlightedOption","mapBy","_optionToSlice","_previousHighlightedSliceIndex","_previousDisplayMode","didInsertElement","canvas","element","querySelector","_chart","window","Chart","getContext","chartConfig","didReceiveAttrs","_updateDisplayMode","_updateHighlight","willDestroy","destroy","colorStyle","optionColors","transformedData","counter","colors","getColors","color","type","plugins","ChartDataLabels","datasets","backgroundColor","hoverBorderColor","tooltip","datalabels","borderRadius","font","family","getComputedStyle","document","body","fontFamily","size","padding","top","right","bottom","left","formatter","toNumber","precision","responsive","aspectRatio","animation","duration","onHover","activeElements","next","sliceIndex","optionIndex","find","Number","config","update","undefined","datasetIndex","setActiveElements","classNames","_computed2","PollBreakdownOption","onMouseOver","onMouseOut","propertyEqual","highlighted","equal","showPercentage","percent","total","colorBackgroundStyle","colorPreviewStyle","helpers","getHoverColor","tagName","_pluginApi","initializePollUIBuilder","api","addComposerToolbarPopupMenuOption","container","lookup","show","icon","condition","composer","currentUser","getCurrentUser","poll_enabled","topic","pm_with_non_human_user","can_create_poll","initialize","withPluginApi","_glue","_getOwner","PLUGIN_ID","_glued","_interval","rerender","queueRerender","cleanUpPolls","clearInterval","cleanUp","initializePolls","register","getRegister","pollGroupableUserFields","poll_groupable_user_fields","modifyClass","p","pluginId","subscribe","_super","messageBus","_onPollMessage","unsubscribe","msg","get","findLoadedPost","polls","bind","_polls","pollsObject","pollsChanged","setProperties","includePostAttributes","decorateCookedElement","elem","helper","pollNodes","querySelectorAll","node","parentNode","getModel","preventCloak","polls_votes","setInterval","pollNode","pollName","dataset","pollPost","vote","quotedId","closest","postId","quoted","findBy","titleElement","attrs","hasSavedVote","titleHTML","outerHTML","_postCookedWidget","widget","glue","appendTo","onlyStream","cleanupStream","addSearchSuggestion","_application","_virtualDom","_formatter","_localDates","_round","_post","_rawHtml","_widget","_iconLibrary","_evenRound","_pollBreakdown","buttonOptionsMap","exportResults","className","showBreakdown","openPoll","closePoll","optionHtml","el","createElement","innerHTML","html","applyLocalDates","checkUserGroups","user","toLowerCase","userGroups","some","includes","createWidget","buildAttributes","tabindex","contents","chosen","iconNode","click","sendWidgetAction","keyDown","buildKey","optionId","defaultState","loading","state","h","finally","voters","avatarFor","username","template","avatar_template","attach","isPublic","public","ordered","sort","a","b","percentages","fill","o","rounded","Math","floor","idx","per","toString","attributes","style","totalScore","average","averageRating","services","showResults","preloaded_voters","resultsWidget","chart_type","fetchVoters","votersCount","option_id","page","limit","newVoters","votersSet","Set","voter","has","add","otherOptionId","scheduleRerender","multipleHelpText","min","max","closed","isClosed","isStaff","isMe","user_id","instructions","help","iconHTML","close","closeDate","moment","utc","isValid","format","isAutomaticallyClosed","age","relativeAge","toDate","addAgo","timeLeft","to","infoText","results","hasVoted","labels","opts","strippedLabels","l","stripHtml","DOMParser","parseFromString","textContent","htmlLegendPlugin","legend","generateLabels","text","fillStyle","display","htmlLegend","containerID","legendContainerId","pieChartConfig","getElementById","willRerenderWidget","removeChild","clearPieChart","chart","afterUpdate","args","ul","item","li","classList","onclick","toggleDataVisibility","boxSpan","background","textContainer","fontColor","getDataVisibility","opacity","appendChild","buildId","transform","content","_buildContent","onChange","param","_r","isAdmin","admin","dataExplorerEnabled","data_explorer_enabled","exportQueryID","poll_export_data_explorer_query_id","topicArchived","staffOnly","hideResultsDisabled","dropdown","dropdownOptionsCount","castVotesDisabled","canCastVotes","disabled","showResultsButton","singleOptionId","singleOption","cssClasses","class","newAttrs","isNaN","numOptions","status","selectedOptionCount","toggleStatus","yesNoConfirm","message","didConfirm","toggleResults","removeVote","_ref2","appEvents","trigger","queryID","params","JSON","stringify","explain","download","csvContent","downloadLink","blob","Blob","href","URL","createObjectURL","setAttribute","remove","showLogin","send","_toggleOption","chosenIdx","indexOf","splice","toggleOption","castVotes","_ref3","getOwner","palette","gradient","currentGradientValue","previousGradientIndex","gradientKeys","colorIndex","baseGradientKeyIndex","y","differenceMultiplier","k","round","setup","allowList","registerOptions","features","pollMaximumOptions","registerPlugin","md","bbcode","ruler","rule","DATA_PREFIX","DEFAULT_POLL","ALLOWED_ATTRIBUTES","addPollContainer","titleTokens","pollTokens","token","tokens","listItemCloseIndex","findIndex","j","slice","hash","rhex","hex","s","unescape","encodeURI","md5cycle","md5blk","substring","tail","charCodeAt","md51","tag","before","_ref","poll_attrs","after","openToken","openTokenIndex","discourse","Token","String","addNumberListItems","endsWith","addPollInfo","d","ff","gg","hh","ii","add32","cmn","q","md5blks","hex_chr","sumsUpTo100","decimals","sumOfDecimals","ceil","greatest"],"sources":["discourse/plugins/poll/discourse/components/modal/poll-breakdown.js","discourse/plugins/poll/discourse/components/modal/poll-ui-builder.js","discourse/plugins/poll/discourse/components/poll-breakdown-chart.js","discourse/plugins/poll/discourse/components/poll-breakdown-option.js","discourse/plugins/poll/discourse/initializers/add-poll-ui-builder.js","discourse/plugins/poll/discourse/initializers/extend-for-poll.js","discourse/plugins/poll/discourse/widgets/discourse-poll.js","discourse/plugins/poll/lib/chart-colors.js","discourse/plugins/poll/lib/discourse-markdown/poll.js","discourse/plugins/poll/lib/even-round.js"],"sourcesContent":["define(\"discourse/plugins/poll/discourse/components/modal/poll-breakdown\", [\"exports\", \"@ember/component\", \"@ember/object\", \"@ember/service\", \"@ember/string\", \"@ember/template\", \"discourse/lib/ajax\", \"discourse/lib/ajax-error\", \"discourse/lib/load-script\", \"discourse-common/utils/decorators\", \"discourse-i18n\", \"@ember/template-factory\"], function (_exports, _component, _object, _service, _string, _template, _ajax, _ajaxError, _loadScript, _decorators, _discourseI18n, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    {{! template-lint-disable no-invalid-interactive }}\n  <DModal\n    @title={{i18n \"poll.breakdown.title\"}}\n    @closeModal={{@closeModal}}\n    class=\"poll-breakdown has-tabs\"\n  >\n    <:headerBelowTitle>\n      <ul class=\"modal-tabs\">\n        <li\n          class={{concat-class\n            \"modal-tab percentage\"\n            (if (eq this.displayMode \"percentage\") \"is-active\")\n          }}\n          {{on \"click\" (fn (mut this.displayMode) \"percentage\")}}\n        >{{i18n \"poll.breakdown.percentage\"}}</li>\n        <li\n          class={{concat-class\n            \"modal-tab count\"\n            (if (eq this.displayMode \"count\") \"is-active\")\n          }}\n          {{on \"click\" (fn (mut this.displayMode) \"count\")}}\n        >{{i18n \"poll.breakdown.count\"}}</li>\n      </ul>\n    </:headerBelowTitle>\n    <:body>\n      <div class=\"poll-breakdown-sidebar\">\n        <p class=\"poll-breakdown-title\">\n          {{this.title}}\n        </p>\n  \n        <div class=\"poll-breakdown-total-votes\">{{i18n\n            \"poll.breakdown.votes\"\n            count=this.model.poll.voters\n          }}</div>\n  \n        <ul class=\"poll-breakdown-options\">\n          {{#each this.model.poll.options as |option index|}}\n            <PollBreakdownOption\n              @option={{option}}\n              @index={{index}}\n              @totalVotes={{this.totalVotes}}\n              @optionsCount={{this.model.poll.options.length}}\n              @displayMode={{this.displayMode}}\n              @highlightedOption={{this.highlightedOption}}\n              @onMouseOver={{fn (mut this.highlightedOption) index}}\n              @onMouseOut={{fn (mut this.highlightedOption) null}}\n            />\n          {{/each}}\n        </ul>\n      </div>\n  \n      <div class=\"poll-breakdown-body\">\n        <div class=\"poll-breakdown-body-header\">\n          <label class=\"poll-breakdown-body-header-label\">{{i18n\n              \"poll.breakdown.breakdown\"\n            }}</label>\n  \n          <ComboBox\n            @content={{this.groupableUserFields}}\n            @value={{this.groupedBy}}\n            @nameProperty=\"label\"\n            @onChange={{this.setGrouping}}\n            class=\"poll-breakdown-dropdown\"\n          />\n        </div>\n  \n        <div class=\"poll-breakdown-charts\">\n          {{#each this.charts as |chart|}}\n            <PollBreakdownChart\n              @group={{get chart \"group\"}}\n              @options={{get chart \"options\"}}\n              @displayMode={{this.displayMode}}\n              @highlightedOption={{this.highlightedOption}}\n              @setHighlightedOption={{fn (mut this.highlightedOption)}}\n            />\n          {{/each}}\n        </div>\n      </div>\n    </:body>\n  </DModal>\n  */\n  {\n    \"id\": \"YRvkhP/Q\",\n    \"block\": \"[[[8,[39,0],[[24,0,\\\"poll-breakdown has-tabs\\\"]],[[\\\"@title\\\",\\\"@closeModal\\\"],[[28,[37,1],[\\\"poll.breakdown.title\\\"],null],[30,1]]],[[\\\"headerBelowTitle\\\",\\\"body\\\"],[[[[1,\\\"\\\\n    \\\"],[10,\\\"ul\\\"],[14,0,\\\"modal-tabs\\\"],[12],[1,\\\"\\\\n      \\\"],[11,\\\"li\\\"],[16,0,[28,[37,2],[\\\"modal-tab percentage\\\",[52,[28,[37,4],[[30,0,[\\\"displayMode\\\"]],\\\"percentage\\\"],null],\\\"is-active\\\"]],null]],[4,[38,5],[\\\"click\\\",[28,[37,6],[[28,[37,7],[[30,0,[\\\"displayMode\\\"]]],null],\\\"percentage\\\"],null]],null],[12],[1,[28,[35,1],[\\\"poll.breakdown.percentage\\\"],null]],[13],[1,\\\"\\\\n      \\\"],[11,\\\"li\\\"],[16,0,[28,[37,2],[\\\"modal-tab count\\\",[52,[28,[37,4],[[30,0,[\\\"displayMode\\\"]],\\\"count\\\"],null],\\\"is-active\\\"]],null]],[4,[38,5],[\\\"click\\\",[28,[37,6],[[28,[37,7],[[30,0,[\\\"displayMode\\\"]]],null],\\\"count\\\"],null]],null],[12],[1,[28,[35,1],[\\\"poll.breakdown.count\\\"],null]],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]],[[[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"poll-breakdown-sidebar\\\"],[12],[1,\\\"\\\\n      \\\"],[10,2],[14,0,\\\"poll-breakdown-title\\\"],[12],[1,\\\"\\\\n        \\\"],[1,[30,0,[\\\"title\\\"]]],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,0],[14,0,\\\"poll-breakdown-total-votes\\\"],[12],[1,[28,[35,1],[\\\"poll.breakdown.votes\\\"],[[\\\"count\\\"],[[30,0,[\\\"model\\\",\\\"poll\\\",\\\"voters\\\"]]]]]],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,\\\"ul\\\"],[14,0,\\\"poll-breakdown-options\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,9],[[28,[37,9],[[30,0,[\\\"model\\\",\\\"poll\\\",\\\"options\\\"]]],null]],null],null,[[[1,\\\"          \\\"],[8,[39,10],null,[[\\\"@option\\\",\\\"@index\\\",\\\"@totalVotes\\\",\\\"@optionsCount\\\",\\\"@displayMode\\\",\\\"@highlightedOption\\\",\\\"@onMouseOver\\\",\\\"@onMouseOut\\\"],[[30,2],[30,3],[30,0,[\\\"totalVotes\\\"]],[30,0,[\\\"model\\\",\\\"poll\\\",\\\"options\\\",\\\"length\\\"]],[30,0,[\\\"displayMode\\\"]],[30,0,[\\\"highlightedOption\\\"]],[28,[37,6],[[28,[37,7],[[30,0,[\\\"highlightedOption\\\"]]],null],[30,3]],null],[28,[37,6],[[28,[37,7],[[30,0,[\\\"highlightedOption\\\"]]],null],null],null]]],null],[1,\\\"\\\\n\\\"]],[2,3]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[10,0],[14,0,\\\"poll-breakdown-body\\\"],[12],[1,\\\"\\\\n      \\\"],[10,0],[14,0,\\\"poll-breakdown-body-header\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"label\\\"],[14,0,\\\"poll-breakdown-body-header-label\\\"],[12],[1,[28,[35,1],[\\\"poll.breakdown.breakdown\\\"],null]],[13],[1,\\\"\\\\n\\\\n        \\\"],[8,[39,11],[[24,0,\\\"poll-breakdown-dropdown\\\"]],[[\\\"@content\\\",\\\"@value\\\",\\\"@nameProperty\\\",\\\"@onChange\\\"],[[30,0,[\\\"groupableUserFields\\\"]],[30,0,[\\\"groupedBy\\\"]],\\\"label\\\",[30,0,[\\\"setGrouping\\\"]]]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,0],[14,0,\\\"poll-breakdown-charts\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,9],[[28,[37,9],[[30,0,[\\\"charts\\\"]]],null]],null],null,[[[1,\\\"          \\\"],[8,[39,12],null,[[\\\"@group\\\",\\\"@options\\\",\\\"@displayMode\\\",\\\"@highlightedOption\\\",\\\"@setHighlightedOption\\\"],[[28,[37,13],[[30,4],\\\"group\\\"],null],[28,[37,13],[[30,4],\\\"options\\\"],null],[30,0,[\\\"displayMode\\\"]],[30,0,[\\\"highlightedOption\\\"]],[28,[37,6],[[28,[37,7],[[30,0,[\\\"highlightedOption\\\"]]],null]],null]]],null],[1,\\\"\\\\n\\\"]],[4]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n  \\\"]],[]]]]]],[\\\"@closeModal\\\",\\\"option\\\",\\\"index\\\",\\\"chart\\\"],false,[\\\"d-modal\\\",\\\"i18n\\\",\\\"concat-class\\\",\\\"if\\\",\\\"eq\\\",\\\"on\\\",\\\"fn\\\",\\\"mut\\\",\\\"each\\\",\\\"-track-array\\\",\\\"poll-breakdown-option\\\",\\\"combo-box\\\",\\\"poll-breakdown-chart\\\",\\\"get\\\"]]\",\n    \"moduleName\": \"discourse/plugins/poll/discourse/components/modal/poll-breakdown.hbs\",\n    \"isStrictMode\": false\n  });\n  class PollBreakdownModal extends _component.default {\n    static #_ = (() => dt7948.g(this.prototype, \"dialog\", [_service.service]))();\n    #dialog = (() => (dt7948.i(this, \"dialog\"), void 0))();\n    model = null;\n    charts = null;\n    groupedBy = null;\n    highlightedOption = null;\n    displayMode = \"percentage\";\n    init() {\n      this.set(\"groupedBy\", this.model.groupableUserFields[0]);\n      (0, _loadScript.default)(\"/javascripts/Chart.min.js\").then(() => (0, _loadScript.default)(\"/javascripts/chartjs-plugin-datalabels.min.js\")).then(() => {\n        this.fetchGroupedPollData();\n      });\n      super.init(...arguments);\n    }\n    title(pollTitle, topicTitle) {\n      return pollTitle ? (0, _template.htmlSafe)(pollTitle) : topicTitle;\n    }\n    static #_2 = (() => dt7948.n(this.prototype, \"title\", [(0, _decorators.default)(\"model.poll.title\", \"model.post.topic.title\")]))();\n    groupableUserFields(fields) {\n      return fields.map(field => {\n        const transformed = field.split(\"_\").filter(Boolean);\n        if (transformed.length > 1) {\n          transformed[0] = (0, _string.classify)(transformed[0]);\n        }\n        return {\n          id: field,\n          label: transformed.join(\" \")\n        };\n      });\n    }\n    static #_3 = (() => dt7948.n(this.prototype, \"groupableUserFields\", [(0, _decorators.default)(\"model.groupableUserFields\")]))();\n    totalVotes(options) {\n      return options.reduce((sum, option) => sum + option.votes, 0);\n    }\n    static #_4 = (() => dt7948.n(this.prototype, \"totalVotes\", [(0, _decorators.default)(\"model.poll.options\")]))();\n    fetchGroupedPollData() {\n      return (0, _ajax.ajax)(\"/polls/grouped_poll_results.json\", {\n        data: {\n          post_id: this.model.post.id,\n          poll_name: this.model.poll.name,\n          user_field_name: this.groupedBy\n        }\n      }).catch(error => {\n        if (error) {\n          (0, _ajaxError.popupAjaxError)(error);\n        } else {\n          this.dialog.alert(_discourseI18n.default.t(\"poll.error_while_fetching_voters\"));\n        }\n      }).then(result => {\n        if (this.isDestroying || this.isDestroyed) {\n          return;\n        }\n        this.set(\"charts\", result.grouped_results);\n      });\n    }\n    setGrouping(value) {\n      this.set(\"groupedBy\", value);\n      this.fetchGroupedPollData();\n    }\n    static #_5 = (() => dt7948.n(this.prototype, \"setGrouping\", [_object.action]))();\n    onSelectPanel(panel) {\n      this.set(\"displayMode\", panel.id);\n    }\n    static #_6 = (() => dt7948.n(this.prototype, \"onSelectPanel\", [_object.action]))();\n  }\n  _exports.default = PollBreakdownModal;\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, PollBreakdownModal);\n});","define(\"discourse/plugins/poll/discourse/components/modal/poll-ui-builder\", [\"exports\", \"@ember/component\", \"@ember/object\", \"@ember/object/computed\", \"@ember/service\", \"@ember-decorators/object\", \"discourse-common/utils/decorators\", \"discourse-i18n\", \"@ember/template-factory\"], function (_exports, _component, _object, _computed, _service, _object2, _decorators, _discourseI18n, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = _exports.REGULAR_POLL_TYPE = _exports.PIE_CHART_TYPE = _exports.NUMBER_POLL_TYPE = _exports.MULTIPLE_POLL_TYPE = _exports.BAR_CHART_TYPE = void 0;\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <DModal\n    @title={{i18n \"poll.ui_builder.title\"}}\n    @closeModal={{@closeModal}}\n    @inline={{@inline}}\n    class=\"poll-ui-builder\"\n  >\n    <:body>\n      <ul class=\"nav nav-pills poll-type\">\n        <li>\n          <a\n            href\n            {{on \"click\" (fn this.updatePollType \"regular\")}}\n            class=\"poll-type-value poll-type-value-regular\n              {{if this.isRegular 'active'}}\"\n          >\n            {{i18n \"poll.ui_builder.poll_type.regular\"}}\n          </a>\n        </li>\n        <li>\n          <a\n            href\n            {{on \"click\" (fn this.updatePollType \"multiple\")}}\n            class=\"poll-type-value poll-type-value-multiple\n              {{if this.isMultiple 'active'}}\"\n          >\n            {{i18n \"poll.ui_builder.poll_type.multiple\"}}\n          </a>\n        </li>\n        {{#if this.showNumber}}\n          <li>\n            <a\n              href\n              {{on \"click\" (fn this.updatePollType \"number\")}}\n              class=\"poll-type-value poll-type-value-number\n                {{if this.isNumber 'active'}}\"\n            >\n              {{i18n \"poll.ui_builder.poll_type.number\"}}\n            </a>\n          </li>\n        {{/if}}\n      </ul>\n  \n      {{#if this.showAdvanced}}\n        <div class=\"input-group poll-title\">\n          <label class=\"input-group-label\">{{i18n\n              \"poll.ui_builder.poll_title.label\"\n            }}</label>\n          <Input @value={{this.pollTitle}} />\n        </div>\n      {{/if}}\n  \n      {{#unless this.isNumber}}\n        <div class=\"poll-options\">\n          {{#if this.showAdvanced}}\n            <label class=\"input-group-label\">{{i18n\n                \"poll.ui_builder.poll_options.label\"\n              }}</label>\n            <Textarea\n              @value={{this.pollOptionsText}}\n              {{on \"input\" this.onOptionsTextChange}}\n            />\n            {{#if this.showMinNumOfOptionsValidation}}\n              {{#unless this.minNumOfOptionsValidation.ok}}\n                <InputTip @validation={{this.minNumOfOptionsValidation}} />\n              {{/unless}}\n            {{/if}}\n          {{else}}\n            {{#each this.pollOptions as |option index|}}\n              <div class=\"input-group poll-option-value\">\n                <input\n                  type=\"text\"\n                  value={{option.value}}\n                  {{auto-focus}}\n                  {{on \"input\" (fn this.updateValue option)}}\n                  {{on \"keydown\" (fn this.onInputKeydown index)}}\n                />\n                {{#if this.canRemoveOption}}\n                  <DButton\n                    @icon=\"trash-alt\"\n                    @action={{fn this.removeOption option}}\n                  />\n                {{/if}}\n              </div>\n            {{/each}}\n  \n            <div class=\"poll-option-controls\">\n              <DButton\n                @icon=\"plus\"\n                @label=\"poll.ui_builder.poll_options.add\"\n                @action={{fn this.addOption -1}}\n                class=\"btn-default poll-option-add\"\n              />\n              {{#if\n                (and\n                  this.showMinNumOfOptionsValidation\n                  (not this.minNumOfOptionsValidation.ok)\n                )\n              }}\n                <InputTip @validation={{this.minNumOfOptionsValidation}} />\n              {{/if}}\n            </div>\n          {{/if}}\n        </div>\n      {{/unless}}\n  \n      {{#unless this.isRegular}}\n        <div class=\"options\">\n          <div class=\"input-group poll-number\">\n            <label class=\"input-group-label\">{{i18n\n                \"poll.ui_builder.poll_config.min\"\n              }}</label>\n            <Input\n              @type=\"number\"\n              @value={{this.pollMin}}\n              class=\"poll-options-min\"\n              min=\"1\"\n            />\n          </div>\n  \n          <div class=\"input-group poll-number\">\n            <label class=\"input-group-label\">{{i18n\n                \"poll.ui_builder.poll_config.max\"\n              }}</label>\n            <Input\n              @type=\"number\"\n              @value={{this.pollMax}}\n              class=\"poll-options-max\"\n              min=\"1\"\n            />\n          </div>\n  \n          {{#if this.isNumber}}\n            <div class=\"input-group poll-number\">\n              <label class=\"input-group-label\">{{i18n\n                  \"poll.ui_builder.poll_config.step\"\n                }}</label>\n              <Input\n                @type=\"number\"\n                @value={{this.pollStep}}\n                min=\"1\"\n                class=\"poll-options-step\"\n              />\n            </div>\n          {{/if}}\n        </div>\n  \n        {{#unless this.minMaxValueValidation.ok}}\n          <InputTip @validation={{this.minMaxValueValidation}} />\n        {{/unless}}\n      {{/unless}}\n  \n      <div class=\"input-group poll-public\">\n        <DToggleSwitch\n          @state={{this.publicPoll}}\n          @label=\"poll.ui_builder.poll_public.label\"\n          class=\"poll-toggle-public\"\n          {{on \"click\" this.togglePublic}}\n        />\n      </div>\n  \n      {{#if this.showAdvanced}}\n        <div class=\"input-group poll-allowed-groups\">\n          <label class=\"input-group-label\">{{i18n\n              \"poll.ui_builder.poll_groups.label\"\n            }}</label>\n          <GroupChooser\n            @content={{this.siteGroups}}\n            @value={{this.pollGroups}}\n            @onChange={{fn (mut this.pollGroups)}}\n            @labelProperty=\"name\"\n            @valueProperty=\"name\"\n          />\n        </div>\n  \n        <div class=\"input-group poll-date\">\n          <label class=\"input-group-label\">{{i18n\n              \"poll.ui_builder.automatic_close.label\"\n            }}</label>\n          <DateTimeInput\n            @date={{this.pollAutoClose}}\n            @onChange={{fn (mut this.pollAutoClose)}}\n            @clearable={{true}}\n            @useGlobalPickerContainer={{true}}\n          />\n        </div>\n  \n        <div class=\"input-group poll-select\">\n          <label class=\"input-group-label\">{{i18n\n              \"poll.ui_builder.poll_result.label\"\n            }}</label>\n          <ComboBox\n            @content={{this.pollResults}}\n            @value={{this.pollResult}}\n            @valueProperty=\"value\"\n            @onChange={{fn (mut this.pollResult)}}\n            class=\"poll-result\"\n          />\n        </div>\n  \n        {{#unless this.isNumber}}\n          <div class=\"input-group poll-select column\">\n            <label class=\"input-group-label\">{{i18n\n                \"poll.ui_builder.poll_chart_type.label\"\n              }}</label>\n  \n            <div class=\"radio-group\">\n              <RadioButton\n                @id=\"poll-chart-type-bar\"\n                @name=\"poll-chart-type\"\n                @value=\"bar\"\n                @selection={{this.chartType}}\n              />\n              <label for=\"poll-chart-type-bar\">{{d-icon \"chart-bar\"}}\n                {{i18n \"poll.ui_builder.poll_chart_type.bar\"}}</label>\n            </div>\n  \n            <div class=\"radio-group\">\n              <RadioButton\n                @id=\"poll-chart-type-pie\"\n                @name=\"poll-chart-type\"\n                @value=\"pie\"\n                @selection={{this.chartType}}\n              />\n              <label for=\"poll-chart-type-pie\">{{d-icon \"chart-pie\"}}\n                {{i18n \"poll.ui_builder.poll_chart_type.pie\"}}</label>\n            </div>\n          </div>\n        {{/unless}}\n      {{/if}}\n    </:body>\n    <:footer>\n      <DButton\n        @action={{this.insertPoll}}\n        @icon=\"chart-bar\"\n        @label=\"poll.ui_builder.insert\"\n        @disabled={{this.disableInsert}}\n        class=\"btn-primary insert-poll\"\n      />\n  \n      <DButton @label=\"cancel\" @action={{@closeModal}} class=\"btn-flat\" />\n  \n      <DButton\n        @action={{this.toggleAdvanced}}\n        @icon=\"cog\"\n        @title={{if\n          this.showAdvanced\n          \"poll.ui_builder.hide_advanced\"\n          \"poll.ui_builder.show_advanced\"\n        }}\n        class=\"btn-default show-advanced\"\n      />\n  \n    </:footer>\n  </DModal>\n  */\n  {\n    \"id\": \"TcibS1xt\",\n    \"block\": \"[[[8,[39,0],[[24,0,\\\"poll-ui-builder\\\"]],[[\\\"@title\\\",\\\"@closeModal\\\",\\\"@inline\\\"],[[28,[37,1],[\\\"poll.ui_builder.title\\\"],null],[30,1],[30,2]]],[[\\\"body\\\",\\\"footer\\\"],[[[[1,\\\"\\\\n    \\\"],[10,\\\"ul\\\"],[14,0,\\\"nav nav-pills poll-type\\\"],[12],[1,\\\"\\\\n      \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n        \\\"],[11,3],[24,6,\\\"\\\"],[16,0,[29,[\\\"poll-type-value poll-type-value-regular\\\\n            \\\",[52,[30,0,[\\\"isRegular\\\"]],\\\"active\\\"]]]],[4,[38,3],[\\\"click\\\",[28,[37,4],[[30,0,[\\\"updatePollType\\\"]],\\\"regular\\\"],null]],null],[12],[1,\\\"\\\\n          \\\"],[1,[28,[35,1],[\\\"poll.ui_builder.poll_type.regular\\\"],null]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n      \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n        \\\"],[11,3],[24,6,\\\"\\\"],[16,0,[29,[\\\"poll-type-value poll-type-value-multiple\\\\n            \\\",[52,[30,0,[\\\"isMultiple\\\"]],\\\"active\\\"]]]],[4,[38,3],[\\\"click\\\",[28,[37,4],[[30,0,[\\\"updatePollType\\\"]],\\\"multiple\\\"],null]],null],[12],[1,\\\"\\\\n          \\\"],[1,[28,[35,1],[\\\"poll.ui_builder.poll_type.multiple\\\"],null]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showNumber\\\"]],[[[1,\\\"        \\\"],[10,\\\"li\\\"],[12],[1,\\\"\\\\n          \\\"],[11,3],[24,6,\\\"\\\"],[16,0,[29,[\\\"poll-type-value poll-type-value-number\\\\n              \\\",[52,[30,0,[\\\"isNumber\\\"]],\\\"active\\\"]]]],[4,[38,3],[\\\"click\\\",[28,[37,4],[[30,0,[\\\"updatePollType\\\"]],\\\"number\\\"],null]],null],[12],[1,\\\"\\\\n            \\\"],[1,[28,[35,1],[\\\"poll.ui_builder.poll_type.number\\\"],null]],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"showAdvanced\\\"]],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"input-group poll-title\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"label\\\"],[14,0,\\\"input-group-label\\\"],[12],[1,[28,[35,1],[\\\"poll.ui_builder.poll_title.label\\\"],null]],[13],[1,\\\"\\\\n        \\\"],[8,[39,5],null,[[\\\"@value\\\"],[[30,0,[\\\"pollTitle\\\"]]]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"isNumber\\\"]]],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"poll-options\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showAdvanced\\\"]],[[[1,\\\"          \\\"],[10,\\\"label\\\"],[14,0,\\\"input-group-label\\\"],[12],[1,[28,[35,1],[\\\"poll.ui_builder.poll_options.label\\\"],null]],[13],[1,\\\"\\\\n          \\\"],[8,[39,7],[[4,[38,3],[\\\"input\\\",[30,0,[\\\"onOptionsTextChange\\\"]]],null]],[[\\\"@value\\\"],[[30,0,[\\\"pollOptionsText\\\"]]]],null],[1,\\\"\\\"],[41,[30,0,[\\\"showMinNumOfOptionsValidation\\\"]],[[[41,[51,[30,0,[\\\"minNumOfOptionsValidation\\\",\\\"ok\\\"]]],[[[1,\\\"              \\\"],[8,[39,8],null,[[\\\"@validation\\\"],[[30,0,[\\\"minNumOfOptionsValidation\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null]],[]],null]],[]],[[[42,[28,[37,10],[[28,[37,10],[[30,0,[\\\"pollOptions\\\"]]],null]],null],null,[[[1,\\\"            \\\"],[10,0],[14,0,\\\"input-group poll-option-value\\\"],[12],[1,\\\"\\\\n              \\\"],[11,\\\"input\\\"],[16,2,[30,3,[\\\"value\\\"]]],[24,4,\\\"text\\\"],[4,[38,11],null,null],[4,[38,3],[\\\"input\\\",[28,[37,4],[[30,0,[\\\"updateValue\\\"]],[30,3]],null]],null],[4,[38,3],[\\\"keydown\\\",[28,[37,4],[[30,0,[\\\"onInputKeydown\\\"]],[30,4]],null]],null],[12],[13],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"canRemoveOption\\\"]],[[[1,\\\"                \\\"],[8,[39,12],null,[[\\\"@icon\\\",\\\"@action\\\"],[\\\"trash-alt\\\",[28,[37,4],[[30,0,[\\\"removeOption\\\"]],[30,3]],null]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"            \\\"],[13],[1,\\\"\\\\n\\\"]],[3,4]],null],[1,\\\"\\\\n          \\\"],[10,0],[14,0,\\\"poll-option-controls\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,12],[[24,0,\\\"btn-default poll-option-add\\\"]],[[\\\"@icon\\\",\\\"@label\\\",\\\"@action\\\"],[\\\"plus\\\",\\\"poll.ui_builder.poll_options.add\\\",[28,[37,4],[[30,0,[\\\"addOption\\\"]],-1],null]]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,13],[[30,0,[\\\"showMinNumOfOptionsValidation\\\"]],[28,[37,14],[[30,0,[\\\"minNumOfOptionsValidation\\\",\\\"ok\\\"]]],null]],null],[[[1,\\\"              \\\"],[8,[39,8],null,[[\\\"@validation\\\"],[[30,0,[\\\"minNumOfOptionsValidation\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"isRegular\\\"]]],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"options\\\"],[12],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"input-group poll-number\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"label\\\"],[14,0,\\\"input-group-label\\\"],[12],[1,[28,[35,1],[\\\"poll.ui_builder.poll_config.min\\\"],null]],[13],[1,\\\"\\\\n          \\\"],[8,[39,5],[[24,0,\\\"poll-options-min\\\"],[24,\\\"min\\\",\\\"1\\\"]],[[\\\"@type\\\",\\\"@value\\\"],[\\\"number\\\",[30,0,[\\\"pollMin\\\"]]]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\\n        \\\"],[10,0],[14,0,\\\"input-group poll-number\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"label\\\"],[14,0,\\\"input-group-label\\\"],[12],[1,[28,[35,1],[\\\"poll.ui_builder.poll_config.max\\\"],null]],[13],[1,\\\"\\\\n          \\\"],[8,[39,5],[[24,0,\\\"poll-options-max\\\"],[24,\\\"min\\\",\\\"1\\\"]],[[\\\"@type\\\",\\\"@value\\\"],[\\\"number\\\",[30,0,[\\\"pollMax\\\"]]]],null],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"isNumber\\\"]],[[[1,\\\"          \\\"],[10,0],[14,0,\\\"input-group poll-number\\\"],[12],[1,\\\"\\\\n            \\\"],[10,\\\"label\\\"],[14,0,\\\"input-group-label\\\"],[12],[1,[28,[35,1],[\\\"poll.ui_builder.poll_config.step\\\"],null]],[13],[1,\\\"\\\\n            \\\"],[8,[39,5],[[24,\\\"min\\\",\\\"1\\\"],[24,0,\\\"poll-options-step\\\"]],[[\\\"@type\\\",\\\"@value\\\"],[\\\"number\\\",[30,0,[\\\"pollStep\\\"]]]],null],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"      \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[51,[30,0,[\\\"minMaxValueValidation\\\",\\\"ok\\\"]]],[[[1,\\\"        \\\"],[8,[39,8],null,[[\\\"@validation\\\"],[[30,0,[\\\"minMaxValueValidation\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[1,\\\"\\\\n    \\\"],[10,0],[14,0,\\\"input-group poll-public\\\"],[12],[1,\\\"\\\\n      \\\"],[8,[39,15],[[24,0,\\\"poll-toggle-public\\\"],[4,[38,3],[\\\"click\\\",[30,0,[\\\"togglePublic\\\"]]],null]],[[\\\"@state\\\",\\\"@label\\\"],[[30,0,[\\\"publicPoll\\\"]],\\\"poll.ui_builder.poll_public.label\\\"]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"showAdvanced\\\"]],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"input-group poll-allowed-groups\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"label\\\"],[14,0,\\\"input-group-label\\\"],[12],[1,[28,[35,1],[\\\"poll.ui_builder.poll_groups.label\\\"],null]],[13],[1,\\\"\\\\n        \\\"],[8,[39,16],null,[[\\\"@content\\\",\\\"@value\\\",\\\"@onChange\\\",\\\"@labelProperty\\\",\\\"@valueProperty\\\"],[[30,0,[\\\"siteGroups\\\"]],[30,0,[\\\"pollGroups\\\"]],[28,[37,4],[[28,[37,17],[[30,0,[\\\"pollGroups\\\"]]],null]],null],\\\"name\\\",\\\"name\\\"]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,0],[14,0,\\\"input-group poll-date\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"label\\\"],[14,0,\\\"input-group-label\\\"],[12],[1,[28,[35,1],[\\\"poll.ui_builder.automatic_close.label\\\"],null]],[13],[1,\\\"\\\\n        \\\"],[8,[39,18],null,[[\\\"@date\\\",\\\"@onChange\\\",\\\"@clearable\\\",\\\"@useGlobalPickerContainer\\\"],[[30,0,[\\\"pollAutoClose\\\"]],[28,[37,4],[[28,[37,17],[[30,0,[\\\"pollAutoClose\\\"]]],null]],null],true,true]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n      \\\"],[10,0],[14,0,\\\"input-group poll-select\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"label\\\"],[14,0,\\\"input-group-label\\\"],[12],[1,[28,[35,1],[\\\"poll.ui_builder.poll_result.label\\\"],null]],[13],[1,\\\"\\\\n        \\\"],[8,[39,19],[[24,0,\\\"poll-result\\\"]],[[\\\"@content\\\",\\\"@value\\\",\\\"@valueProperty\\\",\\\"@onChange\\\"],[[30,0,[\\\"pollResults\\\"]],[30,0,[\\\"pollResult\\\"]],\\\"value\\\",[28,[37,4],[[28,[37,17],[[30,0,[\\\"pollResult\\\"]]],null]],null]]],null],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[51,[30,0,[\\\"isNumber\\\"]]],[[[1,\\\"        \\\"],[10,0],[14,0,\\\"input-group poll-select column\\\"],[12],[1,\\\"\\\\n          \\\"],[10,\\\"label\\\"],[14,0,\\\"input-group-label\\\"],[12],[1,[28,[35,1],[\\\"poll.ui_builder.poll_chart_type.label\\\"],null]],[13],[1,\\\"\\\\n\\\\n          \\\"],[10,0],[14,0,\\\"radio-group\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,20],null,[[\\\"@id\\\",\\\"@name\\\",\\\"@value\\\",\\\"@selection\\\"],[\\\"poll-chart-type-bar\\\",\\\"poll-chart-type\\\",\\\"bar\\\",[30,0,[\\\"chartType\\\"]]]],null],[1,\\\"\\\\n            \\\"],[10,\\\"label\\\"],[14,\\\"for\\\",\\\"poll-chart-type-bar\\\"],[12],[1,[28,[35,21],[\\\"chart-bar\\\"],null]],[1,\\\"\\\\n              \\\"],[1,[28,[35,1],[\\\"poll.ui_builder.poll_chart_type.bar\\\"],null]],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n\\\\n          \\\"],[10,0],[14,0,\\\"radio-group\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,20],null,[[\\\"@id\\\",\\\"@name\\\",\\\"@value\\\",\\\"@selection\\\"],[\\\"poll-chart-type-pie\\\",\\\"poll-chart-type\\\",\\\"pie\\\",[30,0,[\\\"chartType\\\"]]]],null],[1,\\\"\\\\n            \\\"],[10,\\\"label\\\"],[14,\\\"for\\\",\\\"poll-chart-type-pie\\\"],[12],[1,[28,[35,21],[\\\"chart-pie\\\"],null]],[1,\\\"\\\\n              \\\"],[1,[28,[35,1],[\\\"poll.ui_builder.poll_chart_type.pie\\\"],null]],[13],[1,\\\"\\\\n          \\\"],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[1,\\\"  \\\"]],[]],[[[1,\\\"\\\\n    \\\"],[8,[39,12],[[24,0,\\\"btn-primary insert-poll\\\"]],[[\\\"@action\\\",\\\"@icon\\\",\\\"@label\\\",\\\"@disabled\\\"],[[30,0,[\\\"insertPoll\\\"]],\\\"chart-bar\\\",\\\"poll.ui_builder.insert\\\",[30,0,[\\\"disableInsert\\\"]]]],null],[1,\\\"\\\\n\\\\n    \\\"],[8,[39,12],[[24,0,\\\"btn-flat\\\"]],[[\\\"@label\\\",\\\"@action\\\"],[\\\"cancel\\\",[30,1]]],null],[1,\\\"\\\\n\\\\n    \\\"],[8,[39,12],[[24,0,\\\"btn-default show-advanced\\\"]],[[\\\"@action\\\",\\\"@icon\\\",\\\"@title\\\"],[[30,0,[\\\"toggleAdvanced\\\"]],\\\"cog\\\",[52,[30,0,[\\\"showAdvanced\\\"]],\\\"poll.ui_builder.hide_advanced\\\",\\\"poll.ui_builder.show_advanced\\\"]]],null],[1,\\\"\\\\n\\\\n  \\\"]],[]]]]]],[\\\"@closeModal\\\",\\\"@inline\\\",\\\"option\\\",\\\"index\\\"],false,[\\\"d-modal\\\",\\\"i18n\\\",\\\"if\\\",\\\"on\\\",\\\"fn\\\",\\\"input\\\",\\\"unless\\\",\\\"textarea\\\",\\\"input-tip\\\",\\\"each\\\",\\\"-track-array\\\",\\\"auto-focus\\\",\\\"d-button\\\",\\\"and\\\",\\\"not\\\",\\\"d-toggle-switch\\\",\\\"group-chooser\\\",\\\"mut\\\",\\\"date-time-input\\\",\\\"combo-box\\\",\\\"radio-button\\\",\\\"d-icon\\\"]]\",\n    \"moduleName\": \"discourse/plugins/poll/discourse/components/modal/poll-ui-builder.hbs\",\n    \"isStrictMode\": false\n  });\n  const BAR_CHART_TYPE = _exports.BAR_CHART_TYPE = \"bar\";\n  const PIE_CHART_TYPE = _exports.PIE_CHART_TYPE = \"pie\";\n  const REGULAR_POLL_TYPE = _exports.REGULAR_POLL_TYPE = \"regular\";\n  const NUMBER_POLL_TYPE = _exports.NUMBER_POLL_TYPE = \"number\";\n  const MULTIPLE_POLL_TYPE = _exports.MULTIPLE_POLL_TYPE = \"multiple\";\n  const ALWAYS_POLL_RESULT = \"always\";\n  const VOTE_POLL_RESULT = \"on_vote\";\n  const CLOSED_POLL_RESULT = \"on_close\";\n  const STAFF_POLL_RESULT = \"staff_only\";\n  class PollUiBuilderModal extends _component.default {\n    static #_ = (() => dt7948.g(this.prototype, \"siteSettings\", [_service.service]))();\n    #siteSettings = (() => (dt7948.i(this, \"siteSettings\"), void 0))();\n    showAdvanced = false;\n    pollType = (() => REGULAR_POLL_TYPE)();\n    pollTitle;\n    pollOptions = (() => [_object.default.create({\n      value: \"\"\n    })])();\n    pollOptionsText = \"\";\n    pollMin = 1;\n    pollMax = 2;\n    pollStep = 1;\n    pollGroups;\n    pollAutoClose;\n    pollResult = (() => ALWAYS_POLL_RESULT)();\n    chartType = (() => BAR_CHART_TYPE)();\n    publicPoll = (() => this.siteSettings.poll_default_public)();\n    static #_2 = (() => dt7948.g(this.prototype, \"showNumber\", [(0, _computed.or)(\"showAdvanced\", \"isNumber\")]))();\n    #showNumber = (() => (dt7948.i(this, \"showNumber\"), void 0))();\n    static #_3 = (() => dt7948.g(this.prototype, \"canRemoveOption\", [(0, _computed.gt)(\"pollOptions.length\", 1)]))();\n    #canRemoveOption = (() => (dt7948.i(this, \"canRemoveOption\"), void 0))();\n    pollResults(staff) {\n      const options = [{\n        name: _discourseI18n.default.t(\"poll.ui_builder.poll_result.always\"),\n        value: ALWAYS_POLL_RESULT\n      }, {\n        name: _discourseI18n.default.t(\"poll.ui_builder.poll_result.vote\"),\n        value: VOTE_POLL_RESULT\n      }, {\n        name: _discourseI18n.default.t(\"poll.ui_builder.poll_result.closed\"),\n        value: CLOSED_POLL_RESULT\n      }];\n      if (staff) {\n        options.push({\n          name: _discourseI18n.default.t(\"poll.ui_builder.poll_result.staff\"),\n          value: STAFF_POLL_RESULT\n        });\n      }\n      return options;\n    }\n    static #_4 = (() => dt7948.n(this.prototype, \"pollResults\", [(0, _decorators.default)(\"currentUser.staff\")]))();\n    isRegular(pollType) {\n      return pollType === REGULAR_POLL_TYPE;\n    }\n    static #_5 = (() => dt7948.n(this.prototype, \"isRegular\", [(0, _decorators.default)(\"pollType\")]))();\n    isNumber(pollType) {\n      return pollType === NUMBER_POLL_TYPE;\n    }\n    static #_6 = (() => dt7948.n(this.prototype, \"isNumber\", [(0, _decorators.default)(\"pollType\")]))();\n    isMultiple(pollType) {\n      return pollType === MULTIPLE_POLL_TYPE;\n    }\n    static #_7 = (() => dt7948.n(this.prototype, \"isMultiple\", [(0, _decorators.default)(\"pollType\")]))();\n    pollOptionsCount(pollOptions) {\n      return (pollOptions || []).filter(option => option.value.length > 0).length;\n    }\n    static #_8 = (() => dt7948.n(this.prototype, \"pollOptionsCount\", [(0, _decorators.default)(\"pollOptions.@each.value\")]))();\n    siteGroups(groups) {\n      // prevents group \"everyone\" to be listed\n      return groups.filter(g => g.id !== 0);\n    }\n    static #_9 = (() => dt7948.n(this.prototype, \"siteGroups\", [(0, _decorators.default)(\"site.groups\")]))();\n    isPie(chartType, pollType) {\n      return pollType !== NUMBER_POLL_TYPE && chartType === PIE_CHART_TYPE;\n    }\n    static #_10 = (() => dt7948.n(this.prototype, \"isPie\", [(0, _decorators.default)(\"chartType\", \"pollType\")]))();\n    _setPollMinMax() {\n      if (this.isMultiple) {\n        if (this.pollMin <= 0 || this.pollMin >= this.pollMax || this.pollMin >= this.pollOptionsCount) {\n          this.set(\"pollMin\", this.pollOptionsCount > 0 ? 1 : 0);\n        }\n        if (this.pollMax <= 0 || this.pollMin >= this.pollMax || this.pollMax > this.pollOptionsCount) {\n          this.set(\"pollMax\", this.pollOptionsCount);\n        }\n      } else if (this.isNumber) {\n        this.set(\"pollMax\", this.siteSettings.poll_maximum_options);\n      }\n    }\n    static #_11 = (() => dt7948.n(this.prototype, \"_setPollMinMax\", [(0, _object2.observes)(\"pollType\", \"pollOptionsCount\")]))();\n    pollOutput(pollType, pollResult, publicPoll, pollTitle, pollOptions, pollMin, pollMax, pollStep, pollGroups, pollAutoClose, chartType) {\n      let pollHeader = \"[poll\";\n      let output = \"\";\n      const match = this.model.toolbarEvent.getText().match(/\\[poll(\\s+name=[^\\s\\]]+)*.*\\]/gim);\n      if (match) {\n        pollHeader += ` name=poll${match.length + 1}`;\n      }\n      let step = pollStep;\n      if (step < 1) {\n        step = 1;\n      }\n      if (pollType) {\n        pollHeader += ` type=${pollType}`;\n      }\n      if (pollResult) {\n        pollHeader += ` results=${pollResult}`;\n      }\n      if (pollMin && pollType !== REGULAR_POLL_TYPE) {\n        pollHeader += ` min=${pollMin}`;\n      }\n      if (pollMax && pollType !== REGULAR_POLL_TYPE) {\n        pollHeader += ` max=${pollMax}`;\n      }\n      if (pollType === NUMBER_POLL_TYPE) {\n        pollHeader += ` step=${step}`;\n      }\n      pollHeader += ` public=${publicPoll ? \"true\" : \"false\"}`;\n      if (chartType && pollType !== NUMBER_POLL_TYPE) {\n        pollHeader += ` chartType=${chartType}`;\n      }\n      if (pollGroups && pollGroups.length > 0) {\n        pollHeader += ` groups=${pollGroups}`;\n      }\n      if (pollAutoClose) {\n        pollHeader += ` close=${pollAutoClose.toISOString()}`;\n      }\n      pollHeader += \"]\";\n      output += `${pollHeader}\\n`;\n      if (pollTitle) {\n        output += `# ${pollTitle.trim()}\\n`;\n      }\n      if (pollOptions.length > 0 && pollType !== NUMBER_POLL_TYPE) {\n        pollOptions.forEach(option => {\n          if (option.value.length > 0) {\n            output += `* ${option.value.trim()}\\n`;\n          }\n        });\n      }\n      output += \"[/poll]\\n\";\n      return output;\n    }\n    static #_12 = (() => dt7948.n(this.prototype, \"pollOutput\", [(0, _decorators.default)(\"pollType\", \"pollResult\", \"publicPoll\", \"pollTitle\", \"pollOptions.@each.value\", \"pollMin\", \"pollMax\", \"pollStep\", \"pollGroups\", \"pollAutoClose\", \"chartType\")]))();\n    minNumOfOptionsValidation(isNumber, pollOptionsCount) {\n      let options = {\n        ok: true\n      };\n      if (!isNumber) {\n        if (pollOptionsCount < 1) {\n          return _object.default.create({\n            failed: true,\n            reason: _discourseI18n.default.t(\"poll.ui_builder.help.options_min_count\")\n          });\n        }\n        if (pollOptionsCount > this.siteSettings.poll_maximum_options) {\n          return _object.default.create({\n            failed: true,\n            reason: _discourseI18n.default.t(\"poll.ui_builder.help.options_max_count\", {\n              count: this.siteSettings.poll_maximum_options\n            })\n          });\n        }\n      }\n      return _object.default.create(options);\n    }\n    static #_13 = (() => dt7948.n(this.prototype, \"minNumOfOptionsValidation\", [(0, _decorators.default)(\"isNumber\", \"pollOptionsCount\")]))();\n    showMinNumOfOptionsValidation(pollOptions) {\n      return pollOptions.length !== 1 || pollOptions[0].value !== \"\";\n    }\n    static #_14 = (() => dt7948.n(this.prototype, \"showMinNumOfOptionsValidation\", [(0, _decorators.default)(\"pollOptions.@each.value\")]))();\n    minMaxValueValidation(isMultiple, pollOptionsCount, isNumber, pollMin, pollMax, pollStep) {\n      pollMin = parseInt(pollMin, 10) || 0;\n      pollMax = parseInt(pollMax, 10) || 0;\n      pollStep = parseInt(pollStep, 10) || 0;\n      if (pollMin < 0) {\n        return _object.default.create({\n          failed: true,\n          reason: _discourseI18n.default.t(\"poll.ui_builder.help.invalid_min_value\")\n        });\n      }\n      if (pollMax < 0 || isMultiple && pollMax > pollOptionsCount) {\n        return _object.default.create({\n          failed: true,\n          reason: _discourseI18n.default.t(\"poll.ui_builder.help.invalid_max_value\")\n        });\n      }\n      if (pollMin > pollMax) {\n        return _object.default.create({\n          failed: true,\n          reason: _discourseI18n.default.t(\"poll.ui_builder.help.invalid_values\")\n        });\n      }\n      if (isNumber) {\n        if (pollStep < 1) {\n          return _object.default.create({\n            failed: true,\n            reason: _discourseI18n.default.t(\"poll.ui_builder.help.min_step_value\")\n          });\n        }\n        const optionsCount = (pollMax - pollMin + 1) / pollStep;\n        if (optionsCount < 1) {\n          return _object.default.create({\n            failed: true,\n            reason: _discourseI18n.default.t(\"poll.ui_builder.help.options_min_count\")\n          });\n        }\n        if (optionsCount > this.siteSettings.poll_maximum_options) {\n          return _object.default.create({\n            failed: true,\n            reason: _discourseI18n.default.t(\"poll.ui_builder.help.options_max_count\", {\n              count: this.siteSettings.poll_maximum_options\n            })\n          });\n        }\n      }\n      return _object.default.create({\n        ok: true\n      });\n    }\n    static #_15 = (() => dt7948.n(this.prototype, \"minMaxValueValidation\", [(0, _decorators.default)(\"isMultiple\", \"pollOptionsCount\", \"isNumber\", \"pollMin\", \"pollMax\", \"pollStep\")]))();\n    disableInsert(minMaxValueValidation, minNumOfOptionsValidation) {\n      return !minMaxValueValidation.ok || !minNumOfOptionsValidation.ok;\n    }\n    static #_16 = (() => dt7948.n(this.prototype, \"disableInsert\", [(0, _decorators.default)(\"minMaxValueValidation\", \"minNumOfOptionsValidation\")]))();\n    _comboboxOptions(startIndex, endIndex) {\n      return [...Array(endIndex - startIndex).keys()].map(number => ({\n        value: number + startIndex,\n        name: number + startIndex\n      }));\n    }\n    onOptionsTextChange(e) {\n      this.set(\"pollOptions\", e.target.value.split(\"\\n\").map(value => _object.default.create({\n        value\n      })));\n    }\n    static #_17 = (() => dt7948.n(this.prototype, \"onOptionsTextChange\", [_object.action]))();\n    insertPoll() {\n      this.model.toolbarEvent.addText(this.pollOutput);\n      this.closeModal();\n    }\n    static #_18 = (() => dt7948.n(this.prototype, \"insertPoll\", [_object.action]))();\n    toggleAdvanced() {\n      this.toggleProperty(\"showAdvanced\");\n      if (this.showAdvanced) {\n        this.set(\"pollOptionsText\", this.pollOptions.map(x => x.value).join(\"\\n\"));\n      }\n    }\n    static #_19 = (() => dt7948.n(this.prototype, \"toggleAdvanced\", [_object.action]))();\n    updateValue(option, event) {\n      option.set(\"value\", event.target.value);\n    }\n    static #_20 = (() => dt7948.n(this.prototype, \"updateValue\", [_object.action]))();\n    onInputKeydown(index, event) {\n      if (event.key === \"Enter\") {\n        event.preventDefault();\n        event.stopPropagation();\n        if (event.target.value !== \"\") {\n          this.addOption(index + 1);\n        }\n      }\n    }\n    static #_21 = (() => dt7948.n(this.prototype, \"onInputKeydown\", [_object.action]))();\n    addOption(atIndex) {\n      if (atIndex === -1) {\n        atIndex = this.pollOptions.length;\n      }\n      const option = _object.default.create({\n        value: \"\"\n      });\n      this.pollOptions.insertAt(atIndex, option);\n    }\n    static #_22 = (() => dt7948.n(this.prototype, \"addOption\", [_object.action]))();\n    removeOption(option) {\n      this.pollOptions.removeObject(option);\n    }\n    static #_23 = (() => dt7948.n(this.prototype, \"removeOption\", [_object.action]))();\n    updatePollType(pollType, event) {\n      event?.preventDefault();\n      this.set(\"pollType\", pollType);\n    }\n    static #_24 = (() => dt7948.n(this.prototype, \"updatePollType\", [_object.action]))();\n    togglePublic() {\n      this.set(\"publicPoll\", !this.publicPoll);\n    }\n    static #_25 = (() => dt7948.n(this.prototype, \"togglePublic\", [_object.action]))();\n  }\n  _exports.default = PollUiBuilderModal;\n  (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, PollUiBuilderModal);\n});","define(\"discourse/plugins/poll/discourse/components/poll-breakdown-chart\", [\"exports\", \"@ember/component\", \"@ember/object/computed\", \"@ember/runloop\", \"@ember/template\", \"@ember-decorators/component\", \"discourse-common/utils/decorators\", \"discourse-i18n\", \"discourse/plugins/poll/lib/chart-colors\", \"discourse/plugins/poll/discourse/components/modal/poll-ui-builder\", \"@ember/template-factory\"], function (_exports, _component, _computed, _runloop, _template, _component2, _decorators, _discourseI18n, _chartColors, _pollUiBuilder, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <label class=\"poll-breakdown-chart-label\">{{@group}}</label>\n  <canvas class=\"poll-breakdown-chart-chart\"></canvas>\n  */\n  {\n    \"id\": \"oqA5wA7R\",\n    \"block\": \"[[[10,\\\"label\\\"],[14,0,\\\"poll-breakdown-chart-label\\\"],[12],[1,[30,1]],[13],[1,\\\"\\\\n\\\"],[10,\\\"canvas\\\"],[14,0,\\\"poll-breakdown-chart-chart\\\"],[12],[13]],[\\\"@group\\\"],false,[]]\",\n    \"moduleName\": \"discourse/plugins/poll/discourse/components/poll-breakdown-chart.hbs\",\n    \"isStrictMode\": false\n  });\n  const PollBreakdownChart = dt7948.c(class PollBreakdownChart extends _component.default {\n    // Arguments:\n    group = null;\n    options = null;\n    displayMode = null;\n    highlightedOption = null;\n    setHighlightedOption = null;\n    static #_ = (() => dt7948.g(this.prototype, \"data\", [(0, _computed.mapBy)(\"options\", \"votes\")]))();\n    #data = (() => (dt7948.i(this, \"data\"), void 0))();\n    _optionToSlice = null;\n    _previousHighlightedSliceIndex = null;\n    _previousDisplayMode = null;\n    init() {\n      super.init(...arguments);\n      this._optionToSlice = {};\n    }\n    didInsertElement() {\n      super.didInsertElement(...arguments);\n      const canvas = this.element.querySelector(\"canvas\");\n      this._chart = new window.Chart(canvas.getContext(\"2d\"), this.chartConfig);\n    }\n    didReceiveAttrs() {\n      super.didReceiveAttrs(...arguments);\n      if (this._chart) {\n        this._updateDisplayMode();\n        this._updateHighlight();\n      }\n    }\n    willDestroy() {\n      super.willDestroy(...arguments);\n      if (this._chart) {\n        this._chart.destroy();\n      }\n    }\n    colorStyle(optionColors, index) {\n      return (0, _template.htmlSafe)(`background: ${optionColors[index]};`);\n    }\n    static #_2 = (() => dt7948.n(this.prototype, \"colorStyle\", [(0, _decorators.default)(\"optionColors\", \"index\")]))();\n    chartConfig(data, displayMode) {\n      const transformedData = [];\n      let counter = 0;\n      this._optionToSlice = {};\n      data.forEach((votes, index) => {\n        if (votes > 0) {\n          transformedData.push(votes);\n          this._optionToSlice[index] = counter++;\n        }\n      });\n      const totalVotes = transformedData.reduce((sum, votes) => sum + votes, 0);\n      const colors = (0, _chartColors.getColors)(data.length).filter((color, index) => data[index] > 0);\n      return {\n        type: _pollUiBuilder.PIE_CHART_TYPE,\n        plugins: [window.ChartDataLabels],\n        data: {\n          datasets: [{\n            data: transformedData,\n            backgroundColor: colors,\n            // TODO: It's a workaround for Chart.js' terrible hover styling.\n            // It will break on non-white backgrounds.\n            // Should be updated after #10341 lands\n            hoverBorderColor: \"#fff\"\n          }]\n        },\n        options: {\n          plugins: {\n            tooltip: false,\n            datalabels: {\n              color: \"#333\",\n              backgroundColor: \"rgba(255, 255, 255, 0.5)\",\n              borderRadius: 2,\n              font: {\n                family: getComputedStyle(document.body).fontFamily,\n                size: 16\n              },\n              padding: {\n                top: 2,\n                right: 6,\n                bottom: 2,\n                left: 6\n              },\n              formatter(votes) {\n                if (displayMode !== \"percentage\") {\n                  return votes;\n                }\n                const percent = _discourseI18n.default.toNumber(votes / totalVotes * 100.0, {\n                  precision: 1\n                });\n                return `${percent}%`;\n              }\n            }\n          },\n          responsive: true,\n          aspectRatio: 1.1,\n          animation: {\n            duration: 0\n          },\n          // wrapping setHighlightedOption in next block as hover can create many events\n          // prevents two sets to happen in the same computation\n          onHover: (event, activeElements) => {\n            if (!activeElements.length) {\n              (0, _runloop.next)(() => {\n                this.setHighlightedOption(null);\n              });\n              return;\n            }\n            const sliceIndex = activeElements[0].index;\n            const optionIndex = Object.keys(this._optionToSlice).find(option => this._optionToSlice[option] === sliceIndex);\n            (0, _runloop.next)(() => {\n              this.setHighlightedOption(Number(optionIndex));\n            });\n          }\n        }\n      };\n    }\n    static #_3 = (() => dt7948.n(this.prototype, \"chartConfig\", [(0, _decorators.default)(\"data\", \"displayMode\")]))();\n    _updateDisplayMode() {\n      if (this.displayMode !== this._previousDisplayMode) {\n        const config = this.chartConfig;\n        this._chart.data.datasets = config.data.datasets;\n        this._chart.options = config.options;\n        this._chart.update();\n        this._previousDisplayMode = this.displayMode;\n      }\n    }\n    _updateHighlight() {\n      const activeElements = [];\n      if (this.highlightedOption) {\n        const index = this._optionToSlice[this.highlightedOption];\n        if (index !== undefined) {\n          activeElements.push({\n            datasetIndex: 0,\n            index\n          });\n        }\n      }\n      this._chart.setActiveElements(activeElements);\n      this._chart.update();\n    }\n  }, [(0, _component2.classNames)(\"poll-breakdown-chart-container\")]);\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, PollBreakdownChart);\n});","define(\"discourse/plugins/poll/discourse/components/poll-breakdown-option\", [\"exports\", \"@ember/component\", \"@ember/object/computed\", \"@ember/template\", \"@ember-decorators/component\", \"discourse/lib/computed\", \"discourse-common/utils/decorators\", \"discourse-i18n\", \"discourse/plugins/poll/lib/chart-colors\", \"@ember/template-factory\"], function (_exports, _component, _computed, _template, _component2, _computed2, _decorators, _discourseI18n, _chartColors, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const __COLOCATED_TEMPLATE__ = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <li\n    class=\"poll-breakdown-option\"\n    style={{this.colorBackgroundStyle}}\n    {{on \"mouseover\" @onMouseOver}}\n    {{on \"mouseout\" @onMouseOut}}\n    role=\"button\"\n  >\n    <span\n      class=\"poll-breakdown-option-color\"\n      style={{this.colorPreviewStyle}}\n    ></span>\n  \n    <span class=\"poll-breakdown-option-count\">\n      {{#if this.showPercentage}}\n        {{this.percent}}%\n      {{else}}\n        {{@option.votes}}\n      {{/if}}\n    </span>\n    <span class=\"poll-breakdown-option-text\">{{html-safe @option.html}}</span>\n  </li>\n  */\n  {\n    \"id\": \"NTR1m1S2\",\n    \"block\": \"[[[11,\\\"li\\\"],[24,0,\\\"poll-breakdown-option\\\"],[16,5,[30,0,[\\\"colorBackgroundStyle\\\"]]],[24,\\\"role\\\",\\\"button\\\"],[4,[38,0],[\\\"mouseover\\\",[30,1]],null],[4,[38,0],[\\\"mouseout\\\",[30,2]],null],[12],[1,\\\"\\\\n  \\\"],[10,1],[14,0,\\\"poll-breakdown-option-color\\\"],[15,5,[30,0,[\\\"colorPreviewStyle\\\"]]],[12],[13],[1,\\\"\\\\n\\\\n  \\\"],[10,1],[14,0,\\\"poll-breakdown-option-count\\\"],[12],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"showPercentage\\\"]],[[[1,\\\"      \\\"],[1,[30,0,[\\\"percent\\\"]]],[1,\\\"%\\\\n\\\"]],[]],[[[1,\\\"      \\\"],[1,[30,3,[\\\"votes\\\"]]],[1,\\\"\\\\n\\\"]],[]]],[1,\\\"  \\\"],[13],[1,\\\"\\\\n  \\\"],[10,1],[14,0,\\\"poll-breakdown-option-text\\\"],[12],[1,[28,[35,2],[[30,3,[\\\"html\\\"]]],null]],[13],[1,\\\"\\\\n\\\"],[13]],[\\\"@onMouseOver\\\",\\\"@onMouseOut\\\",\\\"@option\\\"],false,[\\\"on\\\",\\\"if\\\",\\\"html-safe\\\"]]\",\n    \"moduleName\": \"discourse/plugins/poll/discourse/components/poll-breakdown-option.hbs\",\n    \"isStrictMode\": false\n  });\n  const PollBreakdownOption = dt7948.c(class PollBreakdownOption extends _component.default {\n    // Arguments:\n    option = null;\n    index = null;\n    totalVotes = null;\n    optionsCount = null;\n    displayMode = null;\n    highlightedOption = null;\n    onMouseOver = null;\n    onMouseOut = null;\n    static #_ = (() => dt7948.g(this.prototype, \"highlighted\", [(0, _computed2.propertyEqual)(\"highlightedOption\", \"index\")]))();\n    #highlighted = (() => (dt7948.i(this, \"highlighted\"), void 0))();\n    static #_2 = (() => dt7948.g(this.prototype, \"showPercentage\", [(0, _computed.equal)(\"displayMode\", \"percentage\")]))();\n    #showPercentage = (() => (dt7948.i(this, \"showPercentage\"), void 0))();\n    percent(votes, total) {\n      return _discourseI18n.default.toNumber(votes / total * 100.0, {\n        precision: 1\n      });\n    }\n    static #_3 = (() => dt7948.n(this.prototype, \"percent\", [(0, _decorators.default)(\"option.votes\", \"totalVotes\")]))();\n    optionColors(optionsCount) {\n      return (0, _chartColors.getColors)(optionsCount);\n    }\n    static #_4 = (() => dt7948.n(this.prototype, \"optionColors\", [(0, _decorators.default)(\"optionsCount\")]))();\n    colorBackgroundStyle(highlighted) {\n      if (highlighted) {\n        // TODO: Use CSS variables (#10341)\n        return (0, _template.htmlSafe)(\"background: rgba(0, 0, 0, 0.1);\");\n      }\n    }\n    static #_5 = (() => dt7948.n(this.prototype, \"colorBackgroundStyle\", [(0, _decorators.default)(\"highlighted\")]))();\n    colorPreviewStyle(highlighted, optionColors, index) {\n      const color = highlighted ? window.Chart.helpers.getHoverColor(optionColors[index]) : optionColors[index];\n      return (0, _template.htmlSafe)(`background: ${color};`);\n    }\n    static #_6 = (() => dt7948.n(this.prototype, \"colorPreviewStyle\", [(0, _decorators.default)(\"highlighted\", \"optionColors\", \"index\")]))();\n  }, [(0, _component2.tagName)(\"\")]);\n  var _default = _exports.default = (0, _component.setComponentTemplate)(__COLOCATED_TEMPLATE__, PollBreakdownOption);\n});","define(\"discourse/plugins/poll/discourse/initializers/add-poll-ui-builder\", [\"exports\", \"discourse/lib/plugin-api\", \"discourse/plugins/poll/discourse/components/modal/poll-ui-builder\"], function (_exports, _pluginApi, _pollUiBuilder) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  function initializePollUIBuilder(api) {\n    api.addComposerToolbarPopupMenuOption({\n      action: toolbarEvent => {\n        api.container.lookup(\"service:modal\").show(_pollUiBuilder.default, {\n          model: {\n            toolbarEvent\n          }\n        });\n      },\n      icon: \"chart-bar\",\n      label: \"poll.ui_builder.title\",\n      condition: composer => {\n        const siteSettings = api.container.lookup(\"service:site-settings\");\n        const currentUser = api.getCurrentUser();\n        return siteSettings.poll_enabled && (composer.model.topic?.pm_with_non_human_user || currentUser && (currentUser.staff || currentUser.can_create_poll));\n      }\n    });\n  }\n  var _default = _exports.default = {\n    name: \"add-poll-ui-builder\",\n    initialize() {\n      (0, _pluginApi.withPluginApi)(\"1.14.0\", initializePollUIBuilder);\n    }\n  };\n});","define(\"discourse/plugins/poll/discourse/initializers/extend-for-poll\", [\"exports\", \"@ember/object\", \"discourse/lib/plugin-api\", \"discourse/widgets/glue\", \"discourse-common/lib/get-owner\", \"discourse-common/utils/decorators\"], function (_exports, _object, _pluginApi, _glue, _getOwner, _decorators) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const PLUGIN_ID = \"discourse-poll\";\n  let _glued = [];\n  let _interval = null;\n  function rerender() {\n    _glued.forEach(g => g.queueRerender());\n  }\n  function cleanUpPolls() {\n    if (_interval) {\n      clearInterval(_interval);\n      _interval = null;\n    }\n    _glued.forEach(g => g.cleanUp());\n    _glued = [];\n  }\n  function initializePolls(api) {\n    const register = (0, _getOwner.getRegister)(api),\n      pollGroupableUserFields = api.container.lookup(\"service:site-settings\").poll_groupable_user_fields;\n    cleanUpPolls();\n    api.modifyClass(\"controller:topic\", dt7948.p({\n      pluginId: PLUGIN_ID,\n      subscribe() {\n        this._super(...arguments);\n        this.messageBus.subscribe(`/polls/${this.model.id}`, this._onPollMessage);\n      },\n      unsubscribe() {\n        this.messageBus.unsubscribe(\"/polls/*\", this._onPollMessage);\n        this._super(...arguments);\n      },\n      _onPollMessage(msg) {\n        const post = this.get(\"model.postStream\").findLoadedPost(msg.post_id);\n        post?.set(\"polls\", msg.polls);\n      }\n    }, [[\"method\", \"_onPollMessage\", [_decorators.bind]]]));\n    api.modifyClass(\"model:post\", dt7948.p({\n      pluginId: PLUGIN_ID,\n      _polls: null,\n      pollsObject: null,\n      pollsChanged() {\n        const polls = this.polls;\n        if (polls) {\n          this._polls = this._polls || {};\n          polls.forEach(p => {\n            const existing = this._polls[p.name];\n            if (existing) {\n              this._polls[p.name].setProperties(p);\n            } else {\n              this._polls[p.name] = _object.default.create(p);\n            }\n          });\n          this.set(\"pollsObject\", this._polls);\n          rerender();\n        }\n      }\n    }, [[\"method\", \"pollsChanged\", [(0, _decorators.observes)(\"polls\")]]]));\n    function attachPolls(elem, helper) {\n      let pollNodes = [...elem.querySelectorAll(\".poll\")];\n      pollNodes = pollNodes.filter(node => node.parentNode.tagName !== \"BLOCKQUOTE\");\n      if (!pollNodes.length || !helper) {\n        return;\n      }\n      const post = helper.getModel();\n      api.preventCloak(post.id);\n      post.pollsChanged();\n      const polls = post.pollsObject || {};\n      const votes = post.polls_votes || {};\n      _interval = _interval || setInterval(rerender, 30000);\n      pollNodes.forEach(pollNode => {\n        const pollName = pollNode.dataset.pollName;\n        let poll = polls[pollName];\n        let pollPost = post;\n        let vote = votes[pollName] || [];\n        const quotedId = pollNode.closest(\".expanded-quote\")?.dataset.postId;\n        if (quotedId && post.quoted[quotedId]) {\n          pollPost = post.quoted[quotedId];\n          pollPost = _object.default.create(pollPost);\n          poll = _object.default.create(pollPost.polls.findBy(\"name\", pollName));\n          vote = pollPost.polls_votes || {};\n          vote = vote[pollName] || [];\n        }\n        if (poll) {\n          const titleElement = pollNode.querySelector(\".poll-title\");\n          const attrs = {\n            id: `${pollName}-${pollPost.id}`,\n            post: pollPost,\n            poll,\n            vote,\n            hasSavedVote: vote.length > 0,\n            titleHTML: titleElement?.outerHTML,\n            groupableUserFields: (pollGroupableUserFields || \"\").split(\"|\").filter(Boolean),\n            _postCookedWidget: helper.widget\n          };\n          const glue = new _glue.default(\"discourse-poll\", register, attrs);\n          glue.appendTo(pollNode);\n          _glued.push(glue);\n        }\n      });\n    }\n    api.includePostAttributes(\"polls\", \"polls_votes\");\n    api.decorateCookedElement(attachPolls, {\n      onlyStream: true\n    });\n    api.cleanupStream(cleanUpPolls);\n    const siteSettings = api.container.lookup(\"service:site-settings\");\n    if (siteSettings.poll_enabled) {\n      api.addSearchSuggestion(\"in:polls\");\n    }\n  }\n  var _default = _exports.default = {\n    name: \"extend-for-poll\",\n    initialize() {\n      (0, _pluginApi.withPluginApi)(\"0.8.7\", initializePolls);\n    }\n  };\n});","define(\"discourse/plugins/poll/discourse/widgets/discourse-poll\", [\"exports\", \"@ember/application\", \"virtual-dom\", \"discourse/lib/ajax\", \"discourse/lib/ajax-error\", \"discourse/lib/formatter\", \"discourse/lib/load-script\", \"discourse/lib/local-dates\", \"discourse/lib/round\", \"discourse/widgets/post\", \"discourse/widgets/raw-html\", \"discourse/widgets/widget\", \"discourse-common/lib/icon-library\", \"discourse-i18n\", \"discourse/plugins/poll/lib/chart-colors\", \"discourse/plugins/poll/lib/even-round\", \"discourse/plugins/poll/discourse/components/modal/poll-breakdown\", \"discourse/plugins/poll/discourse/components/modal/poll-ui-builder\"], function (_exports, _application, _virtualDom, _ajax, _ajaxError, _formatter, _loadScript, _localDates, _round, _post, _rawHtml, _widget, _iconLibrary, _discourseI18n, _chartColors, _evenRound, _pollBreakdown, _pollUiBuilder) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  const FETCH_VOTERS_COUNT = 25;\n  const buttonOptionsMap = {\n    exportResults: {\n      className: \"btn-default export-results\",\n      label: \"poll.export-results.label\",\n      title: \"poll.export-results.title\",\n      icon: \"download\",\n      action: \"exportResults\"\n    },\n    showBreakdown: {\n      className: \"btn-default show-breakdown\",\n      label: \"poll.breakdown.breakdown\",\n      icon: \"chart-pie\",\n      action: \"showBreakdown\"\n    },\n    openPoll: {\n      className: \"btn-default toggle-status\",\n      label: \"poll.open.label\",\n      title: \"poll.open.title\",\n      icon: \"unlock-alt\",\n      action: \"toggleStatus\"\n    },\n    closePoll: {\n      className: \"btn-default toggle-status\",\n      label: \"poll.close.label\",\n      title: \"poll.close.title\",\n      icon: \"lock\",\n      action: \"toggleStatus\"\n    }\n  };\n  function optionHtml(option) {\n    let siteSettings = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    const el = document.createElement(\"span\");\n    el.innerHTML = option.html;\n    (0, _localDates.applyLocalDates)(el.querySelectorAll(\".discourse-local-date\"), siteSettings);\n    return new _rawHtml.default({\n      html: `<span>${el.innerHTML}</span>`\n    });\n  }\n  function checkUserGroups(user, poll) {\n    const pollGroups = poll && poll.groups && poll.groups.split(\",\").map(g => g.toLowerCase());\n    if (!pollGroups) {\n      return true;\n    }\n    const userGroups = user && user.groups && user.groups.map(g => g.name.toLowerCase());\n    return userGroups && pollGroups.some(g => userGroups.includes(g));\n  }\n  (0, _widget.createWidget)(\"discourse-poll-option\", {\n    tagName: \"li\",\n    buildAttributes(attrs) {\n      return {\n        tabindex: 0,\n        \"data-poll-option-id\": attrs.option.id\n      };\n    },\n    html(attrs) {\n      const contents = [];\n      const {\n        option,\n        vote\n      } = attrs;\n      const chosen = vote.includes(option.id);\n      if (attrs.isMultiple) {\n        contents.push((0, _iconLibrary.iconNode)(chosen ? \"far-check-square\" : \"far-square\"));\n      } else {\n        contents.push((0, _iconLibrary.iconNode)(chosen ? \"circle\" : \"far-circle\"));\n      }\n      contents.push(\" \");\n      contents.push(optionHtml(option, this.siteSettings));\n      return contents;\n    },\n    click(e) {\n      if (!e.target.closest(\"a\")) {\n        this.sendWidgetAction(\"toggleOption\", this.attrs.option);\n      }\n    },\n    keyDown(e) {\n      if (e.key === \"Enter\") {\n        this.click(e);\n      }\n    }\n  });\n  (0, _widget.createWidget)(\"discourse-poll-load-more\", {\n    tagName: \"div.poll-voters-toggle-expand\",\n    buildKey: attrs => `load-more-${attrs.optionId}`,\n    defaultState() {\n      return {\n        loading: false\n      };\n    },\n    html(attrs, state) {\n      return state.loading ? (0, _virtualDom.h)(\"div.spinner.small\") : (0, _virtualDom.h)(\"a\", (0, _iconLibrary.iconNode)(\"chevron-down\"));\n    },\n    click() {\n      const {\n        state,\n        attrs\n      } = this;\n      if (state.loading) {\n        return;\n      }\n      state.loading = true;\n      return this.sendWidgetAction(\"fetchVoters\", attrs.optionId).finally(() => state.loading = false);\n    }\n  });\n  (0, _widget.createWidget)(\"discourse-poll-voters\", {\n    tagName: \"ul.poll-voters-list\",\n    buildKey: attrs => `poll-voters-${attrs.optionId}`,\n    html(attrs) {\n      const contents = attrs.voters.map(user => (0, _virtualDom.h)(\"li\", [(0, _post.avatarFor)(\"tiny\", {\n        username: user.username,\n        template: user.avatar_template\n      }), \" \"]));\n      if (attrs.voters.length < attrs.totalVotes) {\n        contents.push(this.attach(\"discourse-poll-load-more\", attrs));\n      }\n      return (0, _virtualDom.h)(\"div.poll-voters\", contents);\n    }\n  });\n  (0, _widget.createWidget)(\"discourse-poll-standard-results\", {\n    tagName: \"ul.results\",\n    buildKey: attrs => `poll-standard-results-${attrs.id}`,\n    html(attrs) {\n      const {\n        poll\n      } = attrs;\n      const options = poll.options;\n      if (options) {\n        const voters = poll.voters;\n        const isPublic = poll.public;\n        const ordered = [...options].sort((a, b) => {\n          if (a.votes < b.votes) {\n            return 1;\n          } else if (a.votes === b.votes) {\n            if (a.html < b.html) {\n              return -1;\n            } else {\n              return 1;\n            }\n          } else {\n            return -1;\n          }\n        });\n        const percentages = voters === 0 ? Array(ordered.length).fill(0) : ordered.map(o => 100 * o.votes / voters);\n        const rounded = attrs.isMultiple ? percentages.map(Math.floor) : (0, _evenRound.default)(percentages);\n        return ordered.map((option, idx) => {\n          const contents = [];\n          const per = rounded[idx].toString();\n          const chosen = (attrs.vote || []).includes(option.id);\n          contents.push((0, _virtualDom.h)(\"div.option\", (0, _virtualDom.h)(\"p\", [(0, _virtualDom.h)(\"span.percentage\", `${per}%`), optionHtml(option, this.siteSettings)])));\n          contents.push((0, _virtualDom.h)(\"div.bar-back\", (0, _virtualDom.h)(\"div.bar\", {\n            attributes: {\n              style: `width:${per}%`\n            }\n          })));\n          if (isPublic) {\n            contents.push(this.attach(\"discourse-poll-voters\", {\n              postId: attrs.post.id,\n              optionId: option.id,\n              pollName: poll.name,\n              totalVotes: option.votes,\n              voters: attrs.voters && attrs.voters[option.id] || []\n            }));\n          }\n          return (0, _virtualDom.h)(\"li\", {\n            className: `${chosen ? \"chosen\" : \"\"}`\n          }, contents);\n        });\n      }\n    }\n  });\n  (0, _widget.createWidget)(\"discourse-poll-number-results\", {\n    buildKey: attrs => `poll-number-results-${attrs.id}`,\n    html(attrs) {\n      const {\n        poll\n      } = attrs;\n      const totalScore = poll.options.reduce((total, o) => {\n        return total + parseInt(o.html, 10) * parseInt(o.votes, 10);\n      }, 0);\n      const voters = poll.voters;\n      const average = voters === 0 ? 0 : (0, _round.default)(totalScore / voters, -2);\n      const averageRating = _discourseI18n.default.t(\"poll.average_rating\", {\n        average\n      });\n      const contents = [(0, _virtualDom.h)(\"div.poll-results-number-rating\", new _rawHtml.default({\n        html: `<span>${averageRating}</span>`\n      }))];\n      if (poll.public) {\n        contents.push(this.attach(\"discourse-poll-voters\", {\n          totalVotes: poll.voters,\n          voters: attrs.voters || [],\n          postId: attrs.post.id,\n          pollName: poll.name,\n          pollType: poll.type\n        }));\n      }\n      return contents;\n    }\n  });\n  (0, _widget.createWidget)(\"discourse-poll-container\", {\n    tagName: \"div.poll-container\",\n    buildKey: attrs => `poll-container-${attrs.id}`,\n    services: [\"dialog\"],\n    defaultState() {\n      return {\n        voters: []\n      };\n    },\n    html(attrs, state) {\n      const {\n        poll\n      } = attrs;\n      const options = poll.options;\n      if (attrs.showResults) {\n        const contents = [];\n        if (attrs.titleHTML) {\n          contents.push(new _rawHtml.default({\n            html: attrs.titleHTML\n          }));\n        }\n        if (poll.public) {\n          state.voters = poll.preloaded_voters;\n        }\n        const type = poll.type === \"number\" ? \"number\" : \"standard\";\n        const resultsWidget = type === \"number\" || attrs.poll.chart_type !== _pollUiBuilder.PIE_CHART_TYPE ? `discourse-poll-${type}-results` : \"discourse-poll-pie-chart\";\n        contents.push(this.attach(resultsWidget, {\n          ...attrs,\n          voters: state.voters\n        }));\n        return contents;\n      } else if (options) {\n        const contents = [];\n        if (attrs.titleHTML) {\n          contents.push(new _rawHtml.default({\n            html: attrs.titleHTML\n          }));\n        }\n        if (!checkUserGroups(this.currentUser, poll)) {\n          contents.push((0, _virtualDom.h)(\"div.alert.alert-danger\", _discourseI18n.default.t(\"poll.results.groups.title\", {\n            groups: poll.groups\n          })));\n        }\n        contents.push((0, _virtualDom.h)(\"ul\", options.map(option => {\n          return this.attach(\"discourse-poll-option\", {\n            option,\n            isMultiple: attrs.isMultiple,\n            vote: attrs.vote\n          });\n        })));\n        return contents;\n      }\n    },\n    fetchVoters(optionId) {\n      const {\n        attrs,\n        state\n      } = this;\n      let votersCount;\n      if (optionId) {\n        if (!state.voters) {\n          state.voters = {};\n        }\n        if (!state.voters[optionId]) {\n          state.voters[optionId] = [];\n        }\n        votersCount = state.voters[optionId].length;\n      } else {\n        if (!state.voters) {\n          state.voters = [];\n        }\n        votersCount = state.voters.length;\n      }\n      return (0, _ajax.ajax)(\"/polls/voters.json\", {\n        data: {\n          post_id: attrs.post.id,\n          poll_name: attrs.poll.name,\n          option_id: optionId,\n          page: Math.floor(votersCount / FETCH_VOTERS_COUNT) + 1,\n          limit: FETCH_VOTERS_COUNT\n        }\n      }).then(result => {\n        const voters = optionId ? state.voters[optionId] : state.voters;\n        const newVoters = optionId ? result.voters[optionId] : result.voters;\n        const votersSet = new Set(voters.map(voter => voter.username));\n        newVoters.forEach(voter => {\n          if (!votersSet.has(voter.username)) {\n            votersSet.add(voter.username);\n            voters.push(voter);\n          }\n        });\n\n        // remove users who changed their vote\n        if (attrs.poll.type === \"regular\") {\n          Object.keys(state.voters).forEach(otherOptionId => {\n            if (optionId !== otherOptionId) {\n              state.voters[otherOptionId] = state.voters[otherOptionId].filter(voter => !votersSet.has(voter.username));\n            }\n          });\n        }\n        this.scheduleRerender();\n      }).catch(error => {\n        if (error) {\n          (0, _ajaxError.popupAjaxError)(error);\n        } else {\n          this.dialog.alert(_discourseI18n.default.t(\"poll.error_while_fetching_voters\"));\n        }\n      });\n    }\n  });\n  (0, _widget.createWidget)(\"discourse-poll-info\", {\n    tagName: \"div.poll-info\",\n    multipleHelpText(min, max, options) {\n      if (max > 0) {\n        if (min === max) {\n          if (min > 1) {\n            return _discourseI18n.default.t(\"poll.multiple.help.x_options\", {\n              count: min\n            });\n          }\n        } else if (min > 1) {\n          if (max < options) {\n            return _discourseI18n.default.t(\"poll.multiple.help.between_min_and_max_options\", {\n              min,\n              max\n            });\n          } else {\n            return _discourseI18n.default.t(\"poll.multiple.help.at_least_min_options\", {\n              count: min\n            });\n          }\n        } else if (max <= options) {\n          return _discourseI18n.default.t(\"poll.multiple.help.up_to_max_options\", {\n            count: max\n          });\n        }\n      }\n    },\n    html(attrs) {\n      const {\n        poll,\n        post\n      } = attrs;\n      const closed = attrs.isClosed;\n      const isStaff = this.currentUser && this.currentUser.staff;\n      const isMe = this.currentUser && post.user_id === this.currentUser.id;\n      const count = poll.voters;\n      const contents = [(0, _virtualDom.h)(\"div.poll-info_counts-count\", [(0, _virtualDom.h)(\"span.info-number\", count.toString()), (0, _virtualDom.h)(\"span.info-label\", _discourseI18n.default.t(\"poll.voters\", {\n        count\n      }))])];\n      const instructions = [];\n      if (attrs.isMultiple) {\n        if (attrs.showResults || attrs.isClosed) {\n          const totalVotes = poll.options.reduce((total, o) => {\n            return total + parseInt(o.votes, 10);\n          }, 0);\n          contents.push((0, _virtualDom.h)(\"div.poll-info_counts-count\", [(0, _virtualDom.h)(\"span.info-number\", totalVotes.toString()), (0, _virtualDom.h)(\"span.info-label\", _discourseI18n.default.t(\"poll.total_votes\", {\n            count: totalVotes\n          }))]));\n        } else {\n          const help = this.multipleHelpText(attrs.min, attrs.max, poll.options.length);\n          if (help) {\n            instructions.push(new _rawHtml.default({\n              html: `<li>\n                      ${(0, _iconLibrary.iconHTML)(\"list-ul\")}\n                      <span>${help}</span>\n                     </li>`\n            }));\n          }\n        }\n      }\n      if (poll.close) {\n        const closeDate = moment.utc(poll.close, \"YYYY-MM-DD HH:mm:ss Z\");\n        if (closeDate.isValid()) {\n          const title = closeDate.format(\"LLL\");\n          let label;\n          let icon;\n          if (attrs.isAutomaticallyClosed) {\n            const age = (0, _formatter.relativeAge)(closeDate.toDate(), {\n              addAgo: true\n            });\n            label = _discourseI18n.default.t(\"poll.automatic_close.age\", {\n              age\n            });\n            icon = \"lock\";\n          } else {\n            const timeLeft = moment().to(closeDate, true);\n            label = _discourseI18n.default.t(\"poll.automatic_close.closes_in\", {\n              timeLeft\n            });\n            icon = \"far-clock\";\n          }\n          instructions.push(new _rawHtml.default({\n            html: `<li title=\"${title}\">\n                    ${(0, _iconLibrary.iconHTML)(icon)}\n                    <span>${label}</span>\n                   </li>`\n          }));\n        }\n      }\n      let infoText;\n      if (poll.results === \"on_vote\" && !attrs.hasVoted && !isMe) {\n        infoText = new _rawHtml.default({\n          html: `<li>\n                ${(0, _iconLibrary.iconHTML)(\"check\")}\n                <span>${_discourseI18n.default.t(\"poll.results.vote.title\")}</span>\n               </li>`\n        });\n      } else if (poll.results === \"on_close\" && !closed) {\n        infoText = new _rawHtml.default({\n          html: `<li>\n                ${(0, _iconLibrary.iconHTML)(\"lock\")}\n                <span>${_discourseI18n.default.t(\"poll.results.closed.title\")}</span>\n               </li>`\n        });\n      } else if (poll.results === \"staff_only\" && !isStaff) {\n        infoText = new _rawHtml.default({\n          html: `<li>\n                ${(0, _iconLibrary.iconHTML)(\"shield-alt\")}\n                <span>${_discourseI18n.default.t(\"poll.results.staff.title\")}</span>\n               </li>`\n        });\n      }\n      if (infoText) {\n        instructions.push(infoText);\n      }\n      if (!attrs.isClosed && !attrs.showResults && poll.public && poll.results !== \"staff_only\") {\n        instructions.push(new _rawHtml.default({\n          html: `<li>\n                  ${(0, _iconLibrary.iconHTML)(\"far-eye\")}\n                  <span>${_discourseI18n.default.t(\"poll.public.title\")}</span>\n                 </li>`\n        }));\n      }\n      return [(0, _virtualDom.h)(\"div.poll-info_counts\", contents), (0, _virtualDom.h)(\"ul.poll-info_instructions\", instructions)];\n    }\n  });\n  function clearPieChart(id) {\n    let el = document.querySelector(`#poll-results-chart-${id}`);\n    el && el.parentNode.removeChild(el);\n  }\n  (0, _widget.createWidget)(\"discourse-poll-pie-canvas\", {\n    tagName: \"canvas.poll-results-canvas\",\n    init(attrs) {\n      (0, _loadScript.default)(\"/javascripts/Chart.min.js\").then(() => {\n        const data = attrs.poll.options.mapBy(\"votes\");\n        const labels = attrs.poll.options.mapBy(\"html\");\n        const config = pieChartConfig(data, labels, {\n          legendContainerId: `poll-results-legend-${attrs.id}`\n        });\n        const el = document.getElementById(`poll-results-chart-${attrs.id}`);\n        // eslint-disable-next-line no-undef\n        this._chart = new Chart(el.getContext(\"2d\"), config);\n      });\n    },\n    willRerenderWidget() {\n      this._chart?.destroy();\n    },\n    buildAttributes(attrs) {\n      return {\n        id: `poll-results-chart-${attrs.id}`\n      };\n    }\n  });\n  (0, _widget.createWidget)(\"discourse-poll-pie-chart\", {\n    tagName: \"div.poll-results-chart\",\n    html(attrs) {\n      const contents = [];\n      if (!attrs.showResults) {\n        clearPieChart(attrs.id);\n        return contents;\n      }\n      const chart = this.attach(\"discourse-poll-pie-canvas\", attrs);\n      contents.push(chart);\n      contents.push((0, _virtualDom.h)(`ul#poll-results-legend-${attrs.id}.pie-chart-legends`));\n      return contents;\n    }\n  });\n  const htmlLegendPlugin = {\n    id: \"htmlLegend\",\n    afterUpdate(chart, args, options) {\n      const ul = document.getElementById(options.containerID);\n      ul.innerHTML = \"\";\n      const items = chart.options.plugins.legend.labels.generateLabels(chart);\n      items.forEach(item => {\n        const li = document.createElement(\"li\");\n        li.classList.add(\"legend\");\n        li.onclick = () => {\n          chart.toggleDataVisibility(item.index);\n          chart.update();\n        };\n        const boxSpan = document.createElement(\"span\");\n        boxSpan.classList.add(\"swatch\");\n        boxSpan.style.background = item.fillStyle;\n        const textContainer = document.createElement(\"span\");\n        textContainer.style.color = item.fontColor;\n        textContainer.innerHTML = item.text;\n        if (!chart.getDataVisibility(item.index)) {\n          li.style.opacity = 0.2;\n        } else {\n          li.style.opacity = 1.0;\n        }\n        li.appendChild(boxSpan);\n        li.appendChild(textContainer);\n        ul.appendChild(li);\n      });\n    }\n  };\n  function pieChartConfig(data, labels) {\n    let opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    const aspectRatio = \"aspectRatio\" in opts ? opts.aspectRatio : 2.2;\n    const strippedLabels = labels.map(l => stripHtml(l));\n    return {\n      type: _pollUiBuilder.PIE_CHART_TYPE,\n      data: {\n        datasets: [{\n          data,\n          backgroundColor: (0, _chartColors.getColors)(data.length)\n        }],\n        labels: strippedLabels\n      },\n      plugins: [htmlLegendPlugin],\n      options: {\n        responsive: true,\n        aspectRatio,\n        animation: {\n          duration: 0\n        },\n        plugins: {\n          legend: {\n            labels: {\n              generateLabels() {\n                return labels.map((text, index) => {\n                  return {\n                    fillStyle: (0, _chartColors.getColors)(data.length)[index],\n                    text,\n                    index\n                  };\n                });\n              }\n            },\n            display: false\n          },\n          htmlLegend: {\n            containerID: opts?.legendContainerId\n          }\n        }\n      }\n    };\n  }\n  function stripHtml(html) {\n    let doc = new DOMParser().parseFromString(html, \"text/html\");\n    return doc.body.textContent || \"\";\n  }\n  (0, _widget.createWidget)(\"discourse-poll-buttons-dropdown\", {\n    tagName: \"div.poll-buttons-dropdown\",\n    buildId(attrs) {\n      return `poll-buttons-dropdown-${attrs.id}`;\n    },\n    transform(attrs) {\n      return {\n        content: this._buildContent(attrs),\n        onChange: item => this.sendWidgetAction(item.id, item.param)\n      };\n    },\n    template: function (attrs, state) {\n      var _r = [];\n      _r.push(\"\\n  \");\n      _r.push(this.attach(\"widget-dropdown\", {\n        \"id\": this.attrs.id,\n        \"icon\": \"cog\",\n        \"label\": \"poll.options.label\",\n        \"content\": this.transformed.content,\n        \"onChange\": this.transformed.onChange,\n        \"options\": this.transformed.options\n      }, undefined, undefined));\n      _r.push(\"\\n\");\n      return _r;\n    },\n    optionsCount(attrs) {\n      return this._buildContent(attrs).length;\n    },\n    _buildContent(attrs) {\n      const contents = [];\n      const isAdmin = this.currentUser && this.currentUser.admin;\n      const dataExplorerEnabled = this.siteSettings.data_explorer_enabled;\n      const exportQueryID = this.siteSettings.poll_export_data_explorer_query_id;\n      const {\n        poll,\n        post\n      } = attrs;\n      const closed = attrs.isClosed;\n      const isStaff = this.currentUser && this.currentUser.staff;\n      const topicArchived = post.get(\"topic.archived\");\n      if (attrs.groupableUserFields.length && poll.voters > 0) {\n        const option = {\n          ...buttonOptionsMap.showBreakdown\n        };\n        option.id = option.action;\n        contents.push(option);\n      }\n      if (isAdmin && dataExplorerEnabled && poll.voters > 0 && exportQueryID) {\n        const option = {\n          ...buttonOptionsMap.exportResults\n        };\n        option.id = option.action;\n        contents.push(option);\n      }\n      if (this.currentUser && (this.currentUser.id === post.user_id || isStaff) && !topicArchived) {\n        if (closed) {\n          if (!attrs.isAutomaticallyClosed) {\n            const option = {\n              ...buttonOptionsMap.openPoll\n            };\n            option.id = option.action;\n            contents.push(option);\n          }\n        } else {\n          const option = {\n            ...buttonOptionsMap.closePoll\n          };\n          option.id = option.action;\n          contents.push(option);\n        }\n      }\n      return contents;\n    }\n  });\n  (0, _widget.createWidget)(\"discourse-poll-buttons\", {\n    tagName: \"div.poll-buttons\",\n    html(attrs) {\n      const contents = [];\n      const {\n        poll,\n        post\n      } = attrs;\n      const topicArchived = post.get(\"topic.archived\");\n      const closed = attrs.isClosed;\n      const staffOnly = poll.results === \"staff_only\";\n      const isStaff = this.currentUser && this.currentUser.staff;\n      const isMe = this.currentUser && post.user_id === this.currentUser.id;\n      const hideResultsDisabled = !staffOnly && (closed || topicArchived);\n      const dropdown = this.attach(\"discourse-poll-buttons-dropdown\", attrs);\n      const dropdownOptionsCount = dropdown.optionsCount(attrs);\n      if (attrs.isMultiple && !hideResultsDisabled && !attrs.showResults) {\n        const castVotesDisabled = !attrs.canCastVotes;\n        contents.push(this.attach(\"button\", {\n          className: `cast-votes ${castVotesDisabled ? \"btn-default\" : \"btn-primary\"}`,\n          label: \"poll.cast-votes.label\",\n          title: \"poll.cast-votes.title\",\n          icon: castVotesDisabled ? \"far-square\" : \"check\",\n          disabled: castVotesDisabled,\n          action: \"castVotes\"\n        }));\n      }\n      if (attrs.showResults && !hideResultsDisabled) {\n        contents.push(this.attach(\"button\", {\n          className: \"btn-default toggle-results\",\n          label: \"poll.hide-results.label\",\n          title: \"poll.hide-results.title\",\n          icon: \"chevron-left\",\n          action: \"toggleResults\"\n        }));\n      }\n      if (!attrs.showResults && !hideResultsDisabled) {\n        let showResultsButton;\n        if (!(poll.results === \"on_vote\" && !attrs.hasVoted && !isMe) && !(poll.results === \"on_close\" && !closed) && !(poll.results === \"staff_only\" && !isStaff) && poll.voters > 0) {\n          showResultsButton = this.attach(\"button\", {\n            className: \"btn-default toggle-results\",\n            label: \"poll.show-results.label\",\n            title: \"poll.show-results.title\",\n            icon: \"chart-bar\",\n            action: \"toggleResults\"\n          });\n        }\n        if (attrs.hasSavedVote) {\n          contents.push(this.attach(\"button\", {\n            className: \"btn-default remove-vote\",\n            label: \"poll.remove-vote.label\",\n            title: \"poll.remove-vote.title\",\n            icon: \"undo\",\n            action: \"removeVote\"\n          }));\n        }\n        if (showResultsButton) {\n          contents.push(showResultsButton);\n        }\n      }\n\n      // only show the dropdown if there's more than 1 button\n      // otherwise just show the button\n      if (dropdownOptionsCount > 1) {\n        contents.push(dropdown);\n      } else if (dropdownOptionsCount === 1) {\n        const singleOptionId = dropdown._buildContent(attrs)[0].id;\n        let singleOption = buttonOptionsMap[singleOptionId];\n        if (singleOptionId === \"toggleStatus\") {\n          singleOption = closed ? buttonOptionsMap.openPoll : buttonOptionsMap.closePoll;\n        }\n        contents.push(this.attach(\"button\", singleOption));\n      }\n      return [contents];\n    }\n  });\n  var _default = _exports.default = (0, _widget.createWidget)(\"discourse-poll\", {\n    tagName: \"div\",\n    buildKey: attrs => `poll-${attrs.id}`,\n    services: [\"dialog\"],\n    buildAttributes(attrs) {\n      let cssClasses = \"poll\";\n      if (attrs.poll.chart_type === _pollUiBuilder.PIE_CHART_TYPE) {\n        cssClasses += \" pie\";\n      }\n      return {\n        class: cssClasses,\n        \"data-poll-name\": attrs.poll.name,\n        \"data-poll-type\": attrs.poll.type\n      };\n    },\n    defaultState(attrs) {\n      const {\n        poll\n      } = attrs;\n      const staffOnly = attrs.poll.results === \"staff_only\";\n      const showResults = poll.results !== \"on_close\" && this.hasVoted() && !staffOnly;\n      return {\n        loading: false,\n        showResults\n      };\n    },\n    html(attrs, state) {\n      const staffOnly = attrs.poll.results === \"staff_only\";\n      const showResults = state.showResults || attrs.post.get(\"topic.archived\") && !staffOnly || this.isClosed() && !staffOnly;\n      const newAttrs = {\n        ...attrs,\n        canCastVotes: this.canCastVotes(),\n        hasVoted: this.hasVoted(),\n        isAutomaticallyClosed: this.isAutomaticallyClosed(),\n        isClosed: this.isClosed(),\n        isMultiple: this.isMultiple(),\n        max: this.max(),\n        min: this.min(),\n        showResults\n      };\n      return [this.attach(\"discourse-poll-container\", newAttrs), this.attach(\"discourse-poll-info\", newAttrs), this.attach(\"discourse-poll-buttons\", newAttrs)];\n    },\n    min() {\n      let min = parseInt(this.attrs.poll.min, 10);\n      if (isNaN(min) || min < 0) {\n        min = 1;\n      }\n      return min;\n    },\n    max() {\n      let max = parseInt(this.attrs.poll.max, 10);\n      const numOptions = this.attrs.poll.options.length;\n      if (isNaN(max) || max > numOptions) {\n        max = numOptions;\n      }\n      return max;\n    },\n    isAutomaticallyClosed() {\n      const {\n        poll\n      } = this.attrs;\n      return poll.close && moment.utc(poll.close, \"YYYY-MM-DD HH:mm:ss Z\") <= moment();\n    },\n    isClosed() {\n      const {\n        poll\n      } = this.attrs;\n      return poll.status === \"closed\" || this.isAutomaticallyClosed();\n    },\n    isMultiple() {\n      const {\n        poll\n      } = this.attrs;\n      return poll.type === \"multiple\";\n    },\n    hasVoted() {\n      const {\n        vote\n      } = this.attrs;\n      return vote && vote.length > 0;\n    },\n    canCastVotes() {\n      const {\n        state,\n        attrs\n      } = this;\n      if (this.isClosed() || state.showResults || state.loading) {\n        return false;\n      }\n      const selectedOptionCount = attrs.vote.length;\n      if (this.isMultiple()) {\n        return selectedOptionCount >= this.min() && selectedOptionCount <= this.max();\n      }\n      return selectedOptionCount > 0;\n    },\n    toggleStatus() {\n      const {\n        state,\n        attrs\n      } = this;\n      const {\n        post,\n        poll\n      } = attrs;\n      if (this.isAutomaticallyClosed()) {\n        return;\n      }\n      this.dialog.yesNoConfirm({\n        message: _discourseI18n.default.t(this.isClosed() ? \"poll.open.confirm\" : \"poll.close.confirm\"),\n        didConfirm: () => {\n          state.loading = true;\n          const status = this.isClosed() ? \"open\" : \"closed\";\n          (0, _ajax.ajax)(\"/polls/toggle_status\", {\n            type: \"PUT\",\n            data: {\n              post_id: post.id,\n              poll_name: poll.name,\n              status\n            }\n          }).then(() => {\n            poll.set(\"status\", status);\n            if (poll.results === \"on_close\") {\n              state.showResults = status === \"closed\";\n            }\n            this.scheduleRerender();\n          }).catch(error => {\n            if (error) {\n              (0, _ajaxError.popupAjaxError)(error);\n            } else {\n              this.dialog.alert(_discourseI18n.default.t(\"poll.error_while_toggling_status\"));\n            }\n          }).finally(() => {\n            state.loading = false;\n          });\n        }\n      });\n    },\n    toggleResults() {\n      this.state.showResults = !this.state.showResults;\n    },\n    removeVote() {\n      const {\n        attrs,\n        state\n      } = this;\n      state.loading = true;\n      return (0, _ajax.ajax)(\"/polls/vote\", {\n        type: \"DELETE\",\n        data: {\n          post_id: attrs.post.id,\n          poll_name: attrs.poll.name\n        }\n      }).then(_ref2 => {\n        let {\n          poll\n        } = _ref2;\n        attrs.poll.setProperties(poll);\n        attrs.vote.length = 0;\n        attrs.hasSavedVote = false;\n        this.appEvents.trigger(\"poll:voted\", poll, attrs.post, attrs.vote);\n      }).catch(error => (0, _ajaxError.popupAjaxError)(error)).finally(() => {\n        state.loading = false;\n      });\n    },\n    exportResults() {\n      const {\n        attrs\n      } = this;\n      const queryID = this.siteSettings.poll_export_data_explorer_query_id;\n\n      // This uses the Data Explorer plugin export as CSV route\n      // There is detection to check if the plugin is enabled before showing the button\n      (0, _ajax.ajax)(`/admin/plugins/explorer/queries/${queryID}/run.csv`, {\n        type: \"POST\",\n        data: {\n          // needed for data-explorer route compatibility\n          params: JSON.stringify({\n            poll_name: attrs.poll.name,\n            post_id: attrs.post.id.toString() // needed for data-explorer route compatibility\n          }),\n          explain: false,\n          limit: 1000000,\n          download: 1\n        }\n      }).then(csvContent => {\n        const downloadLink = document.createElement(\"a\");\n        const blob = new Blob([csvContent], {\n          type: \"text/csv;charset=utf-8;\"\n        });\n        downloadLink.href = URL.createObjectURL(blob);\n        downloadLink.setAttribute(\"download\", `poll-export-${attrs.poll.name}-${attrs.post.id}.csv`);\n        downloadLink.click();\n        downloadLink.remove();\n      }).catch(error => {\n        if (error) {\n          (0, _ajaxError.popupAjaxError)(error);\n        } else {\n          this.dialog.alert(_discourseI18n.default.t(\"poll.error_while_exporting_results\"));\n        }\n      });\n    },\n    showLogin() {\n      this.register.lookup(\"route:application\").send(\"showLogin\");\n    },\n    _toggleOption(option) {\n      const {\n        vote\n      } = this.attrs;\n      const chosenIdx = vote.indexOf(option.id);\n      if (chosenIdx !== -1) {\n        vote.splice(chosenIdx, 1);\n      } else {\n        vote.push(option.id);\n      }\n    },\n    toggleOption(option) {\n      const {\n        attrs\n      } = this;\n      if (this.isClosed()) {\n        return;\n      }\n      if (!this.currentUser) {\n        return this.showLogin();\n      }\n      if (!checkUserGroups(this.currentUser, this.attrs.poll)) {\n        return;\n      }\n      const {\n        vote\n      } = attrs;\n      if (!this.isMultiple() && vote.length === 1 && vote[0] === option.id) {\n        return this.removeVote();\n      }\n      if (!this.isMultiple()) {\n        vote.length = 0;\n      }\n      this._toggleOption(option);\n      if (!this.isMultiple()) {\n        return this.castVotes().catch(() => this._toggleOption(option));\n      }\n    },\n    castVotes() {\n      if (!this.canCastVotes()) {\n        return;\n      }\n      if (!this.currentUser) {\n        return this.showLogin();\n      }\n      const {\n        attrs,\n        state\n      } = this;\n      state.loading = true;\n      return (0, _ajax.ajax)(\"/polls/vote\", {\n        type: \"PUT\",\n        data: {\n          post_id: attrs.post.id,\n          poll_name: attrs.poll.name,\n          options: attrs.vote\n        }\n      }).then(_ref3 => {\n        let {\n          poll\n        } = _ref3;\n        attrs.hasSavedVote = true;\n        attrs.poll.setProperties(poll);\n        this.appEvents.trigger(\"poll:voted\", poll, attrs.post, attrs.vote);\n        if (attrs.poll.results !== \"on_close\") {\n          state.showResults = true;\n        }\n        if (attrs.poll.results === \"staff_only\") {\n          if (this.currentUser && this.currentUser.staff) {\n            state.showResults = true;\n          } else {\n            state.showResults = false;\n          }\n        }\n      }).catch(error => {\n        if (error) {\n          (0, _ajaxError.popupAjaxError)(error);\n        } else {\n          this.dialog.alert(_discourseI18n.default.t(\"poll.error_while_casting_votes\"));\n        }\n      }).finally(() => {\n        state.loading = false;\n      });\n    },\n    showBreakdown() {\n      (0, _application.getOwner)(this).lookup(\"service:modal\").show(_pollBreakdown.default, {\n        model: this.attrs\n      });\n    }\n  });\n});","define(\"discourse/plugins/poll/lib/chart-colors\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.getColors = getColors;\n  function getColors(count, palette) {\n    palette = palette || \"cool\";\n    let gradient;\n    switch (palette) {\n      case \"cool\":\n        gradient = {\n          0: [255, 255, 255],\n          25: [220, 237, 200],\n          50: [66, 179, 213],\n          75: [26, 39, 62],\n          100: [0, 0, 0]\n        };\n        break;\n      case \"warm\":\n        gradient = {\n          0: [255, 255, 255],\n          25: [254, 235, 101],\n          50: [228, 82, 27],\n          75: [77, 52, 47],\n          100: [0, 0, 0]\n        };\n        break;\n    }\n    let gradientKeys = Object.keys(gradient);\n    let colors = [];\n    let currentGradientValue;\n    let previousGradientIndex;\n    for (let colorIndex = 0; colorIndex < count; colorIndex++) {\n      currentGradientValue = (colorIndex + 1) * (100 / (count + 1));\n      previousGradientIndex = previousGradientIndex || 0;\n      let baseGradientKeyIndex;\n      for (let y = previousGradientIndex; y < gradientKeys.length; y++) {\n        if (!gradientKeys[y + 1]) {\n          baseGradientKeyIndex = y - 1;\n          break;\n        } else if (currentGradientValue >= gradientKeys[y] && currentGradientValue < gradientKeys[y + 1]) {\n          baseGradientKeyIndex = y;\n          break;\n        }\n      }\n      let differenceMultiplier = (currentGradientValue - gradientKeys[baseGradientKeyIndex]) / (gradientKeys[baseGradientKeyIndex + 1] - gradientKeys[baseGradientKeyIndex]);\n      let color = [];\n      for (let k = 0; k < 3; k++) {\n        color.push(Math.round(gradient[gradientKeys[baseGradientKeyIndex]][k] - (gradient[gradientKeys[baseGradientKeyIndex]][k] - gradient[gradientKeys[baseGradientKeyIndex + 1]][k]) * differenceMultiplier));\n      }\n      colors.push(`rgb(${color.toString()})`);\n      previousGradientIndex = baseGradientKeyIndex;\n    }\n    return colors;\n  }\n});","define(\"discourse/plugins/poll/lib/discourse-markdown/poll\", [\"exports\", \"discourse-i18n\"], function (_exports, _discourseI18n) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.setup = setup;\n  /*eslint no-bitwise:0 */\n\n  const DATA_PREFIX = \"data-poll-\";\n  const DEFAULT_POLL = {\n    name: \"poll\",\n    status: \"open\"\n  };\n  const ALLOWED_ATTRIBUTES = [\"chartType\", \"close\", \"groups\", \"max\", \"min\", \"name\", \"order\", \"public\", \"results\", \"status\", \"step\", \"type\"];\n  function addNumberListItems(state, pollTokens, min, max, step) {\n    pollTokens.push(new state.Token(\"bullet_list_open\", \"ul\", 1));\n    for (let i = min; i <= max; i += step) {\n      pollTokens.push(new state.Token(\"list_item_open\", \"li\", 1));\n      let token = new state.Token(\"text\", \"\", 0);\n      token.content = String(i);\n      pollTokens.push(token);\n      pollTokens.push(new state.Token(\"list_item_close\", \"li\", -1));\n    }\n    pollTokens.push(new state.Token(\"bullet_list_close\", \"ul\", -1));\n  }\n  function addPollContainer(state, titleTokens, pollTokens) {\n    let token = state.push(\"poll_container_open\", \"div\", 1);\n    token.attrs = [[\"class\", \"poll-container\"]];\n    if (titleTokens.length > 0) {\n      token = state.push(\"poll_title_open\", \"div\", 1);\n      token.attrs = [[\"class\", \"poll-title\"]];\n      state.tokens.push(...titleTokens);\n      state.push(\"poll_title_close\", \"div\", -1);\n    }\n    for (let i = 0; i < pollTokens.length; i++) {\n      if (pollTokens[i].type === \"list_item_open\") {\n        let listItemCloseIndex = pollTokens.findIndex((t, j) => j > i && t.type === \"list_item_close\");\n        if (listItemCloseIndex === -1) {\n          continue;\n        }\n        let text = pollTokens.slice(i, listItemCloseIndex + 1).filter(c => c.type === \"text\" || c.type === \"inline\").map(c => c.content).join(\" \");\n        let hash = md5(JSON.stringify([text]));\n        pollTokens[i].attrs ||= [];\n        pollTokens[i].attrs.push([DATA_PREFIX + \"option-id\", hash]);\n      }\n    }\n    state.tokens.push(...pollTokens);\n    state.push(\"poll_container_close\", \"div\", -1);\n  }\n  function addPollInfo(state) {\n    let token = state.push(\"poll_info_open\", \"div\", 1);\n    token.attrs = [[\"class\", \"poll-info\"]];\n    token = state.push(\"poll_info_counts_open\", \"div\", 1);\n    token.attrs = [[\"class\", \"poll-info_counts\"]];\n    token = state.push(\"poll_info_counts_count_open\", \"div\", 1);\n    token.attrs = [[\"class\", \"poll-info_counts-count\"]];\n    token = state.push(\"poll_info_number_open\", \"span\", 1);\n    token.attrs = [[\"class\", \"info-number\"]];\n    token.block = false;\n    token = state.push(\"text\", \"\", 0);\n    token.content = \"0\";\n    state.push(\"poll_info_number_close\", \"span\", -1);\n    token = state.push(\"poll_info_label_open\", \"span\", 1);\n    token.attrs = [[\"class\", \"info-label\"]];\n    token.block = false;\n    token = state.push(\"text\", \"\", 0);\n    token.content = _discourseI18n.default.t(\"poll.voters\", {\n      count: 0\n    });\n    state.push(\"poll_info_label_close\", \"span\", -1);\n    state.push(\"poll_info_counts_count_close\", \"div\", -1);\n    state.push(\"poll_info_counts_close\", \"div\", -1);\n    state.push(\"poll_info_close\", \"div\", -1);\n  }\n  const rule = {\n    tag: \"poll\",\n    before(state, _ref) {\n      let {\n        attrs\n      } = _ref;\n      let open = state.tokens.filter(t => t.type === \"poll_open\").length;\n      let closed = state.tokens.filter(t => t.type === \"poll_close\").length;\n      if (open > closed) {\n        return; // poll-ception is now allowed\n      }\n      let token = state.push(\"poll_open\", \"div\", 1);\n      token.poll_attrs = {\n        ...DEFAULT_POLL,\n        ...attrs\n      };\n    },\n    after(state, openToken) {\n      if (openToken.type !== \"poll_open\") {\n        return;\n      }\n      let attrs = openToken.poll_attrs;\n      let openTokenIndex = state.tokens.indexOf(openToken);\n      let pollTokens = state.tokens.slice(openTokenIndex + 1);\n      let titleTokens = [];\n      if (pollTokens.length > 0 && pollTokens[0].type === \"heading_open\") {\n        let idx = pollTokens.findIndex(t => t.type === \"heading_close\");\n        if (idx !== -1) {\n          titleTokens = pollTokens.splice(0, idx + 1).slice(1, -1);\n          state.tokens.splice(openTokenIndex + 1, idx + 1);\n        }\n      }\n      if (attrs.type === \"number\") {\n        let min = parseInt(attrs.min, 10);\n        let max = parseInt(attrs.max, 10);\n        let step = parseInt(attrs.step, 10);\n        if (isNaN(min)) {\n          min = 1;\n        }\n        if (isNaN(max)) {\n          max = state.md.options.discourse.pollMaximumOptions;\n        }\n        if (isNaN(step) || step < 1) {\n          step = 1;\n        }\n        if (pollTokens.length > 0) {\n          state.tokens.splice(openTokenIndex, 1);\n          return;\n        } else if (min <= max) {\n          addNumberListItems(state, pollTokens, min, max, step);\n        }\n      }\n      state.tokens.splice(openTokenIndex + 1);\n      openToken.attrs ||= [];\n      openToken.attrs.push([\"class\", \"poll\"]);\n      for (let n of ALLOWED_ATTRIBUTES) {\n        if (attrs[n]) {\n          openToken.attrs.push([DATA_PREFIX + n, attrs[n]]);\n        }\n      }\n      if (pollTokens.length > 0) {\n        if (!pollTokens[0].type.endsWith(\"_list_open\")) {\n          return;\n        }\n      }\n      addPollContainer(state, titleTokens, pollTokens);\n      addPollInfo(state);\n      state.push(\"poll_close\", \"div\", -1);\n    }\n  };\n  function setup(helper) {\n    helper.allowList([\"a.button.cast-votes\", \"a.button.toggle-results\", \"div.poll-buttons\", \"div.poll-container\", \"div.poll-info_counts-count\", \"div.poll-info_counts\", \"div.poll-info\", \"div.poll-title\", \"div.poll\", \"div[data-*]\", \"li[data-*]\", \"span.info-label\", \"span.info-number\", \"span.info-text\"]);\n    helper.registerOptions((opts, siteSettings) => {\n      opts.features.poll = siteSettings.poll_enabled;\n      opts.pollMaximumOptions = siteSettings.poll_maximum_options;\n    });\n    helper.registerPlugin(md => md.block.bbcode.ruler.push(\"poll\", rule));\n  }\n\n  /*!\n   * Joseph Myer's md5() algorithm wrapped in a self-invoked function to prevent\n   * global namespace pollution, modified to hash unicode characters as UTF-8.\n   *\n   * Copyright 1999-2010, Joseph Myers, Paul Johnston, Greg Holt, Will Bond <will@wbond.net>\n   * http://www.myersdaily.org/joseph/javascript/md5-text.html\n   * http://pajhome.org.uk/crypt/md5\n   *\n   * Released under the BSD license\n   * http://www.opensource.org/licenses/bsd-license\n   */\n  function md5cycle(x, k) {\n    let a = x[0],\n      b = x[1],\n      c = x[2],\n      d = x[3];\n    a = ff(a, b, c, d, k[0], 7, -680876936);\n    d = ff(d, a, b, c, k[1], 12, -389564586);\n    c = ff(c, d, a, b, k[2], 17, 606105819);\n    b = ff(b, c, d, a, k[3], 22, -1044525330);\n    a = ff(a, b, c, d, k[4], 7, -176418897);\n    d = ff(d, a, b, c, k[5], 12, 1200080426);\n    c = ff(c, d, a, b, k[6], 17, -1473231341);\n    b = ff(b, c, d, a, k[7], 22, -45705983);\n    a = ff(a, b, c, d, k[8], 7, 1770035416);\n    d = ff(d, a, b, c, k[9], 12, -1958414417);\n    c = ff(c, d, a, b, k[10], 17, -42063);\n    b = ff(b, c, d, a, k[11], 22, -1990404162);\n    a = ff(a, b, c, d, k[12], 7, 1804603682);\n    d = ff(d, a, b, c, k[13], 12, -40341101);\n    c = ff(c, d, a, b, k[14], 17, -1502002290);\n    b = ff(b, c, d, a, k[15], 22, 1236535329);\n    a = gg(a, b, c, d, k[1], 5, -165796510);\n    d = gg(d, a, b, c, k[6], 9, -1069501632);\n    c = gg(c, d, a, b, k[11], 14, 643717713);\n    b = gg(b, c, d, a, k[0], 20, -373897302);\n    a = gg(a, b, c, d, k[5], 5, -701558691);\n    d = gg(d, a, b, c, k[10], 9, 38016083);\n    c = gg(c, d, a, b, k[15], 14, -660478335);\n    b = gg(b, c, d, a, k[4], 20, -405537848);\n    a = gg(a, b, c, d, k[9], 5, 568446438);\n    d = gg(d, a, b, c, k[14], 9, -1019803690);\n    c = gg(c, d, a, b, k[3], 14, -187363961);\n    b = gg(b, c, d, a, k[8], 20, 1163531501);\n    a = gg(a, b, c, d, k[13], 5, -1444681467);\n    d = gg(d, a, b, c, k[2], 9, -51403784);\n    c = gg(c, d, a, b, k[7], 14, 1735328473);\n    b = gg(b, c, d, a, k[12], 20, -1926607734);\n    a = hh(a, b, c, d, k[5], 4, -378558);\n    d = hh(d, a, b, c, k[8], 11, -2022574463);\n    c = hh(c, d, a, b, k[11], 16, 1839030562);\n    b = hh(b, c, d, a, k[14], 23, -35309556);\n    a = hh(a, b, c, d, k[1], 4, -1530992060);\n    d = hh(d, a, b, c, k[4], 11, 1272893353);\n    c = hh(c, d, a, b, k[7], 16, -155497632);\n    b = hh(b, c, d, a, k[10], 23, -1094730640);\n    a = hh(a, b, c, d, k[13], 4, 681279174);\n    d = hh(d, a, b, c, k[0], 11, -358537222);\n    c = hh(c, d, a, b, k[3], 16, -722521979);\n    b = hh(b, c, d, a, k[6], 23, 76029189);\n    a = hh(a, b, c, d, k[9], 4, -640364487);\n    d = hh(d, a, b, c, k[12], 11, -421815835);\n    c = hh(c, d, a, b, k[15], 16, 530742520);\n    b = hh(b, c, d, a, k[2], 23, -995338651);\n    a = ii(a, b, c, d, k[0], 6, -198630844);\n    d = ii(d, a, b, c, k[7], 10, 1126891415);\n    c = ii(c, d, a, b, k[14], 15, -1416354905);\n    b = ii(b, c, d, a, k[5], 21, -57434055);\n    a = ii(a, b, c, d, k[12], 6, 1700485571);\n    d = ii(d, a, b, c, k[3], 10, -1894986606);\n    c = ii(c, d, a, b, k[10], 15, -1051523);\n    b = ii(b, c, d, a, k[1], 21, -2054922799);\n    a = ii(a, b, c, d, k[8], 6, 1873313359);\n    d = ii(d, a, b, c, k[15], 10, -30611744);\n    c = ii(c, d, a, b, k[6], 15, -1560198380);\n    b = ii(b, c, d, a, k[13], 21, 1309151649);\n    a = ii(a, b, c, d, k[4], 6, -145523070);\n    d = ii(d, a, b, c, k[11], 10, -1120210379);\n    c = ii(c, d, a, b, k[2], 15, 718787259);\n    b = ii(b, c, d, a, k[9], 21, -343485551);\n    x[0] = add32(a, x[0]);\n    x[1] = add32(b, x[1]);\n    x[2] = add32(c, x[2]);\n    x[3] = add32(d, x[3]);\n  }\n  function cmn(q, a, b, x, s, t) {\n    a = add32(add32(a, q), add32(x, t));\n    return add32(a << s | a >>> 32 - s, b);\n  }\n  function ff(a, b, c, d, x, s, t) {\n    return cmn(b & c | ~b & d, a, b, x, s, t);\n  }\n  function gg(a, b, c, d, x, s, t) {\n    return cmn(b & d | c & ~d, a, b, x, s, t);\n  }\n  function hh(a, b, c, d, x, s, t) {\n    return cmn(b ^ c ^ d, a, b, x, s, t);\n  }\n  function ii(a, b, c, d, x, s, t) {\n    return cmn(c ^ (b | ~d), a, b, x, s, t);\n  }\n  function md51(s) {\n    // Converts the string to UTF-8 \"bytes\"\n    s = unescape(encodeURI(s));\n    let n = s.length,\n      state = [1732584193, -271733879, -1732584194, 271733878],\n      i;\n    for (i = 64; i <= s.length; i += 64) {\n      md5cycle(state, md5blk(s.substring(i - 64, i)));\n    }\n    s = s.substring(i - 64);\n    let tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n    for (i = 0; i < s.length; i++) {\n      tail[i >> 2] |= s.charCodeAt(i) << (i % 4 << 3);\n    }\n    tail[i >> 2] |= 0x80 << (i % 4 << 3);\n    if (i > 55) {\n      md5cycle(state, tail);\n      for (i = 0; i < 16; i++) {\n        tail[i] = 0;\n      }\n    }\n    tail[14] = n * 8;\n    md5cycle(state, tail);\n    return state;\n  }\n  function md5blk(s) {\n    /* I figured global was faster.   */\n    let md5blks = [],\n      i; /* Andy King said do it this way. */\n    for (i = 0; i < 64; i += 4) {\n      md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n    }\n    return md5blks;\n  }\n  let hex_chr = \"0123456789abcdef\".split(\"\");\n  function rhex(n) {\n    let s = \"\",\n      j = 0;\n    for (; j < 4; j++) {\n      s += hex_chr[n >> j * 8 + 4 & 0x0f] + hex_chr[n >> j * 8 & 0x0f];\n    }\n    return s;\n  }\n  function hex(x) {\n    for (let i = 0; i < x.length; i++) {\n      x[i] = rhex(x[i]);\n    }\n    return x.join(\"\");\n  }\n  function add32(a, b) {\n    return a + b & 0xffffffff;\n  }\n  function md5(s) {\n    return hex(md51(s));\n  }\n});","define(\"discourse/plugins/poll/lib/even-round\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = _default;\n  // works as described on http://stackoverflow.com/a/13483710\n  function sumsUpTo100(percentages) {\n    return percentages.map(p => Math.floor(p)).reduce((a, b) => a + b) === 100;\n  }\n  function _default(percentages) {\n    let decimals = percentages.map(a => a % 1);\n    const sumOfDecimals = Math.ceil(decimals.reduce((a, b) => a + b));\n    // compensate error by adding 1 to n items with the greatest decimal part\n    for (let i = 0, max = decimals.length; i < sumOfDecimals && i < max; i++) {\n      // find the greatest item in the decimals array, set it to 0,\n      // and increase the corresponding item in the percentages array by 1\n      let greatest = 0;\n      let index = 0;\n      for (let j = 0; j < decimals.length; j++) {\n        if (decimals[j] > greatest) {\n          index = j;\n          greatest = decimals[j];\n        }\n      }\n      ++percentages[index];\n      decimals[index] = 0;\n      // quit early when there is a rounding issue\n      if (sumsUpTo100(percentages)) {\n        break;\n      }\n    }\n    return percentages.map(p => Math.floor(p));\n  }\n});"],"mappings":"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"}