{"version":3,"file":"poll.js","names":["define","_exports","_component","_I18n","_pollUiBuilder","_decorators","_chartColors","_template","_computed","_runloop","_dec","_dec2","_obj","_applyDecoratedDescriptor","target","property","decorators","descriptor","context","desc","Object","keys","forEach","key","enumerable","configurable","initializer","writable","slice","reverse","reduce","decorator","value","call","undefined","defineProperty","default","_default","extend","group","options","displayMode","highlightedOption","setHighlightedOption","classNames","_optionToSlice","_previousHighlightedSliceIndex","_previousDisplayMode","data","mapBy","init","this","_super","arguments","didInsertElement","canvas","element","querySelector","_chart","window","Chart","getContext","chartConfig","didReceiveAttrs","_updateDisplayMode","_updateHighlight","willDestroy","destroy","colorStyle","optionColors","index","htmlSafe","transformedData","counter","votes","push","totalVotes","sum","colors","getColors","length","filter","color","type","PIE_CHART_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","event","activeElements","next","sliceIndex","_index","optionIndex","find","option","Number","config","update","meta","getDatasetMeta","controller","removeHoverStyle","draw","setHoverStyle","getOwnPropertyDescriptor","_object","_computed2","_dec3","_dec4","optionsCount","onMouseOver","onMouseOut","tagName","highlighted","propertyEqual","showPercentage","equal","percent","total","colorBackgroundStyle","colorPreviewStyle","helpers","getHoverColor","active","action","_controller","_modalFunctionality","_ajax","_string","_loadScript","_ajaxError","_service","dialog","inject","model","charts","groupedBy","title","pollTitle","topicTitle","groupableUserFields","fields","map","field","transformed","split","Boolean","classify","id","label","join","onShow","set","then","fetchGroupedPollData","ajax","post_id","post","poll_name","poll","name","user_field_name","catch","error","popupAjaxError","alert","t","result","isDestroying","isDestroyed","grouped_results","setGrouping","onSelectPanel","panel","_dec5","_dec6","_dec7","_dec8","_dec9","_dec10","_dec11","_dec12","REGULAR_POLL_TYPE","NUMBER_POLL_TYPE","MULTIPLE_POLL_TYPE","BAR_CHART_TYPE","ALWAYS_POLL_RESULT","observes","showAdvanced","pollType","pollOptions","pollOptionsText","pollMin","pollMax","pollStep","pollGroups","pollAutoClose","pollResult","chartType","publicPoll","setProperties","create","pollResults","get","isRegular","isNumber","isMultiple","showNumber","or","pollOptionsCount","siteGroups","groups","g","isPie","canRemoveOption","gt","_setPollMinMax","siteSettings","poll_maximum_options","pollOutput","pollHeader","output","match","toolbarEvent","getText","step","toISOString","trim","minNumOfOptionsValidation","failed","reason","count","ok","showMinNumOfOptionsValidation","minMaxValueValidation","parseInt","disableInsert","_comboboxOptions","startIndex","endIndex","Array","number","onOptionsTextChange","e","idx","insertPoll","addText","send","toggleAdvanced","toggleProperty","x","addOption","beforeOption","indexOf","insertAt","lastOptionIdx","o","getElementsByClassName","inputs","getElementsByTagName","focus","preventDefault","removeOption","removeObject","updatePollType","_templateFactory","createTemplateFactory","block","moduleName","isStrictMode","_showModal","_pluginApi","initializePollUIBuilder","api","modifyClass","pluginId","canBuildPoll","pollEnabled","minimumTrustLevel","pmWithNonHumanUser","currentUser","staff","trust_level","actions","showPollBuilder","addToolbarPopupMenuOptionsCallback","icon","condition","initialize","withPluginApi","_glue","_getOwner","PLUGIN_ID","_glued","_interval","rerender","queueRerender","cleanUpPolls","clearInterval","cleanUp","initializePolls","_obj2","register","getRegister","pollGroupableUserFields","container","lookup","poll_groupable_user_fields","subscribe","messageBus","_onPollMessage","unsubscribe","msg","findLoadedPost","polls","bind","_polls","pollsObject","pollsChanged","p","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","glue","appendTo","onlyStream","cleanupStream","poll_enabled","addSearchSuggestion","palette","gradient","currentGradientValue","previousGradientIndex","gradientKeys","colorIndex","baseGradientKeyIndex","y","differenceMultiplier","k","Math","round","toString","setup","allowList","registerOptions","opts","features","pollMaximumOptions","registerPlugin","md","bbcode","ruler","rule","newApiInit","DATA_PREFIX","ALLOWED_ATTRIBUTES","invalidPoll","state","tag","content","before","tagInfo","raw","token","bbcode_attrs","bbcode_type","after","openToken","titleTokens","tokens","startToken","pollTokens","open","findIndex","close","splice","getTitle","items","i","listItems","buffer","level","nesting","getListItems","attributes","min","max","header","Token","isNaN","discourse","String","text","md5Hash","rhex","hex","s","unescape","encodeURI","n","md5cycle","md5blk","substring","tail","charCodeAt","md51","JSON","stringify","list","pos","replaceToken","a","b","c","d","ff","gg","hh","ii","add32","cmn","q","md5blks","hex_chr","j","sumsUpTo100","percentages","floor","decimals","sumOfDecimals","ceil","greatest","_rawHtml","_post","_widget","_evenRound","_virtualDom","_iconLibrary","_formatter","_round","_localDates","optionHtml","el","createElement","innerHTML","html","applyLocalDates","infoTextHtml","checkUserGroups","user","toLowerCase","userGroups","some","includes","createWidget","buildAttributes","tabindex","contents","chosen","iconNode","click","sendWidgetAction","keyDown","buildKey","optionId","defaultState","loading","h","finally","voters","avatarFor","username","template","avatar_template","attach","isPublic","public","ordered","sort","fill","rounded","per","style","className","totalScore","average","averageRating","services","showResults","preloaded_voters","resultsWidget","chart_type","assign","fetchVoters","votersCount","option_id","page","limit","newVoters","votersSet","Set","voter","has","add","otherOptionId","scheduleRerender","multipleHelpText","isClosed","help","results","labels","strippedLabels","l","stripHtml","DOMParser","parseFromString","textContent","htmlLegendPlugin","legend","generateLabels","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","topicArchived","closed","staffOnly","isStaff","isAdmin","admin","isMe","user_id","dataExplorerEnabled","data_explorer_enabled","hideResultsDisabled","exportQueryID","poll_export_data_explorer_query_id","castVotesDisabled","canCastVotes","disabled","showResultsButton","infoText","hasVoted","button","closeDate","moment","isValid","format","isAutomaticallyClosed","age","relativeAge","toDate","addAgo","timeLeft","to","cssClasses","class","newAttrs","numOptions","utc","status","selectedOptionCount","toggleStatus","yesNoConfirm","message","didConfirm","toggleResults","removeVote","_ref","appEvents","trigger","exportResults","queryID","params","explain","download","csvContent","downloadLink","blob","Blob","href","URL","createObjectURL","setAttribute","remove","showLogin","_toggleOption","chosenIdx","toggleOption","castVotes","_ref2","showBreakdown","panels"],"sources":["discourse/plugins/poll/components/poll-breakdown-chart.js","discourse/plugins/poll/components/poll-breakdown-option.js","discourse/plugins/poll/controllers/poll-breakdown.js","discourse/plugins/poll/controllers/poll-ui-builder.js","discourse/plugins/poll/discourse/templates/components/poll-breakdown-chart.js","discourse/plugins/poll/discourse/templates/components/poll-breakdown-option.js","discourse/plugins/poll/discourse/templates/modal/poll-breakdown.js","discourse/plugins/poll/discourse/templates/modal/poll-ui-builder.js","discourse/plugins/poll/initializers/add-poll-ui-builder.js","discourse/plugins/poll/initializers/extend-for-poll.js","discourse/plugins/poll/lib/chart-colors.js","discourse/plugins/poll/lib/discourse-markdown/poll.js","discourse/plugins/poll/lib/even-round.js","discourse/plugins/poll/widgets/discourse-poll.js"],"sourcesContent":["define(\"discourse/plugins/poll/components/poll-breakdown-chart\", [\"exports\", \"@ember/component\", \"I18n\", \"discourse/plugins/poll/controllers/poll-ui-builder\", \"discourse-common/utils/decorators\", \"discourse/plugins/poll/lib/chart-colors\", \"@ember/template\", \"@ember/object/computed\", \"@ember/runloop\"], function (_exports, _component, _I18n, _pollUiBuilder, _decorators, _chartColors, _template, _computed, _runloop) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _dec2, _obj;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component\",0,\"I18n\",0,\"discourse/plugins/poll/controllers/poll-ui-builder\",0,\"discourse-common/utils/decorators\",0,\"discourse/plugins/poll/lib/chart-colors\",0,\"@ember/template\",0,\"@ember/object/computed\",0,\"@ember/runloop\"eaimeta@70e063a35619d71f\n  function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; }\n  var _default = _component.default.extend((_dec = (0, _decorators.default)(\"optionColors\", \"index\"), _dec2 = (0, _decorators.default)(\"data\", \"displayMode\"), (_obj = {\n    // Arguments:\n    group: null,\n    options: null,\n    displayMode: null,\n    highlightedOption: null,\n    setHighlightedOption: null,\n    classNames: \"poll-breakdown-chart-container\",\n    _optionToSlice: null,\n    _previousHighlightedSliceIndex: null,\n    _previousDisplayMode: null,\n    data: (0, _computed.mapBy)(\"options\", \"votes\"),\n    init() {\n      this._super(...arguments);\n      this._optionToSlice = {};\n    },\n    didInsertElement() {\n      this._super(...arguments);\n      const canvas = this.element.querySelector(\"canvas\");\n      this._chart = new window.Chart(canvas.getContext(\"2d\"), this.chartConfig);\n    },\n    didReceiveAttrs() {\n      this._super(...arguments);\n      if (this._chart) {\n        this._updateDisplayMode();\n        this._updateHighlight();\n      }\n    },\n    willDestroy() {\n      this._super(...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    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 = _I18n.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\n            // Clear the array to avoid issues in Chart.js\n            activeElements.length = 0;\n            (0, _runloop.next)(() => {\n              this.setHighlightedOption(Number(optionIndex));\n            });\n          }\n        }\n      };\n    },\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 meta = this._chart.getDatasetMeta(0);\n      if (this._previousHighlightedSliceIndex !== null) {\n        const slice = meta.data[this._previousHighlightedSliceIndex];\n        meta.controller.removeHoverStyle(slice);\n        this._chart.draw();\n      }\n      if (this.highlightedOption === null) {\n        this._previousHighlightedSliceIndex = null;\n        return;\n      }\n      const sliceIndex = this._optionToSlice[this.highlightedOption];\n      if (typeof sliceIndex === \"undefined\") {\n        this._previousHighlightedSliceIndex = null;\n        return;\n      }\n      const slice = meta.data[sliceIndex];\n      this._previousHighlightedSliceIndex = sliceIndex;\n      meta.controller.setHoverStyle(slice);\n      this._chart.draw();\n    }\n  }, (_applyDecoratedDescriptor(_obj, \"colorStyle\", [_dec], Object.getOwnPropertyDescriptor(_obj, \"colorStyle\"), _obj), _applyDecoratedDescriptor(_obj, \"chartConfig\", [_dec2], Object.getOwnPropertyDescriptor(_obj, \"chartConfig\"), _obj)), _obj)));\n  _exports.default = _default;\n});","define(\"discourse/plugins/poll/components/poll-breakdown-option\", [\"exports\", \"@ember/component\", \"I18n\", \"@ember/object\", \"discourse-common/utils/decorators\", \"@ember/object/computed\", \"discourse/plugins/poll/lib/chart-colors\", \"@ember/template\", \"discourse/lib/computed\"], function (_exports, _component, _I18n, _object, _decorators, _computed, _chartColors, _template, _computed2) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _dec2, _dec3, _dec4, _obj;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/component\",0,\"I18n\",0,\"@ember/object\",0,\"discourse-common/utils/decorators\",0,\"@ember/object/computed\",0,\"discourse/plugins/poll/lib/chart-colors\",0,\"@ember/template\",0,\"discourse/lib/computed\"eaimeta@70e063a35619d71f\n  function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; }\n  var _default = _component.default.extend((_dec = (0, _decorators.default)(\"option.votes\", \"totalVotes\"), _dec2 = (0, _decorators.default)(\"optionsCount\"), _dec3 = (0, _decorators.default)(\"highlighted\"), _dec4 = (0, _decorators.default)(\"highlighted\", \"optionColors\", \"index\"), (_obj = {\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    tagName: \"\",\n    highlighted: (0, _computed2.propertyEqual)(\"highlightedOption\", \"index\"),\n    showPercentage: (0, _computed.equal)(\"displayMode\", \"percentage\"),\n    percent(votes, total) {\n      return _I18n.default.toNumber(votes / total * 100.0, {\n        precision: 1\n      });\n    },\n    optionColors(optionsCount) {\n      return (0, _chartColors.getColors)(optionsCount);\n    },\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    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    onHover(active) {\n      if (active) {\n        this.onMouseOver();\n      } else {\n        this.onMouseOut();\n      }\n    }\n  }, (_applyDecoratedDescriptor(_obj, \"percent\", [_dec], Object.getOwnPropertyDescriptor(_obj, \"percent\"), _obj), _applyDecoratedDescriptor(_obj, \"optionColors\", [_dec2], Object.getOwnPropertyDescriptor(_obj, \"optionColors\"), _obj), _applyDecoratedDescriptor(_obj, \"colorBackgroundStyle\", [_dec3], Object.getOwnPropertyDescriptor(_obj, \"colorBackgroundStyle\"), _obj), _applyDecoratedDescriptor(_obj, \"colorPreviewStyle\", [_dec4], Object.getOwnPropertyDescriptor(_obj, \"colorPreviewStyle\"), _obj), _applyDecoratedDescriptor(_obj, \"onHover\", [_object.action], Object.getOwnPropertyDescriptor(_obj, \"onHover\"), _obj)), _obj)));\n  _exports.default = _default;\n});","define(\"discourse/plugins/poll/controllers/poll-breakdown\", [\"exports\", \"@ember/controller\", \"I18n\", \"discourse/mixins/modal-functionality\", \"@ember/object\", \"discourse/lib/ajax\", \"@ember/string\", \"discourse-common/utils/decorators\", \"@ember/template\", \"discourse/lib/load-script\", \"discourse/lib/ajax-error\", \"@ember/service\"], function (_exports, _controller, _I18n, _modalFunctionality, _object, _ajax, _string, _decorators, _template, _loadScript, _ajaxError, _service) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _dec, _dec2, _dec3, _obj;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/controller\",0,\"I18n\",0,\"discourse/mixins/modal-functionality\",0,\"@ember/object\",0,\"discourse/lib/ajax\",0,\"@ember/string\",0,\"discourse-common/utils/decorators\",0,\"@ember/template\",0,\"discourse/lib/load-script\",0,\"discourse/lib/ajax-error\",0,\"@ember/service\"eaimeta@70e063a35619d71f\n  function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; }\n  var _default = _controller.default.extend(_modalFunctionality.default, (_dec = (0, _decorators.default)(\"model.poll.title\", \"model.post.topic.title\"), _dec2 = (0, _decorators.default)(\"model.groupableUserFields\"), _dec3 = (0, _decorators.default)(\"model.poll.options\"), (_obj = {\n    dialog: (0, _service.inject)(),\n    model: null,\n    charts: null,\n    groupedBy: null,\n    highlightedOption: null,\n    displayMode: \"percentage\",\n    title(pollTitle, topicTitle) {\n      return pollTitle ? (0, _template.htmlSafe)(pollTitle) : topicTitle;\n    },\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    totalVotes(options) {\n      return options.reduce((sum, option) => sum + option.votes, 0);\n    },\n    onShow() {\n      this.set(\"charts\", null);\n      this.set(\"displayMode\", \"percentage\");\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    },\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(_I18n.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    onSelectPanel(panel) {\n      this.set(\"displayMode\", panel.id);\n    }\n  }, (_applyDecoratedDescriptor(_obj, \"title\", [_dec], Object.getOwnPropertyDescriptor(_obj, \"title\"), _obj), _applyDecoratedDescriptor(_obj, \"groupableUserFields\", [_dec2], Object.getOwnPropertyDescriptor(_obj, \"groupableUserFields\"), _obj), _applyDecoratedDescriptor(_obj, \"totalVotes\", [_dec3], Object.getOwnPropertyDescriptor(_obj, \"totalVotes\"), _obj), _applyDecoratedDescriptor(_obj, \"setGrouping\", [_object.action], Object.getOwnPropertyDescriptor(_obj, \"setGrouping\"), _obj), _applyDecoratedDescriptor(_obj, \"onSelectPanel\", [_object.action], Object.getOwnPropertyDescriptor(_obj, \"onSelectPanel\"), _obj)), _obj)));\n  _exports.default = _default;\n});","define(\"discourse/plugins/poll/controllers/poll-ui-builder\", [\"exports\", \"@ember/controller\", \"@ember/object\", \"@ember/object/computed\", \"@ember/runloop\", \"discourse-common/utils/decorators\", \"discourse/mixins/modal-functionality\", \"I18n\"], function (_exports, _controller, _object, _computed, _runloop, _decorators, _modalFunctionality, _I18n) {\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  var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _obj;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/controller\",0,\"@ember/object\",0,\"@ember/object/computed\",0,\"@ember/runloop\",0,\"discourse-common/utils/decorators\",0,\"discourse/mixins/modal-functionality\",0,\"I18n\"eaimeta@70e063a35619d71f\n  function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; }\n  const BAR_CHART_TYPE = \"bar\";\n  _exports.BAR_CHART_TYPE = BAR_CHART_TYPE;\n  const PIE_CHART_TYPE = \"pie\";\n  _exports.PIE_CHART_TYPE = PIE_CHART_TYPE;\n  const REGULAR_POLL_TYPE = \"regular\";\n  _exports.REGULAR_POLL_TYPE = REGULAR_POLL_TYPE;\n  const NUMBER_POLL_TYPE = \"number\";\n  _exports.NUMBER_POLL_TYPE = NUMBER_POLL_TYPE;\n  const MULTIPLE_POLL_TYPE = \"multiple\";\n  _exports.MULTIPLE_POLL_TYPE = MULTIPLE_POLL_TYPE;\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  var _default = _controller.default.extend(_modalFunctionality.default, (_dec = (0, _decorators.default)(\"pollType\"), _dec2 = (0, _decorators.default)(\"pollType\"), _dec3 = (0, _decorators.default)(\"pollType\"), _dec4 = (0, _decorators.default)(\"pollOptions.@each.value\"), _dec5 = (0, _decorators.default)(\"site.groups\"), _dec6 = (0, _decorators.default)(\"chartType\", \"pollType\"), _dec7 = (0, _decorators.observes)(\"pollType\", \"pollOptionsCount\"), _dec8 = (0, _decorators.default)(\"pollType\", \"pollResult\", \"publicPoll\", \"pollTitle\", \"pollOptions.@each.value\", \"pollMin\", \"pollMax\", \"pollStep\", \"pollGroups\", \"pollAutoClose\", \"chartType\"), _dec9 = (0, _decorators.default)(\"isNumber\", \"pollOptionsCount\"), _dec10 = (0, _decorators.default)(\"pollOptions.@each.value\"), _dec11 = (0, _decorators.default)(\"isMultiple\", \"pollOptionsCount\", \"isNumber\", \"pollMin\", \"pollMax\", \"pollStep\"), _dec12 = (0, _decorators.default)(\"minMaxValueValidation\", \"minNumOfOptionsValidation\"), (_obj = {\n    showAdvanced: false,\n    pollType: REGULAR_POLL_TYPE,\n    pollTitle: \"\",\n    pollOptions: null,\n    pollOptionsText: null,\n    pollMin: 1,\n    pollMax: 2,\n    pollStep: 1,\n    pollGroups: null,\n    pollAutoClose: null,\n    pollResult: ALWAYS_POLL_RESULT,\n    chartType: BAR_CHART_TYPE,\n    publicPoll: null,\n    onShow() {\n      this.setProperties({\n        showAdvanced: false,\n        pollType: REGULAR_POLL_TYPE,\n        pollTitle: null,\n        pollOptions: [_object.default.create({\n          value: \"\"\n        })],\n        pollOptionsText: \"\",\n        pollMin: 1,\n        pollMax: 2,\n        pollStep: 1,\n        pollGroups: null,\n        pollAutoClose: null,\n        pollResult: ALWAYS_POLL_RESULT,\n        chartType: BAR_CHART_TYPE,\n        publicPoll: false\n      });\n    },\n    pollResults() {\n      const options = [{\n        name: _I18n.default.t(\"poll.ui_builder.poll_result.always\"),\n        value: ALWAYS_POLL_RESULT\n      }, {\n        name: _I18n.default.t(\"poll.ui_builder.poll_result.vote\"),\n        value: VOTE_POLL_RESULT\n      }, {\n        name: _I18n.default.t(\"poll.ui_builder.poll_result.closed\"),\n        value: CLOSED_POLL_RESULT\n      }];\n      if (this.get(\"currentUser.staff\")) {\n        options.push({\n          name: _I18n.default.t(\"poll.ui_builder.poll_result.staff\"),\n          value: STAFF_POLL_RESULT\n        });\n      }\n      return options;\n    },\n    isRegular(pollType) {\n      return pollType === REGULAR_POLL_TYPE;\n    },\n    isNumber(pollType) {\n      return pollType === NUMBER_POLL_TYPE;\n    },\n    isMultiple(pollType) {\n      return pollType === MULTIPLE_POLL_TYPE;\n    },\n    showNumber: (0, _computed.or)(\"showAdvanced\", \"isNumber\"),\n    pollOptionsCount(pollOptions) {\n      return (pollOptions || []).filter(option => option.value.length > 0).length;\n    },\n    siteGroups(groups) {\n      // prevents group \"everyone\" to be listed\n      return groups.filter(g => g.id !== 0);\n    },\n    isPie(chartType, pollType) {\n      return pollType !== NUMBER_POLL_TYPE && chartType === PIE_CHART_TYPE;\n    },\n    canRemoveOption: (0, _computed.gt)(\"pollOptions.length\", 1),\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    pollOutput(pollType, pollResult, publicPoll, pollTitle, pollOptions, pollMin, pollMax, pollStep, pollGroups, pollAutoClose, chartType) {\n      let pollHeader = \"[poll\";\n      let output = \"\";\n      const match = this.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      if (publicPoll) {\n        pollHeader += ` public=true`;\n      }\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    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: _I18n.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: _I18n.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    showMinNumOfOptionsValidation(pollOptions) {\n      return pollOptions.length !== 1 || pollOptions[0].value !== \"\";\n    },\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: _I18n.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: _I18n.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: _I18n.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: _I18n.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: _I18n.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: _I18n.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    disableInsert(minMaxValueValidation, minNumOfOptionsValidation) {\n      return !minMaxValueValidation.ok || !minNumOfOptionsValidation.ok;\n    },\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      let idx = 0;\n      this.set(\"pollOptions\", e.target.value.split(\"\\n\").map(value => _object.default.create({\n        idx: idx++,\n        value\n      })));\n    },\n    insertPoll() {\n      this.toolbarEvent.addText(this.pollOutput);\n      this.send(\"closeModal\");\n    },\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    addOption(beforeOption, value, e) {\n      if (value !== \"\") {\n        const idx = this.pollOptions.indexOf(beforeOption) + 1;\n        const option = _object.default.create({\n          value: \"\"\n        });\n        this.pollOptions.insertAt(idx, option);\n        let lastOptionIdx = 0;\n        this.pollOptions.forEach(o => o.set(\"idx\", lastOptionIdx++));\n        (0, _runloop.next)(() => {\n          const pollOptions = document.getElementsByClassName(\"poll-options\");\n          if (pollOptions) {\n            const inputs = pollOptions[0].getElementsByTagName(\"input\");\n            if (option.idx < inputs.length) {\n              inputs[option.idx].focus();\n            }\n          }\n        });\n      }\n      if (e) {\n        e.preventDefault();\n      }\n    },\n    removeOption(option) {\n      this.pollOptions.removeObject(option);\n    },\n    updatePollType(pollType, event) {\n      event?.preventDefault();\n      this.set(\"pollType\", pollType);\n    }\n  }, (_applyDecoratedDescriptor(_obj, \"pollResults\", [_decorators.default], Object.getOwnPropertyDescriptor(_obj, \"pollResults\"), _obj), _applyDecoratedDescriptor(_obj, \"isRegular\", [_dec], Object.getOwnPropertyDescriptor(_obj, \"isRegular\"), _obj), _applyDecoratedDescriptor(_obj, \"isNumber\", [_dec2], Object.getOwnPropertyDescriptor(_obj, \"isNumber\"), _obj), _applyDecoratedDescriptor(_obj, \"isMultiple\", [_dec3], Object.getOwnPropertyDescriptor(_obj, \"isMultiple\"), _obj), _applyDecoratedDescriptor(_obj, \"pollOptionsCount\", [_dec4], Object.getOwnPropertyDescriptor(_obj, \"pollOptionsCount\"), _obj), _applyDecoratedDescriptor(_obj, \"siteGroups\", [_dec5], Object.getOwnPropertyDescriptor(_obj, \"siteGroups\"), _obj), _applyDecoratedDescriptor(_obj, \"isPie\", [_dec6], Object.getOwnPropertyDescriptor(_obj, \"isPie\"), _obj), _applyDecoratedDescriptor(_obj, \"_setPollMinMax\", [_dec7], Object.getOwnPropertyDescriptor(_obj, \"_setPollMinMax\"), _obj), _applyDecoratedDescriptor(_obj, \"pollOutput\", [_dec8], Object.getOwnPropertyDescriptor(_obj, \"pollOutput\"), _obj), _applyDecoratedDescriptor(_obj, \"minNumOfOptionsValidation\", [_dec9], Object.getOwnPropertyDescriptor(_obj, \"minNumOfOptionsValidation\"), _obj), _applyDecoratedDescriptor(_obj, \"showMinNumOfOptionsValidation\", [_dec10], Object.getOwnPropertyDescriptor(_obj, \"showMinNumOfOptionsValidation\"), _obj), _applyDecoratedDescriptor(_obj, \"minMaxValueValidation\", [_dec11], Object.getOwnPropertyDescriptor(_obj, \"minMaxValueValidation\"), _obj), _applyDecoratedDescriptor(_obj, \"disableInsert\", [_dec12], Object.getOwnPropertyDescriptor(_obj, \"disableInsert\"), _obj), _applyDecoratedDescriptor(_obj, \"onOptionsTextChange\", [_object.action], Object.getOwnPropertyDescriptor(_obj, \"onOptionsTextChange\"), _obj), _applyDecoratedDescriptor(_obj, \"insertPoll\", [_object.action], Object.getOwnPropertyDescriptor(_obj, \"insertPoll\"), _obj), _applyDecoratedDescriptor(_obj, \"toggleAdvanced\", [_object.action], Object.getOwnPropertyDescriptor(_obj, \"toggleAdvanced\"), _obj), _applyDecoratedDescriptor(_obj, \"addOption\", [_object.action], Object.getOwnPropertyDescriptor(_obj, \"addOption\"), _obj), _applyDecoratedDescriptor(_obj, \"removeOption\", [_object.action], Object.getOwnPropertyDescriptor(_obj, \"removeOption\"), _obj), _applyDecoratedDescriptor(_obj, \"updatePollType\", [_object.action], Object.getOwnPropertyDescriptor(_obj, \"updatePollType\"), _obj)), _obj)));\n  _exports.default = _default;\n});","define(\"discourse/plugins/poll/discourse/templates/components/poll-breakdown-chart\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"ember-cli-htmlbars\"eaimeta@70e063a35619d71f\n  var _default = (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\": \"vEOgZNjS\",\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/templates/components/poll-breakdown-chart.hbs\",\n    \"isStrictMode\": false\n  });\n  _exports.default = _default;\n});","define(\"discourse/plugins/poll/discourse/templates/components/poll-breakdown-option\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"ember-cli-htmlbars\"eaimeta@70e063a35619d71f\n  var _default = (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\": \"xjKG75Pr\",\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/templates/components/poll-breakdown-option.hbs\",\n    \"isStrictMode\": false\n  });\n  _exports.default = _default;\n});","define(\"discourse/plugins/poll/discourse/templates/modal/poll-breakdown\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"ember-cli-htmlbars\"eaimeta@70e063a35619d71f\n  var _default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <DModalBody @title=\"poll.breakdown.title\">\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          @class=\"poll-breakdown-dropdown\"\n          @onChange={{action this.setGrouping}}\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  </DModalBody>\n  */\n  {\n    \"id\": \"Pa4EhLs3\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@title\\\"],[\\\"poll.breakdown.title\\\"]],[[\\\"default\\\"],[[[[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,3],[[28,[37,3],[[30,0,[\\\"model\\\",\\\"poll\\\",\\\"options\\\"]]],null]],null],null,[[[1,\\\"        \\\"],[8,[39,4],null,[[\\\"@option\\\",\\\"@index\\\",\\\"@totalVotes\\\",\\\"@optionsCount\\\",\\\"@displayMode\\\",\\\"@highlightedOption\\\",\\\"@onMouseOver\\\",\\\"@onMouseOut\\\"],[[30,1],[30,2],[30,0,[\\\"totalVotes\\\"]],[30,0,[\\\"model\\\",\\\"poll\\\",\\\"options\\\",\\\"length\\\"]],[30,0,[\\\"displayMode\\\"]],[30,0,[\\\"highlightedOption\\\"]],[28,[37,5],[[28,[37,6],[[30,0,[\\\"highlightedOption\\\"]]],null],[30,2]],null],[28,[37,5],[[28,[37,6],[[30,0,[\\\"highlightedOption\\\"]]],null],null],null]]],null],[1,\\\"\\\\n\\\"]],[1,2]],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,7],null,[[\\\"@content\\\",\\\"@value\\\",\\\"@nameProperty\\\",\\\"@class\\\",\\\"@onChange\\\"],[[30,0,[\\\"groupableUserFields\\\"]],[30,0,[\\\"groupedBy\\\"]],\\\"label\\\",\\\"poll-breakdown-dropdown\\\",[28,[37,8],[[30,0],[30,0,[\\\"setGrouping\\\"]]],null]]],null],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[10,0],[14,0,\\\"poll-breakdown-charts\\\"],[12],[1,\\\"\\\\n\\\"],[42,[28,[37,3],[[28,[37,3],[[30,0,[\\\"charts\\\"]]],null]],null],null,[[[1,\\\"        \\\"],[8,[39,9],null,[[\\\"@group\\\",\\\"@options\\\",\\\"@displayMode\\\",\\\"@highlightedOption\\\",\\\"@setHighlightedOption\\\"],[[28,[37,10],[[30,3],\\\"group\\\"],null],[28,[37,10],[[30,3],\\\"options\\\"],null],[30,0,[\\\"displayMode\\\"]],[30,0,[\\\"highlightedOption\\\"]],[28,[37,5],[[28,[37,6],[[30,0,[\\\"highlightedOption\\\"]]],null]],null]]],null],[1,\\\"\\\\n\\\"]],[3]],null],[1,\\\"    \\\"],[13],[1,\\\"\\\\n  \\\"],[13],[1,\\\"\\\\n\\\"]],[]]]]]],[\\\"option\\\",\\\"index\\\",\\\"chart\\\"],false,[\\\"d-modal-body\\\",\\\"i18n\\\",\\\"each\\\",\\\"-track-array\\\",\\\"poll-breakdown-option\\\",\\\"fn\\\",\\\"mut\\\",\\\"combo-box\\\",\\\"action\\\",\\\"poll-breakdown-chart\\\",\\\"get\\\"]]\",\n    \"moduleName\": \"discourse/plugins/poll/discourse/templates/modal/poll-breakdown.hbs\",\n    \"isStrictMode\": false\n  });\n  _exports.default = _default;\n});","define(\"discourse/plugins/poll/discourse/templates/modal/poll-ui-builder\", [\"exports\", \"@ember/template-factory\"], function (_exports, _templateFactory) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"ember-cli-htmlbars\"eaimeta@70e063a35619d71f\n  var _default = (0, _templateFactory.createTemplateFactory)(\n  /*\n    <DModalBody @title=\"poll.ui_builder.title\" @class=\"poll-ui-builder\">\n    <div class=\"input-group poll-type\">\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  \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  \n      {{#if this.showNumber}}\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      {{/if}}\n    </div>\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\" (action \"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|}}\n            <div class=\"input-group poll-option-value\">\n              <Input\n                @value={{option.value}}\n                @enter={{action \"addOption\" option}}\n              />\n              {{#if this.canRemoveOption}}\n                <DButton\n                  @icon=\"trash-alt\"\n                  @action={{action \"removeOption\" option}}\n                />\n              {{/if}}\n            </div>\n          {{/each}}\n  \n          <div class=\"poll-option-controls\">\n            <DButton\n              @class=\"btn-default\"\n              @icon=\"plus\"\n              @label=\"poll.ui_builder.poll_options.add\"\n              @action={{action \"addOption\" this.pollOptions.lastObject}}\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    {{#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={{action (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={{action (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          @class=\"poll-result\"\n          @valueProperty=\"value\"\n          @onChange={{action (mut this.pollResult)}}\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  \n      {{#unless this.isPie}}\n        <div class=\"input-group poll-checkbox column\">\n          <label>\n            <Input @type=\"checkbox\" @checked={{this.publicPoll}} />\n            {{i18n \"poll.ui_builder.poll_public.label\"}}\n          </label>\n        </div>\n      {{/unless}}\n    {{/if}}\n  </DModalBody>\n  \n  <div class=\"modal-footer\">\n    <DButton\n      @action={{action \"insertPoll\"}}\n      @icon=\"chart-bar\"\n      @class=\"btn-primary\"\n      @label=\"poll.ui_builder.insert\"\n      @disabled={{this.disableInsert}}\n    />\n  \n    <DButton\n      @label=\"cancel\"\n      @class=\"btn-flat\"\n      @action={{route-action \"closeModal\"}}\n    />\n  \n    <DButton\n      @action={{action \"toggleAdvanced\"}}\n      @class=\"btn-default show-advanced\"\n      @icon=\"cog\"\n      @title={{if\n        this.showAdvanced\n        \"poll.ui_builder.hide_advanced\"\n        \"poll.ui_builder.show_advanced\"\n      }}\n    />\n  </div>\n  */\n  {\n    \"id\": \"QMXYyUEI\",\n    \"block\": \"[[[8,[39,0],null,[[\\\"@title\\\",\\\"@class\\\"],[\\\"poll.ui_builder.title\\\",\\\"poll-ui-builder\\\"]],[[\\\"default\\\"],[[[[1,\\\"\\\\n  \\\"],[10,0],[14,0,\\\"input-group poll-type\\\"],[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,2],[\\\"click\\\",[28,[37,3],[[30,0,[\\\"updatePollType\\\"]],\\\"regular\\\"],null]],null],[12],[1,\\\"\\\\n      \\\"],[1,[28,[35,4],[\\\"poll.ui_builder.poll_type.regular\\\"],null]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n    \\\"],[11,3],[24,6,\\\"\\\"],[16,0,[29,[\\\"poll-type-value poll-type-value-multiple\\\\n        \\\",[52,[30,0,[\\\"isMultiple\\\"]],\\\"active\\\"]]]],[4,[38,2],[\\\"click\\\",[28,[37,3],[[30,0,[\\\"updatePollType\\\"]],\\\"multiple\\\"],null]],null],[12],[1,\\\"\\\\n      \\\"],[1,[28,[35,4],[\\\"poll.ui_builder.poll_type.multiple\\\"],null]],[1,\\\"\\\\n    \\\"],[13],[1,\\\"\\\\n\\\\n\\\"],[41,[30,0,[\\\"showNumber\\\"]],[[[1,\\\"      \\\"],[11,3],[24,6,\\\"\\\"],[16,0,[29,[\\\"poll-type-value poll-type-value-number\\\\n          \\\",[52,[30,0,[\\\"isNumber\\\"]],\\\"active\\\"]]]],[4,[38,2],[\\\"click\\\",[28,[37,3],[[30,0,[\\\"updatePollType\\\"]],\\\"number\\\"],null]],null],[12],[1,\\\"\\\\n        \\\"],[1,[28,[35,4],[\\\"poll.ui_builder.poll_type.number\\\"],null]],[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,4],[\\\"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,4],[\\\"poll.ui_builder.poll_options.label\\\"],null]],[13],[1,\\\"\\\\n        \\\"],[8,[39,7],[[4,[38,2],[\\\"input\\\",[28,[37,8],[[30,0],\\\"onOptionsTextChange\\\"],null]],null]],[[\\\"@value\\\"],[[30,0,[\\\"pollOptionsText\\\"]]]],null],[1,\\\"\\\"],[41,[30,0,[\\\"showMinNumOfOptionsValidation\\\"]],[[[41,[51,[30,0,[\\\"minNumOfOptionsValidation\\\",\\\"ok\\\"]]],[[[1,\\\"            \\\"],[8,[39,9],null,[[\\\"@validation\\\"],[[30,0,[\\\"minNumOfOptionsValidation\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null]],[]],null]],[]],[[[42,[28,[37,11],[[28,[37,11],[[30,0,[\\\"pollOptions\\\"]]],null]],null],null,[[[1,\\\"          \\\"],[10,0],[14,0,\\\"input-group poll-option-value\\\"],[12],[1,\\\"\\\\n            \\\"],[8,[39,5],null,[[\\\"@value\\\",\\\"@enter\\\"],[[30,1,[\\\"value\\\"]],[28,[37,8],[[30,0],\\\"addOption\\\",[30,1]],null]]],null],[1,\\\"\\\\n\\\"],[41,[30,0,[\\\"canRemoveOption\\\"]],[[[1,\\\"              \\\"],[8,[39,12],null,[[\\\"@icon\\\",\\\"@action\\\"],[\\\"trash-alt\\\",[28,[37,8],[[30,0],\\\"removeOption\\\",[30,1]],null]]],null],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"          \\\"],[13],[1,\\\"\\\\n\\\"]],[1]],null],[1,\\\"\\\\n        \\\"],[10,0],[14,0,\\\"poll-option-controls\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,12],null,[[\\\"@class\\\",\\\"@icon\\\",\\\"@label\\\",\\\"@action\\\"],[\\\"btn-default\\\",\\\"plus\\\",\\\"poll.ui_builder.poll_options.add\\\",[28,[37,8],[[30,0],\\\"addOption\\\",[30,0,[\\\"pollOptions\\\",\\\"lastObject\\\"]]],null]]],null],[1,\\\"\\\\n\\\"],[41,[28,[37,13],[[30,0,[\\\"showMinNumOfOptionsValidation\\\"]],[28,[37,14],[[30,0,[\\\"minNumOfOptionsValidation\\\",\\\"ok\\\"]]],null]],null],[[[1,\\\"            \\\"],[8,[39,9],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,4],[\\\"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,4],[\\\"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,4],[\\\"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,9],null,[[\\\"@validation\\\"],[[30,0,[\\\"minMaxValueValidation\\\"]]]],null],[1,\\\"\\\\n\\\"]],[]],null]],[]],null],[1,\\\"\\\\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,4],[\\\"poll.ui_builder.poll_groups.label\\\"],null]],[13],[1,\\\"\\\\n      \\\"],[8,[39,15],null,[[\\\"@content\\\",\\\"@value\\\",\\\"@onChange\\\",\\\"@labelProperty\\\",\\\"@valueProperty\\\"],[[30,0,[\\\"siteGroups\\\"]],[30,0,[\\\"pollGroups\\\"]],[28,[37,8],[[30,0],[28,[37,16],[[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,4],[\\\"poll.ui_builder.automatic_close.label\\\"],null]],[13],[1,\\\"\\\\n      \\\"],[8,[39,17],null,[[\\\"@date\\\",\\\"@onChange\\\",\\\"@clearable\\\",\\\"@useGlobalPickerContainer\\\"],[[30,0,[\\\"pollAutoClose\\\"]],[28,[37,8],[[30,0],[28,[37,16],[[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,4],[\\\"poll.ui_builder.poll_result.label\\\"],null]],[13],[1,\\\"\\\\n      \\\"],[8,[39,18],null,[[\\\"@content\\\",\\\"@value\\\",\\\"@class\\\",\\\"@valueProperty\\\",\\\"@onChange\\\"],[[30,0,[\\\"pollResults\\\"]],[30,0,[\\\"pollResult\\\"]],\\\"poll-result\\\",\\\"value\\\",[28,[37,8],[[30,0],[28,[37,16],[[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,4],[\\\"poll.ui_builder.poll_chart_type.label\\\"],null]],[13],[1,\\\"\\\\n\\\\n        \\\"],[10,0],[14,0,\\\"radio-group\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,19],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,20],[\\\"chart-bar\\\"],null]],[1,\\\"\\\\n            \\\"],[1,[28,[35,4],[\\\"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,19],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,20],[\\\"chart-pie\\\"],null]],[1,\\\"\\\\n            \\\"],[1,[28,[35,4],[\\\"poll.ui_builder.poll_chart_type.pie\\\"],null]],[13],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null],[1,\\\"\\\\n\\\"],[41,[51,[30,0,[\\\"isPie\\\"]]],[[[1,\\\"      \\\"],[10,0],[14,0,\\\"input-group poll-checkbox column\\\"],[12],[1,\\\"\\\\n        \\\"],[10,\\\"label\\\"],[12],[1,\\\"\\\\n          \\\"],[8,[39,5],null,[[\\\"@type\\\",\\\"@checked\\\"],[\\\"checkbox\\\",[30,0,[\\\"publicPoll\\\"]]]],null],[1,\\\"\\\\n          \\\"],[1,[28,[35,4],[\\\"poll.ui_builder.poll_public.label\\\"],null]],[1,\\\"\\\\n        \\\"],[13],[1,\\\"\\\\n      \\\"],[13],[1,\\\"\\\\n\\\"]],[]],null]],[]],null]],[]]]]],[1,\\\"\\\\n\\\\n\\\"],[10,0],[14,0,\\\"modal-footer\\\"],[12],[1,\\\"\\\\n  \\\"],[8,[39,12],null,[[\\\"@action\\\",\\\"@icon\\\",\\\"@class\\\",\\\"@label\\\",\\\"@disabled\\\"],[[28,[37,8],[[30,0],\\\"insertPoll\\\"],null],\\\"chart-bar\\\",\\\"btn-primary\\\",\\\"poll.ui_builder.insert\\\",[30,0,[\\\"disableInsert\\\"]]]],null],[1,\\\"\\\\n\\\\n  \\\"],[8,[39,12],null,[[\\\"@label\\\",\\\"@class\\\",\\\"@action\\\"],[\\\"cancel\\\",\\\"btn-flat\\\",[28,[37,21],[\\\"closeModal\\\"],null]]],null],[1,\\\"\\\\n\\\\n  \\\"],[8,[39,12],null,[[\\\"@action\\\",\\\"@class\\\",\\\"@icon\\\",\\\"@title\\\"],[[28,[37,8],[[30,0],\\\"toggleAdvanced\\\"],null],\\\"btn-default show-advanced\\\",\\\"cog\\\",[52,[30,0,[\\\"showAdvanced\\\"]],\\\"poll.ui_builder.hide_advanced\\\",\\\"poll.ui_builder.show_advanced\\\"]]],null],[1,\\\"\\\\n\\\"],[13]],[\\\"option\\\"],false,[\\\"d-modal-body\\\",\\\"if\\\",\\\"on\\\",\\\"fn\\\",\\\"i18n\\\",\\\"input\\\",\\\"unless\\\",\\\"textarea\\\",\\\"action\\\",\\\"input-tip\\\",\\\"each\\\",\\\"-track-array\\\",\\\"d-button\\\",\\\"and\\\",\\\"not\\\",\\\"group-chooser\\\",\\\"mut\\\",\\\"date-time-input\\\",\\\"combo-box\\\",\\\"radio-button\\\",\\\"d-icon\\\",\\\"route-action\\\"]]\",\n    \"moduleName\": \"discourse/plugins/poll/discourse/templates/modal/poll-ui-builder.hbs\",\n    \"isStrictMode\": false\n  });\n  _exports.default = _default;\n});","define(\"discourse/plugins/poll/initializers/add-poll-ui-builder\", [\"exports\", \"discourse-common/utils/decorators\", \"discourse/lib/show-modal\", \"discourse/lib/plugin-api\"], function (_exports, _decorators, _showModal, _pluginApi) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"discourse-common/utils/decorators\",0,\"discourse/lib/show-modal\",0,\"discourse/lib/plugin-api\"eaimeta@70e063a35619d71f\n  function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; }\n  function initializePollUIBuilder(api) {\n    var _dec, _obj;\n    api.modifyClass(\"controller:composer\", (_dec = (0, _decorators.default)(\"siteSettings.poll_enabled\", \"siteSettings.poll_minimum_trust_level_to_create\", \"model.topic.pm_with_non_human_user\"), (_obj = {\n      pluginId: \"discourse-poll-ui-builder\",\n      canBuildPoll(pollEnabled, minimumTrustLevel, pmWithNonHumanUser) {\n        return pollEnabled && (pmWithNonHumanUser || this.currentUser && (this.currentUser.staff || this.currentUser.trust_level >= minimumTrustLevel));\n      },\n      actions: {\n        showPollBuilder() {\n          (0, _showModal.default)(\"poll-ui-builder\").set(\"toolbarEvent\", this.toolbarEvent);\n        }\n      }\n    }, (_applyDecoratedDescriptor(_obj, \"canBuildPoll\", [_dec], Object.getOwnPropertyDescriptor(_obj, \"canBuildPoll\"), _obj)), _obj)));\n    api.addToolbarPopupMenuOptionsCallback(() => {\n      return {\n        action: \"showPollBuilder\",\n        icon: \"chart-bar\",\n        label: \"poll.ui_builder.title\",\n        condition: \"canBuildPoll\"\n      };\n    });\n  }\n  var _default = {\n    name: \"add-poll-ui-builder\",\n    initialize() {\n      (0, _pluginApi.withPluginApi)(\"0.8.7\", initializePollUIBuilder);\n    }\n  };\n  _exports.default = _default;\n});","define(\"discourse/plugins/poll/initializers/extend-for-poll\", [\"exports\", \"@ember/object\", \"discourse/widgets/glue\", \"discourse-common/lib/get-owner\", \"discourse-common/utils/decorators\", \"discourse/lib/plugin-api\"], function (_exports, _object, _glue, _getOwner, _decorators, _pluginApi) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"@ember/object\",0,\"discourse/widgets/glue\",0,\"discourse-common/lib/get-owner\",0,\"discourse-common/utils/decorators\",0,\"discourse/lib/plugin-api\"eaimeta@70e063a35619d71f\n  function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; }\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    var _obj, _dec, _obj2;\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\", (_obj = {\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    }, (_applyDecoratedDescriptor(_obj, \"_onPollMessage\", [_decorators.bind], Object.getOwnPropertyDescriptor(_obj, \"_onPollMessage\"), _obj)), _obj));\n    api.modifyClass(\"model:post\", (_dec = (0, _decorators.observes)(\"polls\"), (_obj2 = {\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    }, (_applyDecoratedDescriptor(_obj2, \"pollsChanged\", [_dec], Object.getOwnPropertyDescriptor(_obj2, \"pollsChanged\"), _obj2)), _obj2)));\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          };\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      id: \"discourse-poll\"\n    });\n    api.cleanupStream(cleanUpPolls);\n    const siteSettings = api.container.lookup(\"site-settings:main\");\n    if (siteSettings.poll_enabled) {\n      api.addSearchSuggestion(\"in:polls\");\n    }\n  }\n  var _default = {\n    name: \"extend-for-poll\",\n    initialize() {\n      (0, _pluginApi.withPluginApi)(\"0.8.7\", initializePolls);\n    }\n  };\n  _exports.default = _default;\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  0; //eaimeta@70e063a35619d71feaimeta@70e063a35619d71f\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\", \"I18n\"], function (_exports, _I18n) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.setup = setup;\n  0; //eaimeta@70e063a35619d71f0,\"I18n\"eaimeta@70e063a35619d71f\n  /*eslint no-bitwise:0 */\n  const DATA_PREFIX = \"data-poll-\";\n  const DEFAULT_POLL_NAME = \"poll\";\n  const ALLOWED_ATTRIBUTES = [\"close\", \"max\", \"min\", \"name\", \"order\", \"public\", \"results\", \"chartType\", \"groups\", \"status\", \"step\", \"type\"];\n  function replaceToken(tokens, target, list) {\n    let pos = tokens.indexOf(target);\n    let level = tokens[pos].level;\n    tokens.splice(pos, 1, ...list);\n    list[0].map = target.map;\n\n    // resequence levels\n    for (; pos < tokens.length; pos++) {\n      let nesting = tokens[pos].nesting;\n      if (nesting < 0) {\n        level--;\n      }\n      tokens[pos].level = level;\n      if (nesting > 0) {\n        level++;\n      }\n    }\n  }\n\n  // analyzes the block to that we have poll options\n  function getListItems(tokens, startToken) {\n    let i = tokens.length - 1;\n    let listItems = [];\n    let buffer = [];\n    for (; tokens[i] !== startToken; i--) {\n      if (i === 0) {\n        return;\n      }\n      let token = tokens[i];\n      if (token.level === 0) {\n        if (token.tag !== \"ol\" && token.tag !== \"ul\") {\n          return;\n        }\n      }\n      if (token.level === 1 && token.nesting === 1) {\n        if (token.tag === \"li\") {\n          listItems.push([token, buffer.reverse().join(\" \")]);\n        } else {\n          return;\n        }\n      }\n      if (token.level === 1 && token.nesting === 1 && token.tag === \"li\") {\n        buffer = [];\n      } else {\n        if (token.type === \"text\" || token.type === \"inline\") {\n          buffer.push(token.content);\n        }\n      }\n    }\n    return listItems.reverse();\n  }\n  function invalidPoll(state, tag) {\n    let token = state.push(\"text\", \"\", 0);\n    token.content = \"[/\" + tag + \"]\";\n  }\n  function getTitle(tokens, startToken) {\n    const startIndex = tokens.indexOf(startToken);\n    if (startIndex === -1) {\n      return;\n    }\n    const pollTokens = tokens.slice(startIndex);\n    const open = pollTokens.findIndex(token => token.type === \"heading_open\");\n    const close = pollTokens.findIndex(token => token.type === \"heading_close\");\n    if (open === -1 || close === -1) {\n      return;\n    }\n    const titleTokens = pollTokens.slice(open + 1, close);\n\n    // Remove the heading element\n    tokens.splice(startIndex + open, close - open + 1);\n    return titleTokens;\n  }\n  const rule = {\n    tag: \"poll\",\n    before(state, tagInfo, raw) {\n      let token = state.push(\"text\", \"\", 0);\n      token.content = raw;\n      token.bbcode_attrs = tagInfo.attrs;\n      token.bbcode_type = \"poll_open\";\n    },\n    after(state, openToken, raw) {\n      const titleTokens = getTitle(state.tokens, openToken);\n      let items = getListItems(state.tokens, openToken);\n      if (!items) {\n        return invalidPoll(state, raw);\n      }\n      const attrs = openToken.bbcode_attrs;\n\n      // default poll attributes\n      const attributes = [[\"class\", \"poll\"]];\n      if (!attrs[\"status\"]) {\n        attributes.push([DATA_PREFIX + \"status\", \"open\"]);\n      }\n      ALLOWED_ATTRIBUTES.forEach(name => {\n        if (attrs[name]) {\n          attributes.push([DATA_PREFIX + name, attrs[name]]);\n        }\n      });\n      if (!attrs.name) {\n        attributes.push([DATA_PREFIX + \"name\", DEFAULT_POLL_NAME]);\n      }\n\n      // we might need these values later...\n      let min = parseInt(attrs[\"min\"], 10);\n      let max = parseInt(attrs[\"max\"], 10);\n      let step = parseInt(attrs[\"step\"], 10);\n\n      // infinite loop if step < 1\n      if (step < 1) {\n        step = 1;\n      }\n      let header = [];\n      let token = new state.Token(\"poll_open\", \"div\", 1);\n      token.block = true;\n      token.attrs = attributes;\n      header.push(token);\n      token = new state.Token(\"poll_open\", \"div\", 1);\n      token.block = true;\n      header.push(token);\n      token = new state.Token(\"poll_open\", \"div\", 1);\n      token.attrs = [[\"class\", \"poll-container\"]];\n      header.push(token);\n      if (titleTokens) {\n        token = new state.Token(\"title_open\", \"div\", 1);\n        token.attrs = [[\"class\", \"poll-title\"]];\n        header.push(token);\n        header.push(...titleTokens);\n        token = new state.Token(\"title_close\", \"div\", -1);\n        header.push(token);\n      }\n\n      // generate the options when the type is \"number\"\n      if (attrs[\"type\"] === \"number\") {\n        // default values\n        if (isNaN(min)) {\n          min = 1;\n        }\n        if (isNaN(max)) {\n          max = state.md.options.discourse.pollMaximumOptions;\n        }\n        if (isNaN(step)) {\n          step = 1;\n        }\n        if (items.length > 0) {\n          return invalidPoll(state, raw);\n        }\n\n        // dynamically generate options\n        token = new state.Token(\"bullet_list_open\", \"ul\", 1);\n        header.push(token);\n        for (let o = min; o <= max; o += step) {\n          token = new state.Token(\"list_item_open\", \"li\", 1);\n          items.push([token, String(o)]);\n          header.push(token);\n          token = new state.Token(\"text\", \"\", 0);\n          token.content = String(o);\n          header.push(token);\n          token = new state.Token(\"list_item_close\", \"li\", -1);\n          header.push(token);\n        }\n        token = new state.Token(\"bullet_item_close\", \"\", -1);\n        header.push(token);\n      }\n\n      // flag items so we add hashes\n      for (let o = 0; o < items.length; o++) {\n        token = items[o][0];\n        let text = items[o][1];\n        token.attrs = token.attrs || [];\n        let md5Hash = md5(JSON.stringify([text]));\n        token.attrs.push([DATA_PREFIX + \"option-id\", md5Hash]);\n      }\n      replaceToken(state.tokens, openToken, header);\n\n      // we got to correct the level on the state\n      // we just resequenced\n      state.level = state.tokens[state.tokens.length - 1].level;\n      state.push(\"poll_close\", \"div\", -1);\n      token = state.push(\"poll_open\", \"div\", 1);\n      token.attrs = [[\"class\", \"poll-info\"]];\n      state.push(\"paragraph_open\", \"p\", 1);\n      token = state.push(\"span_open\", \"span\", 1);\n      token.block = false;\n      token.attrs = [[\"class\", \"info-number\"]];\n      token = state.push(\"text\", \"\", 0);\n      token.content = \"0\";\n      state.push(\"span_close\", \"span\", -1);\n      token = state.push(\"span_open\", \"span\", 1);\n      token.block = false;\n      token.attrs = [[\"class\", \"info-label\"]];\n      token = state.push(\"text\", \"\", 0);\n      token.content = _I18n.default.t(\"poll.voters\", {\n        count: 0\n      });\n      state.push(\"span_close\", \"span\", -1);\n      state.push(\"paragraph_close\", \"p\", -1);\n      state.push(\"poll_close\", \"div\", -1);\n      state.push(\"poll_close\", \"div\", -1);\n      state.push(\"poll_close\", \"div\", -1);\n    }\n  };\n  function newApiInit(helper) {\n    helper.registerOptions((opts, siteSettings) => {\n      if (!siteSettings.poll_enabled) {\n        opts.features.poll = false;\n      }\n      opts.pollMaximumOptions = siteSettings.poll_maximum_options;\n    });\n    helper.registerPlugin(md => {\n      md.block.bbcode.ruler.push(\"poll\", rule);\n    });\n  }\n  function setup(helper) {\n    helper.allowList([\"div.poll\", \"div.poll-info\", \"div.poll-container\", \"div.poll-title\", \"div.poll-buttons\", \"div[data-*]\", \"span.info-number\", \"span.info-text\", \"span.info-label\", \"a.button.cast-votes\", \"a.button.toggle-results\", \"li[data-*]\"]);\n    newApiInit(helper);\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  0; //eaimeta@70e063a35619d71feaimeta@70e063a35619d71f\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});","define(\"discourse/plugins/poll/widgets/discourse-poll\", [\"exports\", \"I18n\", \"discourse/plugins/poll/controllers/poll-ui-builder\", \"discourse/widgets/raw-html\", \"discourse/lib/ajax\", \"discourse/widgets/post\", \"discourse/widgets/widget\", \"discourse/plugins/poll/lib/even-round\", \"discourse/plugins/poll/lib/chart-colors\", \"virtual-dom\", \"discourse-common/lib/icon-library\", \"discourse/lib/load-script\", \"discourse/lib/ajax-error\", \"discourse/lib/formatter\", \"discourse/lib/round\", \"discourse/lib/show-modal\", \"discourse/lib/local-dates\"], function (_exports, _I18n, _pollUiBuilder, _rawHtml, _ajax, _post, _widget, _evenRound, _chartColors, _virtualDom, _iconLibrary, _loadScript, _ajaxError, _formatter, _round, _showModal, _localDates) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  0; //eaimeta@70e063a35619d71f0,\"I18n\",0,\"discourse/plugins/poll/controllers/poll-ui-builder\",0,\"discourse/widgets/raw-html\",0,\"discourse/lib/ajax\",0,\"discourse/widgets/post\",0,\"discourse/widgets/widget\",0,\"discourse/plugins/poll/lib/even-round\",0,\"discourse/plugins/poll/lib/chart-colors\",0,\"virtual-dom\",0,\"discourse-common/lib/icon-library\",0,\"discourse/lib/load-script\",0,\"discourse/lib/ajax-error\",0,\"discourse/lib/formatter\",0,\"discourse/lib/round\",0,\"discourse/lib/show-modal\",0,\"discourse/lib/local-dates\"eaimeta@70e063a35619d71f\n  const FETCH_VOTERS_COUNT = 25;\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 infoTextHtml(text) {\n    return new _rawHtml.default({\n      html: `<span class=\"info-text\">${text}</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 = _I18n.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, Object.assign({}, 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\", _I18n.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(_I18n.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 _I18n.default.t(\"poll.multiple.help.x_options\", {\n              count: min\n            });\n          }\n        } else if (min > 1) {\n          if (max < options) {\n            return _I18n.default.t(\"poll.multiple.help.between_min_and_max_options\", {\n              min,\n              max\n            });\n          } else {\n            return _I18n.default.t(\"poll.multiple.help.at_least_min_options\", {\n              count: min\n            });\n          }\n        } else if (max <= options) {\n          return _I18n.default.t(\"poll.multiple.help.up_to_max_options\", {\n            count: max\n          });\n        }\n      }\n    },\n    html(attrs) {\n      const {\n        poll\n      } = attrs;\n      const count = poll.voters;\n      const contents = [(0, _virtualDom.h)(\"p\", [(0, _virtualDom.h)(\"span.info-number\", count.toString()), (0, _virtualDom.h)(\"span.info-label\", _I18n.default.t(\"poll.voters\", {\n        count\n      }))])];\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)(\"p\", [(0, _virtualDom.h)(\"span.info-number\", totalVotes.toString()), (0, _virtualDom.h)(\"span.info-label\", _I18n.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            contents.push(infoTextHtml(help));\n          }\n        }\n      }\n      if (!attrs.isClosed && !attrs.showResults && poll.public && poll.results !== \"staff_only\") {\n        contents.push(infoTextHtml(_I18n.default.t(\"poll.public.title\")));\n      }\n      return contents;\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\", {\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 isAdmin = this.currentUser && this.currentUser.admin;\n      const isMe = this.currentUser && post.user_id === this.currentUser.id;\n      const dataExplorerEnabled = this.siteSettings.data_explorer_enabled;\n      const hideResultsDisabled = !staffOnly && (closed || topicArchived);\n      const exportQueryID = this.siteSettings.poll_export_data_explorer_query_id;\n      if (attrs.isMultiple && !hideResultsDisabled) {\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          disabled: castVotesDisabled,\n          action: \"castVotes\"\n        }));\n        contents.push(\" \");\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: \"far-eye-slash\",\n          disabled: hideResultsDisabled,\n          action: \"toggleResults\"\n        }));\n      } else {\n        let showResultsButton;\n        let infoText;\n        if (poll.results === \"on_vote\" && !attrs.hasVoted && !isMe) {\n          infoText = infoTextHtml(_I18n.default.t(\"poll.results.vote.title\"));\n        } else if (poll.results === \"on_close\" && !closed) {\n          infoText = infoTextHtml(_I18n.default.t(\"poll.results.closed.title\"));\n        } else if (poll.results === \"staff_only\" && !isStaff) {\n          infoText = infoTextHtml(_I18n.default.t(\"poll.results.staff.title\"));\n        } else {\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: \"far-eye\",\n            disabled: poll.voters === 0,\n            action: \"toggleResults\"\n          });\n        }\n        if (showResultsButton) {\n          contents.push(showResultsButton);\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: \"trash-alt\",\n            action: \"removeVote\"\n          }));\n        }\n        if (infoText) {\n          contents.push(infoText);\n        }\n      }\n      if (attrs.groupableUserFields.length && poll.voters > 0) {\n        const button = this.attach(\"button\", {\n          className: \"btn-default poll-show-breakdown\",\n          label: \"poll.group-results.label\",\n          title: \"poll.group-results.title\",\n          icon: \"far-eye\",\n          action: \"showBreakdown\"\n        });\n        contents.push(button);\n      }\n      if (isAdmin && dataExplorerEnabled && poll.voters > 0 && exportQueryID) {\n        contents.push(this.attach(\"button\", {\n          className: \"btn btn-default export-results\",\n          label: \"poll.export-results.label\",\n          title: \"poll.export-results.title\",\n          icon: \"download\",\n          disabled: poll.voters === 0,\n          action: \"exportResults\"\n        }));\n      }\n      if (poll.close) {\n        const closeDate = moment(poll.close);\n        if (closeDate.isValid()) {\n          const title = closeDate.format(\"LLL\");\n          let label;\n          if (attrs.isAutomaticallyClosed) {\n            const age = (0, _formatter.relativeAge)(closeDate.toDate(), {\n              addAgo: true\n            });\n            label = _I18n.default.t(\"poll.automatic_close.age\", {\n              age\n            });\n          } else {\n            const timeLeft = moment().to(closeDate, true);\n            label = _I18n.default.t(\"poll.automatic_close.closes_in\", {\n              timeLeft\n            });\n          }\n          contents.push(new _rawHtml.default({\n            html: `<span class=\"info-text\" title=\"${title}\">${label}</span>`\n          }));\n        }\n      }\n      if (this.currentUser && (this.currentUser.id === post.user_id || isStaff) && !topicArchived) {\n        if (closed) {\n          if (!attrs.isAutomaticallyClosed) {\n            contents.push(this.attach(\"button\", {\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          }\n        } else {\n          contents.push(this.attach(\"button\", {\n            className: \"toggle-status btn-danger\",\n            label: \"poll.close.label\",\n            title: \"poll.close.title\",\n            icon: \"lock\",\n            action: \"toggleStatus\"\n          }));\n        }\n      }\n      return contents;\n    }\n  });\n  var _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 = Object.assign({}, 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 (0, _virtualDom.h)(\"div\", [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) <= 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: _I18n.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(_I18n.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(_ref => {\n        let {\n          poll\n        } = _ref;\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\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(_I18n.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(_ref2 => {\n        let {\n          poll\n        } = _ref2;\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(_I18n.default.t(\"poll.error_while_casting_votes\"));\n        }\n      }).finally(() => {\n        state.loading = false;\n      });\n    },\n    showBreakdown() {\n      (0, _showModal.default)(\"poll-breakdown\", {\n        model: this.attrs,\n        panels: [{\n          id: \"percentage\",\n          title: \"poll.breakdown.percentage\"\n        }, {\n          id: \"count\",\n          title: \"poll.breakdown.count\"\n        }]\n      });\n    }\n  });\n  _exports.default = _default;\n});"],"mappings":"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"}