@edx/frontend-plugin-advertisements 1.20.0 → 1.21.0
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.
- package/dist/data/index.js +6 -0
- package/dist/data/index.js.map +1 -1
- package/dist/data/optimizely.js +9 -1
- package/dist/data/optimizely.js.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/upgrade-modal/DefaultUpgradeModal.js +51 -0
- package/dist/upgrade-modal/DefaultUpgradeModal.js.map +1 -0
- package/dist/upgrade-modal/ExperimentalUpgradeModal.js +105 -0
- package/dist/upgrade-modal/ExperimentalUpgradeModal.js.map +1 -0
- package/dist/upgrade-modal/NextButton.js +68 -0
- package/dist/upgrade-modal/NextButton.js.map +1 -0
- package/dist/upgrade-modal/UpgradeModal.js +234 -0
- package/dist/upgrade-modal/UpgradeModal.js.map +1 -0
- package/dist/upgrade-modal/UpgradeModalWrapper.js +26 -0
- package/dist/upgrade-modal/UpgradeModalWrapper.js.map +1 -0
- package/dist/upgrade-modal/hooks.js +70 -0
- package/dist/upgrade-modal/hooks.js.map +1 -0
- package/dist/upgrade-modal/index.js +17 -0
- package/dist/upgrade-modal/index.js.map +1 -0
- package/dist/upgrade-notification/certificate-preview/CertificatePreview.js +3 -2
- package/dist/upgrade-notification/certificate-preview/CertificatePreview.js.map +1 -1
- package/package.json +1 -1
package/dist/data/index.js
CHANGED
|
@@ -21,6 +21,12 @@ Object.defineProperty(exports, "OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_VARIATION_
|
|
|
21
21
|
return _optimizely.OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_VARIATION_KEYS;
|
|
22
22
|
}
|
|
23
23
|
});
|
|
24
|
+
Object.defineProperty(exports, "OPTIMIZELY_VTR_MODAL_EXPERIMENT", {
|
|
25
|
+
enumerable: true,
|
|
26
|
+
get: function () {
|
|
27
|
+
return _optimizely.OPTIMIZELY_VTR_MODAL_EXPERIMENT;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
24
30
|
Object.defineProperty(exports, "getOptimizely", {
|
|
25
31
|
enumerable: true,
|
|
26
32
|
get: function () {
|
package/dist/data/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_optimizely","require"],"sources":["../../src/data/index.jsx"],"sourcesContent":["export {\n getOptimizely,\n OPTIMIZELY_EVENT_KEYS,\n OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_VARIATION_KEYS,\n OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_KEY,\n} from './optimizely';\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","names":["_optimizely","require"],"sources":["../../src/data/index.jsx"],"sourcesContent":["export {\n getOptimizely,\n OPTIMIZELY_EVENT_KEYS,\n OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_VARIATION_KEYS,\n OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_KEY,\n OPTIMIZELY_VTR_MODAL_EXPERIMENT,\n} from './optimizely';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA","ignoreList":[]}
|
package/dist/data/optimizely.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.getOptimizely = exports.OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_VARIATION_KEYS = exports.OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_KEY = exports.OPTIMIZELY_EVENT_KEYS = void 0;
|
|
6
|
+
exports.getOptimizely = exports.OPTIMIZELY_VTR_MODAL_EXPERIMENT = exports.OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_VARIATION_KEYS = exports.OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_KEY = exports.OPTIMIZELY_EVENT_KEYS = void 0;
|
|
7
7
|
var _reactSdk = require("@optimizely/react-sdk");
|
|
8
8
|
var _frontendPlatform = require("@edx/frontend-platform");
|
|
9
9
|
(0, _frontendPlatform.ensureConfig)(['OPTIMIZELY_FULL_STACK_SDK_KEY'], 'Frontend Plugin Advertisements Optimizely module');
|
|
@@ -30,6 +30,14 @@ const OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_VARIATION_KEYS = exports.OPTIMIZELY_
|
|
|
30
30
|
CONTROL: 'control',
|
|
31
31
|
OFF: 'off'
|
|
32
32
|
};
|
|
33
|
+
const OPTIMIZELY_VTR_MODAL_EXPERIMENT = exports.OPTIMIZELY_VTR_MODAL_EXPERIMENT = {
|
|
34
|
+
KEY: 'vtr_in_course_popup_modal',
|
|
35
|
+
ACTION: 'modal_upgrade_button_click',
|
|
36
|
+
VARIATIONS: {
|
|
37
|
+
ON: 'on',
|
|
38
|
+
OFF: 'off'
|
|
39
|
+
}
|
|
40
|
+
};
|
|
33
41
|
const OPTIMIZELY_EVENT_KEYS = exports.OPTIMIZELY_EVENT_KEYS = {
|
|
34
42
|
UPGRADE_BUTTON_CLICK: 'upgrade_button_click',
|
|
35
43
|
DECLINE_UPGRADE_BUTTON_CLICK: 'decline_upgrade_button_click'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"optimizely.js","names":["_reactSdk","require","_frontendPlatform","ensureConfig","getOptimizely","OPTIMIZELY_SDK_KEY","getConfig","OPTIMIZELY_FULL_STACK_SDK_KEY","createInstance","sdkKey","exports","OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_KEY","OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_VARIATION_KEYS","CERTIFICATE_PREVIEW","CERTIFICATE_PREVIEW_WITH_COPY","CONTROL","OFF","OPTIMIZELY_EVENT_KEYS","UPGRADE_BUTTON_CLICK","DECLINE_UPGRADE_BUTTON_CLICK"],"sources":["../../src/data/optimizely.js"],"sourcesContent":["import { createInstance } from '@optimizely/react-sdk';\nimport { ensureConfig, getConfig } from '@edx/frontend-platform';\n\nensureConfig([\n 'OPTIMIZELY_FULL_STACK_SDK_KEY',\n], 'Frontend Plugin Advertisements Optimizely module');\n\n/**\n * Initializing the Optimizely instance at the top-level will not work, becaused it may be initialized before\n * the OPTIMIZELY_FULL_STACK_SDK_KEY is available and will not be reinitialized afterward. Wrapping the initialization\n * in a function allows components to request the instance as-needed.\n */\nconst getOptimizely = () => {\n const OPTIMIZELY_SDK_KEY = getConfig().OPTIMIZELY_FULL_STACK_SDK_KEY;\n\n if (OPTIMIZELY_SDK_KEY) {\n return createInstance({\n sdkKey: OPTIMIZELY_SDK_KEY,\n });\n }\n\n return null;\n};\n\nconst OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_KEY = 'verified_take_rate_preview_watermark_experimentation';\n\nconst OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_VARIATION_KEYS = {\n CERTIFICATE_PREVIEW: 'certificate_preview',\n CERTIFICATE_PREVIEW_WITH_COPY: 'certificate_preview_with_copy',\n CONTROL: 'control',\n OFF: 'off',\n};\n\nconst OPTIMIZELY_EVENT_KEYS = {\n UPGRADE_BUTTON_CLICK: 'upgrade_button_click',\n DECLINE_UPGRADE_BUTTON_CLICK: 'decline_upgrade_button_click',\n};\n\nexport {\n getOptimizely,\n OPTIMIZELY_EVENT_KEYS,\n OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_KEY,\n OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_VARIATION_KEYS,\n};\n"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAD,OAAA;AAEA,IAAAE,8BAAY,EAAC,CACX,+BAA+B,CAChC,EAAE,kDAAkD,CAAC;;AAEtD;AACA;AACA;AACA;AACA;AACA,MAAMC,aAAa,GAAGA,CAAA,KAAM;EAC1B,MAAMC,kBAAkB,GAAG,IAAAC,2BAAS,EAAC,CAAC,CAACC,6BAA6B;EAEpE,IAAIF,kBAAkB,EAAE;IACtB,OAAO,IAAAG,wBAAc,EAAC;MACpBC,MAAM,EAAEJ;IACV,CAAC,CAAC;EACJ;EAEA,OAAO,IAAI;AACb,CAAC;AAACK,OAAA,CAAAN,aAAA,GAAAA,aAAA;AAEF,MAAMO,yCAAyC,GAAAD,OAAA,CAAAC,yCAAA,GAAG,sDAAsD;AAExG,MAAMC,oDAAoD,GAAAF,OAAA,CAAAE,oDAAA,GAAG;EAC3DC,mBAAmB,EAAE,qBAAqB;EAC1CC,6BAA6B,EAAE,+BAA+B;EAC9DC,OAAO,EAAE,SAAS;EAClBC,GAAG,EAAE;AACP,CAAC;AAED,MAAMC,
|
|
1
|
+
{"version":3,"file":"optimizely.js","names":["_reactSdk","require","_frontendPlatform","ensureConfig","getOptimizely","OPTIMIZELY_SDK_KEY","getConfig","OPTIMIZELY_FULL_STACK_SDK_KEY","createInstance","sdkKey","exports","OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_KEY","OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_VARIATION_KEYS","CERTIFICATE_PREVIEW","CERTIFICATE_PREVIEW_WITH_COPY","CONTROL","OFF","OPTIMIZELY_VTR_MODAL_EXPERIMENT","KEY","ACTION","VARIATIONS","ON","OPTIMIZELY_EVENT_KEYS","UPGRADE_BUTTON_CLICK","DECLINE_UPGRADE_BUTTON_CLICK"],"sources":["../../src/data/optimizely.js"],"sourcesContent":["import { createInstance } from '@optimizely/react-sdk';\nimport { ensureConfig, getConfig } from '@edx/frontend-platform';\n\nensureConfig([\n 'OPTIMIZELY_FULL_STACK_SDK_KEY',\n], 'Frontend Plugin Advertisements Optimizely module');\n\n/**\n * Initializing the Optimizely instance at the top-level will not work, becaused it may be initialized before\n * the OPTIMIZELY_FULL_STACK_SDK_KEY is available and will not be reinitialized afterward. Wrapping the initialization\n * in a function allows components to request the instance as-needed.\n */\nconst getOptimizely = () => {\n const OPTIMIZELY_SDK_KEY = getConfig().OPTIMIZELY_FULL_STACK_SDK_KEY;\n\n if (OPTIMIZELY_SDK_KEY) {\n return createInstance({\n sdkKey: OPTIMIZELY_SDK_KEY,\n });\n }\n\n return null;\n};\n\nconst OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_KEY = 'verified_take_rate_preview_watermark_experimentation';\n\nconst OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_VARIATION_KEYS = {\n CERTIFICATE_PREVIEW: 'certificate_preview',\n CERTIFICATE_PREVIEW_WITH_COPY: 'certificate_preview_with_copy',\n CONTROL: 'control',\n OFF: 'off',\n};\n\nconst OPTIMIZELY_VTR_MODAL_EXPERIMENT = {\n KEY: 'vtr_in_course_popup_modal',\n ACTION: 'modal_upgrade_button_click',\n VARIATIONS: {\n ON: 'on', OFF: 'off',\n },\n};\n\nconst OPTIMIZELY_EVENT_KEYS = {\n UPGRADE_BUTTON_CLICK: 'upgrade_button_click',\n DECLINE_UPGRADE_BUTTON_CLICK: 'decline_upgrade_button_click',\n};\n\nexport {\n getOptimizely,\n OPTIMIZELY_EVENT_KEYS,\n OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_KEY,\n OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_VARIATION_KEYS,\n OPTIMIZELY_VTR_MODAL_EXPERIMENT,\n};\n"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAD,OAAA;AAEA,IAAAE,8BAAY,EAAC,CACX,+BAA+B,CAChC,EAAE,kDAAkD,CAAC;;AAEtD;AACA;AACA;AACA;AACA;AACA,MAAMC,aAAa,GAAGA,CAAA,KAAM;EAC1B,MAAMC,kBAAkB,GAAG,IAAAC,2BAAS,EAAC,CAAC,CAACC,6BAA6B;EAEpE,IAAIF,kBAAkB,EAAE;IACtB,OAAO,IAAAG,wBAAc,EAAC;MACpBC,MAAM,EAAEJ;IACV,CAAC,CAAC;EACJ;EAEA,OAAO,IAAI;AACb,CAAC;AAACK,OAAA,CAAAN,aAAA,GAAAA,aAAA;AAEF,MAAMO,yCAAyC,GAAAD,OAAA,CAAAC,yCAAA,GAAG,sDAAsD;AAExG,MAAMC,oDAAoD,GAAAF,OAAA,CAAAE,oDAAA,GAAG;EAC3DC,mBAAmB,EAAE,qBAAqB;EAC1CC,6BAA6B,EAAE,+BAA+B;EAC9DC,OAAO,EAAE,SAAS;EAClBC,GAAG,EAAE;AACP,CAAC;AAED,MAAMC,+BAA+B,GAAAP,OAAA,CAAAO,+BAAA,GAAG;EACtCC,GAAG,EAAE,2BAA2B;EAChCC,MAAM,EAAE,4BAA4B;EACpCC,UAAU,EAAE;IACVC,EAAE,EAAE,IAAI;IAAEL,GAAG,EAAE;EACjB;AACF,CAAC;AAED,MAAMM,qBAAqB,GAAAZ,OAAA,CAAAY,qBAAA,GAAG;EAC5BC,oBAAoB,EAAE,sBAAsB;EAC5CC,4BAA4B,EAAE;AAChC,CAAC","ignoreList":[]}
|
package/dist/index.js
CHANGED
|
@@ -9,6 +9,12 @@ Object.defineProperty(exports, "LockPaywall", {
|
|
|
9
9
|
return _paywall.default;
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
|
+
Object.defineProperty(exports, "UpgradeModalWrapper", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _upgradeModal.default;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
12
18
|
Object.defineProperty(exports, "UpgradeNotification", {
|
|
13
19
|
enumerable: true,
|
|
14
20
|
get: function () {
|
|
@@ -17,5 +23,6 @@ Object.defineProperty(exports, "UpgradeNotification", {
|
|
|
17
23
|
});
|
|
18
24
|
var _upgradeNotification = _interopRequireDefault(require("./upgrade-notification"));
|
|
19
25
|
var _paywall = _interopRequireDefault(require("./paywall"));
|
|
26
|
+
var _upgradeModal = _interopRequireDefault(require("./upgrade-modal"));
|
|
20
27
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
28
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_upgradeNotification","_interopRequireDefault","require","_paywall","obj","__esModule","default"],"sources":["../src/index.jsx"],"sourcesContent":["import UpgradeNotification from './upgrade-notification';\nimport LockPaywall from './paywall';\n\nexport {\n UpgradeNotification,\n LockPaywall,\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","names":["_upgradeNotification","_interopRequireDefault","require","_paywall","_upgradeModal","obj","__esModule","default"],"sources":["../src/index.jsx"],"sourcesContent":["import UpgradeNotification from './upgrade-notification';\nimport LockPaywall from './paywall';\nimport UpgradeModalWrapper from './upgrade-modal';\n\nexport {\n UpgradeNotification,\n LockPaywall,\n UpgradeModalWrapper,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,oBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,QAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,aAAA,GAAAH,sBAAA,CAAAC,OAAA;AAAkD,SAAAD,uBAAAI,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA","ignoreList":[]}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
+
var _NextButton = _interopRequireDefault(require("./NextButton"));
|
|
10
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
12
|
+
const DefaultUpgradeModal = _ref => {
|
|
13
|
+
let {
|
|
14
|
+
disabled,
|
|
15
|
+
buttonText,
|
|
16
|
+
nextArrow,
|
|
17
|
+
nextLink,
|
|
18
|
+
shouldDisplayNotificationTriggerInSequence,
|
|
19
|
+
sequenceId,
|
|
20
|
+
unitId,
|
|
21
|
+
handleNavigate,
|
|
22
|
+
nextSequenceHandler,
|
|
23
|
+
linkComponent
|
|
24
|
+
} = _ref;
|
|
25
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_NextButton.default, {
|
|
26
|
+
disabled,
|
|
27
|
+
buttonText,
|
|
28
|
+
nextArrow,
|
|
29
|
+
nextLink,
|
|
30
|
+
shouldDisplayNotificationTriggerInSequence,
|
|
31
|
+
sequenceId,
|
|
32
|
+
unitId,
|
|
33
|
+
nextSequenceHandler,
|
|
34
|
+
handleNavigate,
|
|
35
|
+
linkComponent
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
DefaultUpgradeModal.propTypes = {
|
|
39
|
+
disabled: _propTypes.default.bool.isRequired,
|
|
40
|
+
buttonText: _propTypes.default.string.isRequired,
|
|
41
|
+
nextArrow: _propTypes.default.func.isRequired,
|
|
42
|
+
nextLink: _propTypes.default.string.isRequired,
|
|
43
|
+
shouldDisplayNotificationTriggerInSequence: _propTypes.default.bool.isRequired,
|
|
44
|
+
sequenceId: _propTypes.default.string.isRequired,
|
|
45
|
+
unitId: _propTypes.default.string.isRequired,
|
|
46
|
+
handleNavigate: _propTypes.default.func.isRequired,
|
|
47
|
+
linkComponent: _propTypes.default.node.isRequired,
|
|
48
|
+
nextSequenceHandler: _propTypes.default.func.isRequired
|
|
49
|
+
};
|
|
50
|
+
var _default = exports.default = DefaultUpgradeModal;
|
|
51
|
+
//# sourceMappingURL=DefaultUpgradeModal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DefaultUpgradeModal.js","names":["_react","_interopRequireDefault","require","_propTypes","_NextButton","_jsxRuntime","obj","__esModule","default","DefaultUpgradeModal","_ref","disabled","buttonText","nextArrow","nextLink","shouldDisplayNotificationTriggerInSequence","sequenceId","unitId","handleNavigate","nextSequenceHandler","linkComponent","jsx","propTypes","PropTypes","bool","isRequired","string","func","node","_default","exports"],"sources":["../../src/upgrade-modal/DefaultUpgradeModal.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport NextButton from './NextButton';\n\nconst DefaultUpgradeModal = ({\n disabled,\n buttonText,\n nextArrow,\n nextLink,\n shouldDisplayNotificationTriggerInSequence,\n sequenceId,\n unitId,\n handleNavigate,\n nextSequenceHandler,\n linkComponent,\n}) => (\n <NextButton\n {...{\n disabled,\n buttonText,\n nextArrow,\n nextLink,\n shouldDisplayNotificationTriggerInSequence,\n sequenceId,\n unitId,\n nextSequenceHandler,\n handleNavigate,\n linkComponent,\n }}\n />\n);\n\nDefaultUpgradeModal.propTypes = {\n disabled: PropTypes.bool.isRequired,\n buttonText: PropTypes.string.isRequired,\n nextArrow: PropTypes.func.isRequired,\n nextLink: PropTypes.string.isRequired,\n shouldDisplayNotificationTriggerInSequence: PropTypes.bool.isRequired,\n sequenceId: PropTypes.string.isRequired,\n unitId: PropTypes.string.isRequired,\n handleNavigate: PropTypes.func.isRequired,\n linkComponent: PropTypes.node.isRequired,\n nextSequenceHandler: PropTypes.func.isRequired,\n};\n\nexport default DefaultUpgradeModal;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,WAAA,GAAAH,sBAAA,CAAAC,OAAA;AAAsC,IAAAG,WAAA,GAAAH,OAAA;AAAA,SAAAD,uBAAAK,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAEtC,MAAMG,mBAAmB,GAAGC,IAAA;EAAA,IAAC;IAC3BC,QAAQ;IACRC,UAAU;IACVC,SAAS;IACTC,QAAQ;IACRC,0CAA0C;IAC1CC,UAAU;IACVC,MAAM;IACNC,cAAc;IACdC,mBAAmB;IACnBC;EACF,CAAC,GAAAV,IAAA;EAAA,oBACC,IAAAL,WAAA,CAAAgB,GAAA,EAACjB,WAAA,CAAAI,OAAU;IAEPG,QAAQ;IACRC,UAAU;IACVC,SAAS;IACTC,QAAQ;IACRC,0CAA0C;IAC1CC,UAAU;IACVC,MAAM;IACNE,mBAAmB;IACnBD,cAAc;IACdE;EAAa,CAEhB,CAAC;AAAA,CACH;AAEDX,mBAAmB,CAACa,SAAS,GAAG;EAC9BX,QAAQ,EAAEY,kBAAS,CAACC,IAAI,CAACC,UAAU;EACnCb,UAAU,EAAEW,kBAAS,CAACG,MAAM,CAACD,UAAU;EACvCZ,SAAS,EAAEU,kBAAS,CAACI,IAAI,CAACF,UAAU;EACpCX,QAAQ,EAAES,kBAAS,CAACG,MAAM,CAACD,UAAU;EACrCV,0CAA0C,EAAEQ,kBAAS,CAACC,IAAI,CAACC,UAAU;EACrET,UAAU,EAAEO,kBAAS,CAACG,MAAM,CAACD,UAAU;EACvCR,MAAM,EAAEM,kBAAS,CAACG,MAAM,CAACD,UAAU;EACnCP,cAAc,EAAEK,kBAAS,CAACI,IAAI,CAACF,UAAU;EACzCL,aAAa,EAAEG,kBAAS,CAACK,IAAI,CAACH,UAAU;EACxCN,mBAAmB,EAAEI,kBAAS,CAACI,IAAI,CAACF;AACtC,CAAC;AAAC,IAAAI,QAAA,GAAAC,OAAA,CAAAtB,OAAA,GAEaC,mBAAmB","ignoreList":[]}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
+
var _modelStore = require("@src/generic/model-store");
|
|
10
|
+
var _UpgradeModal = _interopRequireDefault(require("./UpgradeModal"));
|
|
11
|
+
var _NextButton = _interopRequireDefault(require("./NextButton"));
|
|
12
|
+
var _hooks = _interopRequireDefault(require("./hooks"));
|
|
13
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
14
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
16
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
17
|
+
/* eslint import/no-unresolved: 0 */
|
|
18
|
+
|
|
19
|
+
const ExperimentalUpgradeModal = _ref => {
|
|
20
|
+
let {
|
|
21
|
+
courseId,
|
|
22
|
+
disabled,
|
|
23
|
+
buttonText,
|
|
24
|
+
nextArrow,
|
|
25
|
+
nextLink,
|
|
26
|
+
shouldDisplayNotificationTriggerInSequence,
|
|
27
|
+
sequenceId,
|
|
28
|
+
unitId,
|
|
29
|
+
nextSequenceHandler,
|
|
30
|
+
handleNavigate,
|
|
31
|
+
isOpen,
|
|
32
|
+
open,
|
|
33
|
+
close,
|
|
34
|
+
linkComponent
|
|
35
|
+
} = _ref;
|
|
36
|
+
const {
|
|
37
|
+
verifiedMode,
|
|
38
|
+
org,
|
|
39
|
+
isStaff
|
|
40
|
+
} = (0, _modelStore.useModel)('courseHomeMeta', courseId);
|
|
41
|
+
const {
|
|
42
|
+
enrollmentMode,
|
|
43
|
+
offer,
|
|
44
|
+
marketingUrl,
|
|
45
|
+
accessExpiration
|
|
46
|
+
} = (0, _modelStore.useModel)('coursewareMeta', courseId);
|
|
47
|
+
const [qualifiesForModal, shouldShowModalOnClick, countNextClick] = (0, _hooks.default)({
|
|
48
|
+
verifiedMode,
|
|
49
|
+
isStaff,
|
|
50
|
+
enrollmentMode
|
|
51
|
+
});
|
|
52
|
+
const handleModal = () => {
|
|
53
|
+
if (qualifiesForModal) {
|
|
54
|
+
countNextClick();
|
|
55
|
+
if (shouldShowModalOnClick) {
|
|
56
|
+
open();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
(0, _react.useEffect)(() => {
|
|
61
|
+
handleModal();
|
|
62
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
63
|
+
}, [sequenceId]);
|
|
64
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
65
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_NextButton.default, {
|
|
66
|
+
disabled,
|
|
67
|
+
buttonText,
|
|
68
|
+
nextArrow,
|
|
69
|
+
nextLink,
|
|
70
|
+
shouldDisplayNotificationTriggerInSequence,
|
|
71
|
+
sequenceId,
|
|
72
|
+
unitId,
|
|
73
|
+
nextSequenceHandler,
|
|
74
|
+
handleNavigate,
|
|
75
|
+
linkComponent
|
|
76
|
+
}), verifiedMode && /*#__PURE__*/(0, _jsxRuntime.jsx)(_UpgradeModal.default, {
|
|
77
|
+
isOpen,
|
|
78
|
+
close,
|
|
79
|
+
verifiedMode,
|
|
80
|
+
org,
|
|
81
|
+
courseId,
|
|
82
|
+
offer,
|
|
83
|
+
marketingUrl,
|
|
84
|
+
accessExpiration
|
|
85
|
+
})]
|
|
86
|
+
});
|
|
87
|
+
};
|
|
88
|
+
ExperimentalUpgradeModal.propTypes = {
|
|
89
|
+
disabled: _propTypes.default.bool.isRequired,
|
|
90
|
+
buttonText: _propTypes.default.string.isRequired,
|
|
91
|
+
nextArrow: _propTypes.default.func.isRequired,
|
|
92
|
+
nextLink: _propTypes.default.string.isRequired,
|
|
93
|
+
shouldDisplayNotificationTriggerInSequence: _propTypes.default.bool.isRequired,
|
|
94
|
+
sequenceId: _propTypes.default.string.isRequired,
|
|
95
|
+
unitId: _propTypes.default.string.isRequired,
|
|
96
|
+
handleNavigate: _propTypes.default.func.isRequired,
|
|
97
|
+
nextSequenceHandler: _propTypes.default.func.isRequired,
|
|
98
|
+
isOpen: _propTypes.default.bool.isRequired,
|
|
99
|
+
open: _propTypes.default.func.isRequired,
|
|
100
|
+
linkComponent: _propTypes.default.node.isRequired,
|
|
101
|
+
close: _propTypes.default.func.isRequired,
|
|
102
|
+
courseId: _propTypes.default.string.isRequired
|
|
103
|
+
};
|
|
104
|
+
var _default = exports.default = ExperimentalUpgradeModal;
|
|
105
|
+
//# sourceMappingURL=ExperimentalUpgradeModal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExperimentalUpgradeModal.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_modelStore","_UpgradeModal","_NextButton","_hooks","_jsxRuntime","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ExperimentalUpgradeModal","_ref","courseId","disabled","buttonText","nextArrow","nextLink","shouldDisplayNotificationTriggerInSequence","sequenceId","unitId","nextSequenceHandler","handleNavigate","isOpen","open","close","linkComponent","verifiedMode","org","isStaff","useModel","enrollmentMode","offer","marketingUrl","accessExpiration","qualifiesForModal","shouldShowModalOnClick","countNextClick","useInCourseUpgradeModal","handleModal","useEffect","jsxs","Fragment","children","jsx","propTypes","PropTypes","bool","isRequired","string","func","node","_default","exports"],"sources":["../../src/upgrade-modal/ExperimentalUpgradeModal.jsx"],"sourcesContent":["/* eslint import/no-unresolved: 0 */\nimport React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { useModel } from '@src/generic/model-store';\nimport UpgradeModal from './UpgradeModal';\nimport NextButton from './NextButton';\nimport useInCourseUpgradeModal from './hooks';\n\nconst ExperimentalUpgradeModal = ({\n courseId,\n disabled,\n buttonText,\n nextArrow,\n nextLink,\n shouldDisplayNotificationTriggerInSequence,\n sequenceId,\n unitId,\n nextSequenceHandler,\n handleNavigate,\n isOpen,\n open,\n close,\n linkComponent,\n}) => {\n const {\n verifiedMode,\n org,\n isStaff,\n } = useModel('courseHomeMeta', courseId);\n\n const {\n enrollmentMode,\n offer,\n marketingUrl,\n accessExpiration,\n } = useModel('coursewareMeta', courseId);\n\n const [\n qualifiesForModal,\n shouldShowModalOnClick,\n countNextClick,\n ] = useInCourseUpgradeModal({ verifiedMode, isStaff, enrollmentMode });\n\n const handleModal = () => {\n if (qualifiesForModal) {\n countNextClick();\n if (shouldShowModalOnClick) {\n open();\n }\n }\n };\n\n useEffect(() => {\n handleModal();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [sequenceId]);\n\n return (\n <>\n <NextButton\n {...{\n disabled,\n buttonText,\n nextArrow,\n nextLink,\n shouldDisplayNotificationTriggerInSequence,\n sequenceId,\n unitId,\n nextSequenceHandler,\n handleNavigate,\n linkComponent,\n }}\n />\n {verifiedMode && (\n <UpgradeModal\n {...{\n isOpen,\n close,\n verifiedMode,\n org,\n courseId,\n offer,\n marketingUrl,\n accessExpiration,\n }}\n />\n )}\n </>\n );\n};\n\nExperimentalUpgradeModal.propTypes = {\n disabled: PropTypes.bool.isRequired,\n buttonText: PropTypes.string.isRequired,\n nextArrow: PropTypes.func.isRequired,\n nextLink: PropTypes.string.isRequired,\n shouldDisplayNotificationTriggerInSequence: PropTypes.bool.isRequired,\n sequenceId: PropTypes.string.isRequired,\n unitId: PropTypes.string.isRequired,\n handleNavigate: PropTypes.func.isRequired,\n nextSequenceHandler: PropTypes.func.isRequired,\n isOpen: PropTypes.bool.isRequired,\n open: PropTypes.func.isRequired,\n linkComponent: PropTypes.node.isRequired,\n close: PropTypes.func.isRequired,\n courseId: PropTypes.string.isRequired,\n};\n\nexport default ExperimentalUpgradeModal;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
+
var _paragon = require("@openedx/paragon");
|
|
10
|
+
var _modelStore = require("@src/generic/model-store");
|
|
11
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
+
/* eslint import/no-unresolved: 0 */
|
|
14
|
+
|
|
15
|
+
const NextButton = _ref => {
|
|
16
|
+
let {
|
|
17
|
+
disabled,
|
|
18
|
+
buttonText,
|
|
19
|
+
nextArrow,
|
|
20
|
+
nextLink,
|
|
21
|
+
shouldDisplayNotificationTriggerInSequence,
|
|
22
|
+
sequenceId,
|
|
23
|
+
unitId,
|
|
24
|
+
handleNavigate,
|
|
25
|
+
nextSequenceHandler,
|
|
26
|
+
// handleModal,
|
|
27
|
+
linkComponent
|
|
28
|
+
} = _ref;
|
|
29
|
+
const sequence = (0, _modelStore.useModel)('sequences', sequenceId);
|
|
30
|
+
const handleNext = () => {
|
|
31
|
+
const nextIndex = sequence.unitIds.indexOf(unitId) + 1;
|
|
32
|
+
const newUnitId = sequence.unitIds[nextIndex];
|
|
33
|
+
handleNavigate(newUnitId);
|
|
34
|
+
if (nextIndex >= sequence.unitIds.length) {
|
|
35
|
+
nextSequenceHandler();
|
|
36
|
+
// handleModal();
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.Button, {
|
|
40
|
+
variant: "link",
|
|
41
|
+
className: "next-btn",
|
|
42
|
+
onClick: handleNext,
|
|
43
|
+
disabled: disabled,
|
|
44
|
+
iconAfter: nextArrow,
|
|
45
|
+
as: disabled ? undefined : linkComponent,
|
|
46
|
+
to: disabled ? undefined : nextLink,
|
|
47
|
+
children: shouldDisplayNotificationTriggerInSequence ? null : buttonText
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
// NextButton.defaultProps = {
|
|
52
|
+
// handleModal: () => null,
|
|
53
|
+
// };
|
|
54
|
+
NextButton.propTypes = {
|
|
55
|
+
disabled: _propTypes.default.bool.isRequired,
|
|
56
|
+
buttonText: _propTypes.default.string.isRequired,
|
|
57
|
+
nextArrow: _propTypes.default.func.isRequired,
|
|
58
|
+
nextLink: _propTypes.default.string.isRequired,
|
|
59
|
+
shouldDisplayNotificationTriggerInSequence: _propTypes.default.bool.isRequired,
|
|
60
|
+
sequenceId: _propTypes.default.string.isRequired,
|
|
61
|
+
unitId: _propTypes.default.string.isRequired,
|
|
62
|
+
handleNavigate: _propTypes.default.func.isRequired,
|
|
63
|
+
nextSequenceHandler: _propTypes.default.func.isRequired,
|
|
64
|
+
// handleModal: PropTypes.func,
|
|
65
|
+
linkComponent: _propTypes.default.node.isRequired
|
|
66
|
+
};
|
|
67
|
+
var _default = exports.default = NextButton;
|
|
68
|
+
//# sourceMappingURL=NextButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NextButton.js","names":["_react","_interopRequireDefault","require","_propTypes","_paragon","_modelStore","_jsxRuntime","obj","__esModule","default","NextButton","_ref","disabled","buttonText","nextArrow","nextLink","shouldDisplayNotificationTriggerInSequence","sequenceId","unitId","handleNavigate","nextSequenceHandler","linkComponent","sequence","useModel","handleNext","nextIndex","unitIds","indexOf","newUnitId","length","jsx","Button","variant","className","onClick","iconAfter","as","undefined","to","children","propTypes","PropTypes","bool","isRequired","string","func","node","_default","exports"],"sources":["../../src/upgrade-modal/NextButton.jsx"],"sourcesContent":["/* eslint import/no-unresolved: 0 */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button } from '@openedx/paragon';\n\nimport { useModel } from '@src/generic/model-store';\n\nconst NextButton = ({\n disabled,\n buttonText,\n nextArrow,\n nextLink,\n shouldDisplayNotificationTriggerInSequence,\n sequenceId,\n unitId,\n handleNavigate,\n nextSequenceHandler,\n // handleModal,\n linkComponent,\n}) => {\n const sequence = useModel('sequences', sequenceId);\n\n const handleNext = () => {\n const nextIndex = sequence.unitIds.indexOf(unitId) + 1;\n const newUnitId = sequence.unitIds[nextIndex];\n handleNavigate(newUnitId);\n\n if (nextIndex >= sequence.unitIds.length) {\n nextSequenceHandler();\n // handleModal();\n }\n };\n\n return (\n <Button\n variant=\"link\"\n className=\"next-btn\"\n onClick={handleNext}\n disabled={disabled}\n iconAfter={nextArrow}\n as={disabled ? undefined : linkComponent}\n to={disabled ? undefined : nextLink}\n >\n {shouldDisplayNotificationTriggerInSequence ? null : buttonText}\n </Button>\n );\n};\n\n// NextButton.defaultProps = {\n// handleModal: () => null,\n// };\nNextButton.propTypes = {\n disabled: PropTypes.bool.isRequired,\n buttonText: PropTypes.string.isRequired,\n nextArrow: PropTypes.func.isRequired,\n nextLink: PropTypes.string.isRequired,\n shouldDisplayNotificationTriggerInSequence: PropTypes.bool.isRequired,\n sequenceId: PropTypes.string.isRequired,\n unitId: PropTypes.string.isRequired,\n handleNavigate: PropTypes.func.isRequired,\n nextSequenceHandler: PropTypes.func.isRequired,\n // handleModal: PropTypes.func,\n linkComponent: PropTypes.node.isRequired,\n};\n\nexport default NextButton;\n"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AAEA,IAAAG,WAAA,GAAAH,OAAA;AAAoD,IAAAI,WAAA,GAAAJ,OAAA;AAAA,SAAAD,uBAAAM,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AALpD;;AAOA,MAAMG,UAAU,GAAGC,IAAA,IAYb;EAAA,IAZc;IAClBC,QAAQ;IACRC,UAAU;IACVC,SAAS;IACTC,QAAQ;IACRC,0CAA0C;IAC1CC,UAAU;IACVC,MAAM;IACNC,cAAc;IACdC,mBAAmB;IACnB;IACAC;EACF,CAAC,GAAAV,IAAA;EACC,MAAMW,QAAQ,GAAG,IAAAC,oBAAQ,EAAC,WAAW,EAAEN,UAAU,CAAC;EAElD,MAAMO,UAAU,GAAGA,CAAA,KAAM;IACvB,MAAMC,SAAS,GAAGH,QAAQ,CAACI,OAAO,CAACC,OAAO,CAACT,MAAM,CAAC,GAAG,CAAC;IACtD,MAAMU,SAAS,GAAGN,QAAQ,CAACI,OAAO,CAACD,SAAS,CAAC;IAC7CN,cAAc,CAACS,SAAS,CAAC;IAEzB,IAAIH,SAAS,IAAIH,QAAQ,CAACI,OAAO,CAACG,MAAM,EAAE;MACxCT,mBAAmB,CAAC,CAAC;MACrB;IACF;EACF,CAAC;EAED,oBACE,IAAAd,WAAA,CAAAwB,GAAA,EAAC1B,QAAA,CAAA2B,MAAM;IACLC,OAAO,EAAC,MAAM;IACdC,SAAS,EAAC,UAAU;IACpBC,OAAO,EAAEV,UAAW;IACpBZ,QAAQ,EAAEA,QAAS;IACnBuB,SAAS,EAAErB,SAAU;IACrBsB,EAAE,EAAExB,QAAQ,GAAGyB,SAAS,GAAGhB,aAAc;IACzCiB,EAAE,EAAE1B,QAAQ,GAAGyB,SAAS,GAAGtB,QAAS;IAAAwB,QAAA,EAEnCvB,0CAA0C,GAAG,IAAI,GAAGH;EAAU,CACzD,CAAC;AAEb,CAAC;;AAED;AACA;AACA;AACAH,UAAU,CAAC8B,SAAS,GAAG;EACrB5B,QAAQ,EAAE6B,kBAAS,CAACC,IAAI,CAACC,UAAU;EACnC9B,UAAU,EAAE4B,kBAAS,CAACG,MAAM,CAACD,UAAU;EACvC7B,SAAS,EAAE2B,kBAAS,CAACI,IAAI,CAACF,UAAU;EACpC5B,QAAQ,EAAE0B,kBAAS,CAACG,MAAM,CAACD,UAAU;EACrC3B,0CAA0C,EAAEyB,kBAAS,CAACC,IAAI,CAACC,UAAU;EACrE1B,UAAU,EAAEwB,kBAAS,CAACG,MAAM,CAACD,UAAU;EACvCzB,MAAM,EAAEuB,kBAAS,CAACG,MAAM,CAACD,UAAU;EACnCxB,cAAc,EAAEsB,kBAAS,CAACI,IAAI,CAACF,UAAU;EACzCvB,mBAAmB,EAAEqB,kBAAS,CAACI,IAAI,CAACF,UAAU;EAC9C;EACAtB,aAAa,EAAEoB,kBAAS,CAACK,IAAI,CAACH;AAChC,CAAC;AAAC,IAAAI,QAAA,GAAAC,OAAA,CAAAvC,OAAA,GAEaC,UAAU","ignoreList":[]}
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
+
var _reactSdk = require("@optimizely/react-sdk");
|
|
10
|
+
var _frontendPlatform = require("@edx/frontend-platform");
|
|
11
|
+
var _analytics = require("@edx/frontend-platform/analytics");
|
|
12
|
+
var _i18n = require("@edx/frontend-platform/i18n");
|
|
13
|
+
var _paragon = require("@openedx/paragon");
|
|
14
|
+
var _icons = require("@openedx/paragon/icons");
|
|
15
|
+
var _data = require("../data");
|
|
16
|
+
var _certificatePreview = _interopRequireDefault(require("../upgrade-notification/certificate-preview"));
|
|
17
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
18
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
20
|
+
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; }
|
|
21
|
+
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; }
|
|
22
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
23
|
+
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); }
|
|
24
|
+
const UpgradeModal = _ref => {
|
|
25
|
+
let {
|
|
26
|
+
isOpen,
|
|
27
|
+
close,
|
|
28
|
+
verifiedMode,
|
|
29
|
+
org,
|
|
30
|
+
courseId,
|
|
31
|
+
offer,
|
|
32
|
+
marketingUrl,
|
|
33
|
+
accessExpiration,
|
|
34
|
+
optimizely
|
|
35
|
+
} = _ref;
|
|
36
|
+
const [decision] = (0, _reactSdk.useDecision)(_data.OPTIMIZELY_VTR_MODAL_EXPERIMENT.KEY);
|
|
37
|
+
const {
|
|
38
|
+
variationKey
|
|
39
|
+
} = decision;
|
|
40
|
+
|
|
41
|
+
// Experiment specific properties or data should not be sent to the tracking logs, so break this
|
|
42
|
+
// object out to ensure it is only sent to Segment and not the tracking logs.
|
|
43
|
+
const experimentProperties = {
|
|
44
|
+
experiment_key: _data.OPTIMIZELY_VTR_MODAL_EXPERIMENT.KEY,
|
|
45
|
+
variation_key: variationKey
|
|
46
|
+
};
|
|
47
|
+
const upsellPageName = 'course_sequence_modal';
|
|
48
|
+
const eventProperties = {
|
|
49
|
+
org_key: org,
|
|
50
|
+
courserun_key: courseId
|
|
51
|
+
};
|
|
52
|
+
const promotionEventProperties = _objectSpread(_objectSpread({
|
|
53
|
+
creative: 'marketmodalupsell',
|
|
54
|
+
name: 'In-Course Verification Prompt',
|
|
55
|
+
position: 'marketing-modal-message',
|
|
56
|
+
promotion_id: 'courseware_verified_certificate_upsell'
|
|
57
|
+
}, eventProperties), experimentProperties);
|
|
58
|
+
(0, _react.useEffect)(() => {
|
|
59
|
+
(0, _analytics.sendTrackingLogEvent)('edx.bi.course.upgrade.marketmodalupsell.displayed', eventProperties);
|
|
60
|
+
(0, _analytics.sendTrackEvent)('Promotion Viewed', promotionEventProperties);
|
|
61
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
62
|
+
}, []);
|
|
63
|
+
const logClick = () => {
|
|
64
|
+
(0, _analytics.sendTrackingLogEvent)('edx.bi.course.upgrade.marketingmodal.clicked', eventProperties);
|
|
65
|
+
(0, _analytics.sendTrackingLogEvent)('edx.course.enrollment.upgrade.clicked', _objectSpread(_objectSpread({}, eventProperties), {}, {
|
|
66
|
+
location: 'marketing-modal-message'
|
|
67
|
+
}));
|
|
68
|
+
(0, _analytics.sendTrackEvent)('Promotion Clicked', promotionEventProperties);
|
|
69
|
+
(0, _analytics.sendTrackEvent)('edx.bi.ecommerce.upsell_links_clicked', _objectSpread(_objectSpread(_objectSpread({}, eventProperties), experimentProperties), {}, {
|
|
70
|
+
linkCategory: 'green_upgrade',
|
|
71
|
+
linkName: `${upsellPageName}_green`,
|
|
72
|
+
linkType: 'button',
|
|
73
|
+
pageName: upsellPageName
|
|
74
|
+
}));
|
|
75
|
+
optimizely.track(_data.OPTIMIZELY_VTR_MODAL_EXPERIMENT.ACTION);
|
|
76
|
+
};
|
|
77
|
+
const logClickPastExpiration = () => {
|
|
78
|
+
(0, _analytics.sendTrackEvent)('edx.bi.ecommerce.upgrade_modal.past_expiration.button_clicked', _objectSpread(_objectSpread(_objectSpread({}, eventProperties), experimentProperties), {}, {
|
|
79
|
+
linkCategory: 'upgrade_modal',
|
|
80
|
+
linkName: `${upsellPageName}_course_details`,
|
|
81
|
+
linkType: 'button',
|
|
82
|
+
pageName: upsellPageName
|
|
83
|
+
}));
|
|
84
|
+
};
|
|
85
|
+
const intl = (0, _i18n.useIntl)();
|
|
86
|
+
const dateNow = Date.now();
|
|
87
|
+
const {
|
|
88
|
+
currency,
|
|
89
|
+
currencySymbol,
|
|
90
|
+
price,
|
|
91
|
+
upgradeUrl
|
|
92
|
+
} = verifiedMode;
|
|
93
|
+
const upgradeDeadlineDate = accessExpiration ? new Date(accessExpiration.upgradeDeadline) : null;
|
|
94
|
+
const pastDeadline = accessExpiration ? new Date(dateNow) > upgradeDeadlineDate : false;
|
|
95
|
+
const modalTitle = intl.formatMessage({
|
|
96
|
+
id: 'learning.upgrade-modal.title',
|
|
97
|
+
defaultMessage: 'Pursue a verified certificate',
|
|
98
|
+
description: 'Upgrade modal title'
|
|
99
|
+
});
|
|
100
|
+
let callToActionButton = /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.Button, {
|
|
101
|
+
className: "w-100",
|
|
102
|
+
onClick: logClick,
|
|
103
|
+
href: upgradeUrl,
|
|
104
|
+
children: intl.formatMessage({
|
|
105
|
+
id: 'learning.upgrade-modal.upgrade-button.label',
|
|
106
|
+
defaultMessage: 'Upgrade for {currencySymbol}{price} {currency}',
|
|
107
|
+
description: 'Label for upgrade button'
|
|
108
|
+
}, {
|
|
109
|
+
currency,
|
|
110
|
+
currencySymbol,
|
|
111
|
+
price
|
|
112
|
+
})
|
|
113
|
+
});
|
|
114
|
+
if (pastDeadline) {
|
|
115
|
+
callToActionButton = /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.Button, {
|
|
116
|
+
className: "w-100",
|
|
117
|
+
onClick: logClickPastExpiration,
|
|
118
|
+
href: marketingUrl,
|
|
119
|
+
children: intl.formatMessage({
|
|
120
|
+
id: 'learning.upgrade-modal.upgrade-button.label',
|
|
121
|
+
defaultMessage: 'View course details',
|
|
122
|
+
description: 'Label for upgrade button'
|
|
123
|
+
})
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_paragon.MarketingModal, {
|
|
127
|
+
title: modalTitle,
|
|
128
|
+
isOpen: isOpen,
|
|
129
|
+
onClose: close,
|
|
130
|
+
isBlocking: true,
|
|
131
|
+
size: "md",
|
|
132
|
+
heroIsDark: true,
|
|
133
|
+
heroNode: /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.ModalDialog.Hero, {
|
|
134
|
+
style: {
|
|
135
|
+
background: 'linear-gradient(#001B1E, #0E3639)'
|
|
136
|
+
},
|
|
137
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.ModalDialog.Hero.Content, {
|
|
138
|
+
className: "m-0 text-primary-500",
|
|
139
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_certificatePreview.default, {
|
|
140
|
+
courseId,
|
|
141
|
+
bgColor: 'bg-light-100'
|
|
142
|
+
})
|
|
143
|
+
})
|
|
144
|
+
}),
|
|
145
|
+
footerNode: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_paragon.ActionRow, {
|
|
146
|
+
isStacked: true,
|
|
147
|
+
children: [callToActionButton, offer && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
148
|
+
className: "text-center discount-info",
|
|
149
|
+
children: intl.formatMessage({
|
|
150
|
+
id: 'learning.generic.upgradeNotification.code',
|
|
151
|
+
defaultMessage: 'Use code {code} at checkout',
|
|
152
|
+
values: {
|
|
153
|
+
code: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
154
|
+
className: "font-weight-bold",
|
|
155
|
+
children: offer.code
|
|
156
|
+
})
|
|
157
|
+
}
|
|
158
|
+
})
|
|
159
|
+
})]
|
|
160
|
+
}),
|
|
161
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("h2", {
|
|
162
|
+
className: "h3 mb-3",
|
|
163
|
+
children: modalTitle
|
|
164
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
165
|
+
role: "list",
|
|
166
|
+
className: "pl-2 text-primary-500",
|
|
167
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_paragon.Stack, {
|
|
168
|
+
gap: 3,
|
|
169
|
+
role: "listitem",
|
|
170
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_paragon.Stack, {
|
|
171
|
+
direction: "horizontal",
|
|
172
|
+
gap: 3,
|
|
173
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.Icon, {
|
|
174
|
+
size: "md",
|
|
175
|
+
src: _icons.Check
|
|
176
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
177
|
+
children: intl.formatMessage({
|
|
178
|
+
id: 'learning.upgrade-modal.body-list.first-item',
|
|
179
|
+
defaultMessage: 'Earn a {linkedContent} of completion to show case your résumé',
|
|
180
|
+
description: 'Message for first list item'
|
|
181
|
+
}, {
|
|
182
|
+
linkedContent: /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.Hyperlink, {
|
|
183
|
+
className: "font-weight-bold text-primary-500 inline-link-underline",
|
|
184
|
+
destination: `${(0, _frontendPlatform.getConfig)().MARKETING_SITE_BASE_URL}/verified-certificate`,
|
|
185
|
+
children: "verified certificate"
|
|
186
|
+
})
|
|
187
|
+
})
|
|
188
|
+
})]
|
|
189
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_paragon.Stack, {
|
|
190
|
+
direction: "horizontal",
|
|
191
|
+
gap: 3,
|
|
192
|
+
role: "listitem",
|
|
193
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.Icon, {
|
|
194
|
+
size: "md",
|
|
195
|
+
src: _icons.Check
|
|
196
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
197
|
+
children: intl.formatMessage({
|
|
198
|
+
id: 'learning.upgrade-modal.body-list.second-item',
|
|
199
|
+
defaultMessage: 'Support our mission at edX.',
|
|
200
|
+
description: 'Message for second list item'
|
|
201
|
+
})
|
|
202
|
+
})]
|
|
203
|
+
})]
|
|
204
|
+
})
|
|
205
|
+
})]
|
|
206
|
+
});
|
|
207
|
+
};
|
|
208
|
+
UpgradeModal.defaultProps = {
|
|
209
|
+
verifiedMode: {},
|
|
210
|
+
offer: null,
|
|
211
|
+
accessExpiration: null
|
|
212
|
+
};
|
|
213
|
+
UpgradeModal.propTypes = {
|
|
214
|
+
verifiedMode: _propTypes.default.shape({
|
|
215
|
+
currency: _propTypes.default.string.isRequired,
|
|
216
|
+
price: _propTypes.default.number.isRequired,
|
|
217
|
+
currencySymbol: _propTypes.default.string.isRequired,
|
|
218
|
+
upgradeUrl: _propTypes.default.string.isRequired
|
|
219
|
+
}),
|
|
220
|
+
offer: _propTypes.default.shape({
|
|
221
|
+
code: _propTypes.default.string
|
|
222
|
+
}),
|
|
223
|
+
accessExpiration: _propTypes.default.shape({
|
|
224
|
+
upgradeDeadline: _propTypes.default.string
|
|
225
|
+
}),
|
|
226
|
+
marketingUrl: _propTypes.default.string.isRequired,
|
|
227
|
+
org: _propTypes.default.string.isRequired,
|
|
228
|
+
courseId: _propTypes.default.string.isRequired,
|
|
229
|
+
close: _propTypes.default.func.isRequired,
|
|
230
|
+
isOpen: _propTypes.default.bool.isRequired,
|
|
231
|
+
optimizely: _propTypes.default.node.isRequired
|
|
232
|
+
};
|
|
233
|
+
var _default = exports.default = (0, _reactSdk.withOptimizely)(UpgradeModal);
|
|
234
|
+
//# sourceMappingURL=UpgradeModal.js.map
|
|
@@ -0,0 +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":[]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _DefaultUpgradeModal = _interopRequireDefault(require("./DefaultUpgradeModal"));
|
|
8
|
+
var _ExperimentalUpgradeModal = _interopRequireDefault(require("./ExperimentalUpgradeModal"));
|
|
9
|
+
var _optimizely = _interopRequireDefault(require("../optimizely"));
|
|
10
|
+
var _optimizely2 = require("../data/optimizely");
|
|
11
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
14
|
+
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
|
+
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
|
+
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
|
|
18
|
+
// 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
|
+
var _default = exports.default = UpgradeModalWrapper;
|
|
26
|
+
//# sourceMappingURL=UpgradeModalWrapper.js.map
|
|
@@ -0,0 +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":"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","ignoreList":[]}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
const CLICK_COUNT_KEY = 'VTR_IN_COURSE_MODAL_NEXT_CLICK_COUNT';
|
|
9
|
+
const SHOW_MODAL_CLICK_COUNT = 2;
|
|
10
|
+
function isLocalStorageAvailable() {
|
|
11
|
+
// A simple helper to check if localStorage is currently available
|
|
12
|
+
const testKey = 'testKey';
|
|
13
|
+
try {
|
|
14
|
+
localStorage.setItem(testKey, testKey);
|
|
15
|
+
localStorage.removeItem(testKey);
|
|
16
|
+
return true;
|
|
17
|
+
} catch (e) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function useClickCount() {
|
|
22
|
+
/**
|
|
23
|
+
* Hook that tracks the number of times that a user has clicked something
|
|
24
|
+
* and stores that number in localStorage (if available).
|
|
25
|
+
*
|
|
26
|
+
* Returns: [clickCount, setClickCount]
|
|
27
|
+
* - clickCount (int): The current count of clicks
|
|
28
|
+
* - setClickCount (func): Function to update the number of clicks
|
|
29
|
+
*/
|
|
30
|
+
const localStorageAvailable = isLocalStorageAvailable();
|
|
31
|
+
const [clickCount, setClickCount] = (0, _react.useState)(() => {
|
|
32
|
+
if (!localStorageAvailable) {
|
|
33
|
+
return 0;
|
|
34
|
+
}
|
|
35
|
+
const clickString = localStorage.getItem(CLICK_COUNT_KEY);
|
|
36
|
+
const clicks = JSON.parse(clickString);
|
|
37
|
+
return clicks || 0;
|
|
38
|
+
});
|
|
39
|
+
(0, _react.useEffect)(() => {
|
|
40
|
+
// When clickCount changes, this will update it in localStorage
|
|
41
|
+
if (clickCount === undefined) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
if (!localStorageAvailable) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
localStorage.setItem(CLICK_COUNT_KEY, JSON.stringify(clickCount));
|
|
48
|
+
}, [clickCount, localStorageAvailable]);
|
|
49
|
+
return [clickCount, setClickCount];
|
|
50
|
+
}
|
|
51
|
+
function useInCourseUpgradeModal(_ref) {
|
|
52
|
+
let {
|
|
53
|
+
verifiedMode,
|
|
54
|
+
isStaff,
|
|
55
|
+
enrollmentMode
|
|
56
|
+
} = _ref;
|
|
57
|
+
/**
|
|
58
|
+
* Hook that wraps around useClickCount to handle the "modal show" logic
|
|
59
|
+
*/
|
|
60
|
+
const qualifiesForModal = enrollmentMode === 'audit' && verifiedMode && !isStaff;
|
|
61
|
+
const [clickCount, setClickCount] = useClickCount();
|
|
62
|
+
const nextClick = clickCount + 1;
|
|
63
|
+
const countNextClick = () => {
|
|
64
|
+
setClickCount(nextClick);
|
|
65
|
+
};
|
|
66
|
+
const shouldShowModalOnClick = nextClick % SHOW_MODAL_CLICK_COUNT === 0;
|
|
67
|
+
return [qualifiesForModal, shouldShowModalOnClick, countNextClick];
|
|
68
|
+
}
|
|
69
|
+
var _default = exports.default = useInCourseUpgradeModal;
|
|
70
|
+
//# sourceMappingURL=hooks.js.map
|
|
@@ -0,0 +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":[]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "ExperimentalUpgradeModal", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _ExperimentalUpgradeModal.default;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
exports.default = void 0;
|
|
13
|
+
var _UpgradeModalWrapper = _interopRequireDefault(require("./UpgradeModalWrapper"));
|
|
14
|
+
var _ExperimentalUpgradeModal = _interopRequireDefault(require("./ExperimentalUpgradeModal"));
|
|
15
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
16
|
+
var _default = exports.default = _UpgradeModalWrapper.default;
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["_UpgradeModalWrapper","_interopRequireDefault","require","_ExperimentalUpgradeModal","obj","__esModule","default","_default","exports","UpgradeModalWrapper"],"sources":["../../src/upgrade-modal/index.js"],"sourcesContent":["import UpgradeModalWrapper from './UpgradeModalWrapper';\nimport ExperimentalUpgradeModal from './ExperimentalUpgradeModal';\n\nexport default UpgradeModalWrapper;\n\nexport {\n ExperimentalUpgradeModal,\n};\n"],"mappings":";;;;;;;;;;;;AAAA,IAAAA,oBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,yBAAA,GAAAF,sBAAA,CAAAC,OAAA;AAAkE,SAAAD,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,IAAAG,QAAA,GAAAC,OAAA,CAAAF,OAAA,GAEnDG,4BAAmB","ignoreList":[]}
|
|
@@ -21,7 +21,8 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
|
|
|
21
21
|
|
|
22
22
|
const CertificatePreview = _ref => {
|
|
23
23
|
let {
|
|
24
|
-
courseId
|
|
24
|
+
courseId,
|
|
25
|
+
bgColor
|
|
25
26
|
} = _ref;
|
|
26
27
|
const {
|
|
27
28
|
username,
|
|
@@ -49,7 +50,7 @@ const CertificatePreview = _ref => {
|
|
|
49
50
|
setIsLoading(false);
|
|
50
51
|
}, [org, username, name]);
|
|
51
52
|
const CertificatePreviewComponent = () => /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
52
|
-
className:
|
|
53
|
+
className: `certificate-preview border m-4 p-3 ${bgColor}`,
|
|
53
54
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
54
55
|
className: "d-flex justify-content-between",
|
|
55
56
|
"data-testid": "certificate-preview-header",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CertificatePreview.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_frontendPlatform","_auth","_paragon","_modelStore","_lms_api","_Signatory","_jsxRuntime","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","CertificatePreview","_ref","courseId","username","name","getAuthenticatedUser","number","org","title","useModel","platformLogoUrl","getConfig","LOGO_URL","isLoading","setIsLoading","useState","orgMetadata","setOrgMetadata","certificateName","setCertificateName","useEffect","fetchOrg","then","data","fetchVerifiedName","certName","useVerifiedNameForCerts","verifiedName","profileName","CertificatePreviewComponent","jsxs","className","children","jsx","alt","src","logo","shortName","component","Skeleton","count","height","propTypes","PropTypes","string","isRequired","_default","exports"],"sources":["../../../src/upgrade-notification/certificate-preview/CertificatePreview.jsx"],"sourcesContent":["/* eslint import/no-unresolved: 0 */\nimport React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { getAuthenticatedUser } from '@edx/frontend-platform/auth';\nimport { Skeleton } from '@openedx/paragon';\nimport { useModel } from '@src/generic/model-store';\n\nimport { fetchOrg, fetchVerifiedName } from '../../data/lms_api';\nimport Signatory from './Signatory';\nimport './CertificatePreview.scss';\n\nconst CertificatePreview = ({ courseId }) => {\n const { username, name } = getAuthenticatedUser();\n\n const {\n number,\n org,\n title,\n } = useModel('courseHomeMeta', courseId);\n\n const platformLogoUrl = getConfig().LOGO_URL;\n\n const [isLoading, setIsLoading] = useState(true);\n const [orgMetadata, setOrgMetadata] = useState({});\n const [certificateName, setCertificateName] = useState(name);\n\n useEffect(() => {\n fetchOrg(org).then((data) => {\n setOrgMetadata(data);\n });\n\n fetchVerifiedName(username).then((data) => {\n if (data) {\n const certName = data.useVerifiedNameForCerts ? data.verifiedName : data.profileName;\n setCertificateName(certName);\n }\n });\n\n setIsLoading(false);\n }, [org, username, name]);\n\n const CertificatePreviewComponent = () => (\n <div className=\"certificate-preview border m-4 p-3\">\n <div className=\"d-flex justify-content-between\" data-testid=\"certificate-preview-header\">\n <img\n alt=\"Verified Certificate logo\"\n className=\"verified-certificate-logo\"\n src=\"https://edxuploads.s3.amazonaws.com/certificate_template_assets/122/verified-certificate-logo.svg\"\n />\n <span className=\"sr-only\">Verified Certificate</span>\n <div className=\"mb-4\">\n <div className=\"sr-only\">Supported by the following organizations</div>\n {orgMetadata?.logo\n ? (\n <img\n alt={`${orgMetadata.shortName} logo`}\n className=\"organization-logo\"\n data-testid=\"organization-logo\"\n src={orgMetadata.logo}\n />\n )\n : (<div data-testid=\"organization-short-name\">{orgMetadata.shortName}</div>)}\n </div>\n </div>\n <div className=\"d-flex justify-content-between\">\n <div className=\"certificate-statement\">\n <div className=\"certificate-statement-container d-flex flex-column\">\n <span\n className=\"certificate-statement-detail\"\n >\n This is to certify that\n </span>\n <strong\n className=\"certificate-statement-detail certificate-recipient font-weight-bold\"\n >\n {certificateName}\n </strong>\n <span\n className=\"certificate-statement-detail\"\n >\n successfully completed and received a passing grade in\n </span>\n <span\n className=\"certificate-course font-weight-bold\"\n >\n <span>{number}</span>:\n <span>{title}</span>\n </span>\n <span\n className=\"certificate-statement-detail\"\n >\n a course of study offered by {orgMetadata.shortName},\n an online learning initiative of {orgMetadata.name}.\n </span>\n </div>\n </div>\n <div className=\"signatories\">\n <div className=\"sr-only\">Noted by</div>\n <Signatory name=\"Maurilio Pugliesi\" />\n <Signatory name=\"Justine Doe, Ph.D.\" />\n </div>\n </div>\n <div className=\"certificate-identifiers\">\n <ul className=\"d-flex no-bullets stamps pt-3\">\n <li className=\"stamp\">\n <img className=\"platform-logo\" src={platformLogoUrl} alt=\"edX\" />\n </li>\n <li className=\"stamp d-flex flex-column\">\n <span className=\"title\">Verified Certificate</span>\n <span className=\"emphasized\">Issued Month / Year</span>\n </li>\n <li className=\"stamp d-flex flex-column\">\n <span className=\"title\">Valid Certificate ID</span>\n <span className=\"emphasized\">12345678901234567890</span>\n </li>\n </ul>\n </div>\n <div className=\"preview-watermark\">\n <span>PREVIEW</span>\n </div>\n </div>\n );\n\n // We can render if the call to the verified name endpoint returns a null, because we fall back to their LMS\n // profile name, but if the call to the organization endpoint fails, we cannot render the certificate because\n // we require data from this endpoint.\n let component;\n\n if (!orgMetadata) {\n component = false;\n } else if (isLoading) {\n component = (\n <Skeleton\n count={1}\n height=\"5rem\"\n />\n );\n } else {\n component = (\n <CertificatePreviewComponent />\n );\n }\n\n return (\n component\n );\n};\n\nCertificatePreview.propTypes = {\n courseId: PropTypes.string.isRequired,\n};\n\nexport default CertificatePreview;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"CertificatePreview.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_frontendPlatform","_auth","_paragon","_modelStore","_lms_api","_Signatory","_jsxRuntime","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","CertificatePreview","_ref","courseId","bgColor","username","name","getAuthenticatedUser","number","org","title","useModel","platformLogoUrl","getConfig","LOGO_URL","isLoading","setIsLoading","useState","orgMetadata","setOrgMetadata","certificateName","setCertificateName","useEffect","fetchOrg","then","data","fetchVerifiedName","certName","useVerifiedNameForCerts","verifiedName","profileName","CertificatePreviewComponent","jsxs","className","children","jsx","alt","src","logo","shortName","component","Skeleton","count","height","propTypes","PropTypes","string","isRequired","_default","exports"],"sources":["../../../src/upgrade-notification/certificate-preview/CertificatePreview.jsx"],"sourcesContent":["/* eslint import/no-unresolved: 0 */\nimport React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { getConfig } from '@edx/frontend-platform';\nimport { getAuthenticatedUser } from '@edx/frontend-platform/auth';\nimport { Skeleton } from '@openedx/paragon';\nimport { useModel } from '@src/generic/model-store';\n\nimport { fetchOrg, fetchVerifiedName } from '../../data/lms_api';\nimport Signatory from './Signatory';\nimport './CertificatePreview.scss';\n\nconst CertificatePreview = ({ courseId, bgColor }) => {\n const { username, name } = getAuthenticatedUser();\n\n const {\n number,\n org,\n title,\n } = useModel('courseHomeMeta', courseId);\n\n const platformLogoUrl = getConfig().LOGO_URL;\n\n const [isLoading, setIsLoading] = useState(true);\n const [orgMetadata, setOrgMetadata] = useState({});\n const [certificateName, setCertificateName] = useState(name);\n\n useEffect(() => {\n fetchOrg(org).then((data) => {\n setOrgMetadata(data);\n });\n\n fetchVerifiedName(username).then((data) => {\n if (data) {\n const certName = data.useVerifiedNameForCerts ? data.verifiedName : data.profileName;\n setCertificateName(certName);\n }\n });\n\n setIsLoading(false);\n }, [org, username, name]);\n\n const CertificatePreviewComponent = () => (\n <div className={`certificate-preview border m-4 p-3 ${bgColor}`}>\n <div className=\"d-flex justify-content-between\" data-testid=\"certificate-preview-header\">\n <img\n alt=\"Verified Certificate logo\"\n className=\"verified-certificate-logo\"\n src=\"https://edxuploads.s3.amazonaws.com/certificate_template_assets/122/verified-certificate-logo.svg\"\n />\n <span className=\"sr-only\">Verified Certificate</span>\n <div className=\"mb-4\">\n <div className=\"sr-only\">Supported by the following organizations</div>\n {orgMetadata?.logo\n ? (\n <img\n alt={`${orgMetadata.shortName} logo`}\n className=\"organization-logo\"\n data-testid=\"organization-logo\"\n src={orgMetadata.logo}\n />\n )\n : (<div data-testid=\"organization-short-name\">{orgMetadata.shortName}</div>)}\n </div>\n </div>\n <div className=\"d-flex justify-content-between\">\n <div className=\"certificate-statement\">\n <div className=\"certificate-statement-container d-flex flex-column\">\n <span\n className=\"certificate-statement-detail\"\n >\n This is to certify that\n </span>\n <strong\n className=\"certificate-statement-detail certificate-recipient font-weight-bold\"\n >\n {certificateName}\n </strong>\n <span\n className=\"certificate-statement-detail\"\n >\n successfully completed and received a passing grade in\n </span>\n <span\n className=\"certificate-course font-weight-bold\"\n >\n <span>{number}</span>:\n <span>{title}</span>\n </span>\n <span\n className=\"certificate-statement-detail\"\n >\n a course of study offered by {orgMetadata.shortName},\n an online learning initiative of {orgMetadata.name}.\n </span>\n </div>\n </div>\n <div className=\"signatories\">\n <div className=\"sr-only\">Noted by</div>\n <Signatory name=\"Maurilio Pugliesi\" />\n <Signatory name=\"Justine Doe, Ph.D.\" />\n </div>\n </div>\n <div className=\"certificate-identifiers\">\n <ul className=\"d-flex no-bullets stamps pt-3\">\n <li className=\"stamp\">\n <img className=\"platform-logo\" src={platformLogoUrl} alt=\"edX\" />\n </li>\n <li className=\"stamp d-flex flex-column\">\n <span className=\"title\">Verified Certificate</span>\n <span className=\"emphasized\">Issued Month / Year</span>\n </li>\n <li className=\"stamp d-flex flex-column\">\n <span className=\"title\">Valid Certificate ID</span>\n <span className=\"emphasized\">12345678901234567890</span>\n </li>\n </ul>\n </div>\n <div className=\"preview-watermark\">\n <span>PREVIEW</span>\n </div>\n </div>\n );\n\n // We can render if the call to the verified name endpoint returns a null, because we fall back to their LMS\n // profile name, but if the call to the organization endpoint fails, we cannot render the certificate because\n // we require data from this endpoint.\n let component;\n\n if (!orgMetadata) {\n component = false;\n } else if (isLoading) {\n component = (\n <Skeleton\n count={1}\n height=\"5rem\"\n />\n );\n } else {\n component = (\n <CertificatePreviewComponent />\n );\n }\n\n return (\n component\n );\n};\n\nCertificatePreview.propTypes = {\n courseId: PropTypes.string.isRequired,\n};\n\nexport default CertificatePreview;\n"],"mappings":"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","ignoreList":[]}
|