@edx/frontend-plugin-advertisements 1.37.0 → 1.38.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/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/section-outline/SectionHeader.js +49 -0
- package/dist/section-outline/SectionHeader.js.map +1 -0
- package/dist/section-outline/SectionItem.js +112 -0
- package/dist/section-outline/SectionItem.js.map +1 -0
- package/dist/section-outline/SectionList.js +85 -0
- package/dist/section-outline/SectionList.js.map +1 -0
- package/dist/section-outline/SequenceHeader.js +60 -0
- package/dist/section-outline/SequenceHeader.js.map +1 -0
- package/dist/section-outline/SequenceLink.js +63 -0
- package/dist/section-outline/SequenceLink.js.map +1 -0
- package/dist/section-outline/UpgradeBanner.js +49 -0
- package/dist/section-outline/UpgradeBanner.js.map +1 -0
- package/dist/section-outline/constants.js +10 -0
- package/dist/section-outline/constants.js.map +1 -0
- package/dist/section-outline/data/api.js +42 -0
- package/dist/section-outline/data/api.js.map +1 -0
- package/dist/section-outline/hooks.js +79 -0
- package/dist/section-outline/hooks.js.map +1 -0
- package/dist/section-outline/index.js +10 -0
- package/dist/section-outline/index.js.map +1 -0
- package/dist/section-outline/messages.js +41 -0
- package/dist/section-outline/messages.js.map +1 -0
- package/dist/upgrade-modal/NextUnitButton.js +14 -7
- package/dist/upgrade-modal/NextUnitButton.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -15,6 +15,12 @@ Object.defineProperty(exports, "NextUnitButton", {
|
|
|
15
15
|
return _upgradeModal.default;
|
|
16
16
|
}
|
|
17
17
|
});
|
|
18
|
+
Object.defineProperty(exports, "SectionList", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () {
|
|
21
|
+
return _sectionOutline.default;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
18
24
|
Object.defineProperty(exports, "UpgradeNotification", {
|
|
19
25
|
enumerable: true,
|
|
20
26
|
get: function () {
|
|
@@ -31,5 +37,6 @@ var _upgradeNotification = _interopRequireDefault(require("./upgrade-notificatio
|
|
|
31
37
|
var _paywall = _interopRequireDefault(require("./paywall"));
|
|
32
38
|
var _upgradeModal = _interopRequireDefault(require("./upgrade-modal"));
|
|
33
39
|
var _generic = require("./generic");
|
|
40
|
+
var _sectionOutline = _interopRequireDefault(require("./section-outline"));
|
|
34
41
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
35
42
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_upgradeNotification","_interopRequireDefault","require","_paywall","_upgradeModal","_generic","obj","__esModule","default"],"sources":["../src/index.jsx"],"sourcesContent":["import UpgradeNotification from './upgrade-notification';\nimport LockPaywall from './paywall';\nimport NextUnitButton from './upgrade-modal';\nimport { UpsellBullets } from './generic';\n\nexport {\n UpgradeNotification,\n LockPaywall,\n NextUnitButton,\n UpsellBullets,\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","names":["_upgradeNotification","_interopRequireDefault","require","_paywall","_upgradeModal","_generic","_sectionOutline","obj","__esModule","default"],"sources":["../src/index.jsx"],"sourcesContent":["import UpgradeNotification from './upgrade-notification';\nimport LockPaywall from './paywall';\nimport NextUnitButton from './upgrade-modal';\nimport { UpsellBullets } from './generic';\nimport SectionList from './section-outline';\n\nexport {\n UpgradeNotification,\n LockPaywall,\n NextUnitButton,\n UpsellBullets,\n SectionList,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,oBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,QAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,aAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AACA,IAAAI,eAAA,GAAAL,sBAAA,CAAAC,OAAA;AAA4C,SAAAD,uBAAAM,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA","ignoreList":[]}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
8
|
+
var _i18n = require("@edx/frontend-platform/i18n");
|
|
9
|
+
var _paragon = require("@openedx/paragon");
|
|
10
|
+
var _icons = require("@openedx/paragon/icons");
|
|
11
|
+
var _SectionTitle = _interopRequireDefault(require("@src/course-home/outline-tab/section-outline/SectionTitle.tsx"));
|
|
12
|
+
var _messages = _interopRequireDefault(require("./messages"));
|
|
13
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
14
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
+
/* eslint import/no-unresolved: 0 */
|
|
16
|
+
|
|
17
|
+
const SectionHeader = _ref => {
|
|
18
|
+
let {
|
|
19
|
+
complete,
|
|
20
|
+
hasLockedContent,
|
|
21
|
+
hideFromTOC,
|
|
22
|
+
title,
|
|
23
|
+
upgradeUrl
|
|
24
|
+
} = _ref;
|
|
25
|
+
const intl = (0, _i18n.useIntl)();
|
|
26
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_paragon.ActionRow, {
|
|
27
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_SectionTitle.default, {
|
|
28
|
+
complete,
|
|
29
|
+
hideFromTOC,
|
|
30
|
+
title
|
|
31
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.ActionRow.Spacer, {}), hasLockedContent && /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.Chip, {
|
|
32
|
+
onClick: () => window.open(upgradeUrl),
|
|
33
|
+
iconBefore: _icons.Locked,
|
|
34
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
35
|
+
className: "small font-weight-normal",
|
|
36
|
+
children: intl.formatMessage(_messages.default.sectionChipText)
|
|
37
|
+
})
|
|
38
|
+
})]
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
SectionHeader.propTypes = {
|
|
42
|
+
complete: _propTypes.default.bool.isRequired,
|
|
43
|
+
hasLockedContent: _propTypes.default.bool.isRequired,
|
|
44
|
+
hideFromTOC: _propTypes.default.bool.isRequired,
|
|
45
|
+
title: _propTypes.default.string.isRequired,
|
|
46
|
+
upgradeUrl: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.bool]).isRequired
|
|
47
|
+
};
|
|
48
|
+
var _default = exports.default = SectionHeader;
|
|
49
|
+
//# sourceMappingURL=SectionHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SectionHeader.js","names":["_propTypes","_interopRequireDefault","require","_i18n","_paragon","_icons","_SectionTitle","_messages","_jsxRuntime","obj","__esModule","default","SectionHeader","_ref","complete","hasLockedContent","hideFromTOC","title","upgradeUrl","intl","useIntl","jsxs","ActionRow","children","jsx","Spacer","Chip","onClick","window","open","iconBefore","Locked","className","formatMessage","messages","sectionChipText","propTypes","PropTypes","bool","isRequired","string","oneOfType","_default","exports"],"sources":["../../src/section-outline/SectionHeader.jsx"],"sourcesContent":["/* eslint import/no-unresolved: 0 */\nimport PropTypes from 'prop-types';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { ActionRow, Chip } from '@openedx/paragon';\nimport { Locked } from '@openedx/paragon/icons';\n\nimport SectionTitle from '@src/course-home/outline-tab/section-outline/SectionTitle.tsx';\nimport messages from './messages';\n\nconst SectionHeader = ({\n complete,\n hasLockedContent,\n hideFromTOC,\n title,\n upgradeUrl,\n}) => {\n const intl = useIntl();\n\n return (\n <ActionRow>\n <SectionTitle {...{ complete, hideFromTOC, title }} />\n <ActionRow.Spacer />\n {hasLockedContent && (\n <Chip\n onClick={() => window.open(upgradeUrl)}\n iconBefore={Locked}\n >\n <span className=\"small font-weight-normal\">\n {intl.formatMessage(messages.sectionChipText)}\n </span>\n </Chip>\n )}\n </ActionRow>\n );\n};\n\nSectionHeader.propTypes = {\n complete: PropTypes.bool.isRequired,\n hasLockedContent: PropTypes.bool.isRequired,\n hideFromTOC: PropTypes.bool.isRequired,\n title: PropTypes.string.isRequired,\n upgradeUrl: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]).isRequired,\n};\n\nexport default SectionHeader;\n"],"mappings":";;;;;;AACA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAEA,IAAAI,aAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,SAAA,GAAAN,sBAAA,CAAAC,OAAA;AAAkC,IAAAM,WAAA,GAAAN,OAAA;AAAA,SAAAD,uBAAAQ,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAPlC;;AASA,MAAMG,aAAa,GAAGC,IAAA,IAMhB;EAAA,IANiB;IACrBC,QAAQ;IACRC,gBAAgB;IAChBC,WAAW;IACXC,KAAK;IACLC;EACF,CAAC,GAAAL,IAAA;EACC,MAAMM,IAAI,GAAG,IAAAC,aAAO,EAAC,CAAC;EAEtB,oBACE,IAAAZ,WAAA,CAAAa,IAAA,EAACjB,QAAA,CAAAkB,SAAS;IAAAC,QAAA,gBACR,IAAAf,WAAA,CAAAgB,GAAA,EAAClB,aAAA,CAAAK,OAAY;MAAOG,QAAQ;MAAEE,WAAW;MAAEC;IAAK,CAAK,CAAC,eACtD,IAAAT,WAAA,CAAAgB,GAAA,EAACpB,QAAA,CAAAkB,SAAS,CAACG,MAAM,IAAE,CAAC,EACnBV,gBAAgB,iBACf,IAAAP,WAAA,CAAAgB,GAAA,EAACpB,QAAA,CAAAsB,IAAI;MACHC,OAAO,EAAEA,CAAA,KAAMC,MAAM,CAACC,IAAI,CAACX,UAAU,CAAE;MACvCY,UAAU,EAAEC,aAAO;MAAAR,QAAA,eAEnB,IAAAf,WAAA,CAAAgB,GAAA;QAAMQ,SAAS,EAAC,0BAA0B;QAAAT,QAAA,EACvCJ,IAAI,CAACc,aAAa,CAACC,iBAAQ,CAACC,eAAe;MAAC,CACzC;IAAC,CACH,CACP;EAAA,CACQ,CAAC;AAEhB,CAAC;AAEDvB,aAAa,CAACwB,SAAS,GAAG;EACxBtB,QAAQ,EAAEuB,kBAAS,CAACC,IAAI,CAACC,UAAU;EACnCxB,gBAAgB,EAAEsB,kBAAS,CAACC,IAAI,CAACC,UAAU;EAC3CvB,WAAW,EAAEqB,kBAAS,CAACC,IAAI,CAACC,UAAU;EACtCtB,KAAK,EAAEoB,kBAAS,CAACG,MAAM,CAACD,UAAU;EAClCrB,UAAU,EAAEmB,kBAAS,CAACI,SAAS,CAAC,CAACJ,kBAAS,CAACG,MAAM,EAAEH,kBAAS,CAACC,IAAI,CAAC,CAAC,CAACC;AACtE,CAAC;AAAC,IAAAG,QAAA,GAAAC,OAAA,CAAAhC,OAAA,GAEaC,aAAa","ignoreList":[]}
|
|
@@ -0,0 +1,112 @@
|
|
|
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 _i18n = require("@edx/frontend-platform/i18n");
|
|
10
|
+
var _paragon = require("@openedx/paragon");
|
|
11
|
+
var _icons = require("@openedx/paragon/icons");
|
|
12
|
+
var _modelStore = require("@src/generic/model-store");
|
|
13
|
+
var _messages = _interopRequireDefault(require("@src/generic/messages"));
|
|
14
|
+
var _messages2 = _interopRequireDefault(require("@src/course-home/outline-tab/messages.ts"));
|
|
15
|
+
var _SectionHeader = _interopRequireDefault(require("./SectionHeader"));
|
|
16
|
+
var _SequenceLink = _interopRequireDefault(require("./SequenceLink"));
|
|
17
|
+
var _messages3 = _interopRequireDefault(require("./messages"));
|
|
18
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
19
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
20
|
+
/* eslint import/no-unresolved: 0 */
|
|
21
|
+
|
|
22
|
+
const SectionItem = _ref => {
|
|
23
|
+
let {
|
|
24
|
+
courseId,
|
|
25
|
+
defaultOpen,
|
|
26
|
+
expand,
|
|
27
|
+
fetchSectionHasLockedContent,
|
|
28
|
+
section,
|
|
29
|
+
sectionId,
|
|
30
|
+
sequenceData,
|
|
31
|
+
upgradeUrl
|
|
32
|
+
} = _ref;
|
|
33
|
+
const intl = (0, _i18n.useIntl)();
|
|
34
|
+
const {
|
|
35
|
+
complete,
|
|
36
|
+
sequenceIds,
|
|
37
|
+
title,
|
|
38
|
+
hideFromTOC
|
|
39
|
+
} = section;
|
|
40
|
+
const {
|
|
41
|
+
courseBlocks: {
|
|
42
|
+
sequences
|
|
43
|
+
}
|
|
44
|
+
} = (0, _modelStore.useModel)('outline', courseId);
|
|
45
|
+
const [open, setOpen] = (0, _react.useState)(defaultOpen);
|
|
46
|
+
const hasLockedContent = fetchSectionHasLockedContent(sectionId);
|
|
47
|
+
(0, _react.useEffect)(() => {
|
|
48
|
+
setOpen(expand);
|
|
49
|
+
}, [expand]);
|
|
50
|
+
(0, _react.useEffect)(() => {
|
|
51
|
+
setOpen(defaultOpen);
|
|
52
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
53
|
+
}, []);
|
|
54
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("li", {
|
|
55
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.Collapsible, {
|
|
56
|
+
className: "mb-2",
|
|
57
|
+
styling: "card-lg",
|
|
58
|
+
title: /*#__PURE__*/(0, _jsxRuntime.jsx)(_SectionHeader.default, {
|
|
59
|
+
complete,
|
|
60
|
+
hasLockedContent,
|
|
61
|
+
hideFromTOC,
|
|
62
|
+
title,
|
|
63
|
+
upgradeUrl
|
|
64
|
+
}),
|
|
65
|
+
open: open,
|
|
66
|
+
onToggle: () => setOpen(!open),
|
|
67
|
+
iconWhenClosed: /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.IconButton, {
|
|
68
|
+
alt: intl.formatMessage(_messages2.default.openSection),
|
|
69
|
+
iconAs: _icons.Plus,
|
|
70
|
+
onClick: () => setOpen(true),
|
|
71
|
+
size: "sm"
|
|
72
|
+
}),
|
|
73
|
+
iconWhenOpen: /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.IconButton, {
|
|
74
|
+
alt: intl.formatMessage(_messages.default.close),
|
|
75
|
+
iconAs: _icons.Minus,
|
|
76
|
+
onClick: () => {
|
|
77
|
+
setOpen(false);
|
|
78
|
+
},
|
|
79
|
+
size: "sm"
|
|
80
|
+
}),
|
|
81
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("ol", {
|
|
82
|
+
className: "list-unstyled my-n3 ml-n2.5 mr-n4",
|
|
83
|
+
children: sequenceIds.map((sequenceId, index) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_SequenceLink.default, {
|
|
84
|
+
id: sequenceId,
|
|
85
|
+
courseId: courseId,
|
|
86
|
+
sequence: sequences[sequenceId],
|
|
87
|
+
first: index === 0,
|
|
88
|
+
sequenceData: sequenceData
|
|
89
|
+
}, sequenceId))
|
|
90
|
+
})
|
|
91
|
+
}), open && hasLockedContent && /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.ActionRow, {
|
|
92
|
+
className: "mr-3 mt-2.5 mb-3",
|
|
93
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.Button, {
|
|
94
|
+
as: "a",
|
|
95
|
+
href: upgradeUrl,
|
|
96
|
+
children: intl.formatMessage(_messages3.default.sectionUpgradeButtonText)
|
|
97
|
+
})
|
|
98
|
+
})]
|
|
99
|
+
});
|
|
100
|
+
};
|
|
101
|
+
SectionItem.propTypes = {
|
|
102
|
+
courseId: _propTypes.default.string.isRequired,
|
|
103
|
+
defaultOpen: _propTypes.default.bool.isRequired,
|
|
104
|
+
expand: _propTypes.default.bool.isRequired,
|
|
105
|
+
fetchSectionHasLockedContent: _propTypes.default.func.isRequired,
|
|
106
|
+
section: _propTypes.default.shape().isRequired,
|
|
107
|
+
sectionId: _propTypes.default.string.isRequired,
|
|
108
|
+
sequenceData: _propTypes.default.shape().isRequired,
|
|
109
|
+
upgradeUrl: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.bool]).isRequired
|
|
110
|
+
};
|
|
111
|
+
var _default = exports.default = SectionItem;
|
|
112
|
+
//# sourceMappingURL=SectionItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SectionItem.js","names":["_react","require","_propTypes","_interopRequireDefault","_i18n","_paragon","_icons","_modelStore","_messages","_messages2","_SectionHeader","_SequenceLink","_messages3","_jsxRuntime","obj","__esModule","default","SectionItem","_ref","courseId","defaultOpen","expand","fetchSectionHasLockedContent","section","sectionId","sequenceData","upgradeUrl","intl","useIntl","complete","sequenceIds","title","hideFromTOC","courseBlocks","sequences","useModel","open","setOpen","useState","hasLockedContent","useEffect","jsxs","children","jsx","Collapsible","className","styling","onToggle","iconWhenClosed","IconButton","alt","formatMessage","outlineMessages","openSection","iconAs","Plus","onClick","size","iconWhenOpen","genericMessages","close","Minus","map","sequenceId","index","id","sequence","first","ActionRow","Button","as","href","messages","sectionUpgradeButtonText","propTypes","PropTypes","string","isRequired","bool","func","shape","oneOfType","_default","exports"],"sources":["../../src/section-outline/SectionItem.jsx"],"sourcesContent":["/* eslint import/no-unresolved: 0 */\nimport { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport {\n ActionRow,\n Button,\n Collapsible,\n IconButton,\n} from '@openedx/paragon';\nimport { Minus, Plus } from '@openedx/paragon/icons';\n\nimport { useModel } from '@src/generic/model-store';\nimport genericMessages from '@src/generic/messages';\nimport outlineMessages from '@src/course-home/outline-tab/messages.ts';\nimport SectionHeader from './SectionHeader';\nimport SequenceLink from './SequenceLink';\nimport messages from './messages';\n\nconst SectionItem = ({\n courseId,\n defaultOpen,\n expand,\n fetchSectionHasLockedContent,\n section,\n sectionId,\n sequenceData,\n upgradeUrl,\n}) => {\n const intl = useIntl();\n\n const {\n complete,\n sequenceIds,\n title,\n hideFromTOC,\n } = section;\n const {\n courseBlocks: {\n sequences,\n },\n } = useModel('outline', courseId);\n\n const [open, setOpen] = useState(defaultOpen);\n const hasLockedContent = fetchSectionHasLockedContent(sectionId);\n\n useEffect(() => {\n setOpen(expand);\n }, [expand]);\n\n useEffect(() => {\n setOpen(defaultOpen);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <li>\n <Collapsible\n className=\"mb-2\"\n styling=\"card-lg\"\n title={(\n <SectionHeader\n {...{\n complete,\n hasLockedContent,\n hideFromTOC,\n title,\n upgradeUrl,\n }}\n />\n )}\n open={open}\n onToggle={() => setOpen(!open)}\n iconWhenClosed={(\n <IconButton\n alt={intl.formatMessage(outlineMessages.openSection)}\n iconAs={Plus}\n onClick={() => setOpen(true)}\n size=\"sm\"\n />\n )}\n iconWhenOpen={(\n <IconButton\n alt={intl.formatMessage(genericMessages.close)}\n iconAs={Minus}\n onClick={() => { setOpen(false); }}\n size=\"sm\"\n />\n )}\n >\n <ol className=\"list-unstyled my-n3 ml-n2.5 mr-n4\">\n {sequenceIds.map((sequenceId, index) => (\n <SequenceLink\n key={sequenceId}\n id={sequenceId}\n courseId={courseId}\n sequence={sequences[sequenceId]}\n first={index === 0}\n sequenceData={sequenceData}\n />\n ))}\n </ol>\n </Collapsible>\n {open && hasLockedContent && (\n <ActionRow className=\"mr-3 mt-2.5 mb-3\">\n <Button as=\"a\" href={upgradeUrl}>\n {intl.formatMessage(messages.sectionUpgradeButtonText)}\n </Button>\n </ActionRow>\n )}\n </li>\n );\n};\n\nSectionItem.propTypes = {\n courseId: PropTypes.string.isRequired,\n defaultOpen: PropTypes.bool.isRequired,\n expand: PropTypes.bool.isRequired,\n fetchSectionHasLockedContent: PropTypes.func.isRequired,\n section: PropTypes.shape().isRequired,\n sectionId: PropTypes.string.isRequired,\n sequenceData: PropTypes.shape().isRequired,\n upgradeUrl: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]).isRequired,\n};\n\nexport default SectionItem;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
var _reactDom = require("react-dom");
|
|
10
|
+
var _i18n = require("@edx/frontend-platform/i18n");
|
|
11
|
+
var _hooks = require("@src/data/hooks");
|
|
12
|
+
var _modelStore = require("@src/generic/model-store");
|
|
13
|
+
var _PageLoading = _interopRequireDefault(require("@src/generic/PageLoading"));
|
|
14
|
+
var _messages = _interopRequireDefault(require("@src/tab-page/messages"));
|
|
15
|
+
var _SectionItem = _interopRequireDefault(require("./SectionItem"));
|
|
16
|
+
var _UpgradeBanner = _interopRequireDefault(require("./UpgradeBanner"));
|
|
17
|
+
var _hooks2 = _interopRequireDefault(require("./hooks"));
|
|
18
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
19
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
20
|
+
/* eslint import/no-unresolved: 0 */
|
|
21
|
+
|
|
22
|
+
const SectionList = _ref => {
|
|
23
|
+
let {
|
|
24
|
+
expandAll,
|
|
25
|
+
sections,
|
|
26
|
+
sectionIds
|
|
27
|
+
} = _ref;
|
|
28
|
+
const intl = (0, _i18n.useIntl)();
|
|
29
|
+
const portalRef = (0, _react.useRef)(null);
|
|
30
|
+
const courseId = (0, _hooks.useContextId)();
|
|
31
|
+
const {
|
|
32
|
+
verifiedMode
|
|
33
|
+
} = (0, _modelStore.useModel)('courseHomeMeta', courseId);
|
|
34
|
+
const {
|
|
35
|
+
datesBannerInfo
|
|
36
|
+
} = (0, _modelStore.useModel)('outline', courseId);
|
|
37
|
+
const isFBE = !!datesBannerInfo?.contentTypeGatingEnabled;
|
|
38
|
+
const upgradeUrl = isFBE && verifiedMode?.upgradeUrl;
|
|
39
|
+
const {
|
|
40
|
+
courseHasLockedContent,
|
|
41
|
+
fetchSectionHasLockedContent,
|
|
42
|
+
isLoading,
|
|
43
|
+
sequenceData
|
|
44
|
+
} = (0, _hooks2.default)({
|
|
45
|
+
sections,
|
|
46
|
+
isFBE
|
|
47
|
+
});
|
|
48
|
+
const hasLockedContent = upgradeUrl && courseHasLockedContent;
|
|
49
|
+
(0, _react.useEffect)(() => {
|
|
50
|
+
const referenceNode = document.getElementById('expand-button-row');
|
|
51
|
+
const portalNode = document.createElement('div');
|
|
52
|
+
referenceNode.parentNode.insertBefore(portalNode, referenceNode);
|
|
53
|
+
portalRef.current = portalNode;
|
|
54
|
+
}, []);
|
|
55
|
+
if (isLoading) {
|
|
56
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_PageLoading.default, {
|
|
57
|
+
srMessage: intl.formatMessage(_messages.default.loading)
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
61
|
+
children: [hasLockedContent && portalRef.current && /*#__PURE__*/(0, _reactDom.createPortal)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_UpgradeBanner.default, {
|
|
62
|
+
upgradeUrl
|
|
63
|
+
}), portalRef.current), /*#__PURE__*/(0, _jsxRuntime.jsx)("ol", {
|
|
64
|
+
id: "courseHome-outline",
|
|
65
|
+
className: "list-unstyled",
|
|
66
|
+
children: sectionIds.map(sectionId => /*#__PURE__*/(0, _jsxRuntime.jsx)(_SectionItem.default, {
|
|
67
|
+
sectionId: sectionId,
|
|
68
|
+
defaultOpen: sections[sectionId].resumeBlock,
|
|
69
|
+
expand: expandAll,
|
|
70
|
+
section: sections[sectionId],
|
|
71
|
+
upgradeUrl: upgradeUrl,
|
|
72
|
+
courseId: courseId,
|
|
73
|
+
sequenceData: sequenceData,
|
|
74
|
+
fetchSectionHasLockedContent: fetchSectionHasLockedContent
|
|
75
|
+
}, sectionId))
|
|
76
|
+
})]
|
|
77
|
+
});
|
|
78
|
+
};
|
|
79
|
+
SectionList.propTypes = {
|
|
80
|
+
expandAll: _propTypes.default.bool.isRequired,
|
|
81
|
+
sections: _propTypes.default.shape().isRequired,
|
|
82
|
+
sectionIds: _propTypes.default.arrayOf(_propTypes.default.string).isRequired
|
|
83
|
+
};
|
|
84
|
+
var _default = exports.default = SectionList;
|
|
85
|
+
//# sourceMappingURL=SectionList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SectionList.js","names":["_propTypes","_interopRequireDefault","require","_react","_reactDom","_i18n","_hooks","_modelStore","_PageLoading","_messages","_SectionItem","_UpgradeBanner","_hooks2","_jsxRuntime","obj","__esModule","default","SectionList","_ref","expandAll","sections","sectionIds","intl","useIntl","portalRef","useRef","courseId","useContextId","verifiedMode","useModel","datesBannerInfo","isFBE","contentTypeGatingEnabled","upgradeUrl","courseHasLockedContent","fetchSectionHasLockedContent","isLoading","sequenceData","useSequenceContext","hasLockedContent","useEffect","referenceNode","document","getElementById","portalNode","createElement","parentNode","insertBefore","current","jsx","srMessage","formatMessage","genericMessages","loading","jsxs","Fragment","children","createPortal","id","className","map","sectionId","defaultOpen","resumeBlock","expand","section","propTypes","PropTypes","bool","isRequired","shape","arrayOf","string","_default","exports"],"sources":["../../src/section-outline/SectionList.jsx"],"sourcesContent":["/* eslint import/no-unresolved: 0 */\nimport PropTypes from 'prop-types';\nimport { useRef, useEffect } from 'react';\nimport { createPortal } from 'react-dom';\nimport { useIntl } from '@edx/frontend-platform/i18n';\n\nimport { useContextId } from '@src/data/hooks';\nimport { useModel } from '@src/generic/model-store';\nimport PageLoading from '@src/generic/PageLoading';\nimport genericMessages from '@src/tab-page/messages';\nimport SectionItem from './SectionItem';\nimport UpgradeBanner from './UpgradeBanner';\nimport useSequenceContext from './hooks';\n\nconst SectionList = ({ expandAll, sections, sectionIds }) => {\n const intl = useIntl();\n const portalRef = useRef(null);\n const courseId = useContextId();\n\n const {\n verifiedMode,\n } = useModel('courseHomeMeta', courseId);\n const {\n datesBannerInfo,\n } = useModel('outline', courseId);\n\n const isFBE = !!datesBannerInfo?.contentTypeGatingEnabled;\n const upgradeUrl = isFBE && verifiedMode?.upgradeUrl;\n\n const {\n courseHasLockedContent,\n fetchSectionHasLockedContent,\n isLoading,\n sequenceData,\n } = useSequenceContext({ sections, isFBE });\n\n const hasLockedContent = upgradeUrl && courseHasLockedContent;\n\n useEffect(() => {\n const referenceNode = document.getElementById('expand-button-row');\n const portalNode = document.createElement('div');\n referenceNode.parentNode.insertBefore(portalNode, referenceNode);\n portalRef.current = portalNode;\n }, []);\n\n if (isLoading) {\n return (\n <PageLoading srMessage={intl.formatMessage(genericMessages.loading)} />\n );\n }\n\n return (\n <>\n {hasLockedContent && portalRef.current && createPortal(\n <UpgradeBanner {...{ upgradeUrl }} />,\n portalRef.current,\n )}\n <ol id=\"courseHome-outline\" className=\"list-unstyled\">\n {sectionIds.map((sectionId) => (\n <SectionItem\n key={sectionId}\n sectionId={sectionId}\n defaultOpen={sections[sectionId].resumeBlock}\n expand={expandAll}\n section={sections[sectionId]}\n upgradeUrl={upgradeUrl}\n courseId={courseId}\n sequenceData={sequenceData}\n fetchSectionHasLockedContent={fetchSectionHasLockedContent}\n />\n ))}\n </ol>\n </>\n );\n};\n\nSectionList.propTypes = {\n expandAll: PropTypes.bool.isRequired,\n sections: PropTypes.shape().isRequired,\n sectionIds: PropTypes.arrayOf(PropTypes.string).isRequired,\n};\n\nexport default SectionList;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
8
|
+
var _i18n = require("@edx/frontend-platform/i18n");
|
|
9
|
+
var _paragon = require("@openedx/paragon");
|
|
10
|
+
var _icons = require("@openedx/paragon/icons");
|
|
11
|
+
var _SequenceTitle = _interopRequireDefault(require("@src/course-home/outline-tab/section-outline/SequenceTitle"));
|
|
12
|
+
var _messages = _interopRequireDefault(require("./messages"));
|
|
13
|
+
var _constants = require("./constants");
|
|
14
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
15
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
16
|
+
/* eslint import/no-unresolved: 0 */
|
|
17
|
+
|
|
18
|
+
const SequenceHeader = _ref => {
|
|
19
|
+
let {
|
|
20
|
+
complete,
|
|
21
|
+
id,
|
|
22
|
+
lockedStatus,
|
|
23
|
+
sequence,
|
|
24
|
+
showLink,
|
|
25
|
+
title
|
|
26
|
+
} = _ref;
|
|
27
|
+
const intl = (0, _i18n.useIntl)();
|
|
28
|
+
const isLocked = lockedStatus !== _constants.UNLOCKED;
|
|
29
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_paragon.Stack, {
|
|
30
|
+
direction: "horizontal",
|
|
31
|
+
gap: 2,
|
|
32
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_SequenceTitle.default, {
|
|
33
|
+
complete,
|
|
34
|
+
showLink,
|
|
35
|
+
title,
|
|
36
|
+
sequence,
|
|
37
|
+
id
|
|
38
|
+
}), isLocked && /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.IconButtonWithTooltip, {
|
|
39
|
+
tooltipPlacement: "top",
|
|
40
|
+
src: _icons.Locked,
|
|
41
|
+
tooltipContent: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
42
|
+
children: intl.formatMessage(_messages.default.sequenceTooltipContent, {
|
|
43
|
+
lockedStatus
|
|
44
|
+
})
|
|
45
|
+
}),
|
|
46
|
+
variant: "primary",
|
|
47
|
+
iconAs: _paragon.Icon
|
|
48
|
+
})]
|
|
49
|
+
});
|
|
50
|
+
};
|
|
51
|
+
SequenceHeader.propTypes = {
|
|
52
|
+
complete: _propTypes.default.bool.isRequired,
|
|
53
|
+
id: _propTypes.default.string.isRequired,
|
|
54
|
+
lockedStatus: _propTypes.default.string.isRequired,
|
|
55
|
+
sequence: _propTypes.default.shape().isRequired,
|
|
56
|
+
showLink: _propTypes.default.bool.isRequired,
|
|
57
|
+
title: _propTypes.default.string.isRequired
|
|
58
|
+
};
|
|
59
|
+
var _default = exports.default = SequenceHeader;
|
|
60
|
+
//# sourceMappingURL=SequenceHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SequenceHeader.js","names":["_propTypes","_interopRequireDefault","require","_i18n","_paragon","_icons","_SequenceTitle","_messages","_constants","_jsxRuntime","obj","__esModule","default","SequenceHeader","_ref","complete","id","lockedStatus","sequence","showLink","title","intl","useIntl","isLocked","UNLOCKED","jsxs","Stack","direction","gap","children","jsx","IconButtonWithTooltip","tooltipPlacement","src","Locked","tooltipContent","formatMessage","messages","sequenceTooltipContent","variant","iconAs","Icon","propTypes","PropTypes","bool","isRequired","string","shape","_default","exports"],"sources":["../../src/section-outline/SequenceHeader.jsx"],"sourcesContent":["/* eslint import/no-unresolved: 0 */\nimport PropTypes from 'prop-types';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport { Icon, IconButtonWithTooltip, Stack } from '@openedx/paragon';\nimport { Locked } from '@openedx/paragon/icons';\n\nimport SequenceTitle from '@src/course-home/outline-tab/section-outline/SequenceTitle';\nimport messages from './messages';\nimport { UNLOCKED } from './constants';\n\nconst SequenceHeader = ({\n complete,\n id,\n lockedStatus,\n sequence,\n showLink,\n title,\n}) => {\n const intl = useIntl();\n const isLocked = lockedStatus !== UNLOCKED;\n\n return (\n <Stack direction=\"horizontal\" gap={2}>\n <SequenceTitle\n {...{\n complete,\n showLink,\n title,\n sequence,\n id,\n }}\n />\n {isLocked && (\n <IconButtonWithTooltip\n tooltipPlacement=\"top\"\n src={Locked}\n tooltipContent={(\n <span>\n {intl.formatMessage(messages.sequenceTooltipContent, { lockedStatus })}\n </span>\n )}\n variant=\"primary\"\n iconAs={Icon}\n />\n )}\n </Stack>\n );\n};\n\nSequenceHeader.propTypes = {\n complete: PropTypes.bool.isRequired,\n id: PropTypes.string.isRequired,\n lockedStatus: PropTypes.string.isRequired,\n sequence: PropTypes.shape().isRequired,\n showLink: PropTypes.bool.isRequired,\n title: PropTypes.string.isRequired,\n};\n\nexport default SequenceHeader;\n"],"mappings":";;;;;;AACA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAEA,IAAAI,cAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,SAAA,GAAAN,sBAAA,CAAAC,OAAA;AACA,IAAAM,UAAA,GAAAN,OAAA;AAAuC,IAAAO,WAAA,GAAAP,OAAA;AAAA,SAAAD,uBAAAS,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AARvC;;AAUA,MAAMG,cAAc,GAAGC,IAAA,IAOjB;EAAA,IAPkB;IACtBC,QAAQ;IACRC,EAAE;IACFC,YAAY;IACZC,QAAQ;IACRC,QAAQ;IACRC;EACF,CAAC,GAAAN,IAAA;EACC,MAAMO,IAAI,GAAG,IAAAC,aAAO,EAAC,CAAC;EACtB,MAAMC,QAAQ,GAAGN,YAAY,KAAKO,mBAAQ;EAE1C,oBACE,IAAAf,WAAA,CAAAgB,IAAA,EAACrB,QAAA,CAAAsB,KAAK;IAACC,SAAS,EAAC,YAAY;IAACC,GAAG,EAAE,CAAE;IAAAC,QAAA,gBACnC,IAAApB,WAAA,CAAAqB,GAAA,EAACxB,cAAA,CAAAM,OAAa;MAEVG,QAAQ;MACRI,QAAQ;MACRC,KAAK;MACLF,QAAQ;MACRF;IAAE,CAEL,CAAC,EACDO,QAAQ,iBACP,IAAAd,WAAA,CAAAqB,GAAA,EAAC1B,QAAA,CAAA2B,qBAAqB;MACpBC,gBAAgB,EAAC,KAAK;MACtBC,GAAG,EAAEC,aAAO;MACZC,cAAc,eACZ,IAAA1B,WAAA,CAAAqB,GAAA;QAAAD,QAAA,EACGR,IAAI,CAACe,aAAa,CAACC,iBAAQ,CAACC,sBAAsB,EAAE;UAAErB;QAAa,CAAC;MAAC,CAClE,CACN;MACFsB,OAAO,EAAC,SAAS;MACjBC,MAAM,EAAEC;IAAK,CACd,CACF;EAAA,CACI,CAAC;AAEZ,CAAC;AAED5B,cAAc,CAAC6B,SAAS,GAAG;EACzB3B,QAAQ,EAAE4B,kBAAS,CAACC,IAAI,CAACC,UAAU;EACnC7B,EAAE,EAAE2B,kBAAS,CAACG,MAAM,CAACD,UAAU;EAC/B5B,YAAY,EAAE0B,kBAAS,CAACG,MAAM,CAACD,UAAU;EACzC3B,QAAQ,EAAEyB,kBAAS,CAACI,KAAK,CAAC,CAAC,CAACF,UAAU;EACtC1B,QAAQ,EAAEwB,kBAAS,CAACC,IAAI,CAACC,UAAU;EACnCzB,KAAK,EAAEuB,kBAAS,CAACG,MAAM,CAACD;AAC1B,CAAC;AAAC,IAAAG,QAAA,GAAAC,OAAA,CAAArC,OAAA,GAEaC,cAAc","ignoreList":[]}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
8
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
9
|
+
var _SequenceDueDate = _interopRequireDefault(require("@src/course-home/outline-tab/section-outline/SequenceDueDate"));
|
|
10
|
+
var _HiddenSequenceLink = _interopRequireDefault(require("@src/course-home/outline-tab/section-outline/HiddenSequenceLink"));
|
|
11
|
+
var _SequenceHeader = _interopRequireDefault(require("./SequenceHeader"));
|
|
12
|
+
var _constants = require("./constants");
|
|
13
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
14
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
+
/* eslint import/no-unresolved: 0 */
|
|
16
|
+
|
|
17
|
+
const SequenceLink = _ref => {
|
|
18
|
+
let {
|
|
19
|
+
id,
|
|
20
|
+
first,
|
|
21
|
+
sequence,
|
|
22
|
+
sequenceData
|
|
23
|
+
} = _ref;
|
|
24
|
+
const {
|
|
25
|
+
complete,
|
|
26
|
+
description,
|
|
27
|
+
due,
|
|
28
|
+
showLink,
|
|
29
|
+
title,
|
|
30
|
+
hideFromTOC
|
|
31
|
+
} = sequence;
|
|
32
|
+
const lockedStatus = sequenceData[id];
|
|
33
|
+
const isLocked = lockedStatus !== _constants.UNLOCKED;
|
|
34
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)("li", {
|
|
35
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
36
|
+
className: (0, _classnames.default)('px-3 py-2', {
|
|
37
|
+
'border-top border-light': !first
|
|
38
|
+
}, {
|
|
39
|
+
'bg-primary-100': isLocked
|
|
40
|
+
}),
|
|
41
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_SequenceHeader.default, {
|
|
42
|
+
complete,
|
|
43
|
+
id,
|
|
44
|
+
lockedStatus,
|
|
45
|
+
sequence,
|
|
46
|
+
showLink,
|
|
47
|
+
title
|
|
48
|
+
}), hideFromTOC && /*#__PURE__*/(0, _jsxRuntime.jsx)(_HiddenSequenceLink.default, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_SequenceDueDate.default, {
|
|
49
|
+
due,
|
|
50
|
+
id,
|
|
51
|
+
description
|
|
52
|
+
})]
|
|
53
|
+
})
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
SequenceLink.propTypes = {
|
|
57
|
+
id: _propTypes.default.string.isRequired,
|
|
58
|
+
first: _propTypes.default.bool.isRequired,
|
|
59
|
+
sequence: _propTypes.default.shape().isRequired,
|
|
60
|
+
sequenceData: _propTypes.default.shape().isRequired
|
|
61
|
+
};
|
|
62
|
+
var _default = exports.default = SequenceLink;
|
|
63
|
+
//# sourceMappingURL=SequenceLink.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SequenceLink.js","names":["_propTypes","_interopRequireDefault","require","_classnames","_SequenceDueDate","_HiddenSequenceLink","_SequenceHeader","_constants","_jsxRuntime","obj","__esModule","default","SequenceLink","_ref","id","first","sequence","sequenceData","complete","description","due","showLink","title","hideFromTOC","lockedStatus","isLocked","UNLOCKED","jsx","children","jsxs","className","classNames","propTypes","PropTypes","string","isRequired","bool","shape","_default","exports"],"sources":["../../src/section-outline/SequenceLink.jsx"],"sourcesContent":["/* eslint import/no-unresolved: 0 */\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport SequenceDueDate from '@src/course-home/outline-tab/section-outline/SequenceDueDate';\nimport HiddenSequenceLink from '@src/course-home/outline-tab/section-outline/HiddenSequenceLink';\nimport SequenceHeader from './SequenceHeader';\nimport { UNLOCKED } from './constants';\n\nconst SequenceLink = ({\n id,\n first,\n sequence,\n sequenceData,\n}) => {\n const {\n complete,\n description,\n due,\n showLink,\n title,\n hideFromTOC,\n } = sequence;\n\n const lockedStatus = sequenceData[id];\n const isLocked = lockedStatus !== UNLOCKED;\n\n return (\n <li>\n <div className={classNames('px-3 py-2', { 'border-top border-light': !first }, { 'bg-primary-100': isLocked })}>\n <SequenceHeader\n {...{\n complete,\n id,\n lockedStatus,\n sequence,\n showLink,\n title,\n }}\n />\n {hideFromTOC && (\n <HiddenSequenceLink />\n )}\n <SequenceDueDate {...{ due, id, description }} />\n </div>\n </li>\n );\n};\n\nSequenceLink.propTypes = {\n id: PropTypes.string.isRequired,\n first: PropTypes.bool.isRequired,\n sequence: PropTypes.shape().isRequired,\n sequenceData: PropTypes.shape().isRequired,\n};\n\nexport default SequenceLink;\n"],"mappings":";;;;;;AACA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,WAAA,GAAAF,sBAAA,CAAAC,OAAA;AAEA,IAAAE,gBAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,mBAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,eAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,UAAA,GAAAL,OAAA;AAAuC,IAAAM,WAAA,GAAAN,OAAA;AAAA,SAAAD,uBAAAQ,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAPvC;;AASA,MAAMG,YAAY,GAAGC,IAAA,IAKf;EAAA,IALgB;IACpBC,EAAE;IACFC,KAAK;IACLC,QAAQ;IACRC;EACF,CAAC,GAAAJ,IAAA;EACC,MAAM;IACJK,QAAQ;IACRC,WAAW;IACXC,GAAG;IACHC,QAAQ;IACRC,KAAK;IACLC;EACF,CAAC,GAAGP,QAAQ;EAEZ,MAAMQ,YAAY,GAAGP,YAAY,CAACH,EAAE,CAAC;EACrC,MAAMW,QAAQ,GAAGD,YAAY,KAAKE,mBAAQ;EAE1C,oBACE,IAAAlB,WAAA,CAAAmB,GAAA;IAAAC,QAAA,eACE,IAAApB,WAAA,CAAAqB,IAAA;MAAKC,SAAS,EAAE,IAAAC,mBAAU,EAAC,WAAW,EAAE;QAAE,yBAAyB,EAAE,CAAChB;MAAM,CAAC,EAAE;QAAE,gBAAgB,EAAEU;MAAS,CAAC,CAAE;MAAAG,QAAA,gBAC7G,IAAApB,WAAA,CAAAmB,GAAA,EAACrB,eAAA,CAAAK,OAAc;QAEXO,QAAQ;QACRJ,EAAE;QACFU,YAAY;QACZR,QAAQ;QACRK,QAAQ;QACRC;MAAK,CAER,CAAC,EACDC,WAAW,iBACV,IAAAf,WAAA,CAAAmB,GAAA,EAACtB,mBAAA,CAAAM,OAAkB,IAAE,CACtB,eACD,IAAAH,WAAA,CAAAmB,GAAA,EAACvB,gBAAA,CAAAO,OAAe;QAAOS,GAAG;QAAEN,EAAE;QAAEK;MAAW,CAAK,CAAC;IAAA,CAC9C;EAAC,CACJ,CAAC;AAET,CAAC;AAEDP,YAAY,CAACoB,SAAS,GAAG;EACvBlB,EAAE,EAAEmB,kBAAS,CAACC,MAAM,CAACC,UAAU;EAC/BpB,KAAK,EAAEkB,kBAAS,CAACG,IAAI,CAACD,UAAU;EAChCnB,QAAQ,EAAEiB,kBAAS,CAACI,KAAK,CAAC,CAAC,CAACF,UAAU;EACtClB,YAAY,EAAEgB,kBAAS,CAACI,KAAK,CAAC,CAAC,CAACF;AAClC,CAAC;AAAC,IAAAG,QAAA,GAAAC,OAAA,CAAA5B,OAAA,GAEaC,YAAY","ignoreList":[]}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
8
|
+
var _i18n = require("@edx/frontend-platform/i18n");
|
|
9
|
+
var _paragon = require("@openedx/paragon");
|
|
10
|
+
var _icons = require("@openedx/paragon/icons");
|
|
11
|
+
var _messages = _interopRequireDefault(require("./messages"));
|
|
12
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
13
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
|
+
const UpgradeBanner = _ref => {
|
|
15
|
+
let {
|
|
16
|
+
upgradeUrl
|
|
17
|
+
} = _ref;
|
|
18
|
+
const intl = (0, _i18n.useIntl)();
|
|
19
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_paragon.ActionRow, {
|
|
20
|
+
className: "my-3 p-4 bg-primary rounded",
|
|
21
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_paragon.Stack, {
|
|
22
|
+
direction: "horizontal",
|
|
23
|
+
gap: 3,
|
|
24
|
+
className: "text-white align-items-start",
|
|
25
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.Icon, {
|
|
26
|
+
src: _icons.Locked
|
|
27
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_paragon.Stack, {
|
|
28
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
29
|
+
className: "h4 text-white",
|
|
30
|
+
children: intl.formatMessage(_messages.default.upgradeBannerHeader)
|
|
31
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
32
|
+
className: "small",
|
|
33
|
+
children: intl.formatMessage(_messages.default.upgradeBannerMessage)
|
|
34
|
+
})]
|
|
35
|
+
})]
|
|
36
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.ActionRow.Spacer, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_paragon.Button, {
|
|
37
|
+
size: "sm",
|
|
38
|
+
variant: "inverse-primary",
|
|
39
|
+
as: "a",
|
|
40
|
+
href: upgradeUrl,
|
|
41
|
+
children: intl.formatMessage(_messages.default.upgradeBannerButtonLabel)
|
|
42
|
+
})]
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
UpgradeBanner.propTypes = {
|
|
46
|
+
upgradeUrl: _propTypes.default.string.isRequired
|
|
47
|
+
};
|
|
48
|
+
var _default = exports.default = UpgradeBanner;
|
|
49
|
+
//# sourceMappingURL=UpgradeBanner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UpgradeBanner.js","names":["_propTypes","_interopRequireDefault","require","_i18n","_paragon","_icons","_messages","_jsxRuntime","obj","__esModule","default","UpgradeBanner","_ref","upgradeUrl","intl","useIntl","jsxs","ActionRow","className","children","Stack","direction","gap","jsx","Icon","src","Locked","formatMessage","messages","upgradeBannerHeader","upgradeBannerMessage","Spacer","Button","size","variant","as","href","upgradeBannerButtonLabel","propTypes","PropTypes","string","isRequired","_default","exports"],"sources":["../../src/section-outline/UpgradeBanner.jsx"],"sourcesContent":["import PropTypes from 'prop-types';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport {\n ActionRow,\n Button,\n Icon,\n Stack,\n} from '@openedx/paragon';\nimport { Locked } from '@openedx/paragon/icons';\n\nimport messages from './messages';\n\nconst UpgradeBanner = ({ upgradeUrl }) => {\n const intl = useIntl();\n\n return (\n <ActionRow className=\"my-3 p-4 bg-primary rounded\">\n <Stack direction=\"horizontal\" gap={3} className=\"text-white align-items-start\">\n <Icon src={Locked} />\n <Stack>\n <div className=\"h4 text-white\">\n {intl.formatMessage(messages.upgradeBannerHeader)}\n </div>\n <div className=\"small\">\n {intl.formatMessage(messages.upgradeBannerMessage)}\n </div>\n </Stack>\n </Stack>\n <ActionRow.Spacer />\n <Button\n size=\"sm\"\n variant=\"inverse-primary\"\n as=\"a\"\n href={upgradeUrl}\n >\n {intl.formatMessage(messages.upgradeBannerButtonLabel)}\n </Button>\n </ActionRow>\n );\n};\n\nUpgradeBanner.propTypes = {\n upgradeUrl: PropTypes.string.isRequired,\n};\n\nexport default UpgradeBanner;\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AAMA,IAAAG,MAAA,GAAAH,OAAA;AAEA,IAAAI,SAAA,GAAAL,sBAAA,CAAAC,OAAA;AAAkC,IAAAK,WAAA,GAAAL,OAAA;AAAA,SAAAD,uBAAAO,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAElC,MAAMG,aAAa,GAAGC,IAAA,IAAoB;EAAA,IAAnB;IAAEC;EAAW,CAAC,GAAAD,IAAA;EACnC,MAAME,IAAI,GAAG,IAAAC,aAAO,EAAC,CAAC;EAEtB,oBACE,IAAAR,WAAA,CAAAS,IAAA,EAACZ,QAAA,CAAAa,SAAS;IAACC,SAAS,EAAC,6BAA6B;IAAAC,QAAA,gBAChD,IAAAZ,WAAA,CAAAS,IAAA,EAACZ,QAAA,CAAAgB,KAAK;MAACC,SAAS,EAAC,YAAY;MAACC,GAAG,EAAE,CAAE;MAACJ,SAAS,EAAC,8BAA8B;MAAAC,QAAA,gBAC5E,IAAAZ,WAAA,CAAAgB,GAAA,EAACnB,QAAA,CAAAoB,IAAI;QAACC,GAAG,EAAEC;MAAO,CAAE,CAAC,eACrB,IAAAnB,WAAA,CAAAS,IAAA,EAACZ,QAAA,CAAAgB,KAAK;QAAAD,QAAA,gBACJ,IAAAZ,WAAA,CAAAgB,GAAA;UAAKL,SAAS,EAAC,eAAe;UAAAC,QAAA,EAC3BL,IAAI,CAACa,aAAa,CAACC,iBAAQ,CAACC,mBAAmB;QAAC,CAC9C,CAAC,eACN,IAAAtB,WAAA,CAAAgB,GAAA;UAAKL,SAAS,EAAC,OAAO;UAAAC,QAAA,EACnBL,IAAI,CAACa,aAAa,CAACC,iBAAQ,CAACE,oBAAoB;QAAC,CAC/C,CAAC;MAAA,CACD,CAAC;IAAA,CACH,CAAC,eACR,IAAAvB,WAAA,CAAAgB,GAAA,EAACnB,QAAA,CAAAa,SAAS,CAACc,MAAM,IAAE,CAAC,eACpB,IAAAxB,WAAA,CAAAgB,GAAA,EAACnB,QAAA,CAAA4B,MAAM;MACLC,IAAI,EAAC,IAAI;MACTC,OAAO,EAAC,iBAAiB;MACzBC,EAAE,EAAC,GAAG;MACNC,IAAI,EAAEvB,UAAW;MAAAM,QAAA,EAEhBL,IAAI,CAACa,aAAa,CAACC,iBAAQ,CAACS,wBAAwB;IAAC,CAChD,CAAC;EAAA,CACA,CAAC;AAEhB,CAAC;AAED1B,aAAa,CAAC2B,SAAS,GAAG;EACxBzB,UAAU,EAAE0B,kBAAS,CAACC,MAAM,CAACC;AAC/B,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAjC,OAAA,GAEaC,aAAa","ignoreList":[]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.UNLOCKED = exports.PARTIALLY_LOCKED = exports.LOCKED = void 0;
|
|
7
|
+
const UNLOCKED = exports.UNLOCKED = 'unlocked';
|
|
8
|
+
const LOCKED = exports.LOCKED = 'locked';
|
|
9
|
+
const PARTIALLY_LOCKED = exports.PARTIALLY_LOCKED = 'partial';
|
|
10
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","names":["UNLOCKED","exports","LOCKED","PARTIALLY_LOCKED"],"sources":["../../src/section-outline/constants.js"],"sourcesContent":["const UNLOCKED = 'unlocked';\nconst LOCKED = 'locked';\nconst PARTIALLY_LOCKED = 'partial';\n\nexport {\n UNLOCKED,\n LOCKED,\n PARTIALLY_LOCKED,\n};\n"],"mappings":";;;;;;AAAA,MAAMA,QAAQ,GAAAC,OAAA,CAAAD,QAAA,GAAG,UAAU;AAC3B,MAAME,MAAM,GAAAD,OAAA,CAAAC,MAAA,GAAG,QAAQ;AACvB,MAAMC,gBAAgB,GAAAF,OAAA,CAAAE,gBAAA,GAAG,SAAS","ignoreList":[]}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _frontendPlatform = require("@edx/frontend-platform");
|
|
8
|
+
var _auth = require("@edx/frontend-platform/auth");
|
|
9
|
+
var _constants = require("../constants");
|
|
10
|
+
async function fetchSequenceBlocks(id) {
|
|
11
|
+
const LmsApiUrl = (0, _frontendPlatform.getConfig)().LMS_BASE_URL;
|
|
12
|
+
const sequenceUrl = `${LmsApiUrl}/api/courseware/sequence/${id}`;
|
|
13
|
+
const gatedContent = {};
|
|
14
|
+
try {
|
|
15
|
+
let gatedContentCount = 0;
|
|
16
|
+
const {
|
|
17
|
+
data: {
|
|
18
|
+
items
|
|
19
|
+
}
|
|
20
|
+
} = await (0, _auth.getAuthenticatedHttpClient)().get(sequenceUrl);
|
|
21
|
+
(0, _frontendPlatform.camelCaseObject)(items).forEach(item => {
|
|
22
|
+
const {
|
|
23
|
+
containsContentTypeGatedContent
|
|
24
|
+
} = item;
|
|
25
|
+
if (containsContentTypeGatedContent) {
|
|
26
|
+
gatedContentCount += 1;
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
if (gatedContentCount === 0) {
|
|
30
|
+
gatedContent[id] = _constants.UNLOCKED;
|
|
31
|
+
} else if (gatedContentCount === items.length) {
|
|
32
|
+
gatedContent[id] = _constants.LOCKED;
|
|
33
|
+
} else {
|
|
34
|
+
gatedContent[id] = _constants.PARTIALLY_LOCKED;
|
|
35
|
+
}
|
|
36
|
+
} catch (error) {
|
|
37
|
+
gatedContent[id] = _constants.UNLOCKED;
|
|
38
|
+
}
|
|
39
|
+
return gatedContent;
|
|
40
|
+
}
|
|
41
|
+
var _default = exports.default = fetchSequenceBlocks;
|
|
42
|
+
//# sourceMappingURL=api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","names":["_frontendPlatform","require","_auth","_constants","fetchSequenceBlocks","id","LmsApiUrl","getConfig","LMS_BASE_URL","sequenceUrl","gatedContent","gatedContentCount","data","items","getAuthenticatedHttpClient","get","camelCaseObject","forEach","item","containsContentTypeGatedContent","UNLOCKED","length","LOCKED","PARTIALLY_LOCKED","error","_default","exports","default"],"sources":["../../../src/section-outline/data/api.js"],"sourcesContent":["import { getConfig, camelCaseObject } from '@edx/frontend-platform';\nimport { getAuthenticatedHttpClient } from '@edx/frontend-platform/auth';\nimport { LOCKED, PARTIALLY_LOCKED, UNLOCKED } from '../constants';\n\nasync function fetchSequenceBlocks(id) {\n const LmsApiUrl = getConfig().LMS_BASE_URL;\n const sequenceUrl = `${LmsApiUrl}/api/courseware/sequence/${id}`;\n const gatedContent = {};\n\n try {\n let gatedContentCount = 0;\n const { data: { items } } = await getAuthenticatedHttpClient().get(sequenceUrl);\n camelCaseObject(items).forEach(item => {\n const { containsContentTypeGatedContent } = item;\n if (containsContentTypeGatedContent) {\n gatedContentCount += 1;\n }\n });\n\n if (gatedContentCount === 0) {\n gatedContent[id] = UNLOCKED;\n } else if (gatedContentCount === items.length) {\n gatedContent[id] = LOCKED;\n } else {\n gatedContent[id] = PARTIALLY_LOCKED;\n }\n } catch (error) {\n gatedContent[id] = UNLOCKED;\n }\n\n return gatedContent;\n}\n\nexport default fetchSequenceBlocks;\n"],"mappings":";;;;;;AAAA,IAAAA,iBAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AAEA,eAAeG,mBAAmBA,CAACC,EAAE,EAAE;EACrC,MAAMC,SAAS,GAAG,IAAAC,2BAAS,EAAC,CAAC,CAACC,YAAY;EAC1C,MAAMC,WAAW,GAAG,GAAGH,SAAS,4BAA4BD,EAAE,EAAE;EAChE,MAAMK,YAAY,GAAG,CAAC,CAAC;EAEvB,IAAI;IACF,IAAIC,iBAAiB,GAAG,CAAC;IACzB,MAAM;MAAEC,IAAI,EAAE;QAAEC;MAAM;IAAE,CAAC,GAAG,MAAM,IAAAC,gCAA0B,EAAC,CAAC,CAACC,GAAG,CAACN,WAAW,CAAC;IAC/E,IAAAO,iCAAe,EAACH,KAAK,CAAC,CAACI,OAAO,CAACC,IAAI,IAAI;MACrC,MAAM;QAAEC;MAAgC,CAAC,GAAGD,IAAI;MAChD,IAAIC,+BAA+B,EAAE;QACnCR,iBAAiB,IAAI,CAAC;MACxB;IACF,CAAC,CAAC;IAEF,IAAIA,iBAAiB,KAAK,CAAC,EAAE;MAC3BD,YAAY,CAACL,EAAE,CAAC,GAAGe,mBAAQ;IAC7B,CAAC,MAAM,IAAIT,iBAAiB,KAAKE,KAAK,CAACQ,MAAM,EAAE;MAC7CX,YAAY,CAACL,EAAE,CAAC,GAAGiB,iBAAM;IAC3B,CAAC,MAAM;MACLZ,YAAY,CAACL,EAAE,CAAC,GAAGkB,2BAAgB;IACrC;EACF,CAAC,CAAC,OAAOC,KAAK,EAAE;IACdd,YAAY,CAACL,EAAE,CAAC,GAAGe,mBAAQ;EAC7B;EAEA,OAAOV,YAAY;AACrB;AAAC,IAAAe,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEcvB,mBAAmB","ignoreList":[]}
|
|
@@ -0,0 +1,79 @@
|
|
|
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 _api = _interopRequireDefault(require("./data/api"));
|
|
9
|
+
var _constants = require("./constants");
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
+
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; }
|
|
12
|
+
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; }
|
|
13
|
+
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; }
|
|
14
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
15
|
+
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); }
|
|
16
|
+
const getAllSequenceIds = _ref => {
|
|
17
|
+
let {
|
|
18
|
+
sections
|
|
19
|
+
} = _ref;
|
|
20
|
+
let allSequenceIds = [];
|
|
21
|
+
const sectionToSequenceMap = {};
|
|
22
|
+
Object.entries(sections).forEach(_ref2 => {
|
|
23
|
+
let [id, section] = _ref2;
|
|
24
|
+
const {
|
|
25
|
+
sequenceIds
|
|
26
|
+
} = section;
|
|
27
|
+
allSequenceIds = [...allSequenceIds, ...sequenceIds];
|
|
28
|
+
sectionToSequenceMap[id] = sequenceIds;
|
|
29
|
+
});
|
|
30
|
+
return [sectionToSequenceMap, allSequenceIds];
|
|
31
|
+
};
|
|
32
|
+
const useSequenceContext = _ref3 => {
|
|
33
|
+
let {
|
|
34
|
+
sections,
|
|
35
|
+
isFBE
|
|
36
|
+
} = _ref3;
|
|
37
|
+
const [isLoading, setIsLoading] = (0, _react.useState)(true);
|
|
38
|
+
const [sequenceData, setSequenceData] = (0, _react.useState)({});
|
|
39
|
+
const [courseHasLockedContent, setCourseHasLockedContent] = (0, _react.useState)(false);
|
|
40
|
+
const [sectionToSequenceMap, sequenceIds] = (0, _react.useMemo)(() => getAllSequenceIds({
|
|
41
|
+
sections
|
|
42
|
+
}), [sections]);
|
|
43
|
+
const fetchSectionHasLockedContent = sectionId => {
|
|
44
|
+
const currentSequenceIds = sectionToSequenceMap[sectionId];
|
|
45
|
+
const hasLockedContent = currentSequenceIds.some(id => sequenceData[id] === _constants.LOCKED || sequenceData[id] === _constants.PARTIALLY_LOCKED);
|
|
46
|
+
return hasLockedContent;
|
|
47
|
+
};
|
|
48
|
+
(0, _react.useEffect)(() => {
|
|
49
|
+
const fetchData = async () => {
|
|
50
|
+
let lockedSequencesData = {};
|
|
51
|
+
await Promise.all(sequenceIds.map(async id => {
|
|
52
|
+
await (0, _api.default)(id).then(data => {
|
|
53
|
+
lockedSequencesData = _objectSpread(_objectSpread({}, lockedSequencesData), data);
|
|
54
|
+
});
|
|
55
|
+
}));
|
|
56
|
+
const hasLockedContent = Object.values(lockedSequencesData).some(sequenceLockedStatus => sequenceLockedStatus === _constants.LOCKED || sequenceLockedStatus === _constants.PARTIALLY_LOCKED);
|
|
57
|
+
setCourseHasLockedContent(hasLockedContent);
|
|
58
|
+
setSequenceData(lockedSequencesData);
|
|
59
|
+
};
|
|
60
|
+
if (isFBE) {
|
|
61
|
+
fetchData();
|
|
62
|
+
} else {
|
|
63
|
+
const lockedSequencesData = {};
|
|
64
|
+
sequenceIds.forEach(sequenceId => {
|
|
65
|
+
lockedSequencesData[sequenceId] = _constants.UNLOCKED;
|
|
66
|
+
setSequenceData(lockedSequencesData);
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
setIsLoading(false);
|
|
70
|
+
}, [sections, isFBE, sequenceIds]);
|
|
71
|
+
return {
|
|
72
|
+
courseHasLockedContent,
|
|
73
|
+
fetchSectionHasLockedContent,
|
|
74
|
+
isLoading,
|
|
75
|
+
sequenceData
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
var _default = exports.default = useSequenceContext;
|
|
79
|
+
//# sourceMappingURL=hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.js","names":["_react","require","_api","_interopRequireDefault","_constants","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","getAllSequenceIds","_ref","sections","allSequenceIds","sectionToSequenceMap","entries","_ref2","id","section","sequenceIds","useSequenceContext","_ref3","isFBE","isLoading","setIsLoading","useState","sequenceData","setSequenceData","courseHasLockedContent","setCourseHasLockedContent","useMemo","fetchSectionHasLockedContent","sectionId","currentSequenceIds","hasLockedContent","some","LOCKED","PARTIALLY_LOCKED","useEffect","fetchData","lockedSequencesData","Promise","all","map","fetchSequenceBlocks","then","data","values","sequenceLockedStatus","sequenceId","UNLOCKED","_default","exports"],"sources":["../../src/section-outline/hooks.jsx"],"sourcesContent":["import { useEffect, useMemo, useState } from 'react';\nimport fetchSequenceBlocks from './data/api';\nimport { LOCKED, PARTIALLY_LOCKED, UNLOCKED } from './constants';\n\nconst getAllSequenceIds = ({ sections }) => {\n let allSequenceIds = [];\n const sectionToSequenceMap = {};\n\n Object.entries(sections).forEach(([id, section]) => {\n const { sequenceIds } = section;\n\n allSequenceIds = [...allSequenceIds, ...sequenceIds];\n sectionToSequenceMap[id] = sequenceIds;\n });\n return [sectionToSequenceMap, allSequenceIds];\n};\n\nconst useSequenceContext = ({ sections, isFBE }) => {\n const [isLoading, setIsLoading] = useState(true);\n const [sequenceData, setSequenceData] = useState({});\n const [courseHasLockedContent, setCourseHasLockedContent] = useState(false);\n\n const [sectionToSequenceMap, sequenceIds] = useMemo(() => getAllSequenceIds({ sections }), [sections]);\n\n const fetchSectionHasLockedContent = (sectionId) => {\n const currentSequenceIds = sectionToSequenceMap[sectionId];\n const hasLockedContent = currentSequenceIds.some(id => (\n sequenceData[id] === LOCKED || sequenceData[id] === PARTIALLY_LOCKED\n ));\n\n return hasLockedContent;\n };\n\n useEffect(() => {\n const fetchData = async () => {\n let lockedSequencesData = {};\n\n await Promise.all(sequenceIds.map(async (id) => {\n await fetchSequenceBlocks(id).then((data) => {\n lockedSequencesData = { ...lockedSequencesData, ...data };\n });\n }));\n\n const hasLockedContent = Object.values(lockedSequencesData).some(\n sequenceLockedStatus => (\n sequenceLockedStatus === LOCKED || sequenceLockedStatus === PARTIALLY_LOCKED\n ),\n );\n\n setCourseHasLockedContent(hasLockedContent);\n setSequenceData(lockedSequencesData);\n };\n\n if (isFBE) {\n fetchData();\n } else {\n const lockedSequencesData = {};\n sequenceIds.forEach(sequenceId => {\n lockedSequencesData[sequenceId] = UNLOCKED;\n setSequenceData(lockedSequencesData);\n });\n }\n\n setIsLoading(false);\n }, [sections, isFBE, sequenceIds]);\n\n return {\n courseHasLockedContent,\n fetchSectionHasLockedContent,\n isLoading,\n sequenceData,\n };\n};\n\nexport default useSequenceContext;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _SectionList = _interopRequireDefault(require("./SectionList"));
|
|
8
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
9
|
+
var _default = exports.default = _SectionList.default;
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["_SectionList","_interopRequireDefault","require","obj","__esModule","default","_default","exports","SectionList"],"sources":["../../src/section-outline/index.js"],"sourcesContent":["import SectionList from './SectionList';\n\nexport default SectionList;\n"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAwC,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,IAAAG,QAAA,GAAAC,OAAA,CAAAF,OAAA,GAEzBG,oBAAW","ignoreList":[]}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _i18n = require("@edx/frontend-platform/i18n");
|
|
8
|
+
const messages = (0, _i18n.defineMessages)({
|
|
9
|
+
sectionChipText: {
|
|
10
|
+
id: 'course-home.section-outline.section-item.chip.text',
|
|
11
|
+
defaultMessage: 'Limited content. Upgrade for full access.',
|
|
12
|
+
description: 'Message notifying user that some of the content in the section is locked'
|
|
13
|
+
},
|
|
14
|
+
sectionUpgradeButtonText: {
|
|
15
|
+
id: 'course-home.section-outline.section-item.button.label',
|
|
16
|
+
defaultMessage: 'Upgrade for full access',
|
|
17
|
+
description: 'Message for button that is used to upgrade'
|
|
18
|
+
},
|
|
19
|
+
sequenceTooltipContent: {
|
|
20
|
+
id: 'course-home.section-outline.sequence-item.tooltip.content',
|
|
21
|
+
defaultMessage: '{lockedStatus, select, partial {Limited content} other {Not Available}}.\nUpgrade for full access.',
|
|
22
|
+
description: 'Tooltip content dependent on the locked status of units in the sequence.'
|
|
23
|
+
},
|
|
24
|
+
upgradeBannerHeader: {
|
|
25
|
+
id: 'course-home.section-outline.upgrade-banner.header',
|
|
26
|
+
defaultMessage: 'Unlock graded assessments and assignments',
|
|
27
|
+
description: 'Header message for the upgrade banner above the section outline'
|
|
28
|
+
},
|
|
29
|
+
upgradeBannerMessage: {
|
|
30
|
+
id: 'course-home.section-outline.upgrade-banner.message',
|
|
31
|
+
defaultMessage: 'Upgrade today and enjoy unlimited access to all course material.',
|
|
32
|
+
description: 'Body message for the upgrade banner above the section outline'
|
|
33
|
+
},
|
|
34
|
+
upgradeBannerButtonLabel: {
|
|
35
|
+
id: 'course-home.section-outline.upgrade-banner.button.label',
|
|
36
|
+
defaultMessage: 'Upgrade now',
|
|
37
|
+
description: 'Button label for the upgrade button in the upgrade banner above the section outline'
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
var _default = exports.default = messages;
|
|
41
|
+
//# sourceMappingURL=messages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.js","names":["_i18n","require","messages","defineMessages","sectionChipText","id","defaultMessage","description","sectionUpgradeButtonText","sequenceTooltipContent","upgradeBannerHeader","upgradeBannerMessage","upgradeBannerButtonLabel","_default","exports","default"],"sources":["../../src/section-outline/messages.js"],"sourcesContent":["import { defineMessages } from '@edx/frontend-platform/i18n';\n\nconst messages = defineMessages({\n sectionChipText: {\n id: 'course-home.section-outline.section-item.chip.text',\n defaultMessage: 'Limited content. Upgrade for full access.',\n description: 'Message notifying user that some of the content in the section is locked',\n },\n sectionUpgradeButtonText: {\n id: 'course-home.section-outline.section-item.button.label',\n defaultMessage: 'Upgrade for full access',\n description: 'Message for button that is used to upgrade',\n },\n sequenceTooltipContent: {\n id: 'course-home.section-outline.sequence-item.tooltip.content',\n defaultMessage: '{lockedStatus, select, partial {Limited content} other {Not Available}}.\\nUpgrade for full access.',\n description: 'Tooltip content dependent on the locked status of units in the sequence.',\n },\n upgradeBannerHeader: {\n id: 'course-home.section-outline.upgrade-banner.header',\n defaultMessage: 'Unlock graded assessments and assignments',\n description: 'Header message for the upgrade banner above the section outline',\n },\n upgradeBannerMessage: {\n id: 'course-home.section-outline.upgrade-banner.message',\n defaultMessage: 'Upgrade today and enjoy unlimited access to all course material.',\n description: 'Body message for the upgrade banner above the section outline',\n },\n upgradeBannerButtonLabel: {\n id: 'course-home.section-outline.upgrade-banner.button.label',\n defaultMessage: 'Upgrade now',\n description: 'Button label for the upgrade button in the upgrade banner above the section outline',\n },\n});\n\nexport default messages;\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAEA,MAAMC,QAAQ,GAAG,IAAAC,oBAAc,EAAC;EAC9BC,eAAe,EAAE;IACfC,EAAE,EAAE,oDAAoD;IACxDC,cAAc,EAAE,2CAA2C;IAC3DC,WAAW,EAAE;EACf,CAAC;EACDC,wBAAwB,EAAE;IACxBH,EAAE,EAAE,uDAAuD;IAC3DC,cAAc,EAAE,yBAAyB;IACzCC,WAAW,EAAE;EACf,CAAC;EACDE,sBAAsB,EAAE;IACtBJ,EAAE,EAAE,2DAA2D;IAC/DC,cAAc,EAAE,oGAAoG;IACpHC,WAAW,EAAE;EACf,CAAC;EACDG,mBAAmB,EAAE;IACnBL,EAAE,EAAE,mDAAmD;IACvDC,cAAc,EAAE,2CAA2C;IAC3DC,WAAW,EAAE;EACf,CAAC;EACDI,oBAAoB,EAAE;IACpBN,EAAE,EAAE,oDAAoD;IACxDC,cAAc,EAAE,kEAAkE;IAClFC,WAAW,EAAE;EACf,CAAC;EACDK,wBAAwB,EAAE;IACxBP,EAAE,EAAE,yDAAyD;IAC7DC,cAAc,EAAE,aAAa;IAC7BC,WAAW,EAAE;EACf;AACF,CAAC,CAAC;AAAC,IAAAM,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEYb,QAAQ","ignoreList":[]}
|
|
@@ -8,8 +8,9 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
8
8
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
9
|
var _paragon = require("@openedx/paragon");
|
|
10
10
|
var _modelStore = require("@src/generic/model-store");
|
|
11
|
+
var _hooks = require("@src/data/hooks");
|
|
11
12
|
var _NextButton = _interopRequireDefault(require("@src/courseware/course/sequence/sequence-navigation/generic/NextButton"));
|
|
12
|
-
var
|
|
13
|
+
var _hooks2 = require("./hooks");
|
|
13
14
|
var _UpgradeModalWrapper = _interopRequireDefault(require("./UpgradeModalWrapper"));
|
|
14
15
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
15
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -19,15 +20,16 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
|
|
|
19
20
|
|
|
20
21
|
const NextUnitButton = _ref => {
|
|
21
22
|
let {
|
|
22
|
-
courseId,
|
|
23
23
|
disabled,
|
|
24
24
|
buttonText,
|
|
25
25
|
sequenceId,
|
|
26
26
|
onClickHandler,
|
|
27
27
|
nextLink,
|
|
28
28
|
variant,
|
|
29
|
-
buttonStyle
|
|
29
|
+
buttonStyle,
|
|
30
|
+
isAtTop
|
|
30
31
|
} = _ref;
|
|
32
|
+
const courseId = (0, _hooks.useContextId)();
|
|
31
33
|
const [isOpen, open, close] = (0, _paragon.useToggle)(false);
|
|
32
34
|
const {
|
|
33
35
|
verifiedMode,
|
|
@@ -40,8 +42,8 @@ const NextUnitButton = _ref => {
|
|
|
40
42
|
datesBannerInfo,
|
|
41
43
|
learningAssistantEnabled
|
|
42
44
|
} = (0, _modelStore.useModel)('coursewareMeta', courseId);
|
|
43
|
-
const isEnabled = (0,
|
|
44
|
-
const [shouldShowModalOnClick, countNextClick] = (0,
|
|
45
|
+
const isEnabled = (0, _hooks2.useIsModalEnabled)(courseId);
|
|
46
|
+
const [shouldShowModalOnClick, countNextClick] = (0, _hooks2.useInCourseUpgradeModal)();
|
|
45
47
|
const handleModal = () => {
|
|
46
48
|
if (isEnabled) {
|
|
47
49
|
countNextClick();
|
|
@@ -61,7 +63,8 @@ const NextUnitButton = _ref => {
|
|
|
61
63
|
variant: variant,
|
|
62
64
|
buttonStyle: buttonStyle,
|
|
63
65
|
buttonText: buttonText,
|
|
64
|
-
disabled: disabled
|
|
66
|
+
disabled: disabled,
|
|
67
|
+
isAtTop: isAtTop
|
|
65
68
|
}), isOpen && /*#__PURE__*/(0, _jsxRuntime.jsx)(_UpgradeModalWrapper.default, {
|
|
66
69
|
isOpen,
|
|
67
70
|
close,
|
|
@@ -76,6 +79,9 @@ const NextUnitButton = _ref => {
|
|
|
76
79
|
})]
|
|
77
80
|
});
|
|
78
81
|
};
|
|
82
|
+
NextUnitButton.defaultProps = {
|
|
83
|
+
isAtTop: false
|
|
84
|
+
};
|
|
79
85
|
NextUnitButton.propTypes = {
|
|
80
86
|
disabled: _propTypes.default.bool.isRequired,
|
|
81
87
|
buttonText: _propTypes.default.string.isRequired,
|
|
@@ -85,7 +91,8 @@ NextUnitButton.propTypes = {
|
|
|
85
91
|
onClickHandler: _propTypes.default.func.isRequired,
|
|
86
92
|
courseId: _propTypes.default.string.isRequired,
|
|
87
93
|
variant: _propTypes.default.string.isRequired,
|
|
88
|
-
buttonStyle: _propTypes.default.string.isRequired
|
|
94
|
+
buttonStyle: _propTypes.default.string.isRequired,
|
|
95
|
+
isAtTop: _propTypes.default.bool
|
|
89
96
|
};
|
|
90
97
|
var _default = exports.default = NextUnitButton;
|
|
91
98
|
//# sourceMappingURL=NextUnitButton.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NextUnitButton.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_paragon","_modelStore","_NextButton","
|
|
1
|
+
{"version":3,"file":"NextUnitButton.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_paragon","_modelStore","_hooks","_NextButton","_hooks2","_UpgradeModalWrapper","_jsxRuntime","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","NextUnitButton","_ref","disabled","buttonText","sequenceId","onClickHandler","nextLink","variant","buttonStyle","isAtTop","courseId","useContextId","isOpen","open","close","useToggle","verifiedMode","org","useModel","offer","marketingUrl","accessExpiration","datesBannerInfo","learningAssistantEnabled","isEnabled","useIsModalEnabled","shouldShowModalOnClick","countNextClick","useInCourseUpgradeModal","handleModal","useEffect","jsxs","Fragment","children","jsx","defaultProps","propTypes","PropTypes","bool","isRequired","string","unitId","func","_default","exports"],"sources":["../../src/upgrade-modal/NextUnitButton.jsx"],"sourcesContent":["/* eslint import/no-unresolved: 0 */\nimport React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { useToggle } from '@openedx/paragon';\n\nimport { useModel } from '@src/generic/model-store';\nimport { useContextId } from '@src/data/hooks';\nimport NextButton from '@src/courseware/course/sequence/sequence-navigation/generic/NextButton';\nimport { useInCourseUpgradeModal, useIsModalEnabled } from './hooks';\nimport UpgradeModalWrapper from './UpgradeModalWrapper';\n\nconst NextUnitButton = ({\n disabled,\n buttonText,\n sequenceId,\n onClickHandler,\n nextLink,\n variant,\n buttonStyle,\n isAtTop,\n}) => {\n const courseId = useContextId();\n const [isOpen, open, close] = useToggle(false);\n const {\n verifiedMode,\n org,\n } = useModel('courseHomeMeta', courseId);\n\n const {\n offer,\n marketingUrl,\n accessExpiration,\n datesBannerInfo,\n learningAssistantEnabled,\n } = useModel('coursewareMeta', courseId);\n\n const isEnabled = useIsModalEnabled(courseId);\n const [shouldShowModalOnClick, countNextClick] = useInCourseUpgradeModal();\n\n const handleModal = () => {\n if (isEnabled) {\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 onClickHandler={onClickHandler}\n nextLink={nextLink}\n variant={variant}\n buttonStyle={buttonStyle}\n buttonText={buttonText}\n disabled={disabled}\n isAtTop={isAtTop}\n />\n {isOpen && (\n <UpgradeModalWrapper\n {...{\n isOpen,\n close,\n verifiedMode,\n org,\n courseId,\n offer,\n marketingUrl,\n accessExpiration,\n datesBannerInfo,\n learningAssistantEnabled,\n }}\n />\n )}\n </>\n );\n};\n\nNextUnitButton.defaultProps = {\n isAtTop: false,\n};\n\nNextUnitButton.propTypes = {\n disabled: PropTypes.bool.isRequired,\n buttonText: PropTypes.string.isRequired,\n nextLink: PropTypes.string.isRequired,\n sequenceId: PropTypes.string.isRequired,\n unitId: PropTypes.string.isRequired,\n onClickHandler: PropTypes.func.isRequired,\n courseId: PropTypes.string.isRequired,\n variant: PropTypes.string.isRequired,\n buttonStyle: PropTypes.string.isRequired,\n isAtTop: PropTypes.bool,\n};\n\nexport default NextUnitButton;\n"],"mappings":"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","ignoreList":[]}
|