@edx/frontend-plugin-advertisements 1.22.0 → 1.23.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -85,7 +85,6 @@ const UpgradeModal = _ref => {
85
85
  const intl = (0, _i18n.useIntl)();
86
86
  const dateNow = Date.now();
87
87
  const {
88
- currency,
89
88
  currencySymbol,
90
89
  price,
91
90
  upgradeUrl
@@ -103,10 +102,9 @@ const UpgradeModal = _ref => {
103
102
  href: upgradeUrl,
104
103
  children: intl.formatMessage({
105
104
  id: 'learning.upgrade-modal.upgrade-button.label',
106
- defaultMessage: 'Upgrade for {currencySymbol}{price} {currency}',
105
+ defaultMessage: 'Upgrade for {currencySymbol}{price}',
107
106
  description: 'Label for upgrade button'
108
107
  }, {
109
- currency,
110
108
  currencySymbol,
111
109
  price
112
110
  })
@@ -131,8 +129,11 @@ const UpgradeModal = _ref => {
131
129
  size: "md",
132
130
  heroIsDark: true,
133
131
  heroNode: /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.ModalDialog.Hero, {
132
+ className: "justify-content-center",
134
133
  style: {
135
- background: 'linear-gradient(#001B1E, #0E3639)'
134
+ background: 'linear-gradient(#001B1E, #0E3639)',
135
+ borderTopLeftRadius: '6.8px',
136
+ borderTopRightRadius: '6.8px'
136
137
  },
137
138
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.ModalDialog.Hero.Content, {
138
139
  className: "m-0 text-primary-500",
@@ -144,6 +145,7 @@ const UpgradeModal = _ref => {
144
145
  }),
145
146
  footerNode: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_paragon.ActionRow, {
146
147
  isStacked: true,
148
+ className: "mb-2",
147
149
  children: [callToActionButton, offer && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
148
150
  className: "text-center discount-info",
149
151
  children: intl.formatMessage({
@@ -159,24 +161,25 @@ const UpgradeModal = _ref => {
159
161
  })]
160
162
  }),
161
163
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("h2", {
162
- className: "h3 mb-3",
164
+ className: "h3 mb-3 mt-2.5",
163
165
  children: modalTitle
164
166
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
165
167
  role: "list",
166
- className: "pl-2 text-primary-500",
168
+ className: "pl-2 text-gray-700",
167
169
  children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_paragon.Stack, {
168
170
  gap: 3,
169
171
  role: "listitem",
170
172
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_paragon.Stack, {
171
173
  direction: "horizontal",
172
174
  gap: 3,
175
+ className: "align-items-start",
173
176
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.Icon, {
174
177
  size: "md",
175
178
  src: _icons.Check
176
179
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
177
180
  children: intl.formatMessage({
178
181
  id: 'learning.upgrade-modal.body-list.first-item',
179
- defaultMessage: 'Earn a {linkedContent} of completion to show case your résumé',
182
+ defaultMessage: 'Earn a {linkedContent} of completion to showcase your résumé',
180
183
  description: 'Message for first list item'
181
184
  }, {
182
185
  linkedContent: /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.Hyperlink, {
@@ -196,7 +199,7 @@ const UpgradeModal = _ref => {
196
199
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
197
200
  children: intl.formatMessage({
198
201
  id: 'learning.upgrade-modal.body-list.second-item',
199
- defaultMessage: 'Support our mission at edX.',
202
+ defaultMessage: 'Support our mission at edX',
200
203
  description: 'Message for second list item'
201
204
  })
202
205
  })]
@@ -212,7 +215,6 @@ UpgradeModal.defaultProps = {
212
215
  };
213
216
  UpgradeModal.propTypes = {
214
217
  verifiedMode: _propTypes.default.shape({
215
- currency: _propTypes.default.string.isRequired,
216
218
  price: _propTypes.default.number.isRequired,
217
219
  currencySymbol: _propTypes.default.string.isRequired,
218
220
  upgradeUrl: _propTypes.default.string.isRequired
@@ -1 +1 @@
1
- {"version":3,"file":"UpgradeModal.js","names":["_react","require","_propTypes","_interopRequireDefault","_reactSdk","_frontendPlatform","_analytics","_i18n","_paragon","_icons","_data","_certificatePreview","_jsxRuntime","obj","__esModule","default","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","key","value","_toPropertyKey","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","UpgradeModal","_ref","isOpen","close","verifiedMode","org","courseId","offer","marketingUrl","accessExpiration","optimizely","decision","useDecision","OPTIMIZELY_VTR_MODAL_EXPERIMENT","KEY","variationKey","experimentProperties","experiment_key","variation_key","upsellPageName","eventProperties","org_key","courserun_key","promotionEventProperties","creative","name","position","promotion_id","useEffect","sendTrackingLogEvent","sendTrackEvent","logClick","location","linkCategory","linkName","linkType","pageName","track","ACTION","logClickPastExpiration","intl","useIntl","dateNow","Date","now","currency","currencySymbol","price","upgradeUrl","upgradeDeadlineDate","upgradeDeadline","pastDeadline","modalTitle","formatMessage","id","defaultMessage","description","callToActionButton","jsx","Button","className","onClick","href","children","jsxs","MarketingModal","title","onClose","isBlocking","size","heroIsDark","heroNode","ModalDialog","Hero","style","background","Content","bgColor","footerNode","ActionRow","isStacked","values","code","role","Stack","gap","direction","Icon","src","Check","linkedContent","Hyperlink","destination","getConfig","MARKETING_SITE_BASE_URL","defaultProps","propTypes","PropTypes","shape","string","isRequired","number","func","bool","node","_default","exports","withOptimizely"],"sources":["../../src/upgrade-modal/UpgradeModal.jsx"],"sourcesContent":["import { useEffect, React } from 'react';\nimport PropTypes from 'prop-types';\nimport { useDecision, withOptimizely } from '@optimizely/react-sdk';\nimport { getConfig } from '@edx/frontend-platform';\nimport { sendTrackEvent, sendTrackingLogEvent } from '@edx/frontend-platform/analytics';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport {\n ActionRow, Button, Hyperlink, Icon, MarketingModal, ModalDialog, Stack,\n} from '@openedx/paragon';\nimport { Check } from '@openedx/paragon/icons';\nimport { OPTIMIZELY_VTR_MODAL_EXPERIMENT } from '../data';\nimport CertificatePreview from '../upgrade-notification/certificate-preview';\n\nconst UpgradeModal = ({\n isOpen,\n close,\n verifiedMode,\n org,\n courseId,\n offer,\n marketingUrl,\n accessExpiration,\n optimizely,\n}) => {\n const [decision] = useDecision(OPTIMIZELY_VTR_MODAL_EXPERIMENT.KEY);\n const { variationKey } = decision;\n\n // Experiment specific properties or data should not be sent to the tracking logs, so break this\n // object out to ensure it is only sent to Segment and not the tracking logs.\n const experimentProperties = {\n experiment_key: OPTIMIZELY_VTR_MODAL_EXPERIMENT.KEY,\n variation_key: variationKey,\n };\n\n const upsellPageName = 'course_sequence_modal';\n const eventProperties = {\n org_key: org,\n courserun_key: courseId,\n };\n const promotionEventProperties = {\n creative: 'marketmodalupsell',\n name: 'In-Course Verification Prompt',\n position: 'marketing-modal-message',\n promotion_id: 'courseware_verified_certificate_upsell',\n ...eventProperties,\n ...experimentProperties,\n };\n\n useEffect(() => {\n sendTrackingLogEvent('edx.bi.course.upgrade.marketmodalupsell.displayed', eventProperties);\n sendTrackEvent('Promotion Viewed', promotionEventProperties);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const logClick = () => {\n sendTrackingLogEvent('edx.bi.course.upgrade.marketingmodal.clicked', eventProperties);\n sendTrackingLogEvent('edx.course.enrollment.upgrade.clicked', {\n ...eventProperties,\n location: 'marketing-modal-message',\n });\n sendTrackEvent('Promotion Clicked', promotionEventProperties);\n sendTrackEvent('edx.bi.ecommerce.upsell_links_clicked', {\n ...eventProperties,\n ...experimentProperties,\n linkCategory: 'green_upgrade',\n linkName: `${upsellPageName}_green`,\n linkType: 'button',\n pageName: upsellPageName,\n });\n optimizely.track(OPTIMIZELY_VTR_MODAL_EXPERIMENT.ACTION);\n };\n const logClickPastExpiration = () => {\n sendTrackEvent('edx.bi.ecommerce.upgrade_modal.past_expiration.button_clicked', {\n ...eventProperties,\n ...experimentProperties,\n linkCategory: 'upgrade_modal',\n linkName: `${upsellPageName}_course_details`,\n linkType: 'button',\n pageName: upsellPageName,\n });\n };\n\n const intl = useIntl();\n const dateNow = Date.now();\n const {\n currency, currencySymbol, price, upgradeUrl,\n } = verifiedMode;\n const upgradeDeadlineDate = accessExpiration ? new Date(accessExpiration.upgradeDeadline) : null;\n const pastDeadline = accessExpiration ? new Date(dateNow) > upgradeDeadlineDate : false;\n const modalTitle = intl.formatMessage({\n id: 'learning.upgrade-modal.title',\n defaultMessage: 'Pursue a verified certificate',\n description: 'Upgrade modal title',\n });\n let callToActionButton = (\n <Button\n className=\"w-100\"\n onClick={logClick}\n href={upgradeUrl}\n >\n {intl.formatMessage(\n {\n id: 'learning.upgrade-modal.upgrade-button.label',\n defaultMessage: 'Upgrade for {currencySymbol}{price} {currency}',\n description: 'Label for upgrade button',\n },\n { currency, currencySymbol, price },\n )}\n </Button>\n );\n\n if (pastDeadline) {\n callToActionButton = (\n <Button\n className=\"w-100\"\n onClick={logClickPastExpiration}\n href={marketingUrl}\n >\n {intl.formatMessage(\n {\n id: 'learning.upgrade-modal.upgrade-button.label',\n defaultMessage: 'View course details',\n description: 'Label for upgrade button',\n },\n )}\n </Button>\n );\n }\n\n return (\n <MarketingModal\n title={modalTitle}\n isOpen={isOpen}\n onClose={close}\n isBlocking\n size=\"md\"\n heroIsDark\n heroNode={(\n <ModalDialog.Hero style={{ background: 'linear-gradient(#001B1E, #0E3639)' }}>\n <ModalDialog.Hero.Content className=\"m-0 text-primary-500\">\n {/* TODO: replace with simplified */}\n <CertificatePreview {...{ courseId, bgColor: 'bg-light-100' }} />\n </ModalDialog.Hero.Content>\n </ModalDialog.Hero>\n )}\n footerNode={(\n <ActionRow isStacked>\n {callToActionButton}\n {offer && (\n <div className=\"text-center discount-info\">\n {intl.formatMessage({\n id: 'learning.generic.upgradeNotification.code',\n defaultMessage: 'Use code {code} at checkout',\n values: {\n code: (<span className=\"font-weight-bold\">{offer.code}</span>),\n },\n })}\n </div>\n )}\n </ActionRow>\n )}\n >\n <h2 className=\"h3 mb-3\">\n {modalTitle}\n </h2>\n <div role=\"list\" className=\"pl-2 text-primary-500\">\n <Stack gap={3} role=\"listitem\">\n <Stack direction=\"horizontal\" gap={3}>\n <Icon size=\"md\" src={Check} />\n <span>\n {intl.formatMessage(\n {\n id: 'learning.upgrade-modal.body-list.first-item',\n defaultMessage: 'Earn a {linkedContent} of completion to show case your résumé',\n description: 'Message for first list item',\n },\n {\n linkedContent: (\n <Hyperlink\n className=\"font-weight-bold text-primary-500 inline-link-underline\"\n destination={`${getConfig().MARKETING_SITE_BASE_URL}/verified-certificate`}\n >\n verified certificate\n </Hyperlink>\n ),\n },\n )}\n </span>\n </Stack>\n <Stack direction=\"horizontal\" gap={3} role=\"listitem\">\n <Icon size=\"md\" src={Check} />\n <span>\n {intl.formatMessage(\n {\n id: 'learning.upgrade-modal.body-list.second-item',\n defaultMessage: 'Support our mission at edX.',\n description: 'Message for second list item',\n },\n )}\n </span>\n </Stack>\n </Stack>\n </div>\n </MarketingModal>\n );\n};\n\nUpgradeModal.defaultProps = {\n verifiedMode: {},\n offer: null,\n accessExpiration: null,\n};\nUpgradeModal.propTypes = {\n verifiedMode: PropTypes.shape({\n currency: PropTypes.string.isRequired,\n price: PropTypes.number.isRequired,\n currencySymbol: PropTypes.string.isRequired,\n upgradeUrl: PropTypes.string.isRequired,\n }),\n offer: PropTypes.shape({\n code: PropTypes.string,\n }),\n accessExpiration: PropTypes.shape({\n upgradeDeadline: PropTypes.string,\n }),\n marketingUrl: PropTypes.string.isRequired,\n org: PropTypes.string.isRequired,\n courseId: PropTypes.string.isRequired,\n close: PropTypes.func.isRequired,\n isOpen: PropTypes.bool.isRequired,\n optimizely: PropTypes.node.isRequired,\n};\n\nexport default withOptimizely(UpgradeModal);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"UpgradeModal.js","names":["_react","require","_propTypes","_interopRequireDefault","_reactSdk","_frontendPlatform","_analytics","_i18n","_paragon","_icons","_data","_certificatePreview","_jsxRuntime","obj","__esModule","default","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","key","value","_toPropertyKey","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","UpgradeModal","_ref","isOpen","close","verifiedMode","org","courseId","offer","marketingUrl","accessExpiration","optimizely","decision","useDecision","OPTIMIZELY_VTR_MODAL_EXPERIMENT","KEY","variationKey","experimentProperties","experiment_key","variation_key","upsellPageName","eventProperties","org_key","courserun_key","promotionEventProperties","creative","name","position","promotion_id","useEffect","sendTrackingLogEvent","sendTrackEvent","logClick","location","linkCategory","linkName","linkType","pageName","track","ACTION","logClickPastExpiration","intl","useIntl","dateNow","Date","now","currencySymbol","price","upgradeUrl","upgradeDeadlineDate","upgradeDeadline","pastDeadline","modalTitle","formatMessage","id","defaultMessage","description","callToActionButton","jsx","Button","className","onClick","href","children","jsxs","MarketingModal","title","onClose","isBlocking","size","heroIsDark","heroNode","ModalDialog","Hero","style","background","borderTopLeftRadius","borderTopRightRadius","Content","bgColor","footerNode","ActionRow","isStacked","values","code","role","Stack","gap","direction","Icon","src","Check","linkedContent","Hyperlink","destination","getConfig","MARKETING_SITE_BASE_URL","defaultProps","propTypes","PropTypes","shape","number","isRequired","string","func","bool","node","_default","exports","withOptimizely"],"sources":["../../src/upgrade-modal/UpgradeModal.jsx"],"sourcesContent":["import { useEffect, React } from 'react';\nimport PropTypes from 'prop-types';\nimport { useDecision, withOptimizely } from '@optimizely/react-sdk';\nimport { getConfig } from '@edx/frontend-platform';\nimport { sendTrackEvent, sendTrackingLogEvent } from '@edx/frontend-platform/analytics';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport {\n ActionRow, Button, Hyperlink, Icon, MarketingModal, ModalDialog, Stack,\n} from '@openedx/paragon';\nimport { Check } from '@openedx/paragon/icons';\nimport { OPTIMIZELY_VTR_MODAL_EXPERIMENT } from '../data';\nimport CertificatePreview from '../upgrade-notification/certificate-preview';\n\nconst UpgradeModal = ({\n isOpen,\n close,\n verifiedMode,\n org,\n courseId,\n offer,\n marketingUrl,\n accessExpiration,\n optimizely,\n}) => {\n const [decision] = useDecision(OPTIMIZELY_VTR_MODAL_EXPERIMENT.KEY);\n const { variationKey } = decision;\n\n // Experiment specific properties or data should not be sent to the tracking logs, so break this\n // object out to ensure it is only sent to Segment and not the tracking logs.\n const experimentProperties = {\n experiment_key: OPTIMIZELY_VTR_MODAL_EXPERIMENT.KEY,\n variation_key: variationKey,\n };\n\n const upsellPageName = 'course_sequence_modal';\n const eventProperties = {\n org_key: org,\n courserun_key: courseId,\n };\n const promotionEventProperties = {\n creative: 'marketmodalupsell',\n name: 'In-Course Verification Prompt',\n position: 'marketing-modal-message',\n promotion_id: 'courseware_verified_certificate_upsell',\n ...eventProperties,\n ...experimentProperties,\n };\n\n useEffect(() => {\n sendTrackingLogEvent('edx.bi.course.upgrade.marketmodalupsell.displayed', eventProperties);\n sendTrackEvent('Promotion Viewed', promotionEventProperties);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const logClick = () => {\n sendTrackingLogEvent('edx.bi.course.upgrade.marketingmodal.clicked', eventProperties);\n sendTrackingLogEvent('edx.course.enrollment.upgrade.clicked', {\n ...eventProperties,\n location: 'marketing-modal-message',\n });\n sendTrackEvent('Promotion Clicked', promotionEventProperties);\n sendTrackEvent('edx.bi.ecommerce.upsell_links_clicked', {\n ...eventProperties,\n ...experimentProperties,\n linkCategory: 'green_upgrade',\n linkName: `${upsellPageName}_green`,\n linkType: 'button',\n pageName: upsellPageName,\n });\n optimizely.track(OPTIMIZELY_VTR_MODAL_EXPERIMENT.ACTION);\n };\n const logClickPastExpiration = () => {\n sendTrackEvent('edx.bi.ecommerce.upgrade_modal.past_expiration.button_clicked', {\n ...eventProperties,\n ...experimentProperties,\n linkCategory: 'upgrade_modal',\n linkName: `${upsellPageName}_course_details`,\n linkType: 'button',\n pageName: upsellPageName,\n });\n };\n\n const intl = useIntl();\n const dateNow = Date.now();\n const { currencySymbol, price, upgradeUrl } = verifiedMode;\n const upgradeDeadlineDate = accessExpiration ? new Date(accessExpiration.upgradeDeadline) : null;\n const pastDeadline = accessExpiration ? new Date(dateNow) > upgradeDeadlineDate : false;\n const modalTitle = intl.formatMessage({\n id: 'learning.upgrade-modal.title',\n defaultMessage: 'Pursue a verified certificate',\n description: 'Upgrade modal title',\n });\n let callToActionButton = (\n <Button\n className=\"w-100\"\n onClick={logClick}\n href={upgradeUrl}\n >\n {intl.formatMessage(\n {\n id: 'learning.upgrade-modal.upgrade-button.label',\n defaultMessage: 'Upgrade for {currencySymbol}{price}',\n description: 'Label for upgrade button',\n },\n { currencySymbol, price },\n )}\n </Button>\n );\n\n if (pastDeadline) {\n callToActionButton = (\n <Button\n className=\"w-100\"\n onClick={logClickPastExpiration}\n href={marketingUrl}\n >\n {intl.formatMessage(\n {\n id: 'learning.upgrade-modal.upgrade-button.label',\n defaultMessage: 'View course details',\n description: 'Label for upgrade button',\n },\n )}\n </Button>\n );\n }\n\n return (\n <MarketingModal\n title={modalTitle}\n isOpen={isOpen}\n onClose={close}\n isBlocking\n size=\"md\"\n heroIsDark\n heroNode={(\n <ModalDialog.Hero\n className=\"justify-content-center\"\n style={{\n background: 'linear-gradient(#001B1E, #0E3639)',\n borderTopLeftRadius: '6.8px',\n borderTopRightRadius: '6.8px',\n }}\n >\n <ModalDialog.Hero.Content className=\"m-0 text-primary-500\">\n {/* TODO: replace with simplified */}\n <CertificatePreview {...{ courseId, bgColor: 'bg-light-100' }} />\n </ModalDialog.Hero.Content>\n </ModalDialog.Hero>\n )}\n footerNode={(\n <ActionRow isStacked className=\"mb-2\">\n {callToActionButton}\n {offer && (\n <div className=\"text-center discount-info\">\n {intl.formatMessage({\n id: 'learning.generic.upgradeNotification.code',\n defaultMessage: 'Use code {code} at checkout',\n values: {\n code: (<span className=\"font-weight-bold\">{offer.code}</span>),\n },\n })}\n </div>\n )}\n </ActionRow>\n )}\n >\n <h2 className=\"h3 mb-3 mt-2.5\">\n {modalTitle}\n </h2>\n <div role=\"list\" className=\"pl-2 text-gray-700\">\n <Stack gap={3} role=\"listitem\">\n <Stack direction=\"horizontal\" gap={3} className=\"align-items-start\">\n <Icon size=\"md\" src={Check} />\n <span>\n {intl.formatMessage(\n {\n id: 'learning.upgrade-modal.body-list.first-item',\n defaultMessage: 'Earn a {linkedContent} of completion to showcase your résumé',\n description: 'Message for first list item',\n },\n {\n linkedContent: (\n <Hyperlink\n className=\"font-weight-bold text-primary-500 inline-link-underline\"\n destination={`${getConfig().MARKETING_SITE_BASE_URL}/verified-certificate`}\n >\n verified certificate\n </Hyperlink>\n ),\n },\n )}\n </span>\n </Stack>\n <Stack direction=\"horizontal\" gap={3} role=\"listitem\">\n <Icon size=\"md\" src={Check} />\n <span>\n {intl.formatMessage(\n {\n id: 'learning.upgrade-modal.body-list.second-item',\n defaultMessage: 'Support our mission at edX',\n description: 'Message for second list item',\n },\n )}\n </span>\n </Stack>\n </Stack>\n </div>\n </MarketingModal>\n );\n};\n\nUpgradeModal.defaultProps = {\n verifiedMode: {},\n offer: null,\n accessExpiration: null,\n};\nUpgradeModal.propTypes = {\n verifiedMode: PropTypes.shape({\n price: PropTypes.number.isRequired,\n currencySymbol: PropTypes.string.isRequired,\n upgradeUrl: PropTypes.string.isRequired,\n }),\n offer: PropTypes.shape({\n code: PropTypes.string,\n }),\n accessExpiration: PropTypes.shape({\n upgradeDeadline: PropTypes.string,\n }),\n marketingUrl: PropTypes.string.isRequired,\n org: PropTypes.string.isRequired,\n courseId: PropTypes.string.isRequired,\n close: PropTypes.func.isRequired,\n isOpen: PropTypes.bool.isRequired,\n optimizely: PropTypes.node.isRequired,\n};\n\nexport default withOptimizely(UpgradeModal);\n"],"mappings":"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","ignoreList":[]}
@@ -4,6 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
+ var _propTypes = _interopRequireDefault(require("prop-types"));
8
+ var _modelStore = require("@src/generic/model-store");
9
+ var _frontendPlatform = require("@edx/frontend-platform");
7
10
  var _DefaultUpgradeModal = _interopRequireDefault(require("./DefaultUpgradeModal"));
8
11
  var _ExperimentalUpgradeModal = _interopRequireDefault(require("./ExperimentalUpgradeModal"));
9
12
  var _optimizely = _interopRequireDefault(require("../optimizely"));
@@ -14,13 +17,41 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
14
17
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
15
18
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
16
19
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
17
- function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } // This is not fully functional and is currently just a copy of the UpgradeNotification
20
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /* eslint-disable import/no-unresolved */
21
+ (0, _frontendPlatform.ensureConfig)(['OPTIMIZELY_MODAL_ROLLOUT_WHITELIST'], 'Optimizely In-Course Modal rollout config');
22
+
23
+ // This is not fully functional and is currently just a copy of the UpgradeNotification
18
24
  // experiment with the imports updated
19
- const UpgradeModalWrapper = props => /*#__PURE__*/(0, _jsxRuntime.jsx)(_optimizely.default, _objectSpread({
20
- defaultComponent: _DefaultUpgradeModal.default,
21
- experimentalComponent: _ExperimentalUpgradeModal.default,
22
- defaultVariationKey: "off",
23
- experimentKey: _optimizely2.OPTIMIZELY_VTR_MODAL_EXPERIMENT.KEY
24
- }, props));
25
+ const isExperimentEnabledForOrg = org => {
26
+ const {
27
+ OPTIMIZELY_MODAL_ROLLOUT_WHITELIST
28
+ } = (0, _frontendPlatform.getConfig)();
29
+ if (!OPTIMIZELY_MODAL_ROLLOUT_WHITELIST) {
30
+ return false;
31
+ }
32
+ return OPTIMIZELY_MODAL_ROLLOUT_WHITELIST.includes(org);
33
+ };
34
+ const UpgradeModalWrapper = props => {
35
+ const {
36
+ courseId
37
+ } = props;
38
+ const {
39
+ org
40
+ } = (0, _modelStore.useModel)('courseHomeMeta', courseId);
41
+ const allowExperiment = isExperimentEnabledForOrg(org);
42
+
43
+ // If the org isn't whitelisted for experiment rollout, don't run the experiment
44
+ // We don't want users who aren't being experimented on to be bucketed, which will
45
+ // happen if we call useDecision()
46
+ return allowExperiment ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_optimizely.default, _objectSpread({
47
+ defaultComponent: _DefaultUpgradeModal.default,
48
+ experimentalComponent: _ExperimentalUpgradeModal.default,
49
+ defaultVariationKey: "off",
50
+ experimentKey: _optimizely2.OPTIMIZELY_VTR_MODAL_EXPERIMENT.KEY
51
+ }, props)) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_DefaultUpgradeModal.default, _objectSpread({}, props));
52
+ };
53
+ UpgradeModalWrapper.propTypes = {
54
+ courseId: _propTypes.default.string.isRequired
55
+ };
25
56
  var _default = exports.default = UpgradeModalWrapper;
26
57
  //# sourceMappingURL=UpgradeModalWrapper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"UpgradeModalWrapper.js","names":["_DefaultUpgradeModal","_interopRequireDefault","require","_ExperimentalUpgradeModal","_optimizely","_optimizely2","_jsxRuntime","obj","__esModule","default","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","key","value","_toPropertyKey","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","UpgradeModalWrapper","props","jsx","defaultComponent","DefaultUpgradeModal","experimentalComponent","ExperimentalUpgradeModal","defaultVariationKey","experimentKey","OPTIMIZELY_VTR_MODAL_EXPERIMENT","KEY","_default","exports"],"sources":["../../src/upgrade-modal/UpgradeModalWrapper.jsx"],"sourcesContent":["import DefaultUpgradeModal from './DefaultUpgradeModal';\nimport ExperimentalUpgradeModal from './ExperimentalUpgradeModal';\n\nimport OptimizelyExperiment from '../optimizely';\nimport { OPTIMIZELY_VTR_MODAL_EXPERIMENT } from '../data/optimizely';\n\n// This is not fully functional and is currently just a copy of the UpgradeNotification\n// experiment with the imports updated\nconst UpgradeModalWrapper = (props) => (\n <OptimizelyExperiment\n defaultComponent={DefaultUpgradeModal}\n experimentalComponent={ExperimentalUpgradeModal}\n defaultVariationKey=\"off\"\n experimentKey={OPTIMIZELY_VTR_MODAL_EXPERIMENT.KEY}\n {...props}\n />\n);\n\nexport default UpgradeModalWrapper;\n"],"mappings":";;;;;;AAAA,IAAAA,oBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,yBAAA,GAAAF,sBAAA,CAAAC,OAAA;AAEA,IAAAE,WAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,YAAA,GAAAH,OAAA;AAAqE,IAAAI,WAAA,GAAAJ,OAAA;AAAA,SAAAD,uBAAAM,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,QAAAC,CAAA,EAAAC,CAAA,QAAAC,CAAA,GAAAC,MAAA,CAAAC,IAAA,CAAAJ,CAAA,OAAAG,MAAA,CAAAE,qBAAA,QAAAC,CAAA,GAAAH,MAAA,CAAAE,qBAAA,CAAAL,CAAA,GAAAC,CAAA,KAAAK,CAAA,GAAAA,CAAA,CAAAC,MAAA,WAAAN,CAAA,WAAAE,MAAA,CAAAK,wBAAA,CAAAR,CAAA,EAAAC,CAAA,EAAAQ,UAAA,OAAAP,CAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,CAAA,EAAAI,CAAA,YAAAJ,CAAA;AAAA,SAAAU,cAAAZ,CAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAY,SAAA,CAAAC,MAAA,EAAAb,CAAA,UAAAC,CAAA,WAAAW,SAAA,CAAAZ,CAAA,IAAAY,SAAA,CAAAZ,CAAA,QAAAA,CAAA,OAAAF,OAAA,CAAAI,MAAA,CAAAD,CAAA,OAAAa,OAAA,WAAAd,CAAA,IAAAe,eAAA,CAAAhB,CAAA,EAAAC,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAE,MAAA,CAAAc,yBAAA,GAAAd,MAAA,CAAAe,gBAAA,CAAAlB,CAAA,EAAAG,MAAA,CAAAc,yBAAA,CAAAf,CAAA,KAAAH,OAAA,CAAAI,MAAA,CAAAD,CAAA,GAAAa,OAAA,WAAAd,CAAA,IAAAE,MAAA,CAAAgB,cAAA,CAAAnB,CAAA,EAAAC,CAAA,EAAAE,MAAA,CAAAK,wBAAA,CAAAN,CAAA,EAAAD,CAAA,iBAAAD,CAAA;AAAA,SAAAgB,gBAAApB,GAAA,EAAAwB,GAAA,EAAAC,KAAA,IAAAD,GAAA,GAAAE,cAAA,CAAAF,GAAA,OAAAA,GAAA,IAAAxB,GAAA,IAAAO,MAAA,CAAAgB,cAAA,CAAAvB,GAAA,EAAAwB,GAAA,IAAAC,KAAA,EAAAA,KAAA,EAAAZ,UAAA,QAAAc,YAAA,QAAAC,QAAA,oBAAA5B,GAAA,CAAAwB,GAAA,IAAAC,KAAA,WAAAzB,GAAA;AAAA,SAAA0B,eAAApB,CAAA,QAAAuB,CAAA,GAAAC,YAAA,CAAAxB,CAAA,uCAAAuB,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAC,aAAAxB,CAAA,EAAAD,CAAA,2BAAAC,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAF,CAAA,GAAAE,CAAA,CAAAyB,MAAA,CAAAC,WAAA,kBAAA5B,CAAA,QAAAyB,CAAA,GAAAzB,CAAA,CAAA6B,IAAA,CAAA3B,CAAA,EAAAD,CAAA,uCAAAwB,CAAA,SAAAA,CAAA,YAAAK,SAAA,yEAAA7B,CAAA,GAAA8B,MAAA,GAAAC,MAAA,EAAA9B,CAAA,KAErE;AACA;AACA,MAAM+B,mBAAmB,GAAIC,KAAK,iBAChC,IAAAvC,WAAA,CAAAwC,GAAA,EAAC1C,WAAA,CAAAK,OAAoB,EAAAc,aAAA;EACnBwB,gBAAgB,EAAEC,4BAAoB;EACtCC,qBAAqB,EAAEC,iCAAyB;EAChDC,mBAAmB,EAAC,KAAK;EACzBC,aAAa,EAAEC,4CAA+B,CAACC;AAAI,GAC/CT,KAAK,CACV,CACF;AAAC,IAAAU,QAAA,GAAAC,OAAA,CAAA/C,OAAA,GAEamC,mBAAmB","ignoreList":[]}
1
+ {"version":3,"file":"UpgradeModalWrapper.js","names":["_propTypes","_interopRequireDefault","require","_modelStore","_frontendPlatform","_DefaultUpgradeModal","_ExperimentalUpgradeModal","_optimizely","_optimizely2","_jsxRuntime","obj","__esModule","default","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","key","value","_toPropertyKey","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","ensureConfig","isExperimentEnabledForOrg","org","OPTIMIZELY_MODAL_ROLLOUT_WHITELIST","getConfig","includes","UpgradeModalWrapper","props","courseId","useModel","allowExperiment","jsx","defaultComponent","DefaultUpgradeModal","experimentalComponent","ExperimentalUpgradeModal","defaultVariationKey","experimentKey","OPTIMIZELY_VTR_MODAL_EXPERIMENT","KEY","propTypes","PropTypes","string","isRequired","_default","exports"],"sources":["../../src/upgrade-modal/UpgradeModalWrapper.jsx"],"sourcesContent":["/* eslint-disable import/no-unresolved */\nimport PropTypes from 'prop-types';\nimport { useModel } from '@src/generic/model-store';\nimport { ensureConfig, getConfig } from '@edx/frontend-platform';\n\nimport DefaultUpgradeModal from './DefaultUpgradeModal';\nimport ExperimentalUpgradeModal from './ExperimentalUpgradeModal';\n\nimport OptimizelyExperiment from '../optimizely';\nimport { OPTIMIZELY_VTR_MODAL_EXPERIMENT } from '../data/optimizely';\n\nensureConfig([\n 'OPTIMIZELY_MODAL_ROLLOUT_WHITELIST',\n], 'Optimizely In-Course Modal rollout config');\n\n// This is not fully functional and is currently just a copy of the UpgradeNotification\n// experiment with the imports updated\nconst isExperimentEnabledForOrg = (org) => {\n const { OPTIMIZELY_MODAL_ROLLOUT_WHITELIST } = getConfig();\n if (!OPTIMIZELY_MODAL_ROLLOUT_WHITELIST) { return false; }\n return OPTIMIZELY_MODAL_ROLLOUT_WHITELIST.includes(org);\n};\n\nconst UpgradeModalWrapper = (props) => {\n const { courseId } = props;\n const { org } = useModel('courseHomeMeta', courseId);\n const allowExperiment = isExperimentEnabledForOrg(org);\n\n // If the org isn't whitelisted for experiment rollout, don't run the experiment\n // We don't want users who aren't being experimented on to be bucketed, which will\n // happen if we call useDecision()\n return (\n allowExperiment ? (\n <OptimizelyExperiment\n defaultComponent={DefaultUpgradeModal}\n experimentalComponent={ExperimentalUpgradeModal}\n defaultVariationKey=\"off\"\n experimentKey={OPTIMIZELY_VTR_MODAL_EXPERIMENT.KEY}\n {...props}\n />\n ) : <DefaultUpgradeModal {...props} />\n );\n};\n\nUpgradeModalWrapper.propTypes = {\n courseId: PropTypes.string.isRequired,\n};\n\nexport default UpgradeModalWrapper;\n"],"mappings":"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","ignoreList":[]}
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  var _react = require("react");
8
8
  const CLICK_COUNT_KEY = 'VTR_IN_COURSE_MODAL_NEXT_CLICK_COUNT';
9
- const SHOW_MODAL_CLICK_COUNT = 2;
9
+ const SHOW_MODAL_CLICK_COUNT = 3;
10
10
  function isLocalStorageAvailable() {
11
11
  // A simple helper to check if localStorage is currently available
12
12
  const testKey = 'testKey';
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","names":["_react","require","CLICK_COUNT_KEY","SHOW_MODAL_CLICK_COUNT","isLocalStorageAvailable","testKey","localStorage","setItem","removeItem","e","useClickCount","localStorageAvailable","clickCount","setClickCount","useState","clickString","getItem","clicks","JSON","parse","useEffect","undefined","stringify","useInCourseUpgradeModal","_ref","verifiedMode","isStaff","enrollmentMode","qualifiesForModal","nextClick","countNextClick","shouldShowModalOnClick","_default","exports","default"],"sources":["../../src/upgrade-modal/hooks.js"],"sourcesContent":["import { useState, useEffect } from 'react';\n\nconst CLICK_COUNT_KEY = 'VTR_IN_COURSE_MODAL_NEXT_CLICK_COUNT';\nconst SHOW_MODAL_CLICK_COUNT = 2;\n\nfunction isLocalStorageAvailable() {\n // A simple helper to check if localStorage is currently available\n const testKey = 'testKey';\n try {\n localStorage.setItem(testKey, testKey);\n localStorage.removeItem(testKey);\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction useClickCount() {\n /**\n * Hook that tracks the number of times that a user has clicked something\n * and stores that number in localStorage (if available).\n *\n * Returns: [clickCount, setClickCount]\n * - clickCount (int): The current count of clicks\n * - setClickCount (func): Function to update the number of clicks\n */\n const localStorageAvailable = isLocalStorageAvailable();\n const [clickCount, setClickCount] = useState(() => {\n if (!localStorageAvailable) { return 0; }\n const clickString = localStorage.getItem(CLICK_COUNT_KEY);\n const clicks = JSON.parse(clickString);\n return clicks || 0;\n });\n\n useEffect(() => {\n // When clickCount changes, this will update it in localStorage\n if (clickCount === undefined) { return; }\n if (!localStorageAvailable) { return; }\n localStorage.setItem(CLICK_COUNT_KEY, JSON.stringify(clickCount));\n }, [clickCount, localStorageAvailable]);\n\n return [clickCount, setClickCount];\n}\n\nfunction useInCourseUpgradeModal({ verifiedMode, isStaff, enrollmentMode }) {\n /**\n * Hook that wraps around useClickCount to handle the \"modal show\" logic\n */\n const qualifiesForModal = (enrollmentMode === 'audit' && verifiedMode && !isStaff);\n const [clickCount, setClickCount] = useClickCount();\n const nextClick = clickCount + 1;\n const countNextClick = () => { setClickCount(nextClick); };\n const shouldShowModalOnClick = nextClick % SHOW_MODAL_CLICK_COUNT === 0;\n return [qualifiesForModal, shouldShowModalOnClick, countNextClick];\n}\n\nexport default useInCourseUpgradeModal;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,MAAMC,eAAe,GAAG,sCAAsC;AAC9D,MAAMC,sBAAsB,GAAG,CAAC;AAEhC,SAASC,uBAAuBA,CAAA,EAAG;EACjC;EACA,MAAMC,OAAO,GAAG,SAAS;EACzB,IAAI;IACFC,YAAY,CAACC,OAAO,CAACF,OAAO,EAAEA,OAAO,CAAC;IACtCC,YAAY,CAACE,UAAU,CAACH,OAAO,CAAC;IAChC,OAAO,IAAI;EACb,CAAC,CAAC,OAAOI,CAAC,EAAE;IACV,OAAO,KAAK;EACd;AACF;AAEA,SAASC,aAAaA,CAAA,EAAG;EACvB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMC,qBAAqB,GAAGP,uBAAuB,CAAC,CAAC;EACvD,MAAM,CAACQ,UAAU,EAAEC,aAAa,CAAC,GAAG,IAAAC,eAAQ,EAAC,MAAM;IACjD,IAAI,CAACH,qBAAqB,EAAE;MAAE,OAAO,CAAC;IAAE;IACxC,MAAMI,WAAW,GAAGT,YAAY,CAACU,OAAO,CAACd,eAAe,CAAC;IACzD,MAAMe,MAAM,GAAGC,IAAI,CAACC,KAAK,CAACJ,WAAW,CAAC;IACtC,OAAOE,MAAM,IAAI,CAAC;EACpB,CAAC,CAAC;EAEF,IAAAG,gBAAS,EAAC,MAAM;IACd;IACA,IAAIR,UAAU,KAAKS,SAAS,EAAE;MAAE;IAAQ;IACxC,IAAI,CAACV,qBAAqB,EAAE;MAAE;IAAQ;IACtCL,YAAY,CAACC,OAAO,CAACL,eAAe,EAAEgB,IAAI,CAACI,SAAS,CAACV,UAAU,CAAC,CAAC;EACnE,CAAC,EAAE,CAACA,UAAU,EAAED,qBAAqB,CAAC,CAAC;EAEvC,OAAO,CAACC,UAAU,EAAEC,aAAa,CAAC;AACpC;AAEA,SAASU,uBAAuBA,CAAAC,IAAA,EAA4C;EAAA,IAA3C;IAAEC,YAAY;IAAEC,OAAO;IAAEC;EAAe,CAAC,GAAAH,IAAA;EACxE;AACF;AACA;EACE,MAAMI,iBAAiB,GAAID,cAAc,KAAK,OAAO,IAAIF,YAAY,IAAI,CAACC,OAAQ;EAClF,MAAM,CAACd,UAAU,EAAEC,aAAa,CAAC,GAAGH,aAAa,CAAC,CAAC;EACnD,MAAMmB,SAAS,GAAGjB,UAAU,GAAG,CAAC;EAChC,MAAMkB,cAAc,GAAGA,CAAA,KAAM;IAAEjB,aAAa,CAACgB,SAAS,CAAC;EAAE,CAAC;EAC1D,MAAME,sBAAsB,GAAGF,SAAS,GAAG1B,sBAAsB,KAAK,CAAC;EACvE,OAAO,CAACyB,iBAAiB,EAAEG,sBAAsB,EAAED,cAAc,CAAC;AACpE;AAAC,IAAAE,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEcX,uBAAuB","ignoreList":[]}
1
+ {"version":3,"file":"hooks.js","names":["_react","require","CLICK_COUNT_KEY","SHOW_MODAL_CLICK_COUNT","isLocalStorageAvailable","testKey","localStorage","setItem","removeItem","e","useClickCount","localStorageAvailable","clickCount","setClickCount","useState","clickString","getItem","clicks","JSON","parse","useEffect","undefined","stringify","useInCourseUpgradeModal","_ref","verifiedMode","isStaff","enrollmentMode","qualifiesForModal","nextClick","countNextClick","shouldShowModalOnClick","_default","exports","default"],"sources":["../../src/upgrade-modal/hooks.js"],"sourcesContent":["import { useState, useEffect } from 'react';\n\nconst CLICK_COUNT_KEY = 'VTR_IN_COURSE_MODAL_NEXT_CLICK_COUNT';\nconst SHOW_MODAL_CLICK_COUNT = 3;\n\nfunction isLocalStorageAvailable() {\n // A simple helper to check if localStorage is currently available\n const testKey = 'testKey';\n try {\n localStorage.setItem(testKey, testKey);\n localStorage.removeItem(testKey);\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction useClickCount() {\n /**\n * Hook that tracks the number of times that a user has clicked something\n * and stores that number in localStorage (if available).\n *\n * Returns: [clickCount, setClickCount]\n * - clickCount (int): The current count of clicks\n * - setClickCount (func): Function to update the number of clicks\n */\n const localStorageAvailable = isLocalStorageAvailable();\n const [clickCount, setClickCount] = useState(() => {\n if (!localStorageAvailable) { return 0; }\n const clickString = localStorage.getItem(CLICK_COUNT_KEY);\n const clicks = JSON.parse(clickString);\n return clicks || 0;\n });\n\n useEffect(() => {\n // When clickCount changes, this will update it in localStorage\n if (clickCount === undefined) { return; }\n if (!localStorageAvailable) { return; }\n localStorage.setItem(CLICK_COUNT_KEY, JSON.stringify(clickCount));\n }, [clickCount, localStorageAvailable]);\n\n return [clickCount, setClickCount];\n}\n\nfunction useInCourseUpgradeModal({ verifiedMode, isStaff, enrollmentMode }) {\n /**\n * Hook that wraps around useClickCount to handle the \"modal show\" logic\n */\n const qualifiesForModal = (enrollmentMode === 'audit' && verifiedMode && !isStaff);\n const [clickCount, setClickCount] = useClickCount();\n const nextClick = clickCount + 1;\n const countNextClick = () => { setClickCount(nextClick); };\n const shouldShowModalOnClick = nextClick % SHOW_MODAL_CLICK_COUNT === 0;\n return [qualifiesForModal, shouldShowModalOnClick, countNextClick];\n}\n\nexport default useInCourseUpgradeModal;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,MAAMC,eAAe,GAAG,sCAAsC;AAC9D,MAAMC,sBAAsB,GAAG,CAAC;AAEhC,SAASC,uBAAuBA,CAAA,EAAG;EACjC;EACA,MAAMC,OAAO,GAAG,SAAS;EACzB,IAAI;IACFC,YAAY,CAACC,OAAO,CAACF,OAAO,EAAEA,OAAO,CAAC;IACtCC,YAAY,CAACE,UAAU,CAACH,OAAO,CAAC;IAChC,OAAO,IAAI;EACb,CAAC,CAAC,OAAOI,CAAC,EAAE;IACV,OAAO,KAAK;EACd;AACF;AAEA,SAASC,aAAaA,CAAA,EAAG;EACvB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMC,qBAAqB,GAAGP,uBAAuB,CAAC,CAAC;EACvD,MAAM,CAACQ,UAAU,EAAEC,aAAa,CAAC,GAAG,IAAAC,eAAQ,EAAC,MAAM;IACjD,IAAI,CAACH,qBAAqB,EAAE;MAAE,OAAO,CAAC;IAAE;IACxC,MAAMI,WAAW,GAAGT,YAAY,CAACU,OAAO,CAACd,eAAe,CAAC;IACzD,MAAMe,MAAM,GAAGC,IAAI,CAACC,KAAK,CAACJ,WAAW,CAAC;IACtC,OAAOE,MAAM,IAAI,CAAC;EACpB,CAAC,CAAC;EAEF,IAAAG,gBAAS,EAAC,MAAM;IACd;IACA,IAAIR,UAAU,KAAKS,SAAS,EAAE;MAAE;IAAQ;IACxC,IAAI,CAACV,qBAAqB,EAAE;MAAE;IAAQ;IACtCL,YAAY,CAACC,OAAO,CAACL,eAAe,EAAEgB,IAAI,CAACI,SAAS,CAACV,UAAU,CAAC,CAAC;EACnE,CAAC,EAAE,CAACA,UAAU,EAAED,qBAAqB,CAAC,CAAC;EAEvC,OAAO,CAACC,UAAU,EAAEC,aAAa,CAAC;AACpC;AAEA,SAASU,uBAAuBA,CAAAC,IAAA,EAA4C;EAAA,IAA3C;IAAEC,YAAY;IAAEC,OAAO;IAAEC;EAAe,CAAC,GAAAH,IAAA;EACxE;AACF;AACA;EACE,MAAMI,iBAAiB,GAAID,cAAc,KAAK,OAAO,IAAIF,YAAY,IAAI,CAACC,OAAQ;EAClF,MAAM,CAACd,UAAU,EAAEC,aAAa,CAAC,GAAGH,aAAa,CAAC,CAAC;EACnD,MAAMmB,SAAS,GAAGjB,UAAU,GAAG,CAAC;EAChC,MAAMkB,cAAc,GAAGA,CAAA,KAAM;IAAEjB,aAAa,CAACgB,SAAS,CAAC;EAAE,CAAC;EAC1D,MAAME,sBAAsB,GAAGF,SAAS,GAAG1B,sBAAsB,KAAK,CAAC;EACvE,OAAO,CAACyB,iBAAiB,EAAEG,sBAAsB,EAAED,cAAc,CAAC;AACpE;AAAC,IAAAE,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEcX,uBAAuB","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@edx/frontend-plugin-advertisements",
3
- "version": "1.22.0",
3
+ "version": "1.23.1",
4
4
  "description": "Frontend plugin for edX in course advertisements",
5
5
  "main": "dist/index.js",
6
6
  "repository": {