@edx/frontend-plugin-advertisements 1.18.0 → 1.19.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/README.rst +64 -63
- package/dist/data/index.js +0 -12
- package/dist/data/index.js.map +1 -1
- package/dist/data/optimizely.js +1 -9
- package/dist/data/optimizely.js.map +1 -1
- package/dist/paywall/ExperimentalLockPaywall.js +6 -26
- package/dist/paywall/ExperimentalLockPaywall.js.map +1 -1
- package/dist/paywall/LockPaywall.js +1 -9
- package/dist/paywall/LockPaywall.js.map +1 -1
- package/dist/upgrade-notification/certificate-preview/CertificatePreview.js +1 -0
- package/dist/upgrade-notification/certificate-preview/CertificatePreview.js.map +1 -1
- package/dist/upgrade-notification/certificate-preview/CertificatePreview.scss +23 -2
- package/package.json +1 -1
- package/dist/paywall/utils.js +0 -27
- package/dist/paywall/utils.js.map +0 -1
- package/dist/upgrade-notification/partner-branding/PartnerBranding.js +0 -63
- package/dist/upgrade-notification/partner-branding/PartnerBranding.js.map +0 -1
package/README.rst
CHANGED
|
@@ -44,74 +44,75 @@ documentation for `local module development`_ in the `Learning MFE`_. Additional
|
|
|
44
44
|
components to appear in the correct plugin slots, you will need a local ``env.config.js`` file in your copy of
|
|
45
45
|
``frontend-app-learning`` which includes the following lines::
|
|
46
46
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
47
|
+
import { UpgradeNotification, LockPaywall } from '@edx/frontend-plugin-advertisements';
|
|
48
|
+
import { PLUGIN_OPERATIONS, DIRECT_PLUGIN } from '@openedx/frontend-plugin-framework';
|
|
49
|
+
|
|
50
|
+
// Insert any other imports here
|
|
51
|
+
|
|
52
|
+
// Load environment variables from .env file
|
|
53
|
+
const config = {
|
|
54
|
+
...process.env,
|
|
55
|
+
pluginSlots: {
|
|
56
|
+
|
|
57
|
+
// Insert any other plugins here
|
|
58
|
+
|
|
59
|
+
gated_unit_content_message_slot: {
|
|
60
|
+
plugins: [
|
|
61
|
+
{
|
|
62
|
+
op: PLUGIN_OPERATIONS.Insert,
|
|
63
|
+
widget: {
|
|
64
|
+
id: 'gated_unit_content_message_slot',
|
|
65
|
+
type: DIRECT_PLUGIN,
|
|
66
|
+
priority: 50,
|
|
67
|
+
RenderWidget: LockPaywall,
|
|
68
|
+
},
|
|
67
69
|
},
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
70
|
+
],
|
|
71
|
+
},
|
|
72
|
+
notification_widget_slot: {
|
|
73
|
+
plugins: [
|
|
74
|
+
{
|
|
75
|
+
op: PLUGIN_OPERATIONS.Insert,
|
|
76
|
+
widget: {
|
|
77
|
+
id: 'notification_widget_slot',
|
|
78
|
+
type: DIRECT_PLUGIN,
|
|
79
|
+
priority: 50,
|
|
80
|
+
RenderWidget: UpgradeNotification,
|
|
81
|
+
},
|
|
79
82
|
},
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
83
|
+
],
|
|
84
|
+
},
|
|
85
|
+
notification_tray_slot: {
|
|
86
|
+
plugins: [
|
|
87
|
+
{
|
|
88
|
+
op: PLUGIN_OPERATIONS.Insert,
|
|
89
|
+
widget: {
|
|
90
|
+
id: 'notification_tray_slot',
|
|
91
|
+
type: DIRECT_PLUGIN,
|
|
92
|
+
priority: 50,
|
|
93
|
+
RenderWidget: UpgradeNotification,
|
|
94
|
+
},
|
|
92
95
|
},
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
RenderWidget: LockPaywall,
|
|
96
|
+
],
|
|
97
|
+
},
|
|
98
|
+
outline_tab_notifications_slot: {
|
|
99
|
+
plugins: [
|
|
100
|
+
{
|
|
101
|
+
op: PLUGIN_OPERATIONS.Insert,
|
|
102
|
+
widget: {
|
|
103
|
+
id: 'outline_tab_notifications_slot',
|
|
104
|
+
type: DIRECT_PLUGIN,
|
|
105
|
+
priority: 50,
|
|
106
|
+
RenderWidget: UpgradeNotification,
|
|
107
|
+
},
|
|
106
108
|
},
|
|
107
|
-
|
|
108
|
-
|
|
109
|
+
],
|
|
110
|
+
},
|
|
109
111
|
},
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
};
|
|
112
|
+
OPTIMIZELY_FULL_STACK_SDK_KEY: 'vtr_upgrade',
|
|
113
|
+
};
|
|
113
114
|
|
|
114
|
-
|
|
115
|
+
export default config;
|
|
115
116
|
|
|
116
117
|
If you are planning to run the `Learning MFE`_ in `devstack`_, be sure to clone this repository into a ``src``
|
|
117
118
|
subdirectory of your `devstack`_ workspace directory so that the code is properly mounted into the `Learning MFE`_
|
|
@@ -195,4 +196,4 @@ Contact `edx/masters-devs-cosmonauts` if you need help with this repository.
|
|
|
195
196
|
Reporting Security Issues
|
|
196
197
|
=========================
|
|
197
198
|
|
|
198
|
-
Please do not report security issues in public. Email security@edx.org instead.
|
|
199
|
+
Please do not report security issues in public. Email security@edx.org instead.
|
package/dist/data/index.js
CHANGED
|
@@ -21,18 +21,6 @@ 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_EXPERIMENT_KEY", {
|
|
25
|
-
enumerable: true,
|
|
26
|
-
get: function () {
|
|
27
|
-
return _optimizely.OPTIMIZELY_VTR_EXPERIMENT_KEY;
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
Object.defineProperty(exports, "OPTIMIZELY_VTR_EXPERIMENT_VARIATION_KEYS", {
|
|
31
|
-
enumerable: true,
|
|
32
|
-
get: function () {
|
|
33
|
-
return _optimizely.OPTIMIZELY_VTR_EXPERIMENT_VARIATION_KEYS;
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
24
|
Object.defineProperty(exports, "getOptimizely", {
|
|
37
25
|
enumerable: true,
|
|
38
26
|
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
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;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.
|
|
6
|
+
exports.getOptimizely = 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');
|
|
@@ -23,14 +23,6 @@ const getOptimizely = () => {
|
|
|
23
23
|
return null;
|
|
24
24
|
};
|
|
25
25
|
exports.getOptimizely = getOptimizely;
|
|
26
|
-
const OPTIMIZELY_VTR_EXPERIMENT_KEY = exports.OPTIMIZELY_VTR_EXPERIMENT_KEY = 'verified_take_rate_experimentation';
|
|
27
|
-
const OPTIMIZELY_VTR_EXPERIMENT_VARIATION_KEYS = exports.OPTIMIZELY_VTR_EXPERIMENT_VARIATION_KEYS = {
|
|
28
|
-
WHY_NOT_SURVEY: 'why_not_survey',
|
|
29
|
-
CERTIFICATE_PREVIEW: 'certificate_preview',
|
|
30
|
-
PARTNER_BRANDING: 'partner_branding',
|
|
31
|
-
CONTROL: 'control',
|
|
32
|
-
OFF: 'off'
|
|
33
|
-
};
|
|
34
26
|
const OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_KEY = exports.OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_KEY = 'verified_take_rate_copy_change_experimentation';
|
|
35
27
|
const OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_VARIATION_KEYS = exports.OPTIMIZELY_VTR_COPY_CHANGE_EXPERIMENT_VARIATION_KEYS = {
|
|
36
28
|
CERTIFICATE_PREVIEW: 'certificate_preview',
|
|
@@ -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","
|
|
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_copy_change_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,gDAAgD;AAElG,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,qBAAqB,GAAAP,OAAA,CAAAO,qBAAA,GAAG;EAC5BC,oBAAoB,EAAE,sBAAsB;EAC5CC,4BAA4B,EAAE;AAChC,CAAC","ignoreList":[]}
|
|
@@ -18,8 +18,6 @@ var _UpsellBullets = require("@src/generic/upsell-bullets/UpsellBullets");
|
|
|
18
18
|
var _auth = require("@edx/frontend-platform/auth");
|
|
19
19
|
var _analytics = require("@edx/frontend-platform/analytics");
|
|
20
20
|
var _reactSdk = require("@optimizely/react-sdk");
|
|
21
|
-
var _data = require("../data");
|
|
22
|
-
var _utils = _interopRequireDefault(require("./utils"));
|
|
23
21
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
24
22
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
25
23
|
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; }
|
|
@@ -30,8 +28,7 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
|
|
|
30
28
|
const ExperimentalLockPaywall = _ref => {
|
|
31
29
|
let {
|
|
32
30
|
intl,
|
|
33
|
-
courseId
|
|
34
|
-
optimizely
|
|
31
|
+
courseId
|
|
35
32
|
} = _ref;
|
|
36
33
|
const course = (0, _modelStore.useModel)('coursewareMeta', courseId);
|
|
37
34
|
const {
|
|
@@ -43,10 +40,6 @@ const ExperimentalLockPaywall = _ref => {
|
|
|
43
40
|
org,
|
|
44
41
|
verifiedMode
|
|
45
42
|
} = (0, _modelStore.useModel)('courseHomeMeta', courseId);
|
|
46
|
-
const [decision] = (0, _reactSdk.useDecision)(_data.OPTIMIZELY_VTR_EXPERIMENT_KEY);
|
|
47
|
-
const {
|
|
48
|
-
variationKey
|
|
49
|
-
} = decision;
|
|
50
43
|
|
|
51
44
|
// the following variables are set and used for resposive layout to work with
|
|
52
45
|
// whether the NotificationTray is open or not and if there's an offer with longer text
|
|
@@ -59,9 +52,7 @@ const ExperimentalLockPaywall = _ref => {
|
|
|
59
52
|
}
|
|
60
53
|
const eventProperties = {
|
|
61
54
|
org_key: org,
|
|
62
|
-
courserun_key: courseId
|
|
63
|
-
experiment_key: _data.OPTIMIZELY_VTR_EXPERIMENT_KEY,
|
|
64
|
-
variation_key: variationKey
|
|
55
|
+
courserun_key: courseId
|
|
65
56
|
};
|
|
66
57
|
const {
|
|
67
58
|
userId
|
|
@@ -73,7 +64,6 @@ const ExperimentalLockPaywall = _ref => {
|
|
|
73
64
|
linkType: 'link',
|
|
74
65
|
pageName: 'in_course'
|
|
75
66
|
}));
|
|
76
|
-
optimizely.track(_data.OPTIMIZELY_EVENT_KEYS.UPGRADE_BUTTON_CLICK);
|
|
77
67
|
};
|
|
78
68
|
const logClickPastExpiration = () => {
|
|
79
69
|
(0, _analytics.sendTrackEvent)('edx.bi.ecommerce.gated_content.past_expiration.link_clicked', _objectSpread(_objectSpread({}, eventProperties), {}, {
|
|
@@ -140,12 +130,12 @@ const ExperimentalLockPaywall = _ref => {
|
|
|
140
130
|
})]
|
|
141
131
|
})]
|
|
142
132
|
})]
|
|
143
|
-
}), pastExpirationDeadline ? null : /*#__PURE__*/(0, _jsxRuntime.
|
|
133
|
+
}), pastExpirationDeadline ? null : /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
144
134
|
className: (0, _classnames.default)('d-flex flex-column align-items-md-center text-right justify-content-center', {
|
|
145
135
|
'col-md-4 mx-md-3': !shouldDisplayGatedContentTwoColumnsHalf,
|
|
146
136
|
'col-md-6': shouldDisplayGatedContentTwoColumnsHalf
|
|
147
137
|
}),
|
|
148
|
-
children:
|
|
138
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_upgradeButton.UpgradeButton, {
|
|
149
139
|
offer: offer,
|
|
150
140
|
onClick: () => logClick(eventProperties, userId),
|
|
151
141
|
verifiedMode: verifiedMode,
|
|
@@ -153,24 +143,14 @@ const ExperimentalLockPaywall = _ref => {
|
|
|
153
143
|
whiteSpace: shouldWrapTextOnButton ? 'nowrap' : null
|
|
154
144
|
},
|
|
155
145
|
"data-testId": "upgrade-button"
|
|
156
|
-
})
|
|
157
|
-
variant: "link",
|
|
158
|
-
className: "mt-3",
|
|
159
|
-
onClick: () => {
|
|
160
|
-
optimizely.track(_data.OPTIMIZELY_EVENT_KEYS.DECLINE_UPGRADE_BUTTON_CLICK);
|
|
161
|
-
(0, _utils.default)();
|
|
162
|
-
},
|
|
163
|
-
"data-testId": "lock-paywall-upgrade-decline-button",
|
|
164
|
-
children: "Take our 1-question survey"
|
|
165
|
-
}) : null]
|
|
146
|
+
})
|
|
166
147
|
})]
|
|
167
148
|
})
|
|
168
149
|
});
|
|
169
150
|
};
|
|
170
151
|
ExperimentalLockPaywall.propTypes = {
|
|
171
152
|
intl: _i18n.intlShape.isRequired,
|
|
172
|
-
courseId: _propTypes.default.string.isRequired
|
|
173
|
-
optimizely: _propTypes.default.node.isRequired
|
|
153
|
+
courseId: _propTypes.default.string.isRequired
|
|
174
154
|
};
|
|
175
155
|
var _default = exports.default = (0, _i18n.injectIntl)((0, _reactSdk.withOptimizely)(ExperimentalLockPaywall));
|
|
176
156
|
//# sourceMappingURL=ExperimentalLockPaywall.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExperimentalLockPaywall.js","names":["_react","_interopRequireDefault","require","_propTypes","_classnames","_i18n","_paragon","_icons","_messages","_edX_locked_certificate","_modelStore","_upgradeButton","_UpsellBullets","_auth","_analytics","_reactSdk","_data","_utils","_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","ExperimentalLockPaywall","_ref","intl","courseId","optimizely","course","useModel","accessExpiration","marketingUrl","offer","org","verifiedMode","decision","useDecision","OPTIMIZELY_VTR_EXPERIMENT_KEY","variationKey","shouldDisplayGatedContentTwoColumnsHalf","useWindowSize","width","breakpoints","large","minWidth","shouldWrapTextOnButton","extraSmall","accessExpirationDate","Date","expirationDate","pastExpirationDeadline","now","eventProperties","org_key","courserun_key","experiment_key","variation_key","userId","getAuthenticatedUser","logClick","sendTrackEvent","linkCategory","linkName","linkType","pageName","track","OPTIMIZELY_EVENT_KEYS","UPGRADE_BUTTON_CLICK","logClickPastExpiration","jsx","Alert","variant","icon","Locked","className","children","jsxs","formatMessage","messages","Hyperlink","destination","onClick","target","classNames","style","float","alt","src","certificateLocked","height","VerifiedCertBullet","UnlockGradedBullet","FullAccessBullet","SupportMissionBullet","UpgradeButton","whiteSpace","OPTIMIZELY_VTR_EXPERIMENT_VARIATION_KEYS","WHY_NOT_SURVEY","Button","DECLINE_UPGRADE_BUTTON_CLICK","showSurvey","propTypes","intlShape","isRequired","PropTypes","string","node","_default","exports","injectIntl","withOptimizely"],"sources":["../../src/paywall/ExperimentalLockPaywall.jsx"],"sourcesContent":["/* eslint import/no-unresolved: 0 */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { injectIntl, intlShape } from '@edx/frontend-platform/i18n';\nimport {\n Alert, breakpoints, Button, Hyperlink, useWindowSize,\n} from '@openedx/paragon';\nimport { Locked } from '@openedx/paragon/icons';\nimport messages from '@src/courseware/course/sequence/lock-paywall/messages';\nimport certificateLocked from '@src/generic/assets/edX_locked_certificate.png';\nimport { useModel } from '@src/generic/model-store';\nimport { UpgradeButton } from '@src/generic/upgrade-button';\nimport {\n VerifiedCertBullet,\n UnlockGradedBullet,\n FullAccessBullet,\n SupportMissionBullet,\n} from '@src/generic/upsell-bullets/UpsellBullets';\nimport { getAuthenticatedUser } from '@edx/frontend-platform/auth';\nimport { sendTrackEvent } from '@edx/frontend-platform/analytics';\nimport { useDecision, withOptimizely } from '@optimizely/react-sdk';\nimport {\n OPTIMIZELY_EVENT_KEYS,\n OPTIMIZELY_VTR_EXPERIMENT_KEY,\n OPTIMIZELY_VTR_EXPERIMENT_VARIATION_KEYS,\n} from '../data';\nimport showSurvey from './utils';\n\nconst ExperimentalLockPaywall = ({\n intl,\n courseId,\n optimizely,\n}) => {\n const course = useModel('coursewareMeta', courseId);\n const {\n accessExpiration,\n marketingUrl,\n offer,\n } = course;\n\n const {\n org, verifiedMode,\n } = useModel('courseHomeMeta', courseId);\n\n const [decision] = useDecision(OPTIMIZELY_VTR_EXPERIMENT_KEY);\n const { variationKey } = decision;\n\n // the following variables are set and used for resposive layout to work with\n // whether the NotificationTray is open or not and if there's an offer with longer text\n const shouldDisplayGatedContentTwoColumnsHalf = useWindowSize().width <= breakpoints.large.minWidth;\n const shouldWrapTextOnButton = useWindowSize().width > breakpoints.extraSmall.minWidth;\n\n const accessExpirationDate = accessExpiration ? new Date(accessExpiration.expirationDate) : null;\n const pastExpirationDeadline = accessExpiration ? new Date(Date.now()) > accessExpirationDate : false;\n\n if (!verifiedMode) {\n return null;\n }\n\n const eventProperties = {\n org_key: org,\n courserun_key: courseId,\n experiment_key: OPTIMIZELY_VTR_EXPERIMENT_KEY,\n variation_key: variationKey,\n };\n\n const { userId } = getAuthenticatedUser();\n\n const logClick = () => {\n sendTrackEvent('edx.bi.ecommerce.upsell_links_clicked', {\n ...eventProperties,\n linkCategory: '(none)',\n linkName: 'in_course_upgrade',\n linkType: 'link',\n pageName: 'in_course',\n });\n optimizely.track(OPTIMIZELY_EVENT_KEYS.UPGRADE_BUTTON_CLICK);\n };\n\n const logClickPastExpiration = () => {\n sendTrackEvent('edx.bi.ecommerce.gated_content.past_expiration.link_clicked', {\n ...eventProperties,\n linkCategory: 'gated_content',\n linkName: 'course_details',\n linkType: 'link',\n pageName: 'in_course',\n });\n };\n\n return (\n <Alert variant=\"light\" aria-live=\"off\" icon={Locked} className=\"lock-paywall-container\" data-testId=\"lock-paywall-lock-paywall-test-id\">\n <div className=\"row\">\n <div className=\"col\">\n <h4 aria-level=\"3\">\n <span>{intl.formatMessage(messages['learn.lockPaywall.title'])}</span>\n </h4>\n {pastExpirationDeadline ? (\n <div className=\"mb-2 upgrade-intro\" data-testId=\"lock-paywall-past-expiration\">\n {intl.formatMessage(messages['learn.lockPaywall.content.pastExpiration'])}\n <Hyperlink destination={marketingUrl} onClick={logClickPastExpiration(eventProperties)} target=\"_blank\" data-testId=\"lock-paywall-past-expiration-link\">{intl.formatMessage(messages['learn.lockPaywall.courseDetails'])}</Hyperlink>\n </div>\n ) : (\n <div className=\"mb-2 upgrade-intro\">\n {intl.formatMessage(messages['learn.lockPaywall.content'])}\n </div>\n )}\n\n <div className={classNames('d-inline-flex flex-row', { 'flex-wrap': shouldDisplayGatedContentTwoColumnsHalf })}>\n <div style={{ float: 'left' }} className=\"mr-3 mb-2\">\n <img\n alt={intl.formatMessage(messages['learn.lockPaywall.example.alt'])}\n src={certificateLocked}\n className=\"border-0 certificate-image-banner\"\n style={{ height: '128px', width: '175px' }}\n />\n </div>\n\n <div className=\"mw-xs list-div\">\n <div className=\"mb-2\">\n {intl.formatMessage(messages['learn.lockPaywall.list.intro'])}\n </div>\n <ul className=\"fa-ul ml-4 pl-2\">\n <VerifiedCertBullet />\n <UnlockGradedBullet />\n <FullAccessBullet />\n <SupportMissionBullet />\n </ul>\n </div>\n </div>\n </div>\n\n {pastExpirationDeadline\n ? null\n : (\n <div\n className={\n classNames('d-flex flex-column align-items-md-center text-right justify-content-center', {\n 'col-md-4 mx-md-3': !shouldDisplayGatedContentTwoColumnsHalf, 'col-md-6': shouldDisplayGatedContentTwoColumnsHalf,\n })\n }\n >\n <UpgradeButton\n offer={offer}\n onClick={() => logClick(eventProperties, userId)}\n verifiedMode={verifiedMode}\n style={{ whiteSpace: shouldWrapTextOnButton ? 'nowrap' : null }}\n data-testId=\"upgrade-button\"\n />\n {variationKey === OPTIMIZELY_VTR_EXPERIMENT_VARIATION_KEYS.WHY_NOT_SURVEY\n ? (\n <Button\n variant=\"link\"\n className=\"mt-3\"\n onClick={() => {\n optimizely.track(OPTIMIZELY_EVENT_KEYS.DECLINE_UPGRADE_BUTTON_CLICK);\n showSurvey();\n }}\n data-testId=\"lock-paywall-upgrade-decline-button\"\n >\n Take our 1-question survey\n </Button>\n )\n : null}\n </div>\n )}\n </div>\n </Alert>\n );\n};\nExperimentalLockPaywall.propTypes = {\n intl: intlShape.isRequired,\n courseId: PropTypes.string.isRequired,\n optimizely: PropTypes.node.isRequired,\n};\n\nexport default injectIntl(withOptimizely(ExperimentalLockPaywall));\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ExperimentalLockPaywall.js","names":["_react","_interopRequireDefault","require","_propTypes","_classnames","_i18n","_paragon","_icons","_messages","_edX_locked_certificate","_modelStore","_upgradeButton","_UpsellBullets","_auth","_analytics","_reactSdk","_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","ExperimentalLockPaywall","_ref","intl","courseId","course","useModel","accessExpiration","marketingUrl","offer","org","verifiedMode","shouldDisplayGatedContentTwoColumnsHalf","useWindowSize","width","breakpoints","large","minWidth","shouldWrapTextOnButton","extraSmall","accessExpirationDate","Date","expirationDate","pastExpirationDeadline","now","eventProperties","org_key","courserun_key","userId","getAuthenticatedUser","logClick","sendTrackEvent","linkCategory","linkName","linkType","pageName","logClickPastExpiration","jsx","Alert","variant","icon","Locked","className","children","jsxs","formatMessage","messages","Hyperlink","destination","onClick","target","classNames","style","float","alt","src","certificateLocked","height","VerifiedCertBullet","UnlockGradedBullet","FullAccessBullet","SupportMissionBullet","UpgradeButton","whiteSpace","propTypes","intlShape","isRequired","PropTypes","string","_default","exports","injectIntl","withOptimizely"],"sources":["../../src/paywall/ExperimentalLockPaywall.jsx"],"sourcesContent":["/* eslint import/no-unresolved: 0 */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { injectIntl, intlShape } from '@edx/frontend-platform/i18n';\nimport {\n Alert, breakpoints, Hyperlink, useWindowSize,\n} from '@openedx/paragon';\nimport { Locked } from '@openedx/paragon/icons';\nimport messages from '@src/courseware/course/sequence/lock-paywall/messages';\nimport certificateLocked from '@src/generic/assets/edX_locked_certificate.png';\nimport { useModel } from '@src/generic/model-store';\nimport { UpgradeButton } from '@src/generic/upgrade-button';\nimport {\n VerifiedCertBullet,\n UnlockGradedBullet,\n FullAccessBullet,\n SupportMissionBullet,\n} from '@src/generic/upsell-bullets/UpsellBullets';\nimport { getAuthenticatedUser } from '@edx/frontend-platform/auth';\nimport { sendTrackEvent } from '@edx/frontend-platform/analytics';\nimport { withOptimizely } from '@optimizely/react-sdk';\n\nconst ExperimentalLockPaywall = ({\n intl,\n courseId,\n}) => {\n const course = useModel('coursewareMeta', courseId);\n const {\n accessExpiration,\n marketingUrl,\n offer,\n } = course;\n\n const {\n org, verifiedMode,\n } = useModel('courseHomeMeta', courseId);\n\n // the following variables are set and used for resposive layout to work with\n // whether the NotificationTray is open or not and if there's an offer with longer text\n const shouldDisplayGatedContentTwoColumnsHalf = useWindowSize().width <= breakpoints.large.minWidth;\n const shouldWrapTextOnButton = useWindowSize().width > breakpoints.extraSmall.minWidth;\n\n const accessExpirationDate = accessExpiration ? new Date(accessExpiration.expirationDate) : null;\n const pastExpirationDeadline = accessExpiration ? new Date(Date.now()) > accessExpirationDate : false;\n\n if (!verifiedMode) {\n return null;\n }\n\n const eventProperties = {\n org_key: org,\n courserun_key: courseId,\n };\n\n const { userId } = getAuthenticatedUser();\n\n const logClick = () => {\n sendTrackEvent('edx.bi.ecommerce.upsell_links_clicked', {\n ...eventProperties,\n linkCategory: '(none)',\n linkName: 'in_course_upgrade',\n linkType: 'link',\n pageName: 'in_course',\n });\n };\n\n const logClickPastExpiration = () => {\n sendTrackEvent('edx.bi.ecommerce.gated_content.past_expiration.link_clicked', {\n ...eventProperties,\n linkCategory: 'gated_content',\n linkName: 'course_details',\n linkType: 'link',\n pageName: 'in_course',\n });\n };\n\n return (\n <Alert variant=\"light\" aria-live=\"off\" icon={Locked} className=\"lock-paywall-container\" data-testId=\"lock-paywall-lock-paywall-test-id\">\n <div className=\"row\">\n <div className=\"col\">\n <h4 aria-level=\"3\">\n <span>{intl.formatMessage(messages['learn.lockPaywall.title'])}</span>\n </h4>\n {pastExpirationDeadline ? (\n <div className=\"mb-2 upgrade-intro\" data-testId=\"lock-paywall-past-expiration\">\n {intl.formatMessage(messages['learn.lockPaywall.content.pastExpiration'])}\n <Hyperlink destination={marketingUrl} onClick={logClickPastExpiration(eventProperties)} target=\"_blank\" data-testId=\"lock-paywall-past-expiration-link\">{intl.formatMessage(messages['learn.lockPaywall.courseDetails'])}</Hyperlink>\n </div>\n ) : (\n <div className=\"mb-2 upgrade-intro\">\n {intl.formatMessage(messages['learn.lockPaywall.content'])}\n </div>\n )}\n\n <div className={classNames('d-inline-flex flex-row', { 'flex-wrap': shouldDisplayGatedContentTwoColumnsHalf })}>\n <div style={{ float: 'left' }} className=\"mr-3 mb-2\">\n <img\n alt={intl.formatMessage(messages['learn.lockPaywall.example.alt'])}\n src={certificateLocked}\n className=\"border-0 certificate-image-banner\"\n style={{ height: '128px', width: '175px' }}\n />\n </div>\n\n <div className=\"mw-xs list-div\">\n <div className=\"mb-2\">\n {intl.formatMessage(messages['learn.lockPaywall.list.intro'])}\n </div>\n <ul className=\"fa-ul ml-4 pl-2\">\n <VerifiedCertBullet />\n <UnlockGradedBullet />\n <FullAccessBullet />\n <SupportMissionBullet />\n </ul>\n </div>\n </div>\n </div>\n\n {pastExpirationDeadline\n ? null\n : (\n <div\n className={\n classNames('d-flex flex-column align-items-md-center text-right justify-content-center', {\n 'col-md-4 mx-md-3': !shouldDisplayGatedContentTwoColumnsHalf, 'col-md-6': shouldDisplayGatedContentTwoColumnsHalf,\n })\n }\n >\n <UpgradeButton\n offer={offer}\n onClick={() => logClick(eventProperties, userId)}\n verifiedMode={verifiedMode}\n style={{ whiteSpace: shouldWrapTextOnButton ? 'nowrap' : null }}\n data-testId=\"upgrade-button\"\n />\n </div>\n )}\n </div>\n </Alert>\n );\n};\nExperimentalLockPaywall.propTypes = {\n intl: intlShape.isRequired,\n courseId: PropTypes.string.isRequired,\n};\n\nexport default injectIntl(withOptimizely(ExperimentalLockPaywall));\n"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,WAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AACA,IAAAI,QAAA,GAAAJ,OAAA;AAGA,IAAAK,MAAA,GAAAL,OAAA;AACA,IAAAM,SAAA,GAAAP,sBAAA,CAAAC,OAAA;AACA,IAAAO,uBAAA,GAAAR,sBAAA,CAAAC,OAAA;AACA,IAAAQ,WAAA,GAAAR,OAAA;AACA,IAAAS,cAAA,GAAAT,OAAA;AACA,IAAAU,cAAA,GAAAV,OAAA;AAMA,IAAAW,KAAA,GAAAX,OAAA;AACA,IAAAY,UAAA,GAAAZ,OAAA;AACA,IAAAa,SAAA,GAAAb,OAAA;AAAuD,IAAAc,WAAA,GAAAd,OAAA;AAAA,SAAAD,uBAAAgB,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,KArBvD;AAuBA,MAAM+B,uBAAuB,GAAGC,IAAA,IAG1B;EAAA,IAH2B;IAC/BC,IAAI;IACJC;EACF,CAAC,GAAAF,IAAA;EACC,MAAMG,MAAM,GAAG,IAAAC,oBAAQ,EAAC,gBAAgB,EAAEF,QAAQ,CAAC;EACnD,MAAM;IACJG,gBAAgB;IAChBC,YAAY;IACZC;EACF,CAAC,GAAGJ,MAAM;EAEV,MAAM;IACJK,GAAG;IAAEC;EACP,CAAC,GAAG,IAAAL,oBAAQ,EAAC,gBAAgB,EAAEF,QAAQ,CAAC;;EAExC;EACA;EACA,MAAMQ,uCAAuC,GAAG,IAAAC,sBAAa,EAAC,CAAC,CAACC,KAAK,IAAIC,oBAAW,CAACC,KAAK,CAACC,QAAQ;EACnG,MAAMC,sBAAsB,GAAG,IAAAL,sBAAa,EAAC,CAAC,CAACC,KAAK,GAAGC,oBAAW,CAACI,UAAU,CAACF,QAAQ;EAEtF,MAAMG,oBAAoB,GAAGb,gBAAgB,GAAG,IAAIc,IAAI,CAACd,gBAAgB,CAACe,cAAc,CAAC,GAAG,IAAI;EAChG,MAAMC,sBAAsB,GAAGhB,gBAAgB,GAAG,IAAIc,IAAI,CAACA,IAAI,CAACG,GAAG,CAAC,CAAC,CAAC,GAAGJ,oBAAoB,GAAG,KAAK;EAErG,IAAI,CAACT,YAAY,EAAE;IACjB,OAAO,IAAI;EACb;EAEA,MAAMc,eAAe,GAAG;IACtBC,OAAO,EAAEhB,GAAG;IACZiB,aAAa,EAAEvB;EACjB,CAAC;EAED,MAAM;IAAEwB;EAAO,CAAC,GAAG,IAAAC,0BAAoB,EAAC,CAAC;EAEzC,MAAMC,QAAQ,GAAGA,CAAA,KAAM;IACrB,IAAAC,yBAAc,EAAC,uCAAuC,EAAAnD,aAAA,CAAAA,aAAA,KACjD6C,eAAe;MAClBO,YAAY,EAAE,QAAQ;MACtBC,QAAQ,EAAE,mBAAmB;MAC7BC,QAAQ,EAAE,MAAM;MAChBC,QAAQ,EAAE;IAAW,EACtB,CAAC;EACJ,CAAC;EAED,MAAMC,sBAAsB,GAAGA,CAAA,KAAM;IACnC,IAAAL,yBAAc,EAAC,6DAA6D,EAAAnD,aAAA,CAAAA,aAAA,KACvE6C,eAAe;MAClBO,YAAY,EAAE,eAAe;MAC7BC,QAAQ,EAAE,gBAAgB;MAC1BC,QAAQ,EAAE,MAAM;MAChBC,QAAQ,EAAE;IAAW,EACtB,CAAC;EACJ,CAAC;EAED,oBACE,IAAAxE,WAAA,CAAA0E,GAAA,EAACpF,QAAA,CAAAqF,KAAK;IAACC,OAAO,EAAC,OAAO;IAAC,aAAU,KAAK;IAACC,IAAI,EAAEC,aAAO;IAACC,SAAS,EAAC,wBAAwB;IAAC,eAAY,mCAAmC;IAAAC,QAAA,eACrI,IAAAhF,WAAA,CAAAiF,IAAA;MAAKF,SAAS,EAAC,KAAK;MAAAC,QAAA,gBAClB,IAAAhF,WAAA,CAAAiF,IAAA;QAAKF,SAAS,EAAC,KAAK;QAAAC,QAAA,gBAClB,IAAAhF,WAAA,CAAA0E,GAAA;UAAI,cAAW,GAAG;UAAAM,QAAA,eAChB,IAAAhF,WAAA,CAAA0E,GAAA;YAAAM,QAAA,EAAOxC,IAAI,CAAC0C,aAAa,CAACC,iBAAQ,CAAC,yBAAyB,CAAC;UAAC,CAAO;QAAC,CACpE,CAAC,EACJvB,sBAAsB,gBACrB,IAAA5D,WAAA,CAAAiF,IAAA;UAAKF,SAAS,EAAC,oBAAoB;UAAC,eAAY,8BAA8B;UAAAC,QAAA,GAC3ExC,IAAI,CAAC0C,aAAa,CAACC,iBAAQ,CAAC,0CAA0C,CAAC,CAAC,eACzE,IAAAnF,WAAA,CAAA0E,GAAA,EAACpF,QAAA,CAAA8F,SAAS;YAACC,WAAW,EAAExC,YAAa;YAACyC,OAAO,EAAEb,sBAAsB,CAACX,eAAe,CAAE;YAACyB,MAAM,EAAC,QAAQ;YAAC,eAAY,mCAAmC;YAAAP,QAAA,EAAExC,IAAI,CAAC0C,aAAa,CAACC,iBAAQ,CAAC,iCAAiC,CAAC;UAAC,CAAY,CAAC;QAAA,CAClO,CAAC,gBAEN,IAAAnF,WAAA,CAAA0E,GAAA;UAAKK,SAAS,EAAC,oBAAoB;UAAAC,QAAA,EAChCxC,IAAI,CAAC0C,aAAa,CAACC,iBAAQ,CAAC,2BAA2B,CAAC;QAAC,CACvD,CACN,eAED,IAAAnF,WAAA,CAAAiF,IAAA;UAAKF,SAAS,EAAE,IAAAS,mBAAU,EAAC,wBAAwB,EAAE;YAAE,WAAW,EAAEvC;UAAwC,CAAC,CAAE;UAAA+B,QAAA,gBAC7G,IAAAhF,WAAA,CAAA0E,GAAA;YAAKe,KAAK,EAAE;cAAEC,KAAK,EAAE;YAAO,CAAE;YAACX,SAAS,EAAC,WAAW;YAAAC,QAAA,eAClD,IAAAhF,WAAA,CAAA0E,GAAA;cACEiB,GAAG,EAAEnD,IAAI,CAAC0C,aAAa,CAACC,iBAAQ,CAAC,+BAA+B,CAAC,CAAE;cACnES,GAAG,EAAEC,+BAAkB;cACvBd,SAAS,EAAC,mCAAmC;cAC7CU,KAAK,EAAE;gBAAEK,MAAM,EAAE,OAAO;gBAAE3C,KAAK,EAAE;cAAQ;YAAE,CAC5C;UAAC,CACC,CAAC,eAEN,IAAAnD,WAAA,CAAAiF,IAAA;YAAKF,SAAS,EAAC,gBAAgB;YAAAC,QAAA,gBAC7B,IAAAhF,WAAA,CAAA0E,GAAA;cAAKK,SAAS,EAAC,MAAM;cAAAC,QAAA,EAClBxC,IAAI,CAAC0C,aAAa,CAACC,iBAAQ,CAAC,8BAA8B,CAAC;YAAC,CAC1D,CAAC,eACN,IAAAnF,WAAA,CAAAiF,IAAA;cAAIF,SAAS,EAAC,iBAAiB;cAAAC,QAAA,gBAC7B,IAAAhF,WAAA,CAAA0E,GAAA,EAAC9E,cAAA,CAAAmG,kBAAkB,IAAE,CAAC,eACtB,IAAA/F,WAAA,CAAA0E,GAAA,EAAC9E,cAAA,CAAAoG,kBAAkB,IAAE,CAAC,eACtB,IAAAhG,WAAA,CAAA0E,GAAA,EAAC9E,cAAA,CAAAqG,gBAAgB,IAAE,CAAC,eACpB,IAAAjG,WAAA,CAAA0E,GAAA,EAAC9E,cAAA,CAAAsG,oBAAoB,IAAE,CAAC;YAAA,CACtB,CAAC;UAAA,CACF,CAAC;QAAA,CACH,CAAC;MAAA,CACH,CAAC,EAELtC,sBAAsB,GACnB,IAAI,gBAEJ,IAAA5D,WAAA,CAAA0E,GAAA;QACEK,SAAS,EACP,IAAAS,mBAAU,EAAC,4EAA4E,EAAE;UACvF,kBAAkB,EAAE,CAACvC,uCAAuC;UAAE,UAAU,EAAEA;QAC5E,CAAC,CACF;QAAA+B,QAAA,eAED,IAAAhF,WAAA,CAAA0E,GAAA,EAAC/E,cAAA,CAAAwG,aAAa;UACZrD,KAAK,EAAEA,KAAM;UACbwC,OAAO,EAAEA,CAAA,KAAMnB,QAAQ,CAACL,eAAe,EAAEG,MAAM,CAAE;UACjDjB,YAAY,EAAEA,YAAa;UAC3ByC,KAAK,EAAE;YAAEW,UAAU,EAAE7C,sBAAsB,GAAG,QAAQ,GAAG;UAAK,CAAE;UAChE,eAAY;QAAgB,CAC7B;MAAC,CACC,CACN;IAAA,CACA;EAAC,CACD,CAAC;AAEZ,CAAC;AACDjB,uBAAuB,CAAC+D,SAAS,GAAG;EAClC7D,IAAI,EAAE8D,eAAS,CAACC,UAAU;EAC1B9D,QAAQ,EAAE+D,kBAAS,CAACC,MAAM,CAACF;AAC7B,CAAC;AAAC,IAAAG,QAAA,GAAAC,OAAA,CAAAxG,OAAA,GAEa,IAAAyG,gBAAU,EAAC,IAAAC,wBAAc,EAACvE,uBAAuB,CAAC,CAAC","ignoreList":[]}
|
|
@@ -5,9 +5,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _DefaultLockPaywall = _interopRequireDefault(require("./DefaultLockPaywall"));
|
|
8
|
-
var _ExperimentalLockPaywall = _interopRequireDefault(require("./ExperimentalLockPaywall"));
|
|
9
|
-
var _Optimizely = _interopRequireDefault(require("../optimizely/Optimizely"));
|
|
10
|
-
var _optimizely = require("../data/optimizely");
|
|
11
8
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
9
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
10
|
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; }
|
|
@@ -15,11 +12,6 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
15
12
|
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
13
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
17
14
|
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); }
|
|
18
|
-
const LockPaywall = props => /*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
19
|
-
defaultComponent: _DefaultLockPaywall.default,
|
|
20
|
-
experimentalComponent: _ExperimentalLockPaywall.default,
|
|
21
|
-
defaultVariationKey: "off",
|
|
22
|
-
experimentKey: _optimizely.OPTIMIZELY_VTR_EXPERIMENT_KEY
|
|
23
|
-
}, props));
|
|
15
|
+
const LockPaywall = props => /*#__PURE__*/(0, _jsxRuntime.jsx)(_DefaultLockPaywall.default, _objectSpread({}, props));
|
|
24
16
|
var _default = exports.default = LockPaywall;
|
|
25
17
|
//# sourceMappingURL=LockPaywall.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LockPaywall.js","names":["_DefaultLockPaywall","_interopRequireDefault","require","
|
|
1
|
+
{"version":3,"file":"LockPaywall.js","names":["_DefaultLockPaywall","_interopRequireDefault","require","_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","LockPaywall","props","jsx","_default","exports"],"sources":["../../src/paywall/LockPaywall.jsx"],"sourcesContent":["import DefaultLockPaywall from './DefaultLockPaywall';\n\nconst LockPaywall = (props) => (\n <DefaultLockPaywall {...props} />\n);\n\nexport default LockPaywall;\n"],"mappings":";;;;;;AAAA,IAAAA,mBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAsD,IAAAC,WAAA,GAAAD,OAAA;AAAA,SAAAD,uBAAAG,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;AAEtD,MAAM+B,WAAW,GAAIC,KAAK,iBACxB,IAAAvC,WAAA,CAAAwC,GAAA,EAAC3C,mBAAA,CAAAM,OAAkB,EAAAc,aAAA,KAAKsB,KAAK,CAAG,CACjC;AAAC,IAAAE,QAAA,GAAAC,OAAA,CAAAvC,OAAA,GAEamC,WAAW","ignoreList":[]}
|
|
@@ -114,6 +114,7 @@ const CertificatePreview = _ref => {
|
|
|
114
114
|
})]
|
|
115
115
|
})]
|
|
116
116
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
117
|
+
className: "certificate-identifiers",
|
|
117
118
|
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("ul", {
|
|
118
119
|
className: "d-flex no-bullets stamps pt-3",
|
|
119
120
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("li", {
|
|
@@ -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>\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>\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","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>\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,10 +1,31 @@
|
|
|
1
1
|
@import '~@openedx/paragon/scss/core/core.scss';
|
|
2
2
|
|
|
3
|
-
|
|
4
3
|
.certificate-preview {
|
|
5
4
|
border-radius: 6px;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.course-outline-tab {
|
|
8
|
+
.certificate-preview {
|
|
9
|
+
@media (min-width: 505px) and (max-width: map-get($grid-breakpoints, "md")) {
|
|
10
|
+
max-width: 65%;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
.signatories {
|
|
14
|
+
@media (min-width: map-get($grid-breakpoints, "md")) and (max-width: 1010px) {
|
|
15
|
+
display: none;
|
|
16
|
+
visibility: hidden;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
.certificate-identifiers {
|
|
20
|
+
@media (min-width: map-get($grid-breakpoints, "md")) and (max-width: 1010px) {
|
|
21
|
+
display: none;
|
|
22
|
+
visibility: hidden;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
6
26
|
|
|
7
|
-
|
|
27
|
+
#course-sidebar .certificate-preview {
|
|
28
|
+
@media (min-width: map-get($grid-breakpoints, "md")) and (max-width: map-get($grid-breakpoints, "xl")){
|
|
8
29
|
max-width: 50%;
|
|
9
30
|
};
|
|
10
31
|
@media (min-width: map-get($grid-breakpoints, "sm")) and (max-width: map-get($grid-breakpoints, "md")) {
|
package/package.json
CHANGED
package/dist/paywall/utils.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
/* eslint-disable func-names,no-unused-expressions,no-param-reassign,no-sequences */
|
|
8
|
-
|
|
9
|
-
// This function contains the script provided by SuveryMonkey,
|
|
10
|
-
// Which is used to embed the survey in the html upon this function
|
|
11
|
-
// being called onClick of the "Take our survey" button
|
|
12
|
-
// For more info: https://help.surveymonkey.com/en/surveymonkey/send/website-collector/
|
|
13
|
-
const showSurvey = () => {
|
|
14
|
-
// SurveyMonkey uses a cookie to determine if the user has already taken the survey.
|
|
15
|
-
// This causes the survey to only ever appear once per user, even when the pages is refreshed.
|
|
16
|
-
// We reset its value here to allow the survey to appear more than once.
|
|
17
|
-
// There may be a better way to do this but this is the simplest workaround we found.
|
|
18
|
-
document.cookie = 'smcx_455874507_last_shown_at=';
|
|
19
|
-
(function (t, e, s, o) {
|
|
20
|
-
let n;
|
|
21
|
-
let c;
|
|
22
|
-
let l;
|
|
23
|
-
t.SMCX = t.SMCX || [], e.getElementById(o) || (n = e.getElementsByTagName(s), c = n[n.length - 1], l = e.createElement(s), l.type = 'text/javascript', l.async = !0, l.id = o, l.src = 'https://widget.surveymonkey.com/collect/website/js/tRaiETqnLgj758hTBazgdxIz34JHrCL7ZtslnQemQr9Ugsg12ofPY9us6g_2FYL315.js', c.parentNode.insertBefore(l, c));
|
|
24
|
-
})(window, document, 'script', 'smcx-sdk');
|
|
25
|
-
};
|
|
26
|
-
var _default = exports.default = showSurvey;
|
|
27
|
-
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","names":["showSurvey","document","cookie","t","e","s","o","n","c","l","SMCX","getElementById","getElementsByTagName","length","createElement","type","async","id","src","parentNode","insertBefore","window","_default","exports","default"],"sources":["../../src/paywall/utils.jsx"],"sourcesContent":["/* eslint-disable func-names,no-unused-expressions,no-param-reassign,no-sequences */\n\n// This function contains the script provided by SuveryMonkey,\n// Which is used to embed the survey in the html upon this function\n// being called onClick of the \"Take our survey\" button\n// For more info: https://help.surveymonkey.com/en/surveymonkey/send/website-collector/\nconst showSurvey = () => {\n // SurveyMonkey uses a cookie to determine if the user has already taken the survey.\n // This causes the survey to only ever appear once per user, even when the pages is refreshed.\n // We reset its value here to allow the survey to appear more than once.\n // There may be a better way to do this but this is the simplest workaround we found.\n document.cookie = 'smcx_455874507_last_shown_at=';\n (function (t, e, s, o) { let n; let c; let l; t.SMCX = t.SMCX || [], e.getElementById(o) || (n = e.getElementsByTagName(s), c = n[n.length - 1], l = e.createElement(s), l.type = 'text/javascript', l.async = !0, l.id = o, l.src = 'https://widget.surveymonkey.com/collect/website/js/tRaiETqnLgj758hTBazgdxIz34JHrCL7ZtslnQemQr9Ugsg12ofPY9us6g_2FYL315.js', c.parentNode.insertBefore(l, c)); }(window, document, 'script', 'smcx-sdk'));\n};\n\nexport default showSurvey;\n"],"mappings":";;;;;;AAAA;;AAEA;AACA;AACA;AACA;AACA,MAAMA,UAAU,GAAGA,CAAA,KAAM;EACvB;EACA;EACA;EACA;EACAC,QAAQ,CAACC,MAAM,GAAG,+BAA+B;EAChD,WAAUC,CAAC,EAAEC,CAAC,EAAEC,CAAC,EAAEC,CAAC,EAAE;IAAE,IAAIC,CAAC;IAAE,IAAIC,CAAC;IAAE,IAAIC,CAAC;IAAEN,CAAC,CAACO,IAAI,GAAGP,CAAC,CAACO,IAAI,IAAI,EAAE,EAAEN,CAAC,CAACO,cAAc,CAACL,CAAC,CAAC,KAAKC,CAAC,GAAGH,CAAC,CAACQ,oBAAoB,CAACP,CAAC,CAAC,EAAEG,CAAC,GAAGD,CAAC,CAACA,CAAC,CAACM,MAAM,GAAG,CAAC,CAAC,EAAEJ,CAAC,GAAGL,CAAC,CAACU,aAAa,CAACT,CAAC,CAAC,EAAEI,CAAC,CAACM,IAAI,GAAG,iBAAiB,EAAEN,CAAC,CAACO,KAAK,GAAG,CAAC,CAAC,EAAEP,CAAC,CAACQ,EAAE,GAAGX,CAAC,EAAEG,CAAC,CAACS,GAAG,GAAG,0HAA0H,EAAEV,CAAC,CAACW,UAAU,CAACC,YAAY,CAACX,CAAC,EAAED,CAAC,CAAC,CAAC;EAAE,CAAC,EAACa,MAAM,EAAEpB,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC;AAC9a,CAAC;AAAC,IAAAqB,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEaxB,UAAU","ignoreList":[]}
|
|
@@ -1,63 +0,0 @@
|
|
|
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 _paragon = require("@openedx/paragon");
|
|
10
|
-
var _discovery_api = require("../../data/discovery_api");
|
|
11
|
-
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
-
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); }
|
|
14
|
-
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; }
|
|
15
|
-
const PartnerBranding = _ref => {
|
|
16
|
-
let {
|
|
17
|
-
courseRunId
|
|
18
|
-
} = _ref;
|
|
19
|
-
const [imageURL, setImageURL] = (0, _react.useState)('');
|
|
20
|
-
const [orgName, setOrgName] = (0, _react.useState)('');
|
|
21
|
-
const [loading, setLoading] = (0, _react.useState)(true);
|
|
22
|
-
(0, _react.useEffect)(() => {
|
|
23
|
-
async function fetchData() {
|
|
24
|
-
const orgData = await (0, _discovery_api.fetchOrg)(courseRunId);
|
|
25
|
-
setImageURL(orgData?.logo_image_url);
|
|
26
|
-
setOrgName(orgData?.name);
|
|
27
|
-
setLoading(false);
|
|
28
|
-
}
|
|
29
|
-
fetchData();
|
|
30
|
-
setLoading(true);
|
|
31
|
-
}, [courseRunId]);
|
|
32
|
-
if (loading) {
|
|
33
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
34
|
-
"data-testid": "img-skeleton",
|
|
35
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.Skeleton, {
|
|
36
|
-
width: 200,
|
|
37
|
-
height: 100,
|
|
38
|
-
style: {
|
|
39
|
-
marginTop: '20px',
|
|
40
|
-
marginLeft: '20px'
|
|
41
|
-
}
|
|
42
|
-
})
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
if (imageURL) {
|
|
46
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)("img", {
|
|
47
|
-
src: imageURL,
|
|
48
|
-
alt: `${orgName} logo`,
|
|
49
|
-
style: {
|
|
50
|
-
width: '40%',
|
|
51
|
-
marginTop: '20px',
|
|
52
|
-
marginLeft: '20px',
|
|
53
|
-
padding: '5px'
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
return null; // no image available
|
|
58
|
-
};
|
|
59
|
-
PartnerBranding.propTypes = {
|
|
60
|
-
courseRunId: _propTypes.default.string.isRequired
|
|
61
|
-
};
|
|
62
|
-
var _default = exports.default = PartnerBranding;
|
|
63
|
-
//# sourceMappingURL=PartnerBranding.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PartnerBranding.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_paragon","_discovery_api","_jsxRuntime","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","PartnerBranding","_ref","courseRunId","imageURL","setImageURL","useState","orgName","setOrgName","loading","setLoading","useEffect","fetchData","orgData","fetchOrg","logo_image_url","name","jsx","children","Skeleton","width","height","style","marginTop","marginLeft","src","alt","padding","propTypes","PropTypes","string","isRequired","_default","exports"],"sources":["../../../src/upgrade-notification/partner-branding/PartnerBranding.jsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { Skeleton } from '@openedx/paragon';\n\nimport { fetchOrg } from '../../data/discovery_api';\n\nconst PartnerBranding = ({ courseRunId }) => {\n const [imageURL, setImageURL] = useState('');\n const [orgName, setOrgName] = useState('');\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n async function fetchData() {\n const orgData = await fetchOrg(courseRunId);\n setImageURL(orgData?.logo_image_url);\n setOrgName(orgData?.name);\n setLoading(false);\n }\n fetchData();\n setLoading(true);\n }, [courseRunId]);\n\n if (loading) {\n return (\n <div data-testid=\"img-skeleton\">\n <Skeleton\n width={200}\n height={100}\n style={{\n marginTop: '20px',\n marginLeft: '20px',\n }}\n />\n </div>\n );\n }\n if (imageURL) {\n return (\n <img\n src={imageURL}\n alt={`${orgName} logo`}\n style={{\n width: '40%',\n marginTop: '20px',\n marginLeft: '20px',\n padding: '5px',\n }}\n />\n );\n }\n return null; // no image available\n};\n\nPartnerBranding.propTypes = {\n courseRunId: PropTypes.string.isRequired,\n};\n\nexport default PartnerBranding;\n"],"mappings":"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","ignoreList":[]}
|