{"version":3,"file":"js/application-d07b552ffc9a8231a553.js","mappings":"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","sources":["webpack://impact-score/./app/javascript/chart-utils/draw-function/index.js","webpack://impact-score/./app/javascript/chart-utils/chart-colors/index.js","webpack://impact-score/./app/javascript/chart-utils/chart-options/index.js","webpack://impact-score/./app/javascript/chart-utils/parse-chart-options/index.js","webpack://impact-score/./app/javascript/views/doughnut-chart/index.js","webpack://impact-score/./app/javascript/views/index.js","webpack://impact-score/./app/javascript/views/account-form/index.js","webpack://impact-score/./app/javascript/views/account-logo-upload/index.js","webpack://impact-score/./app/javascript/views/add-automated-coverage-modal/index.js","webpack://impact-score/./app/javascript/views/alert/index.js","webpack://impact-score/./app/javascript/views/bar-chart/index.js","webpack://impact-score/./app/javascript/views/bar-chart-horizontal/index.js","webpack://impact-score/./app/javascript/views/client-form/index.js","webpack://impact-score/./app/javascript/views/client-logo-upload/index.js","webpack://impact-score/./app/javascript/views/client-report-form/index.js","webpack://impact-score/./app/javascript/views/coverage-item-form/index.js","webpack://impact-score/./app/javascript/views/coverage-item-image-upload/index.js","webpack://impact-score/./app/javascript/views/favourite-button/index.js","webpack://impact-score/./app/javascript/views/key-message-form/index.js","webpack://impact-score/./app/javascript/views/key-performance-indicator-form/index.js","webpack://impact-score/./app/javascript/views/mandatory-form/index.js","webpack://impact-score/./app/javascript/views/media-tiers/index.js","webpack://impact-score/./app/javascript/views/organisation-report-form/index.js","webpack://impact-score/./app/javascript/views/profile-image-upload/index.js","webpack://impact-score/./app/javascript/views/publication-audience-fill-modal/index.js","webpack://impact-score/./app/javascript/views/public-report-link-modal/index.js","webpack://impact-score/./app/javascript/views/quick-coverage-item-form/index.js","webpack://impact-score/./app/javascript/views/quick-coverage-item-image-upload/index.js","webpack://impact-score/./app/javascript/views/remove-image/index.js","webpack://impact-score/./app/javascript/views/reporting-period-modal/index.js","webpack://impact-score/./app/javascript/packs/application.js","webpack://impact-score/./app/javascript/vendor/timeago/index.js","webpack://impact-score/./node_modules/moment/locale/ sync ^\\.\\/.*$"],"sourcesContent":["//\n// Chart.extension.js\n// Makes chart bars corners rounded\n// Copied from https://codepen.io/jedtrow/full/ygRYgo\n//\n\nlet drawFunction = function () {\n var ctx = this._chart.ctx;\n var vm = this._view;\n var left, right, top, bottom, signX, signY, borderSkipped, radius;\n var borderWidth = vm.borderWidth;\n // Set Radius Here\n // If radius is large enough to cause drawing errors a max radius is imposed\n var cornerRadius = 6;\n\n if (!vm.horizontal) {\n // bar\n left = vm.x - vm.width / 2;\n right = vm.x + vm.width / 2;\n top = vm.y;\n bottom = vm.base;\n signX = 1;\n signY = bottom > top ? 1 : -1;\n borderSkipped = vm.borderSkipped || \"bottom\";\n } else {\n // horizontal bar\n left = vm.base;\n right = vm.x;\n top = vm.y - vm.height / 2;\n bottom = vm.y + vm.height / 2;\n signX = right > left ? 1 : -1;\n signY = 1;\n borderSkipped = vm.borderSkipped || \"left\";\n }\n\n // Canvas doesn't allow us to stroke inside the width so we can\n // adjust the sizes to fit if we're setting a stroke on the line\n if (borderWidth) {\n // borderWidth shold be less than bar width and bar height.\n var barSize = Math.min(Math.abs(left - right), Math.abs(top - bottom));\n borderWidth = borderWidth > barSize ? barSize : borderWidth;\n var halfStroke = borderWidth / 2;\n // Adjust borderWidth when bar top position is near vm.base(zero).\n var borderLeft = left + (borderSkipped !== \"left\" ? halfStroke * signX : 0);\n var borderRight =\n right + (borderSkipped !== \"right\" ? -halfStroke * signX : 0);\n var borderTop = top + (borderSkipped !== \"top\" ? halfStroke * signY : 0);\n var borderBottom =\n bottom + (borderSkipped !== \"bottom\" ? -halfStroke * signY : 0);\n // not become a vertical line?\n if (borderLeft !== borderRight) {\n top = borderTop;\n bottom = borderBottom;\n }\n // not become a horizontal line?\n if (borderTop !== borderBottom) {\n left = borderLeft;\n right = borderRight;\n }\n }\n\n ctx.beginPath();\n ctx.fillStyle = vm.backgroundColor;\n ctx.strokeStyle = vm.borderColor;\n ctx.lineWidth = borderWidth;\n\n // Corner points, from bottom-left to bottom-right clockwise\n // | 1 2 |\n // | 0 3 |\n var corners = [\n [left, bottom],\n [left, top],\n [right, top],\n [right, bottom],\n ];\n\n // Find first (starting) corner with fallback to 'bottom'\n var borders = [\"bottom\", \"left\", \"top\", \"right\"];\n var startCorner = borders.indexOf(borderSkipped, 0);\n if (startCorner === -1) {\n startCorner = 0;\n }\n\n function cornerAt(index) {\n return corners[(startCorner + index) % 4];\n }\n\n // Draw rectangle from 'startCorner'\n var corner = cornerAt(0);\n ctx.moveTo(corner[0], corner[1]);\n\n for (var i = 1; i < 4; i++) {\n corner = cornerAt(i);\n var nextCornerId = i + 1;\n if (nextCornerId == 4) {\n nextCornerId = 0;\n }\n\n var nextCorner = cornerAt(nextCornerId);\n\n var width = corners[2][0] - corners[1][0];\n var height = corners[0][1] - corners[1][1];\n var x = corners[1][0];\n var y = corners[1][1];\n\n var radius = cornerRadius;\n\n // Fix radius being too large\n if (radius > height / 2) {\n radius = height / 2;\n }\n if (radius > width / 2) {\n radius = width / 2;\n }\n\n ctx.moveTo(x + radius, y);\n ctx.lineTo(x + width - radius, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + radius);\n ctx.lineTo(x + width, y + height - radius);\n ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);\n ctx.lineTo(x + radius, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - radius);\n ctx.lineTo(x, y + radius);\n ctx.quadraticCurveTo(x, y, x + radius, y);\n }\n\n ctx.fill();\n if (borderWidth) {\n ctx.stroke();\n }\n};\n\nexport default drawFunction;\n","// Default:\n\n// const colors = {\n// gray: {\n// 300: '#E3EBF6',\n// 600: '#95AAC9',\n// 700: '#6E84A3',\n// 800: '#152E4D',\n// 900: '#283E59'\n// },\n// primary: {\n// 100: '#D2DDEC',\n// 300: '#A6C5F7',\n// 700: '#2C7BE5',\n// },\n// black: '#12263F',\n// white: '#FFFFFF',\n// transparent: 'transparent',\n// };\n\n// Impact Score:\n\nconst colors = {\n gray: {\n 300: \"#E3EBF6\",\n 600: \"#95AAC9\",\n 700: \"#6E84A3\",\n 800: \"#152E4D\",\n 900: \"#283E59\",\n },\n primary: {\n 100: \"#AFD1E3\", // $impact-score-blue-tint-2\n 300: \"#87BBD6\", // $impact-score-blue-tint-1\n 700: \"#5FA4C8\", // $impact-score-blue\n },\n black: \"#12263F\",\n white: \"#FFFFFF\",\n transparent: \"transparent\",\n};\n\nexport default colors;\n","import colors from \"../chart-colors\";\n\nconst fonts = {\n base: \"Cerebri Sans\",\n};\n\n// const colorScheme = ( getComputedStyle(document.body).backgroundColor == 'rgb(249, 251, 253)' ) ? 'light' : 'dark';\nconst colorScheme = \"dark\";\n\n// Chart options\n// Chart.js global options\nfunction chartOptions() {\n // Options\n var options = {\n defaults: {\n global: {\n responsive: true,\n maintainAspectRatio: false,\n defaultColor:\n colorScheme == \"dark\" ? colors.gray[700] : colors.gray[600],\n defaultFontColor:\n colorScheme == \"dark\" ? colors.gray[700] : colors.gray[600],\n defaultFontFamily: fonts.base,\n defaultFontSize: 13,\n layout: {\n padding: 0,\n },\n legend: {\n display: false,\n position: \"bottom\",\n labels: {\n usePointStyle: true,\n padding: 16,\n },\n },\n elements: {\n point: {\n radius: 0,\n backgroundColor: colors.primary[700],\n },\n line: {\n tension: 0.4,\n borderWidth: 3,\n borderColor: colors.primary[700],\n backgroundColor: colors.transparent,\n borderCapStyle: \"rounded\",\n },\n rectangle: {\n backgroundColor: colors.primary[700],\n },\n arc: {\n backgroundColor: colors.primary[700],\n borderColor: colors.white,\n borderWidth: 4,\n },\n },\n tooltips: {\n enabled: false,\n mode: \"index\",\n intersect: false,\n custom: function (model) {\n // Get tooltip\n var $tooltip = $(\"#chart-tooltip\");\n\n // Create tooltip on first render\n if (!$tooltip.length) {\n $tooltip = $(\n '
',\n );\n\n // Append to body\n $(\"body\").append($tooltip);\n }\n\n // Hide if no tooltip\n if (model.opacity === 0) {\n $tooltip.css(\"display\", \"none\");\n return;\n }\n\n function getBody(bodyItem) {\n return bodyItem.lines;\n }\n\n // Fill with content\n if (model.body) {\n var titleLines = model.title || [];\n var bodyLines = model.body.map(getBody);\n var html = \"\";\n\n // Add arrow\n html += '
';\n\n // Add header\n titleLines.forEach(function (title) {\n html +=\n '

' + title + \"

\";\n });\n\n // Add body\n bodyLines.forEach(function (body, i) {\n var colors = model.labelColors[i];\n var styles = \"background-color: \" + colors.backgroundColor;\n var indicator =\n '';\n var align =\n bodyLines.length > 1\n ? \"justify-content-left\"\n : \"justify-content-center\";\n html +=\n '
' +\n indicator +\n body +\n \"
\";\n });\n\n $tooltip.html(html);\n }\n\n // Get tooltip position\n var $canvas = $(this._chart.canvas);\n\n var canvasWidth = $canvas.outerWidth();\n var canvasHeight = $canvas.outerHeight();\n\n var canvasTop = $canvas.offset().top;\n var canvasLeft = $canvas.offset().left;\n\n var tooltipWidth = $tooltip.outerWidth();\n var tooltipHeight = $tooltip.outerHeight();\n\n var top = canvasTop + model.caretY - tooltipHeight - 16;\n var left = canvasLeft + model.caretX - tooltipWidth / 2;\n\n // Display tooltip\n $tooltip.css({\n top: top + \"px\",\n left: left + \"px\",\n display: \"block\",\n });\n },\n callbacks: {\n label: function (item, data) {\n var label = data.datasets[item.datasetIndex].label || \"\";\n var yLabel = item.yLabel;\n var content = \"\";\n\n if (data.datasets.length > 1) {\n content +=\n '' +\n label +\n \"\";\n }\n\n content +=\n '' + yLabel + \"\";\n return content;\n },\n },\n },\n },\n doughnut: {\n cutoutPercentage: 74,\n tooltips: {\n callbacks: {\n title: function (item, data) {\n var title = data.labels[item[0].index];\n return title;\n },\n label: function (item, data) {\n var value = data.datasets[0].data[item.index];\n var content = \"\";\n\n content +=\n '' + value + \"\";\n return content;\n },\n },\n },\n legendCallback: function (chart) {\n var data = chart.data;\n var content = \"\";\n\n data.labels.forEach(function (label, index) {\n var bgColor = data.datasets[0].backgroundColor[index];\n\n content += '';\n content +=\n '';\n content += label;\n content += \"\";\n });\n\n return content;\n },\n },\n },\n };\n\n // yAxes\n Chart.scaleService.updateScaleDefaults(\"linear\", {\n gridLines: {\n borderDash: [2],\n borderDashOffset: [2],\n color: colors.gray[300],\n drawBorder: false,\n drawTicks: true,\n lineWidth: 1,\n zeroLineWidth: 0,\n zeroLineColor:\n colorScheme == \"dark\" ? colors.gray[900] : colors.gray[300],\n zeroLineBorderDash: [2],\n zeroLineBorderDashOffset: [2],\n },\n ticks: {\n beginAtZero: true,\n padding: 10,\n callback: function (value) {\n if (!(value % 10)) {\n return value;\n }\n },\n },\n });\n\n // xAxes\n Chart.scaleService.updateScaleDefaults(\"category\", {\n gridLines: {\n drawBorder: false,\n drawOnChartArea: false,\n drawTicks: false,\n },\n ticks: {\n padding: 20,\n },\n maxBarThickness: 60,\n });\n\n return options;\n}\n\nexport default chartOptions;\n","function parseOptions(parent, options) {\n for (var item in options) {\n if (typeof options[item] !== \"object\") {\n parent[item] = options[item];\n } else {\n parseOptions(parent[item], options[item]);\n }\n }\n}\n\nexport default parseOptions;\n","import Chart from \"chart.js\";\nimport ChartDataLabels from \"chartjs-plugin-datalabels\";\nimport drawFunction from \"../../chart-utils/draw-function\";\nimport chartOptions from \"../../chart-utils/chart-options\";\nimport colors from \"../../chart-utils/chart-colors\";\nimport parseChartOptions from \"../../chart-utils/parse-chart-options\";\n\nChart.plugins.unregister(ChartDataLabels);\n\nexport default function doughnutChart(el, props) {\n const colorScheme = \"dark\";\n\n let data = {\n labels: props.labels,\n datasets: props.datasets,\n };\n\n // Chart configuration\n parseChartOptions(Chart, chartOptions());\n\n let chart = new Chart(el, {\n plugins: [ChartDataLabels],\n type: \"doughnut\",\n data: data,\n options: {\n plugins: {\n datalabels: {\n font: {\n size: 12,\n },\n color: \"white\",\n formatter: function (value, context) {\n var total = context.chart.data.datasets[0].data.reduce(\n (a, b) => a + b,\n 0,\n );\n\n var percent = 0;\n\n if (total > 0) {\n percent = (100 * value) / total;\n }\n\n if (percent === 0) {\n return \"\";\n }\n\n return Math.round(percent) + \"%\";\n },\n },\n },\n tooltips: {\n callbacks: {\n title: function (item, data) {\n var title = data.labels[item[0].index];\n return title;\n },\n label: function (item, data) {\n var value = data.datasets[0].data[item.index];\n var content = \"\";\n\n var total = data.datasets[0].data.reduce((a, b) => a + b, 0);\n\n var percent = 0;\n\n if (total > 0) {\n percent = (100 * value) / total;\n }\n\n content +=\n '' +\n value +\n \" items (\" +\n Math.round(percent) +\n \"%)\";\n return content;\n },\n },\n },\n },\n });\n\n if (props.legend_selector) {\n const content = chart.generateLegend();\n $(props.legend_selector).html(content);\n }\n}\n","import accountForm from \"./account-form\";\nimport accountLogoUpload from \"./account-logo-upload\";\nimport addAutomatedCoverageModal from \"./add-automated-coverage-modal\";\nimport alert from \"./alert\";\nimport barChart from \"./bar-chart\";\nimport barChartHorizontal from \"./bar-chart-horizontal\";\nimport clientForm from \"./client-form\";\nimport clientLogoUpload from \"./client-logo-upload\";\nimport clientReportForm from \"./client-report-form\";\nimport coverageItemForm from \"./coverage-item-form\";\nimport coverageItemImageUpload from \"./coverage-item-image-upload\";\nimport doughnutChart from \"./doughnut-chart\";\nimport favouriteButton from \"./favourite-button\";\nimport keyMessageForm from \"./key-message-form\";\nimport keyPerformanceIndicatorForm from \"./key-performance-indicator-form\";\nimport mandatoryForm from \"./mandatory-form\";\nimport mediaTierForm from \"./media-tiers\";\nimport organisationReportForm from \"./organisation-report-form\";\nimport profileImageUpload from \"./profile-image-upload\";\nimport publicReportLinkModal from \"./public-report-link-modal\";\nimport publicationAudienceFillModal from \"./publication-audience-fill-modal\";\nimport quickCoverageItemForm from \"./quick-coverage-item-form\";\nimport quickCoverageItemImageUpload from \"./quick-coverage-item-image-upload\";\nimport removeImage from \"./remove-image\";\nimport reportingPeriodModal from \"./reporting-period-modal\";\n\nexport default {\n accountForm,\n accountLogoUpload,\n addAutomatedCoverageModal,\n alert,\n barChart,\n barChartHorizontal,\n clientForm,\n clientLogoUpload,\n clientReportForm,\n coverageItemForm,\n coverageItemImageUpload,\n doughnutChart,\n favouriteButton,\n keyMessageForm,\n keyPerformanceIndicatorForm,\n mandatoryForm,\n mediaTierForm,\n organisationReportForm,\n profileImageUpload,\n publicationAudienceFillModal,\n publicReportLinkModal,\n quickCoverageItemForm,\n quickCoverageItemImageUpload,\n removeImage,\n reportingPeriodModal,\n};\n","export default function accountForm(el, props) {\n function onRestrictImagesElChange() {\n const restrictImagesEl = $(\"#restrictImages\", el);\n const accountImageDisplayLimitWrapperEl = $(\n \"#account-image-display-limit-wrapper\",\n el,\n );\n\n if (restrictImagesEl.is(\":checked\")) {\n accountImageDisplayLimitWrapperEl.show();\n } else {\n accountImageDisplayLimitWrapperEl.hide();\n }\n }\n\n $(\"#restrictImages\", el).on(\"change\", onRestrictImagesElChange);\n}\n","import AwsS3Multipart from \"@uppy/aws-s3-multipart\";\nimport Uppy from \"@uppy/core\";\nimport \"@uppy/core/dist/style.css\";\nimport Dashboard from \"@uppy/dashboard\";\nimport \"@uppy/dashboard/dist/style.css\";\n\nexport default function accountLogoUpload(el, props) {\n const imageUrlInput = el.querySelector(\"#account-logo-url-input\");\n\n const profileImageUploader = Uppy({\n id: \"account-logo-image-uploader\",\n autoProceed: true,\n allowMultipleUploads: false,\n restrictions: {\n allowedFileTypes: [\".jpg\", \".jpeg\", \".png\"],\n maxFileSize: 20 * 1024 * 1024, // 20 MB\n maxNumberOfFiles: 1,\n },\n });\n\n profileImageUploader.use(Dashboard, {\n id: \"account-logo-image-dashboard\",\n target: \"#account-logo-image-dashboard\",\n inline: true,\n width: \"100%\",\n height: 400,\n thumbnailWidth: 280,\n doneButtonHandler: null, // Hide the 'Done' button, since clicking it removes the uploaded image\n });\n\n profileImageUploader.use(AwsS3Multipart, {\n limit: 4,\n companionUrl: \"/\",\n });\n\n profileImageUploader.on(\"upload-success\", (file, response) => {\n imageUrlInput.value = response.uploadURL;\n });\n\n profileImageUploader.on(\"upload-error\", (file, error, response) => {\n console.log(\"error with file:\", file.id);\n console.log(\"error message:\", error);\n });\n}\n","export default function addAutomatedCoverageModal(el, props) {\n let $el = $(el);\n\n const form = el.querySelector(\"form\");\n const urlsErrors = el.querySelector(\"#urls-errors\");\n\n // Handle modal hide event\n $el.on(\"hidden.bs.modal\", function () {\n // Reset form and clear errors\n form.reset();\n urlsErrors.innerHTML = \"\";\n });\n\n function destroy() {\n $el.off(\"hidden.bs.modal\");\n }\n\n return {\n destroy: destroy,\n };\n}\n","export default function alert(el, props) {\n let $el = $(el);\n\n const dismissButton = el.querySelector('[data-dismiss=\"alert\"]');\n\n function onDismissButtonClick(e) {\n e.preventDefault();\n $el.alert(\"close\");\n }\n\n // If the dismissButton isn't clicked, dismiss the alert after 5 seconds\n setTimeout(function () {\n $el.alert(\"close\");\n }, 5000);\n\n dismissButton.addEventListener(\"click\", onDismissButtonClick);\n\n function destroy() {\n dismissButton.addEventListener(\"click\", onDismissButtonClick);\n }\n\n return {\n destroy: destroy,\n };\n}\n","import Chart from \"chart.js\";\nimport drawFunction from \"../../chart-utils/draw-function\";\nimport chartOptions from \"../../chart-utils/chart-options\";\nimport colors from \"../../chart-utils/chart-colors\";\nimport parseChartOptions from \"../../chart-utils/parse-chart-options\";\n\nexport default function barChart(el, props) {\n const colorScheme = \"dark\";\n\n let data = {\n labels: props.labels,\n datasets: props.datasets,\n };\n\n // Chart configuration\n parseChartOptions(Chart, chartOptions());\n Chart.elements.Rectangle.prototype.draw = drawFunction;\n\n let chart = new Chart(el, {\n type: \"bar\",\n data: data,\n options: {\n scales: {\n yAxes: [\n {\n ticks: {\n beginAtZero: true,\n padding: 10,\n callback: function (value) {\n if (!(value % 10)) {\n return value.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n }\n },\n },\n },\n ],\n },\n tooltips: {\n callbacks: {\n label: function (item, data) {\n var label = data.datasets[item.datasetIndex].label || \"\";\n var yLabel = item.yLabel;\n var content = \"\";\n\n if (data.datasets.length > 1) {\n content +=\n '' + label + \"\";\n }\n\n if (data.datasets.length > 1) {\n content +=\n '' + yLabel + \"\";\n } else {\n content +=\n '' +\n yLabel +\n \" \" +\n label +\n \"\";\n }\n\n return content;\n },\n },\n },\n },\n });\n\n Chart.scaleService.updateScaleDefaults(\"linear\", {\n gridLines: {\n borderDash: [2],\n borderDashOffset: [2],\n color: colors.gray[300],\n drawBorder: false,\n drawTicks: false,\n lineWidth: 0,\n zeroLineWidth: 0,\n zeroLineColor:\n colorScheme == \"dark\" ? colors.gray[900] : colors.gray[300],\n zeroLineBorderDash: [2],\n zeroLineBorderDashOffset: [2],\n },\n ticks: {\n beginAtZero: true,\n padding: 10,\n callback: function (value) {\n if (!(value % 10)) {\n return value;\n }\n },\n },\n });\n\n // xAxes\n Chart.scaleService.updateScaleDefaults(\"category\", {\n gridLines: {\n drawBorder: false,\n drawOnChartArea: false,\n drawTicks: false,\n },\n ticks: {\n padding: 20,\n },\n maxBarThickness: 10,\n });\n}\n","import Chart from \"chart.js\";\nimport chartOptions from \"../../chart-utils/chart-options\";\nimport drawFunction from \"../../chart-utils/draw-function\";\nimport parseChartOptions from \"../../chart-utils/parse-chart-options\";\n\nexport default function barChartHorizontal(el, props) {\n let data = {\n labels: props.labels,\n datasets: props.datasets,\n };\n\n // Chart configuration\n parseChartOptions(Chart, chartOptions());\n Chart.elements.Rectangle.prototype.draw = drawFunction;\n\n let chart = new Chart(el, {\n type: \"horizontalBar\",\n data: data,\n options: {\n scales: {\n xAxes: [\n {\n ticks: {\n beginAtZero: true,\n // Tick interval is effectively set to 10 in chartOptions, and using a callback here seems to be the only\n // way to override it? We want to ensure intervals are whole numbers.\n callback: function (value) {\n if (!(value % 1)) {\n return value;\n }\n },\n },\n },\n ],\n yAxes: [\n {\n ticks: {\n // Truncate the label if longer than 40 chars\n callback: function (value) {\n if (value.length > 40) {\n return value.substr(0, 40) + \"...\";\n } else {\n return value;\n }\n },\n },\n afterFit: function (scaleInstance) {\n scaleInstance.width = 300;\n },\n },\n ],\n },\n tooltips: {\n callbacks: {\n label: function (item, data) {\n var label = data.datasets[item.datasetIndex].label || \"\";\n var xLabel = item.xLabel;\n var content = \"\";\n\n if (data.datasets.length > 1) {\n content +=\n '' + label + \"\";\n }\n\n if (data.datasets.length > 1) {\n content +=\n '' + xLabel + \"\";\n } else {\n content +=\n '' +\n xLabel +\n \" \" +\n label +\n \"\";\n }\n\n return content;\n },\n },\n },\n },\n });\n}\n","import \"select2\";\n\nexport default function clientForm(el, props) {\n let $el = $(el);\n let select2ClientTypeName = $el.find(\"#client_client_type_name\");\n\n select2ClientTypeName.select2({\n tags: true,\n allowClear: true,\n placeholder: \"Choose an option\",\n });\n\n // An edge case can arise with the population of the client_type_name field in the following circumstance:\n //\n // - User #1 has the edit account view open, with a value selected for client_type_name\n // - User #2 edits the selected client type and changes the name\n // - User #1 reloads the edit account view (either manually or as the result of a validation error)\n // - User #1 sees that client_type_name is now blank\n //\n // A workaround is to select the selected client_type_name when the field is initialized\n select2ClientTypeName.val(props.selected_client_type_name);\n select2ClientTypeName.trigger(\"change\");\n\n function destroy() {\n select2ClientTypeName.select2(\"destroy\");\n }\n\n return {\n destroy: destroy,\n };\n}\n","import AwsS3Multipart from \"@uppy/aws-s3-multipart\";\nimport Uppy from \"@uppy/core\";\nimport \"@uppy/core/dist/style.css\";\nimport Dashboard from \"@uppy/dashboard\";\nimport \"@uppy/dashboard/dist/style.css\";\n\nexport default function clientLogoUpload(el, props) {\n const imageUrlInput = el.querySelector(\"#client-logo-url-input\");\n\n const profileImageUploader = Uppy({\n id: \"client-logo-image-uploader\",\n autoProceed: true,\n allowMultipleUploads: false,\n restrictions: {\n allowedFileTypes: [\".jpg\", \".jpeg\", \".png\"],\n maxFileSize: 20 * 1024 * 1024, // 20 MB\n maxNumberOfFiles: 1,\n },\n });\n\n profileImageUploader.use(Dashboard, {\n id: \"client-logo-image-dashboard\",\n target: \"#client-logo-image-dashboard\",\n inline: true,\n width: \"100%\",\n height: 400,\n thumbnailWidth: 280,\n doneButtonHandler: null, // Hide the 'Done' button, since clicking it removes the uploaded image\n });\n\n profileImageUploader.use(AwsS3Multipart, {\n limit: 4,\n companionUrl: \"/\",\n });\n\n profileImageUploader.on(\"upload-success\", (file, response) => {\n imageUrlInput.value = response.uploadURL;\n });\n\n profileImageUploader.on(\"upload-error\", (file, error, response) => {\n console.log(\"error with file:\", file.id);\n console.log(\"error message:\", error);\n });\n}\n","import flatpickr from \"flatpickr\";\nimport \"select2\";\n\nexport default function clientReportForm(el, props) {\n const periodStart = el.querySelector(\".flatpickr-period-start\");\n const periodEnd = el.querySelector(\".flatpickr-period-end\");\n\n let periodStartInstance = flatpickr(periodStart, {\n altInput: true,\n altFormat: \"J F Y\",\n });\n\n let periodEndInstance = flatpickr(periodEnd, {\n altInput: true,\n altFormat: \"J F Y\",\n });\n\n function destroy() {\n periodStartInstance.destroy();\n periodEndInstance.destroy();\n }\n\n return {\n destroy: destroy,\n };\n}\n","import flatpickr from \"flatpickr\";\nimport \"select2\";\n\nexport default function coverageItemForm(el, props) {\n let $el = $(el);\n\n const dateField = el.querySelector(\".flatpickr-field\");\n\n let flatpickrInstance = flatpickr(dateField, {\n altInput: true,\n altFormat: \"J F Y\",\n });\n\n let dateTimeFields = Array.prototype.slice.call(\n el.querySelectorAll(\".flatpickr-datetime-field\"),\n );\n\n dateTimeFields.map((fieldElement) => {\n flatpickr(fieldElement, {\n enableTime: true,\n dateFormat: \"Z\",\n altInput: true,\n altFormat: \"J F Y, h:i K\",\n });\n });\n\n // Select 2\n let select2multi = $el.find(\".select2-multi\");\n select2multi.select2();\n\n let select2Tags = $el.find(\".select2-tags\");\n select2Tags.select2({\n tags: true,\n allowClear: true,\n placeholder: \"Choose an option or type to add one\",\n });\n\n function formatKeyMessageResult(result) {\n let $result = $(\n '
' +\n '
' +\n result.text +\n \"
\" +\n '
' +\n '
' +\n '
' +\n \"
\",\n );\n\n if (result.description) {\n $result.find(\".key-message-result-description\").text(result.description);\n }\n\n if (result.display_starts_at) {\n $result\n .find(\".key-message-result-starts-at\")\n .text(\"Starts: \" + result.display_starts_at);\n }\n\n if (result.display_ends_at) {\n $result\n .find(\".key-message-result-ends-at\")\n .text(\"Ends: \" + result.display_ends_at);\n }\n\n return $result;\n }\n\n let select2keyMessages = $el.find(\".select2-key-messages\");\n select2keyMessages.select2({\n multiple: true,\n templateResult: formatKeyMessageResult,\n ajax: {\n url: props.key_messages_url,\n dataType: \"json\",\n data: function (params) {\n var query = {};\n\n var campaignSelector = document.querySelector(\n \"#coverage_item_campaign_id\",\n );\n\n if (campaignSelector.selectedIndex !== 0) {\n query.campaign_id = campaignSelector.selectedOptions[0].value;\n }\n\n return query;\n },\n processResults: function (data, params) {\n return {\n results: data,\n };\n },\n },\n });\n\n props.selected_key_messages.map(function (key_message) {\n var option = new Option(key_message.text, key_message.id, true, true);\n select2keyMessages.append(option).trigger(\"change\");\n });\n\n let select2mandatories = $el.find(\".select2-mandatories\");\n select2mandatories.select2({\n multiple: true,\n templateResult: formatKeyMessageResult,\n ajax: {\n url: props.mandatories_url,\n dataType: \"json\",\n data: function (params) {\n var query = {};\n\n var campaignSelector = document.querySelector(\n \"#coverage_item_campaign_id\",\n );\n\n if (campaignSelector.selectedIndex !== 0) {\n query.campaign_id = campaignSelector.selectedOptions[0].value;\n }\n\n return query;\n },\n processResults: function (data, params) {\n return {\n results: data,\n };\n },\n },\n });\n\n props.selected_mandatories.map(function (mandatory) {\n var option = new Option(mandatory.text, mandatory.id, true, true);\n select2mandatories.append(option).trigger(\"change\");\n });\n\n function displayCoverageTypeSection(sectionName) {\n // Can't use find for this\n $(\"[data-section-coverage-type]\").hide(200);\n\n if (sectionName.length > 0) {\n let selector = '[data-section-coverage-type=\"' + sectionName + '\"]';\n $(selector).show(200);\n }\n }\n\n function onCoverageTypeChange() {\n let selectedCoverageType = $(\"#coverage-type-select\")\n .find(\":selected\")\n .text();\n displayCoverageTypeSection(selectedCoverageType);\n }\n\n $(\"#coverage-type-select\").on(\"change\", onCoverageTypeChange);\n\n function updateMediaTiersTable(campaignId) {\n let url = props.media_tiers_url;\n\n if (campaignId) {\n url = url + \"?campaign_id=\" + campaignId;\n }\n\n $.get(url, function (result) {\n $(\".media-tier-guide\").html(result);\n });\n }\n\n function onCampaignChange() {\n let campaignSelector = $(\".campaign-select\");\n updateMediaTiersTable(campaignSelector.val());\n }\n\n $(\".campaign-select\").on(\"change\", onCampaignChange);\n updateMediaTiersTable(props.campaign_id);\n\n function onBacklinkIncludedChange() {\n let backlinkIncludedSelector = $(\n \"select[name='coverage_item[backlink_included]\",\n );\n let backlinkFieldsWrapperEl = $(\"#backlink-fields-wrapper\");\n\n if (backlinkIncludedSelector.val().match(/Yes/)) {\n backlinkFieldsWrapperEl.show();\n } else {\n backlinkFieldsWrapperEl.hide();\n }\n }\n\n $(\"select[name='coverage_item[backlink_included]\").on(\n \"change\",\n onBacklinkIncludedChange,\n );\n\n function onSyndicatedChange() {\n const syndicatedEl = $(\"input[name='coverage_item[syndicated]\", el);\n const syndicationFieldsWrapperEl = $(\"#syndication-fields-wrapper\", el);\n\n if (syndicatedEl.is(\":checked\")) {\n syndicationFieldsWrapperEl.show();\n } else {\n syndicationFieldsWrapperEl.hide();\n }\n }\n\n $(\"input[name='coverage_item[syndicated]\", el).on(\n \"change\",\n onSyndicatedChange,\n );\n\n function destroy() {\n $(\"#coverage-type-select\").off(\"change\", onCoverageTypeChange);\n select2Tags.select2(\"destroy\");\n select2multi.select2(\"destroy\");\n flatpickrInstance.destroy();\n }\n\n return {\n destroy: destroy,\n };\n}\n","import AwsS3Multipart from \"@uppy/aws-s3-multipart\";\nimport Uppy from \"@uppy/core\";\nimport \"@uppy/core/dist/style.css\";\nimport Dashboard from \"@uppy/dashboard\";\nimport \"@uppy/dashboard/dist/style.css\";\n\nexport default function coverageItemImageUpload(el, props) {\n const imageUrlInput = el.querySelector(\"#coverage-item-image-url-input\");\n\n const coverageItemImageUploader = Uppy({\n id: \"coverage-item-image-uploader\",\n autoProceed: true,\n allowMultipleUploads: false,\n restrictions: {\n allowedFileTypes: [\".jpg\", \".jpeg\", \".png\"],\n maxFileSize: 20 * 1024 * 1024, // 20 MB\n maxNumberOfFiles: 1,\n },\n });\n\n coverageItemImageUploader.use(Dashboard, {\n id: \"coverage-item-image-dashboard\",\n target: \"#coverage-item-image-dashboard\",\n inline: true,\n width: \"100%\",\n height: 400,\n thumbnailWidth: 280,\n doneButtonHandler: null, // Hide the 'Done' button, since clicking it removes the uploaded image\n });\n\n coverageItemImageUploader.use(AwsS3Multipart, {\n limit: 4,\n companionUrl: \"/\",\n });\n\n coverageItemImageUploader.on(\"upload-success\", (file, response) => {\n imageUrlInput.value = response.uploadURL;\n });\n\n coverageItemImageUploader.on(\"upload-error\", (file, error, response) => {\n console.log(\"error with file:\", file.id);\n console.log(\"error message:\", error);\n });\n}\n","import { Turbo } from \"@hotwired/turbo-rails\";\nimport { FetchRequest, post } from \"@rails/request.js\";\n\nexport default function favouriteButton(el, props) {\n const addFavouriteButton = el.querySelector(\"#add-favourite\");\n const removeFavouriteButton = el.querySelector(\"#remove-favourite\");\n\n function onAddFavouriteButtonClick(e) {\n e.preventDefault();\n\n // We use request.js rather than ajax() here since it handles CSRF for us\n post(props.path, {\n body: {\n client_id: props.client_id,\n },\n responseKind: \"text\",\n })\n .then((response) => {\n if (response.ok) {\n Turbo.visit(window.location.toString());\n } else {\n console.log(\"Error:\", response);\n }\n })\n .catch((error) => {\n console.error(\"Request failed:\", error);\n });\n }\n\n function onRemoveFavouriteButtonClick(e) {\n e.preventDefault();\n\n // Using the longhand form here since the 'destroy' shorthand method conflicts with the destroy function below\n const request = new FetchRequest(\n \"DELETE\",\n `${props.path}/${props.favourite_id}`,\n {\n responseKind: \"text\",\n },\n );\n\n request\n .perform()\n .then((response) => {\n if (response.ok) {\n Turbo.visit(window.location.toString());\n } else {\n console.log(\"Error:\", response);\n }\n })\n .catch((error) => {\n console.error(\"Request failed:\", error);\n });\n }\n\n addFavouriteButton.addEventListener(\"click\", onAddFavouriteButtonClick);\n removeFavouriteButton.addEventListener(\"click\", onRemoveFavouriteButtonClick);\n\n function destroy() {\n addFavouriteButton.removeEventListener(\"click\", onAddFavouriteButtonClick);\n removeFavouriteButton.removeEventListener(\n \"click\",\n onRemoveFavouriteButtonClick,\n );\n }\n\n return {\n destroy: destroy,\n };\n}\n","import flatpickr from \"flatpickr\";\n\nexport default function keyMessageForm(el, props) {\n let $el = $(el);\n\n const startDateInput = el.querySelector(\"#startsAtField\");\n const endDateInput = el.querySelector(\"#endsAtField\");\n\n let flatpickrStartInstance = flatpickr(startDateInput, {\n altInput: true,\n altFormat: \"J F Y\",\n });\n let flatpickrEndInstance = flatpickr(endDateInput, {\n altInput: true,\n altFormat: \"J F Y\",\n });\n\n function destroy() {\n flatpickrStartInstance.destroy();\n flatpickrEndInstance.destroy();\n }\n\n return {\n destroy: destroy,\n };\n}\n","import flatpickr from \"flatpickr\";\n\nexport default function keyPerformanceIndicatorForm(el, props) {\n let $el = $(el);\n\n const startDateInput = el.querySelector(\"#startsAtField\");\n const endDateInput = el.querySelector(\"#endsAtField\");\n\n let flatpickrStartInstance = flatpickr(startDateInput, {\n altInput: true,\n altFormat: \"J F Y\",\n });\n let flatpickrEndInstance = flatpickr(endDateInput, {\n altInput: true,\n altFormat: \"J F Y\",\n });\n\n function destroy() {\n flatpickrStartInstance.destroy();\n flatpickrEndInstance.destroy();\n }\n\n return {\n destroy: destroy,\n };\n}\n","import flatpickr from \"flatpickr\";\n\nexport default function mandatoryForm(el, props) {\n let $el = $(el);\n\n const startDateInput = el.querySelector(\"#startsAtField\");\n const endDateInput = el.querySelector(\"#endsAtField\");\n\n let flatpickrStartInstance = flatpickr(startDateInput, {\n altInput: true,\n altFormat: \"J F Y\",\n });\n let flatpickrEndInstance = flatpickr(endDateInput, {\n altInput: true,\n altFormat: \"J F Y\",\n });\n\n function destroy() {\n flatpickrStartInstance.destroy();\n flatpickrEndInstance.destroy();\n }\n\n return {\n destroy: destroy,\n };\n}\n","import \"select2\";\n\nexport default function mediaTierForm(el, props) {\n let $el = $(el);\n\n let select2Tags = $el.find(\".select2-tags\");\n select2Tags.select2({\n tags: true,\n allowClear: true,\n placeholder: \"Choose an option\",\n });\n\n function destroy() {\n select2Tags.select2(\"destroy\");\n }\n\n return {\n destroy: destroy,\n };\n}\n","import flatpickr from \"flatpickr\";\nimport \"select2\";\n\nexport default function organisationReportForm(el, props) {\n const periodStart = el.querySelector(\".flatpickr-period-start\");\n const periodEnd = el.querySelector(\".flatpickr-period-end\");\n\n let periodStartInstance = flatpickr(periodStart, {\n altInput: true,\n altFormat: \"J F Y\",\n });\n\n let periodEndInstance = flatpickr(periodEnd, {\n altInput: true,\n altFormat: \"J F Y\",\n });\n\n function destroy() {\n periodStartInstance.destroy();\n periodEndInstance.destroy();\n }\n\n return {\n destroy: destroy,\n };\n}\n","import AwsS3Multipart from \"@uppy/aws-s3-multipart\";\nimport Uppy from \"@uppy/core\";\nimport \"@uppy/core/dist/style.css\";\nimport Dashboard from \"@uppy/dashboard\";\nimport \"@uppy/dashboard/dist/style.css\";\n\nexport default function profileImageUpload(el, props) {\n const profileImageUrlInput = el.querySelector(\"#profile-image-url-input\");\n\n const profileImageUploader = Uppy({\n id: \"profile-image-uploader\",\n autoProceed: true,\n allowMultipleUploads: false,\n restrictions: {\n allowedFileTypes: [\".jpg\", \".jpeg\", \".png\"],\n maxFileSize: 20 * 1024 * 1024, // 20 MB\n maxNumberOfFiles: 1,\n },\n });\n\n profileImageUploader.use(Dashboard, {\n id: \"profile-image-dashboard\",\n target: \"#profile-image-dashboard\",\n inline: true,\n width: \"100%\",\n height: 400,\n thumbnailWidth: 280,\n doneButtonHandler: null, // Hide the 'Done' button, since clicking it removes the uploaded image\n });\n\n profileImageUploader.use(AwsS3Multipart, {\n limit: 4,\n companionUrl: \"/\",\n });\n\n profileImageUploader.on(\"upload-success\", (file, response) => {\n profileImageUrlInput.value = response.uploadURL;\n });\n\n profileImageUploader.on(\"upload-error\", (file, error, response) => {\n console.log(\"error with file:\", file.id);\n console.log(\"error message:\", error);\n });\n}\n","import \"select2\";\n\nexport default function publicationAudienceFillModal(el, props) {\n const searchSelect = $(\"#publicationSearchSelect\");\n\n function formatSelection(publicationSelection) {\n return publicationSelection.name;\n }\n\n function formatPublicationResult(result) {\n if (result.loading) {\n return result.text;\n }\n\n let $container = $(\n \"
\" +\n \"

\" +\n result.name +\n \"

\" +\n \"
Audience: \" +\n result.audience_size +\n \"
\" +\n \"
\" +\n result.description +\n \"
\" +\n \"
\" +\n \"
\",\n );\n\n return $container;\n }\n\n searchSelect.on(\"select2:select\", function (e) {\n var data = e.params.data;\n $(el).modal(\"hide\");\n $(\".audience-size-field\").val(data.audience_size);\n });\n\n searchSelect.select2({\n ajax: {\n url: props.search_url,\n dataType: \"json\",\n delay: 250,\n },\n placeholder: \"Type to search for a publication\",\n templateSelection: formatSelection,\n templateResult: formatPublicationResult,\n });\n\n function destroy() {\n searchSelect.select2(\"destroy\");\n searchSelect.off(\"select2:select\");\n }\n\n return {\n destroy: destroy,\n };\n}\n","export default function publicReportLinkModal(el, props) {\n const copyToClipboardButton = el.querySelector(\".clipboard-action\");\n const secretLinkInput = el.querySelector(\"#secretLink\");\n\n function onCopyToClipboard(e) {\n e.preventDefault();\n secretLinkInput.select();\n document.execCommand(\"copy\");\n }\n\n function onSecretLinkInputClick() {\n secretLinkInput.select();\n }\n\n copyToClipboardButton.addEventListener(\"click\", onCopyToClipboard);\n secretLinkInput.addEventListener(\"click\", onSecretLinkInputClick);\n\n function destroy() {\n copyToClipboardButton.removeEventListener(\"click\", onCopyToClipboard);\n secretLinkInput.removeEventListener(\"click\", onSecretLinkInputClick);\n }\n\n return {\n destroy: destroy,\n };\n}\n","import flatpickr from \"flatpickr\";\nimport \"select2\";\n\nexport default function quickCoverageItemForm(el, props) {\n let $el = $(el);\n\n const dateField = el.querySelector(\".flatpickr-field\");\n\n let flatpickrInstance = flatpickr(dateField, {\n altInput: true,\n altFormat: \"J F Y\",\n });\n\n // Select 2\n let select2multi = $el.find(\".select2-multi\");\n select2multi.select2();\n\n let select2Tags = $el.find(\".select2-tags\");\n select2Tags.select2({\n tags: true,\n allowClear: true,\n placeholder: \"Choose an option or type to add one\",\n });\n\n function onBacklinkIncludedChange() {\n let backlinkIncludedSelector = $(\n \"select[name='quick_coverage_item[backlink_included]\",\n );\n let backlinkFieldsWrapperEl = $(\"#backlink-fields-wrapper\");\n\n if (backlinkIncludedSelector.val().match(/Yes/)) {\n backlinkFieldsWrapperEl.show();\n } else {\n backlinkFieldsWrapperEl.hide();\n }\n }\n\n $(\"select[name='quick_coverage_item[backlink_included]\").on(\n \"change\",\n onBacklinkIncludedChange,\n );\n\n function destroy() {\n select2Tags.select2(\"destroy\");\n select2multi.select2(\"destroy\");\n flatpickrInstance.destroy();\n }\n\n return {\n destroy: destroy,\n };\n}\n","import AwsS3Multipart from \"@uppy/aws-s3-multipart\";\nimport Uppy from \"@uppy/core\";\nimport \"@uppy/core/dist/style.css\";\nimport Dashboard from \"@uppy/dashboard\";\nimport \"@uppy/dashboard/dist/style.css\";\n\nexport default function quickCoverageItemImageUpload(el, props) {\n const imageUrlInput = el.querySelector(\n \"#quick-coverage-item-image-url-input\",\n );\n\n const quickCoverageItemImageUploader = Uppy({\n id: \"quick-coverage-item-image-uploader\",\n autoProceed: true,\n allowMultipleUploads: false,\n restrictions: {\n allowedFileTypes: [\".jpg\", \".jpeg\", \".png\"],\n maxFileSize: 20 * 1024 * 1024, // 20 MB\n maxNumberOfFiles: 1,\n },\n });\n\n quickCoverageItemImageUploader.use(Dashboard, {\n id: \"quick-coverage-item-image-dashboard\",\n target: \"#quick-coverage-item-image-dashboard\",\n inline: true,\n width: \"100%\",\n height: 400,\n thumbnailWidth: 280,\n doneButtonHandler: null, // Hide the 'Done' button, since clicking it removes the uploaded image\n });\n\n quickCoverageItemImageUploader.use(AwsS3Multipart, {\n limit: 4,\n companionUrl: \"/\",\n });\n\n quickCoverageItemImageUploader.on(\"upload-success\", (file, response) => {\n imageUrlInput.value = response.uploadURL;\n });\n\n quickCoverageItemImageUploader.on(\"upload-error\", (file, error, response) => {\n console.log(\"error with file:\", file.id);\n console.log(\"error message:\", error);\n });\n}\n","export default function removeImage(el, props) {\n let $el = $(el);\n\n const imageInput = document.querySelector(props.inputId);\n\n function onRemoveImageLinkClick(e) {\n e.preventDefault();\n imageInput.value = null;\n el.text = \"Image will be removed on save. Click save to remove the image.\";\n }\n\n el.addEventListener(\"click\", onRemoveImageLinkClick);\n\n function destroy() {\n el.removeEventListener(\"click\", onRemoveImageLinkClick);\n }\n\n return {\n destroy: destroy,\n };\n}\n","import { Turbo } from \"@hotwired/turbo-rails\";\nimport flatpickr from \"flatpickr\";\n\nexport default function reportingPeriodModal(el, props) {\n let $el = $(el);\n\n const startDateInput = el.querySelector(\"#startDateInput\");\n const endDateInput = el.querySelector(\"#endDateInput\");\n const queryStringInput = el.querySelector(\"#queryStringInput\");\n const submitButton = el.querySelector(\"#reportingPeriodSubmit\");\n\n let flatpickrStartInstance = flatpickr(startDateInput, {\n altInput: true,\n altFormat: \"J F Y\",\n });\n let flatpickrEndInstance = flatpickr(endDateInput, {\n altInput: true,\n altFormat: \"J F Y\",\n });\n\n function onSubmit(e) {\n e.preventDefault();\n\n if (startDateInput.value && endDateInput.value) {\n $el.modal(\"hide\");\n\n let newLocation;\n\n if (queryStringInput.value) {\n newLocation = `${window.location.pathname}?${queryStringInput.value}&period_start=${startDateInput.value}&period_end=${endDateInput.value}`;\n } else {\n newLocation = `${window.location.pathname}?period_start=${startDateInput.value}&period_end=${endDateInput.value}`;\n }\n\n Turbo.visit(newLocation);\n }\n }\n\n submitButton.addEventListener(\"click\", onSubmit);\n\n function destroy() {\n submitButton.removeEventListener(\"click\", onSubmit);\n flatpickrStartInstance.destroy();\n flatpickrEndInstance.destroy();\n }\n\n return {\n destroy: destroy,\n };\n}\n","/* eslint no-console:0 */\n// This file is automatically compiled by Webpack, along with any other files\n// present in this directory. You're encouraged to place your actual application logic in\n// a relevant structure within app/javascript and only use these pack files to reference\n// that code so it'll be compiled.\n//\n// To reference this file, add <%= javascript_pack_tag 'application' %> to the appropriate\n// layout file, like app/views/layouts/application.html.erb\n\n// Uncomment to copy all static images under ../images to the output folder and reference\n// them with the image_pack_tag helper in views (e.g <%= image_pack_tag 'rails.png' %>)\n// or the `imagePath` JavaScript helper below.\n//\n// const images = require.context('../images', true)\n// const imagePath = (name) => images(name, true)\n\nimport \"@hotwired/turbo-rails\";\nimport \"@rails/request.js\";\n\nimport domready from \"domready\";\nimport viewloader from \"viewloader\";\n\nimport { default as views } from \"../views\";\n\nimport \"../vendor/timeago\";\n\nlet viewloaderManager = viewloader(views);\n\ndomready(function onDomready() {\n console.log(\"domready\");\n});\n\ndocument.addEventListener(\"turbo:load\", () => {\n console.log(\"turbo:load - viewloaderManager.callViews()\");\n viewloaderManager.callViews();\n\n // Timeago - elements auto destroyed when not visible anymore\n $(\"time[data-time-ago]\").timeago();\n\n // display tooltips\n $('[data-toggle=\"tooltip\"]').tooltip();\n});\n\n// DOMContentLoaded equivalent with Turbo\n// document.addEventListener('turbo:render', function onTurboLoad () {\n// console.log('turbo:render')\n// viewloaderManager.callViews()\n// })\n\n// FIXME: This is a workaround that hopefully won't be necessary once migrated from viewloader to stimulus\n// See: https://github.com/intercom/intercom-rails/issues/336#issuecomment-929072944\ndocument.addEventListener(\"turbo:submit-end\", (event) => {\n window.turboFormSubmissionFailed = !event.detail.success;\n\n if (window.turboFormSubmissionFailed) {\n document.dispatchEvent(new Event(\"turbo:visit\"));\n document.dispatchEvent(new Event(\"turbo:before-cache\"));\n }\n});\n\n// FIXME: As above\ndocument.addEventListener(\"turbo:render\", () => {\n if (window.turboFormSubmissionFailed) {\n document.dispatchEvent(new Event(\"turbo:load\"));\n window.turboFormSubmissionFailed = false;\n }\n});\n\n// Destroy views when navigating\ndocument.addEventListener(\"turbo:before-render\", () => {\n console.log(\"turbo:before-render - viewloaderManager.destroyViews()\");\n viewloaderManager.destroyViews();\n});\n\n// forcefully close modals.\n// See https://www.honeybadger.io/blog/turbolinks/\ndocument.addEventListener(\"turbo:before-cache\", () => {\n if (document.body.classList.contains(\"modal-open\")) {\n $(\".modal\").hide().removeAttr(\"aria-modal\").attr(\"aria-hidden\", \"true\");\n $(\".modal-backdrop\").remove();\n $(\"body\").removeClass(\"modal-open\");\n }\n});\n\nimport \"bootstrap\";\nimport \"trix/dist/trix.css\";\n\nimport \"../fonts/feather/feather.css\";\nimport \"../img/feather-sprite.svg\";\nimport \"../img/image-placeholder.svg\";\nimport \"../img/impact-score-logo.png\";\nimport \"../styles/actiontext.scss\";\nimport \"../styles/theme.scss\";\n\nrequire(\"trix\");\nrequire(\"@rails/actiontext\");\n","/**\n * Timeago is a jQuery plugin that makes it easy to support automatically\n * updating fuzzy timestamps (e.g. \"4 minutes ago\" or \"about 1 day ago\").\n *\n * @name timeago\n * @version 1.6.3\n * @requires jQuery v1.2.3+\n * @author Ryan McGeary\n * @license MIT License - http://www.opensource.org/licenses/mit-license.php\n *\n * For usage and examples, visit:\n * http://timeago.yarp.com/\n *\n * Copyright (c) 2008-2017, Ryan McGeary (ryan -[at]- mcgeary [*dot*] org)\n */\n\n(function (factory) {\n if (typeof define === \"function\" && define.amd) {\n // AMD. Register as an anonymous module.\n define([\"jquery\"], factory);\n } else if (typeof module === \"object\" && typeof module.exports === \"object\") {\n factory(require(\"jquery\"));\n } else {\n // Browser globals\n factory(jQuery);\n }\n})(function ($) {\n $.timeago = function (timestamp) {\n if (timestamp instanceof Date) {\n return inWords(timestamp);\n } else if (typeof timestamp === \"string\") {\n return inWords($.timeago.parse(timestamp));\n } else if (typeof timestamp === \"number\") {\n return inWords(new Date(timestamp));\n } else {\n return inWords($.timeago.datetime(timestamp));\n }\n };\n var $t = $.timeago;\n\n $.extend($.timeago, {\n settings: {\n refreshMillis: 60000,\n allowPast: true,\n allowFuture: false,\n localeTitle: false,\n cutoff: 0,\n autoDispose: true,\n lang: \"en\",\n strings: {\n en: {\n prefixAgo: null,\n prefixFromNow: null,\n suffixAgo: \"ago\",\n suffixFromNow: \"from now\",\n inPast: \"any moment now\",\n seconds: \"less than a minute\",\n minute: \"about a minute\",\n minutes: \"%d minutes\",\n hour: \"about an hour\",\n hours: \"about %d hours\",\n day: \"a day\",\n days: \"%d days\",\n month: \"about a month\",\n months: \"%d months\",\n year: \"about a year\",\n years: \"%d years\",\n wordSeparator: \" \",\n numbers: [],\n },\n },\n },\n\n inWords: function (distanceMillis, lang) {\n if (!this.settings.allowPast && !this.settings.allowFuture) {\n throw \"timeago allowPast and allowFuture settings can not both be set to false.\";\n }\n\n var $l =\n this.settings.strings[lang] ||\n this.settings.strings[this.settings.lang] ||\n this.settings.strings[\"en\"];\n var prefix = $l.prefixAgo;\n var suffix = $l.suffixAgo;\n if (this.settings.allowFuture) {\n if (distanceMillis < 0) {\n prefix = $l.prefixFromNow;\n suffix = $l.suffixFromNow;\n }\n }\n\n if (!this.settings.allowPast && distanceMillis >= 0) {\n return $l.inPast;\n }\n\n var seconds = Math.abs(distanceMillis) / 1000;\n var minutes = seconds / 60;\n var hours = minutes / 60;\n var days = hours / 24;\n var years = days / 365;\n\n function substitute(stringOrFunction, number) {\n var string = $.isFunction(stringOrFunction)\n ? stringOrFunction(number, distanceMillis)\n : stringOrFunction;\n var value = ($l.numbers && $l.numbers[number]) || number;\n return string.replace(/%d/i, value);\n }\n\n var words =\n (seconds < 45 && substitute($l.seconds, Math.round(seconds))) ||\n (seconds < 90 && substitute($l.minute, 1)) ||\n (minutes < 45 && substitute($l.minutes, Math.round(minutes))) ||\n (minutes < 90 && substitute($l.hour, 1)) ||\n (hours < 24 && substitute($l.hours, Math.round(hours))) ||\n (hours < 42 && substitute($l.day, 1)) ||\n (days < 30 && substitute($l.days, Math.round(days))) ||\n (days < 45 && substitute($l.month, 1)) ||\n (days < 365 && substitute($l.months, Math.round(days / 30))) ||\n (years < 1.5 && substitute($l.year, 1)) ||\n substitute($l.years, Math.round(years));\n\n var separator = $l.wordSeparator || \"\";\n if ($l.wordSeparator === undefined) {\n separator = \" \";\n }\n return $.trim([prefix, words, suffix].join(separator));\n },\n\n parse: function (iso8601) {\n var s = $.trim(iso8601);\n s = s.replace(/\\.\\d+/, \"\"); // remove milliseconds\n s = s.replace(/-/, \"/\").replace(/-/, \"/\");\n s = s.replace(/T/, \" \").replace(/Z/, \" UTC\");\n s = s.replace(/([\\+\\-]\\d\\d)\\:?(\\d\\d)/, \" $1$2\"); // -04:00 -> -0400\n s = s.replace(/([\\+\\-]\\d\\d)$/, \" $100\"); // +09 -> +0900\n return new Date(s);\n },\n datetime: function (elem) {\n var iso8601 = $t.isTime(elem)\n ? $(elem).attr(\"datetime\")\n : $(elem).attr(\"title\");\n return $t.parse(iso8601);\n },\n isTime: function (elem) {\n // jQuery's `is()` doesn't play well with HTML5 in IE\n return $(elem).get(0).tagName.toLowerCase() === \"time\"; // $(elem).is(\"time\");\n },\n });\n\n // functions that can be called via $(el).timeago('action')\n // init is default when no action is given\n // functions are called with context of a single element\n var functions = {\n init: function () {\n functions.dispose.call(this);\n var refresh_el = $.proxy(refresh, this);\n refresh_el();\n var $s = $t.settings;\n if ($s.refreshMillis > 0) {\n this._timeagoInterval = setInterval(refresh_el, $s.refreshMillis);\n }\n },\n update: function (timestamp) {\n var date = timestamp instanceof Date ? timestamp : $t.parse(timestamp);\n $(this).data(\"timeago\", { datetime: date });\n if ($t.settings.localeTitle) {\n $(this).attr(\"title\", date.toLocaleString());\n }\n refresh.apply(this);\n },\n updateFromDOM: function () {\n $(this).data(\"timeago\", {\n datetime: $t.parse(\n $t.isTime(this) ? $(this).attr(\"datetime\") : $(this).attr(\"title\"),\n ),\n });\n refresh.apply(this);\n },\n dispose: function () {\n if (this._timeagoInterval) {\n window.clearInterval(this._timeagoInterval);\n this._timeagoInterval = null;\n }\n },\n };\n\n $.fn.timeago = function (action, options) {\n var fn = action ? functions[action] : functions.init;\n if (!fn) {\n throw new Error(\"Unknown function name '\" + action + \"' for timeago\");\n }\n // each over objects here and call the requested function\n this.each(function () {\n fn.call(this, options);\n });\n return this;\n };\n\n function refresh() {\n var $s = $t.settings;\n\n //check if it's still visible\n if ($s.autoDispose && !$.contains(document.documentElement, this)) {\n //stop if it has been removed\n $(this).timeago(\"dispose\");\n return this;\n }\n\n var data = prepareData(this);\n\n if (!isNaN(data.datetime)) {\n if ($s.cutoff === 0 || Math.abs(distance(data.datetime)) < $s.cutoff) {\n $(this).text(\n inWords(\n data.datetime,\n $(this).attr(\"lang\") ? $(this).attr(\"lang\") : $t.settings.lang,\n ),\n );\n } else {\n if ($(this).attr(\"title\").length > 0) {\n $(this).text($(this).attr(\"title\"));\n }\n }\n }\n return this;\n }\n\n function prepareData(element) {\n element = $(element);\n if (!element.data(\"timeago\")) {\n element.data(\"timeago\", { datetime: $t.datetime(element) });\n var text = $.trim(element.text());\n if ($t.settings.localeTitle) {\n element.attr(\n \"title\",\n element.data(\"timeago\").datetime.toLocaleString(),\n );\n } else if (\n text.length > 0 &&\n !($t.isTime(element) && element.attr(\"title\"))\n ) {\n element.attr(\"title\", text);\n }\n }\n return element.data(\"timeago\");\n }\n\n function inWords(date, lang) {\n return $t.inWords(distance(date), lang);\n }\n\n function distance(date) {\n return new Date().getTime() - date.getTime();\n }\n\n // fix for IE6 suckage\n document.createElement(\"abbr\");\n document.createElement(\"time\");\n});\n","var map = {\n\t\"./af\": 5177,\n\t\"./af.js\": 5177,\n\t\"./ar\": 1509,\n\t\"./ar-dz\": 1488,\n\t\"./ar-dz.js\": 1488,\n\t\"./ar-kw\": 8676,\n\t\"./ar-kw.js\": 8676,\n\t\"./ar-ly\": 2353,\n\t\"./ar-ly.js\": 2353,\n\t\"./ar-ma\": 4496,\n\t\"./ar-ma.js\": 4496,\n\t\"./ar-ps\": 6947,\n\t\"./ar-ps.js\": 6947,\n\t\"./ar-sa\": 2682,\n\t\"./ar-sa.js\": 2682,\n\t\"./ar-tn\": 9756,\n\t\"./ar-tn.js\": 9756,\n\t\"./ar.js\": 1509,\n\t\"./az\": 5533,\n\t\"./az.js\": 5533,\n\t\"./be\": 8959,\n\t\"./be.js\": 8959,\n\t\"./bg\": 7777,\n\t\"./bg.js\": 7777,\n\t\"./bm\": 4903,\n\t\"./bm.js\": 4903,\n\t\"./bn\": 1290,\n\t\"./bn-bd\": 7357,\n\t\"./bn-bd.js\": 7357,\n\t\"./bn.js\": 1290,\n\t\"./bo\": 1545,\n\t\"./bo.js\": 1545,\n\t\"./br\": 1470,\n\t\"./br.js\": 1470,\n\t\"./bs\": 4429,\n\t\"./bs.js\": 4429,\n\t\"./ca\": 7306,\n\t\"./ca.js\": 7306,\n\t\"./cs\": 6464,\n\t\"./cs.js\": 6464,\n\t\"./cv\": 3635,\n\t\"./cv.js\": 3635,\n\t\"./cy\": 4226,\n\t\"./cy.js\": 4226,\n\t\"./da\": 3601,\n\t\"./da.js\": 3601,\n\t\"./de\": 7853,\n\t\"./de-at\": 6111,\n\t\"./de-at.js\": 6111,\n\t\"./de-ch\": 4697,\n\t\"./de-ch.js\": 4697,\n\t\"./de.js\": 7853,\n\t\"./dv\": 708,\n\t\"./dv.js\": 708,\n\t\"./el\": 4691,\n\t\"./el.js\": 4691,\n\t\"./en-au\": 3872,\n\t\"./en-au.js\": 3872,\n\t\"./en-ca\": 8298,\n\t\"./en-ca.js\": 8298,\n\t\"./en-gb\": 6195,\n\t\"./en-gb.js\": 6195,\n\t\"./en-ie\": 6584,\n\t\"./en-ie.js\": 6584,\n\t\"./en-il\": 5543,\n\t\"./en-il.js\": 5543,\n\t\"./en-in\": 9033,\n\t\"./en-in.js\": 9033,\n\t\"./en-nz\": 9402,\n\t\"./en-nz.js\": 9402,\n\t\"./en-sg\": 3004,\n\t\"./en-sg.js\": 3004,\n\t\"./eo\": 2934,\n\t\"./eo.js\": 2934,\n\t\"./es\": 7650,\n\t\"./es-do\": 838,\n\t\"./es-do.js\": 838,\n\t\"./es-mx\": 7730,\n\t\"./es-mx.js\": 7730,\n\t\"./es-us\": 6575,\n\t\"./es-us.js\": 6575,\n\t\"./es.js\": 7650,\n\t\"./et\": 3035,\n\t\"./et.js\": 3035,\n\t\"./eu\": 3508,\n\t\"./eu.js\": 3508,\n\t\"./fa\": 119,\n\t\"./fa.js\": 119,\n\t\"./fi\": 527,\n\t\"./fi.js\": 527,\n\t\"./fil\": 5995,\n\t\"./fil.js\": 5995,\n\t\"./fo\": 4858,\n\t\"./fo.js\": 4858,\n\t\"./fr\": 5498,\n\t\"./fr-ca\": 6435,\n\t\"./fr-ca.js\": 6435,\n\t\"./fr-ch\": 7892,\n\t\"./fr-ch.js\": 7892,\n\t\"./fr.js\": 5498,\n\t\"./fy\": 7071,\n\t\"./fy.js\": 7071,\n\t\"./ga\": 1734,\n\t\"./ga.js\": 1734,\n\t\"./gd\": 217,\n\t\"./gd.js\": 217,\n\t\"./gl\": 7329,\n\t\"./gl.js\": 7329,\n\t\"./gom-deva\": 2124,\n\t\"./gom-deva.js\": 2124,\n\t\"./gom-latn\": 3383,\n\t\"./gom-latn.js\": 3383,\n\t\"./gu\": 5050,\n\t\"./gu.js\": 5050,\n\t\"./he\": 1713,\n\t\"./he.js\": 1713,\n\t\"./hi\": 3861,\n\t\"./hi.js\": 3861,\n\t\"./hr\": 6308,\n\t\"./hr.js\": 6308,\n\t\"./hu\": 609,\n\t\"./hu.js\": 609,\n\t\"./hy-am\": 7160,\n\t\"./hy-am.js\": 7160,\n\t\"./id\": 4063,\n\t\"./id.js\": 4063,\n\t\"./is\": 9374,\n\t\"./is.js\": 9374,\n\t\"./it\": 8383,\n\t\"./it-ch\": 1827,\n\t\"./it-ch.js\": 1827,\n\t\"./it.js\": 8383,\n\t\"./ja\": 3827,\n\t\"./ja.js\": 3827,\n\t\"./jv\": 9722,\n\t\"./jv.js\": 9722,\n\t\"./ka\": 1794,\n\t\"./ka.js\": 1794,\n\t\"./kk\": 7088,\n\t\"./kk.js\": 7088,\n\t\"./km\": 6870,\n\t\"./km.js\": 6870,\n\t\"./kn\": 4451,\n\t\"./kn.js\": 4451,\n\t\"./ko\": 3164,\n\t\"./ko.js\": 3164,\n\t\"./ku\": 8174,\n\t\"./ku-kmr\": 6181,\n\t\"./ku-kmr.js\": 6181,\n\t\"./ku.js\": 8174,\n\t\"./ky\": 8474,\n\t\"./ky.js\": 8474,\n\t\"./lb\": 9680,\n\t\"./lb.js\": 9680,\n\t\"./lo\": 5867,\n\t\"./lo.js\": 5867,\n\t\"./lt\": 5766,\n\t\"./lt.js\": 5766,\n\t\"./lv\": 9532,\n\t\"./lv.js\": 9532,\n\t\"./me\": 8076,\n\t\"./me.js\": 8076,\n\t\"./mi\": 1848,\n\t\"./mi.js\": 1848,\n\t\"./mk\": 306,\n\t\"./mk.js\": 306,\n\t\"./ml\": 3739,\n\t\"./ml.js\": 3739,\n\t\"./mn\": 9053,\n\t\"./mn.js\": 9053,\n\t\"./mr\": 6169,\n\t\"./mr.js\": 6169,\n\t\"./ms\": 3386,\n\t\"./ms-my\": 2297,\n\t\"./ms-my.js\": 2297,\n\t\"./ms.js\": 3386,\n\t\"./mt\": 7075,\n\t\"./mt.js\": 7075,\n\t\"./my\": 2264,\n\t\"./my.js\": 2264,\n\t\"./nb\": 2274,\n\t\"./nb.js\": 2274,\n\t\"./ne\": 8235,\n\t\"./ne.js\": 8235,\n\t\"./nl\": 2572,\n\t\"./nl-be\": 3784,\n\t\"./nl-be.js\": 3784,\n\t\"./nl.js\": 2572,\n\t\"./nn\": 4566,\n\t\"./nn.js\": 4566,\n\t\"./oc-lnc\": 9330,\n\t\"./oc-lnc.js\": 9330,\n\t\"./pa-in\": 9849,\n\t\"./pa-in.js\": 9849,\n\t\"./pl\": 4418,\n\t\"./pl.js\": 4418,\n\t\"./pt\": 9834,\n\t\"./pt-br\": 8303,\n\t\"./pt-br.js\": 8303,\n\t\"./pt.js\": 9834,\n\t\"./ro\": 4457,\n\t\"./ro.js\": 4457,\n\t\"./ru\": 2271,\n\t\"./ru.js\": 2271,\n\t\"./sd\": 1221,\n\t\"./sd.js\": 1221,\n\t\"./se\": 3478,\n\t\"./se.js\": 3478,\n\t\"./si\": 7538,\n\t\"./si.js\": 7538,\n\t\"./sk\": 5784,\n\t\"./sk.js\": 5784,\n\t\"./sl\": 6637,\n\t\"./sl.js\": 6637,\n\t\"./sq\": 6794,\n\t\"./sq.js\": 6794,\n\t\"./sr\": 5719,\n\t\"./sr-cyrl\": 3322,\n\t\"./sr-cyrl.js\": 3322,\n\t\"./sr.js\": 5719,\n\t\"./ss\": 6000,\n\t\"./ss.js\": 6000,\n\t\"./sv\": 1011,\n\t\"./sv.js\": 1011,\n\t\"./sw\": 748,\n\t\"./sw.js\": 748,\n\t\"./ta\": 1025,\n\t\"./ta.js\": 1025,\n\t\"./te\": 1885,\n\t\"./te.js\": 1885,\n\t\"./tet\": 8861,\n\t\"./tet.js\": 8861,\n\t\"./tg\": 6571,\n\t\"./tg.js\": 6571,\n\t\"./th\": 5802,\n\t\"./th.js\": 5802,\n\t\"./tk\": 9527,\n\t\"./tk.js\": 9527,\n\t\"./tl-ph\": 9231,\n\t\"./tl-ph.js\": 9231,\n\t\"./tlh\": 1052,\n\t\"./tlh.js\": 1052,\n\t\"./tr\": 5096,\n\t\"./tr.js\": 5096,\n\t\"./tzl\": 9846,\n\t\"./tzl.js\": 9846,\n\t\"./tzm\": 1765,\n\t\"./tzm-latn\": 7711,\n\t\"./tzm-latn.js\": 7711,\n\t\"./tzm.js\": 1765,\n\t\"./ug-cn\": 8414,\n\t\"./ug-cn.js\": 8414,\n\t\"./uk\": 6618,\n\t\"./uk.js\": 6618,\n\t\"./ur\": 158,\n\t\"./ur.js\": 158,\n\t\"./uz\": 7609,\n\t\"./uz-latn\": 2475,\n\t\"./uz-latn.js\": 2475,\n\t\"./uz.js\": 7609,\n\t\"./vi\": 1135,\n\t\"./vi.js\": 1135,\n\t\"./x-pseudo\": 4051,\n\t\"./x-pseudo.js\": 4051,\n\t\"./yo\": 2218,\n\t\"./yo.js\": 2218,\n\t\"./zh-cn\": 2648,\n\t\"./zh-cn.js\": 2648,\n\t\"./zh-hk\": 1632,\n\t\"./zh-hk.js\": 1632,\n\t\"./zh-mo\": 1541,\n\t\"./zh-mo.js\": 1541,\n\t\"./zh-tw\": 304,\n\t\"./zh-tw.js\": 304\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 5358;"],"names":["left","right","top","bottom","signX","signY","borderSkipped","ctx","this","_chart","vm","_view","borderWidth","horizontal","base","x","y","height","width","barSize","Math","min","abs","halfStroke","borderLeft","borderRight","borderTop","borderBottom","beginPath","fillStyle","backgroundColor","strokeStyle","borderColor","lineWidth","corners","startCorner","indexOf","cornerAt","index","corner","moveTo","i","nextCornerId","radius","lineTo","quadraticCurveTo","fill","stroke","gray","primary","black","white","transparent","fonts","options","defaults","global","responsive","maintainAspectRatio","defaultColor","colors","defaultFontColor","defaultFontFamily","defaultFontSize","layout","padding","legend","display","position","labels","usePointStyle","elements","point","line","tension","borderCapStyle","rectangle","arc","tooltips","enabled","mode","intersect","custom","model","$tooltip","$","length","append","opacity","body","titleLines","title","bodyLines","map","bodyItem","lines","html","forEach","indicator","labelColors","align","$canvas","canvas","canvasTop","outerWidth","outerHeight","offset","canvasLeft","tooltipWidth","tooltipHeight","caretY","caretX","css","callbacks","label","item","data","datasets","datasetIndex","yLabel","content","doughnut","cutoutPercentage","legendCallback","chart","bgColor","Chart","scaleService","updateScaleDefaults","gridLines","borderDash","borderDashOffset","color","drawBorder","drawTicks","zeroLineWidth","zeroLineColor","zeroLineBorderDash","zeroLineBorderDashOffset","ticks","beginAtZero","callback","value","drawOnChartArea","maxBarThickness","parseOptions","parent","unregister","ChartDataLabels","accountForm","el","props","on","restrictImagesEl","accountImageDisplayLimitWrapperEl","is","show","hide","accountLogoUpload","imageUrlInput","querySelector","profileImageUploader","Uppy","id","autoProceed","allowMultipleUploads","restrictions","allowedFileTypes","maxFileSize","maxNumberOfFiles","use","Dashboard","target","inline","thumbnailWidth","doneButtonHandler","AwsS3Multipart","limit","companionUrl","file","response","uploadURL","error","console","log","addAutomatedCoverageModal","$el","form","urlsErrors","reset","innerHTML","destroy","off","alert","dismissButton","onDismissButtonClick","e","preventDefault","setTimeout","addEventListener","barChart","parseChartOptions","chartOptions","Rectangle","prototype","draw","drawFunction","type","scales","yAxes","toString","replace","barChartHorizontal","xAxes","substr","afterFit","scaleInstance","xLabel","clientForm","select2ClientTypeName","find","select2","tags","allowClear","placeholder","val","selected_client_type_name","trigger","clientLogoUpload","clientReportForm","periodStart","periodEnd","periodStartInstance","flatpickr","altInput","altFormat","periodEndInstance","coverageItemForm","dateField","flatpickrInstance","Array","slice","call","querySelectorAll","fieldElement","enableTime","dateFormat","select2multi","select2Tags","formatKeyMessageResult","result","$result","text","description","display_starts_at","display_ends_at","select2keyMessages","multiple","templateResult","ajax","url","key_messages_url","dataType","params","query","campaignSelector","document","selectedIndex","campaign_id","selectedOptions","processResults","results","selected_key_messages","key_message","option","Option","select2mandatories","onCoverageTypeChange","selectedCoverageType","sectionName","updateMediaTiersTable","campaignId","media_tiers_url","get","mandatories_url","selected_mandatories","mandatory","backlinkIncludedSelector","backlinkFieldsWrapperEl","match","syndicatedEl","syndicationFieldsWrapperEl","coverageItemImageUpload","coverageItemImageUploader","doughnutChart","plugins","datalabels","font","size","formatter","context","total","reduce","a","b","percent","round","legend_selector","generateLegend","favouriteButton","addFavouriteButton","removeFavouriteButton","onAddFavouriteButtonClick","post","path","client_id","responseKind","then","ok","Turbo","window","location","catch","onRemoveFavouriteButtonClick","FetchRequest","favourite_id","perform","removeEventListener","keyMessageForm","startDateInput","endDateInput","flatpickrStartInstance","flatpickrEndInstance","keyPerformanceIndicatorForm","mandatoryForm","mediaTierForm","organisationReportForm","profileImageUpload","profileImageUrlInput","publicationAudienceFillModal","searchSelect","modal","audience_size","search_url","delay","templateSelection","publicationSelection","name","loading","publicReportLinkModal","copyToClipboardButton","secretLinkInput","onCopyToClipboard","select","execCommand","onSecretLinkInputClick","quickCoverageItemForm","quickCoverageItemImageUpload","quickCoverageItemImageUploader","removeImage","imageInput","inputId","onRemoveImageLinkClick","reportingPeriodModal","queryStringInput","submitButton","onSubmit","newLocation","pathname","viewloaderManager","viewloader","views","domready","callViews","timeago","tooltip","event","turboFormSubmissionFailed","detail","success","dispatchEvent","Event","destroyViews","classList","contains","removeAttr","attr","remove","removeClass","require","define","timestamp","Date","inWords","parse","datetime","$t","extend","settings","refreshMillis","allowPast","allowFuture","localeTitle","cutoff","autoDispose","lang","strings","en","prefixAgo","prefixFromNow","suffixAgo","suffixFromNow","inPast","seconds","minute","minutes","hour","hours","day","days","month","months","year","years","wordSeparator","numbers","distanceMillis","$l","prefix","suffix","substitute","stringOrFunction","number","string","isFunction","words","separator","undefined","trim","join","iso8601","s","elem","isTime","tagName","toLowerCase","functions","init","dispose","refresh_el","proxy","refresh","$s","_timeagoInterval","setInterval","update","date","toLocaleString","apply","updateFromDOM","clearInterval","documentElement","prepareData","isNaN","distance","element","getTime","fn","action","Error","each","createElement","webpackContext","req","webpackContextResolve","__webpack_require__","o","code","keys","Object","resolve","module","exports"],"sourceRoot":""}