@pie-element/ebsr 9.12.0 → 9.12.1-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/configure/package.json +1 -1
- package/controller/package.json +1 -1
- package/package.json +3 -3
- package/configure/lib/defaults.js +0 -222
- package/configure/lib/defaults.js.map +0 -1
- package/configure/lib/index.js +0 -243
- package/configure/lib/index.js.map +0 -1
- package/configure/lib/main.js +0 -303
- package/configure/lib/main.js.map +0 -1
- package/controller/lib/defaults.js +0 -28
- package/controller/lib/defaults.js.map +0 -1
- package/controller/lib/index.js +0 -514
- package/controller/lib/index.js.map +0 -1
- package/controller/lib/utils.js +0 -33
- package/controller/lib/utils.js.map +0 -1
- package/lib/index.js +0 -212
- package/lib/index.js.map +0 -1
- package/lib/print.js +0 -241
- package/lib/print.js.map +0 -1
- package/module/configure.js +0 -6054
- package/module/controller.js +0 -24036
- package/module/demo.js +0 -77
- package/module/element.js +0 -9911
- package/module/index.html +0 -21
- package/module/manifest.json +0 -14
- package/module/print-demo.js +0 -115
- package/module/print.html +0 -18
- package/module/print.js +0 -9916
package/lib/index.js
DELETED
|
@@ -1,212 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.isSessionComplete = exports["default"] = void 0;
|
|
9
|
-
|
|
10
|
-
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
11
|
-
|
|
12
|
-
var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));
|
|
13
|
-
|
|
14
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
|
-
|
|
16
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
17
|
-
|
|
18
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
19
|
-
|
|
20
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
21
|
-
|
|
22
|
-
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
23
|
-
|
|
24
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
25
|
-
|
|
26
|
-
var _piePlayerEvents = require("@pie-framework/pie-player-events");
|
|
27
|
-
|
|
28
|
-
var _multipleChoice = _interopRequireDefault(require("@pie-element/multiple-choice"));
|
|
29
|
-
|
|
30
|
-
var _get = _interopRequireDefault(require("lodash/get"));
|
|
31
|
-
|
|
32
|
-
var _debug = _interopRequireDefault(require("debug"));
|
|
33
|
-
|
|
34
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
35
|
-
|
|
36
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
37
|
-
|
|
38
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
39
|
-
|
|
40
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
41
|
-
|
|
42
|
-
var SESSION_CHANGED = _piePlayerEvents.SessionChangedEvent.TYPE;
|
|
43
|
-
var MC_TAG_NAME = 'ebsr-multiple-choice';
|
|
44
|
-
var log = (0, _debug["default"])('pie-elements:ebsr');
|
|
45
|
-
|
|
46
|
-
var EbsrMC = /*#__PURE__*/function (_MultipleChoice) {
|
|
47
|
-
(0, _inherits2["default"])(EbsrMC, _MultipleChoice);
|
|
48
|
-
|
|
49
|
-
var _super = _createSuper(EbsrMC);
|
|
50
|
-
|
|
51
|
-
function EbsrMC() {
|
|
52
|
-
(0, _classCallCheck2["default"])(this, EbsrMC);
|
|
53
|
-
return _super.apply(this, arguments);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
return (0, _createClass2["default"])(EbsrMC);
|
|
57
|
-
}(_multipleChoice["default"]);
|
|
58
|
-
|
|
59
|
-
var defineMultipleChoice = function defineMultipleChoice() {
|
|
60
|
-
if (!customElements.get(MC_TAG_NAME)) {
|
|
61
|
-
customElements.define(MC_TAG_NAME, EbsrMC);
|
|
62
|
-
}
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
defineMultipleChoice();
|
|
66
|
-
|
|
67
|
-
var isNonEmptyArray = function isNonEmptyArray(a) {
|
|
68
|
-
return Array.isArray(a) && a.length > 0;
|
|
69
|
-
};
|
|
70
|
-
|
|
71
|
-
var isSessionComplete = function isSessionComplete(session) {
|
|
72
|
-
var a = (0, _get["default"])(session, 'value.partA.value');
|
|
73
|
-
var b = (0, _get["default"])(session, 'value.partB.value');
|
|
74
|
-
return isNonEmptyArray(a) && isNonEmptyArray(b);
|
|
75
|
-
};
|
|
76
|
-
|
|
77
|
-
exports.isSessionComplete = isSessionComplete;
|
|
78
|
-
|
|
79
|
-
var Ebsr = /*#__PURE__*/function (_HTMLElement) {
|
|
80
|
-
(0, _inherits2["default"])(Ebsr, _HTMLElement);
|
|
81
|
-
|
|
82
|
-
var _super2 = _createSuper(Ebsr);
|
|
83
|
-
|
|
84
|
-
function Ebsr() {
|
|
85
|
-
var _this;
|
|
86
|
-
|
|
87
|
-
(0, _classCallCheck2["default"])(this, Ebsr);
|
|
88
|
-
_this = _super2.call(this);
|
|
89
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onSessionUpdated", function (e) {
|
|
90
|
-
if (e.target === (0, _assertThisInitialized2["default"])(_this)) {
|
|
91
|
-
return;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
e.preventDefault();
|
|
95
|
-
e.stopImmediatePropagation();
|
|
96
|
-
var id = e.target.getAttribute('id');
|
|
97
|
-
|
|
98
|
-
if (id) {
|
|
99
|
-
var key = "part".concat(id.toUpperCase());
|
|
100
|
-
|
|
101
|
-
if (e.update) {
|
|
102
|
-
_this._model[key] = e.update;
|
|
103
|
-
} //TODO: accessing a private property here. The session event should contain the update in future to prevent this.
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
_this.dispatchSessionChanged(e.srcElement._session, key);
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
_this._model = {};
|
|
110
|
-
_this._session = {};
|
|
111
|
-
return _this;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
(0, _createClass2["default"])(Ebsr, [{
|
|
115
|
-
key: "model",
|
|
116
|
-
set: function set(m) {
|
|
117
|
-
var _this2 = this;
|
|
118
|
-
|
|
119
|
-
this._model = m;
|
|
120
|
-
customElements.whenDefined(MC_TAG_NAME).then(function () {
|
|
121
|
-
_this2.setPartModel(_this2.partA, 'partA');
|
|
122
|
-
|
|
123
|
-
_this2.setPartModel(_this2.partB, 'partB');
|
|
124
|
-
});
|
|
125
|
-
}
|
|
126
|
-
}, {
|
|
127
|
-
key: "session",
|
|
128
|
-
get: function get() {
|
|
129
|
-
return this._session;
|
|
130
|
-
},
|
|
131
|
-
set: function set(s) {
|
|
132
|
-
var _this3 = this;
|
|
133
|
-
|
|
134
|
-
this._session = s;
|
|
135
|
-
customElements.whenDefined(MC_TAG_NAME).then(function () {
|
|
136
|
-
_this3.setPartSession(_this3.partA, 'partA');
|
|
137
|
-
|
|
138
|
-
_this3.setPartSession(_this3.partB, 'partB');
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
|
-
}, {
|
|
142
|
-
key: "setPartModel",
|
|
143
|
-
value: function setPartModel(part, key) {
|
|
144
|
-
if (this._model && this._model[key] && part) {
|
|
145
|
-
var mode = this._model.mode;
|
|
146
|
-
part.model = _objectSpread(_objectSpread({}, this._model[key]), {}, {
|
|
147
|
-
mode: mode,
|
|
148
|
-
keyMode: this._model[key].choicePrefix
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
}, {
|
|
153
|
-
key: "setPartSession",
|
|
154
|
-
value: function setPartSession(part, key) {
|
|
155
|
-
if (this._session && this._model && part) {
|
|
156
|
-
var value = this._session.value;
|
|
157
|
-
part.session = value && value[key] ? value[key] : {
|
|
158
|
-
id: key
|
|
159
|
-
};
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
}, {
|
|
163
|
-
key: "dispatchSessionChanged",
|
|
164
|
-
value: function dispatchSessionChanged(partSession, key) {
|
|
165
|
-
this._session.value = _objectSpread(_objectSpread({}, this._session.value), {}, (0, _defineProperty2["default"])({}, key, partSession));
|
|
166
|
-
log('[onSessionChanged] session: ', this._session);
|
|
167
|
-
var complete = isSessionComplete(this._session);
|
|
168
|
-
this.dispatchEvent(new _piePlayerEvents.SessionChangedEvent(this.tagName.toLowerCase(), complete));
|
|
169
|
-
}
|
|
170
|
-
}, {
|
|
171
|
-
key: "partA",
|
|
172
|
-
get: function get() {
|
|
173
|
-
return this.querySelector("".concat(MC_TAG_NAME, "#a"));
|
|
174
|
-
}
|
|
175
|
-
}, {
|
|
176
|
-
key: "partB",
|
|
177
|
-
get: function get() {
|
|
178
|
-
return this.querySelector("".concat(MC_TAG_NAME, "#b"));
|
|
179
|
-
}
|
|
180
|
-
}, {
|
|
181
|
-
key: "connectedCallback",
|
|
182
|
-
value: function connectedCallback() {
|
|
183
|
-
this._render();
|
|
184
|
-
|
|
185
|
-
this.addEventListener(SESSION_CHANGED, this.onSessionUpdated);
|
|
186
|
-
}
|
|
187
|
-
}, {
|
|
188
|
-
key: "disconnectedCallback",
|
|
189
|
-
value: function disconnectedCallback() {
|
|
190
|
-
this.removeEventListener(SESSION_CHANGED, this.onSessionUpdated);
|
|
191
|
-
}
|
|
192
|
-
}, {
|
|
193
|
-
key: "_render",
|
|
194
|
-
value: function _render() {
|
|
195
|
-
this.ariaLabel = 'Two-Part Question';
|
|
196
|
-
this.role = 'region';
|
|
197
|
-
this.innerHTML = "\n <style>\n .srOnly {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n left: -10000px;\n top: auto;\n }\n </style>\n <h2 class=\"srOnly\">Two-Part Question</h2>\n <".concat(MC_TAG_NAME, " id=\"a\"></").concat(MC_TAG_NAME, ">\n <").concat(MC_TAG_NAME, " id=\"b\"></").concat(MC_TAG_NAME, ">\n "); // when item is re-rendered (due to connectedCallback), if the custom element is already defined,
|
|
198
|
-
// we need to set the model and session, otherwise the setters are not reached again
|
|
199
|
-
|
|
200
|
-
if (customElements.get(MC_TAG_NAME)) {
|
|
201
|
-
this.setPartModel(this.partA, 'partA');
|
|
202
|
-
this.setPartModel(this.partB, 'partB');
|
|
203
|
-
this.setPartSession(this.partA, 'partA');
|
|
204
|
-
this.setPartSession(this.partB, 'partB');
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
}]);
|
|
208
|
-
return Ebsr;
|
|
209
|
-
}( /*#__PURE__*/(0, _wrapNativeSuper2["default"])(HTMLElement));
|
|
210
|
-
|
|
211
|
-
exports["default"] = Ebsr;
|
|
212
|
-
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js"],"names":["SESSION_CHANGED","SessionChangedEvent","TYPE","MC_TAG_NAME","log","EbsrMC","MultipleChoice","defineMultipleChoice","customElements","get","define","isNonEmptyArray","a","Array","isArray","length","isSessionComplete","session","b","Ebsr","e","target","preventDefault","stopImmediatePropagation","id","getAttribute","key","toUpperCase","update","_model","dispatchSessionChanged","srcElement","_session","m","whenDefined","then","setPartModel","partA","partB","s","setPartSession","part","mode","model","keyMode","choicePrefix","value","partSession","complete","dispatchEvent","tagName","toLowerCase","querySelector","_render","addEventListener","onSessionUpdated","removeEventListener","ariaLabel","role","innerHTML","HTMLElement"],"mappings":"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","sourcesContent":["import { SessionChangedEvent } from '@pie-framework/pie-player-events';\nimport MultipleChoice from '@pie-element/multiple-choice';\nimport get from 'lodash/get';\nimport debug from 'debug';\n\nconst SESSION_CHANGED = SessionChangedEvent.TYPE;\nconst MC_TAG_NAME = 'ebsr-multiple-choice';\nconst log = debug('pie-elements:ebsr');\n\nclass EbsrMC extends MultipleChoice {}\n\nconst defineMultipleChoice = () => {\n if (!customElements.get(MC_TAG_NAME)) {\n customElements.define(MC_TAG_NAME, EbsrMC);\n }\n};\n\ndefineMultipleChoice();\n\nconst isNonEmptyArray = (a) => Array.isArray(a) && a.length > 0;\n\nexport const isSessionComplete = (session) => {\n const a = get(session, 'value.partA.value');\n const b = get(session, 'value.partB.value');\n\n return isNonEmptyArray(a) && isNonEmptyArray(b);\n};\n\nexport default class Ebsr extends HTMLElement {\n constructor() {\n super();\n this._model = {};\n this._session = {};\n }\n\n onSessionUpdated = (e) => {\n if (e.target === this) {\n return;\n }\n\n e.preventDefault();\n e.stopImmediatePropagation();\n\n const id = e.target.getAttribute('id');\n\n if (id) {\n const key = `part${id.toUpperCase()}`;\n\n if (e.update) {\n this._model[key] = e.update;\n }\n //TODO: accessing a private property here. The session event should contain the update in future to prevent this.\n this.dispatchSessionChanged(e.srcElement._session, key);\n }\n };\n\n set model(m) {\n this._model = m;\n\n customElements.whenDefined(MC_TAG_NAME).then(() => {\n this.setPartModel(this.partA, 'partA');\n this.setPartModel(this.partB, 'partB');\n });\n }\n\n set session(s) {\n this._session = s;\n\n customElements.whenDefined(MC_TAG_NAME).then(() => {\n this.setPartSession(this.partA, 'partA');\n this.setPartSession(this.partB, 'partB');\n });\n }\n\n get session() {\n return this._session;\n }\n\n setPartModel(part, key) {\n if (this._model && this._model[key] && part) {\n const { mode } = this._model;\n\n part.model = {\n ...this._model[key],\n mode,\n keyMode: this._model[key].choicePrefix,\n };\n }\n }\n\n setPartSession(part, key) {\n if (this._session && this._model && part) {\n const { value } = this._session;\n part.session = value && value[key] ? value[key] : { id: key };\n }\n }\n\n dispatchSessionChanged(partSession, key) {\n this._session.value = {\n ...this._session.value,\n [key]: partSession,\n };\n\n log('[onSessionChanged] session: ', this._session);\n const complete = isSessionComplete(this._session);\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), complete));\n }\n\n get partA() {\n return this.querySelector(`${MC_TAG_NAME}#a`);\n }\n\n get partB() {\n return this.querySelector(`${MC_TAG_NAME}#b`);\n }\n\n connectedCallback() {\n this._render();\n this.addEventListener(SESSION_CHANGED, this.onSessionUpdated);\n }\n\n disconnectedCallback() {\n this.removeEventListener(SESSION_CHANGED, this.onSessionUpdated);\n }\n\n _render() {\n this.ariaLabel = 'Two-Part Question';\n this.role = 'region';\n this.innerHTML = `\n <style>\n .srOnly {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n left: -10000px;\n top: auto;\n }\n </style>\n <h2 class=\"srOnly\">Two-Part Question</h2>\n <${MC_TAG_NAME} id=\"a\"></${MC_TAG_NAME}>\n <${MC_TAG_NAME} id=\"b\"></${MC_TAG_NAME}>\n `;\n\n // when item is re-rendered (due to connectedCallback), if the custom element is already defined,\n // we need to set the model and session, otherwise the setters are not reached again\n if (customElements.get(MC_TAG_NAME)) {\n this.setPartModel(this.partA, 'partA');\n this.setPartModel(this.partB, 'partB');\n this.setPartSession(this.partA, 'partA');\n this.setPartSession(this.partB, 'partB');\n }\n }\n}\n"],"file":"index.js"}
|
package/lib/print.js
DELETED
|
@@ -1,241 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.isSessionComplete = exports["default"] = void 0;
|
|
9
|
-
|
|
10
|
-
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
11
|
-
|
|
12
|
-
var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));
|
|
13
|
-
|
|
14
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
|
-
|
|
16
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
17
|
-
|
|
18
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
19
|
-
|
|
20
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
21
|
-
|
|
22
|
-
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
23
|
-
|
|
24
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
25
|
-
|
|
26
|
-
var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
|
|
27
|
-
|
|
28
|
-
var _multipleChoice = _interopRequireDefault(require("@pie-element/multiple-choice"));
|
|
29
|
-
|
|
30
|
-
var _debug = _interopRequireDefault(require("debug"));
|
|
31
|
-
|
|
32
|
-
var _get = _interopRequireDefault(require("lodash/get"));
|
|
33
|
-
|
|
34
|
-
var _piePlayerEvents = require("@pie-framework/pie-player-events");
|
|
35
|
-
|
|
36
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
37
|
-
|
|
38
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
39
|
-
|
|
40
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
41
|
-
|
|
42
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
43
|
-
|
|
44
|
-
var MC_TAG_NAME = 'ebsr-multiple-choice';
|
|
45
|
-
var SESSION_CHANGED = _piePlayerEvents.SessionChangedEvent.TYPE;
|
|
46
|
-
var log = (0, _debug["default"])('pie-element:ebsr:print');
|
|
47
|
-
/**
|
|
48
|
-
* Live in same package as main element - so we can access some of the shared comps!
|
|
49
|
-
*
|
|
50
|
-
* - update pslb to build print if src/print.js is there
|
|
51
|
-
* - update demo el
|
|
52
|
-
* - get configure/controller building
|
|
53
|
-
*/
|
|
54
|
-
|
|
55
|
-
var preparePrintModel = function preparePrintModel(model, opts) {
|
|
56
|
-
var instr = opts.role === 'instructor';
|
|
57
|
-
model.prompt = model.promptEnabled !== false ? model.prompt : undefined;
|
|
58
|
-
model.teacherInstructions = instr && model.teacherInstructionsEnabled !== false ? model.teacherInstructions : undefined;
|
|
59
|
-
model.showTeacherInstructions = instr;
|
|
60
|
-
model.alwaysShowCorrect = instr;
|
|
61
|
-
model.mode = instr ? 'evaluate' : 'gather';
|
|
62
|
-
model.disabled = true;
|
|
63
|
-
model.animationsDisabled = true;
|
|
64
|
-
model.lockChoiceOrder = true;
|
|
65
|
-
model.choicesLayout = model.choicesLayout || 'vertical';
|
|
66
|
-
var choices = (0, _cloneDeep["default"])(model.choices);
|
|
67
|
-
model.choices = choices.map(function (c) {
|
|
68
|
-
c.rationale = instr && model.rationaleEnabled !== false ? c.rationale : undefined;
|
|
69
|
-
c.hideTick = instr;
|
|
70
|
-
c.feedback = undefined;
|
|
71
|
-
return c;
|
|
72
|
-
});
|
|
73
|
-
model.keyMode = model.choicePrefix || 'letters';
|
|
74
|
-
return model;
|
|
75
|
-
};
|
|
76
|
-
|
|
77
|
-
var EbsrMC = /*#__PURE__*/function (_MultipleChoice) {
|
|
78
|
-
(0, _inherits2["default"])(EbsrMC, _MultipleChoice);
|
|
79
|
-
|
|
80
|
-
var _super = _createSuper(EbsrMC);
|
|
81
|
-
|
|
82
|
-
function EbsrMC() {
|
|
83
|
-
(0, _classCallCheck2["default"])(this, EbsrMC);
|
|
84
|
-
return _super.apply(this, arguments);
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
return (0, _createClass2["default"])(EbsrMC);
|
|
88
|
-
}(_multipleChoice["default"]);
|
|
89
|
-
|
|
90
|
-
var defineMultipleChoice = function defineMultipleChoice() {
|
|
91
|
-
if (!customElements.get(MC_TAG_NAME)) {
|
|
92
|
-
customElements.define(MC_TAG_NAME, EbsrMC);
|
|
93
|
-
}
|
|
94
|
-
};
|
|
95
|
-
|
|
96
|
-
defineMultipleChoice();
|
|
97
|
-
|
|
98
|
-
var isNonEmptyArray = function isNonEmptyArray(a) {
|
|
99
|
-
return Array.isArray(a) && a.length > 0;
|
|
100
|
-
};
|
|
101
|
-
|
|
102
|
-
var isSessionComplete = function isSessionComplete(session) {
|
|
103
|
-
var a = (0, _get["default"])(session, 'value.partA.value');
|
|
104
|
-
var b = (0, _get["default"])(session, 'value.partB.value');
|
|
105
|
-
return isNonEmptyArray(a) && isNonEmptyArray(b);
|
|
106
|
-
};
|
|
107
|
-
|
|
108
|
-
exports.isSessionComplete = isSessionComplete;
|
|
109
|
-
|
|
110
|
-
var Ebsr = /*#__PURE__*/function (_HTMLElement) {
|
|
111
|
-
(0, _inherits2["default"])(Ebsr, _HTMLElement);
|
|
112
|
-
|
|
113
|
-
var _super2 = _createSuper(Ebsr);
|
|
114
|
-
|
|
115
|
-
function Ebsr() {
|
|
116
|
-
var _this;
|
|
117
|
-
|
|
118
|
-
(0, _classCallCheck2["default"])(this, Ebsr);
|
|
119
|
-
_this = _super2.call(this);
|
|
120
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onSessionUpdated", function (e) {
|
|
121
|
-
if (e.target === (0, _assertThisInitialized2["default"])(_this)) {
|
|
122
|
-
return;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
e.preventDefault();
|
|
126
|
-
e.stopImmediatePropagation();
|
|
127
|
-
var id = e.target.getAttribute('id');
|
|
128
|
-
|
|
129
|
-
if (id) {
|
|
130
|
-
var key = "part".concat(id.toUpperCase());
|
|
131
|
-
|
|
132
|
-
if (e.update) {
|
|
133
|
-
_this._model[key] = e.update;
|
|
134
|
-
} //TODO: accessing a private property here. The session event should contain the update in future to prevent this.
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
_this.dispatchSessionChanged(e.srcElement._session, key);
|
|
138
|
-
}
|
|
139
|
-
});
|
|
140
|
-
_this._model = {};
|
|
141
|
-
_this._session = {};
|
|
142
|
-
_this._options = null;
|
|
143
|
-
return _this;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
(0, _createClass2["default"])(Ebsr, [{
|
|
147
|
-
key: "model",
|
|
148
|
-
set: function set(m) {
|
|
149
|
-
var _this2 = this;
|
|
150
|
-
|
|
151
|
-
this._model = m;
|
|
152
|
-
customElements.whenDefined(MC_TAG_NAME).then(function () {
|
|
153
|
-
_this2.setPartModel(_this2.partA, 'partA');
|
|
154
|
-
|
|
155
|
-
_this2.setPartModel(_this2.partB, 'partB');
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
}, {
|
|
159
|
-
key: "session",
|
|
160
|
-
set: function set(s) {
|
|
161
|
-
var _this3 = this;
|
|
162
|
-
|
|
163
|
-
this._session = s;
|
|
164
|
-
customElements.whenDefined(MC_TAG_NAME).then(function () {
|
|
165
|
-
_this3.setPartSession(_this3.partA, 'partA');
|
|
166
|
-
|
|
167
|
-
_this3.setPartSession(_this3.partB, 'partB');
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
|
-
}, {
|
|
171
|
-
key: "setPartModel",
|
|
172
|
-
value: function setPartModel(part, key) {
|
|
173
|
-
if (this._model && this._model[key] && part) {
|
|
174
|
-
part.model = _objectSpread(_objectSpread({}, preparePrintModel(this._model[key], this._options)), {}, {
|
|
175
|
-
keyMode: this._model[key].choicePrefix
|
|
176
|
-
});
|
|
177
|
-
|
|
178
|
-
if (!part._session) {
|
|
179
|
-
// for print, "set session" is not called,
|
|
180
|
-
// but ebsr needs sessions in order to render the elements,
|
|
181
|
-
// so we set it here it was not set already
|
|
182
|
-
part.session = {};
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
}, {
|
|
187
|
-
key: "options",
|
|
188
|
-
set: function set(o) {
|
|
189
|
-
this._options = o;
|
|
190
|
-
}
|
|
191
|
-
}, {
|
|
192
|
-
key: "setPartSession",
|
|
193
|
-
value: function setPartSession(part, key) {
|
|
194
|
-
if (this._session && this._model && part) {
|
|
195
|
-
var value = this._session.value;
|
|
196
|
-
part.session = value && value[key] ? value[key] : {
|
|
197
|
-
id: key
|
|
198
|
-
};
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
}, {
|
|
202
|
-
key: "dispatchSessionChanged",
|
|
203
|
-
value: function dispatchSessionChanged(partSession, key) {
|
|
204
|
-
this._session.value = _objectSpread(_objectSpread({}, this._session.value), {}, (0, _defineProperty2["default"])({}, key, partSession));
|
|
205
|
-
log('[onSessionChanged] session: ', this._session);
|
|
206
|
-
var complete = isSessionComplete(this._session);
|
|
207
|
-
this.dispatchEvent(new _piePlayerEvents.SessionChangedEvent(this.tagName.toLowerCase(), complete));
|
|
208
|
-
}
|
|
209
|
-
}, {
|
|
210
|
-
key: "partA",
|
|
211
|
-
get: function get() {
|
|
212
|
-
return this.querySelector("".concat(MC_TAG_NAME, "#a"));
|
|
213
|
-
}
|
|
214
|
-
}, {
|
|
215
|
-
key: "partB",
|
|
216
|
-
get: function get() {
|
|
217
|
-
return this.querySelector("".concat(MC_TAG_NAME, "#b"));
|
|
218
|
-
}
|
|
219
|
-
}, {
|
|
220
|
-
key: "connectedCallback",
|
|
221
|
-
value: function connectedCallback() {
|
|
222
|
-
this._render();
|
|
223
|
-
|
|
224
|
-
this.addEventListener(SESSION_CHANGED, this.onSessionUpdated);
|
|
225
|
-
}
|
|
226
|
-
}, {
|
|
227
|
-
key: "disconnectedCallback",
|
|
228
|
-
value: function disconnectedCallback() {
|
|
229
|
-
this.removeEventListener(SESSION_CHANGED, this.onSessionUpdated);
|
|
230
|
-
}
|
|
231
|
-
}, {
|
|
232
|
-
key: "_render",
|
|
233
|
-
value: function _render() {
|
|
234
|
-
this.innerHTML = "\n <div>\n <".concat(MC_TAG_NAME, " id=\"a\"></").concat(MC_TAG_NAME, ">\n <").concat(MC_TAG_NAME, " id=\"b\"></").concat(MC_TAG_NAME, ">\n </div>\n ");
|
|
235
|
-
}
|
|
236
|
-
}]);
|
|
237
|
-
return Ebsr;
|
|
238
|
-
}( /*#__PURE__*/(0, _wrapNativeSuper2["default"])(HTMLElement));
|
|
239
|
-
|
|
240
|
-
exports["default"] = Ebsr;
|
|
241
|
-
//# sourceMappingURL=print.js.map
|
package/lib/print.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/print.js"],"names":["MC_TAG_NAME","SESSION_CHANGED","SessionChangedEvent","TYPE","log","preparePrintModel","model","opts","instr","role","prompt","promptEnabled","undefined","teacherInstructions","teacherInstructionsEnabled","showTeacherInstructions","alwaysShowCorrect","mode","disabled","animationsDisabled","lockChoiceOrder","choicesLayout","choices","map","c","rationale","rationaleEnabled","hideTick","feedback","keyMode","choicePrefix","EbsrMC","MultipleChoice","defineMultipleChoice","customElements","get","define","isNonEmptyArray","a","Array","isArray","length","isSessionComplete","session","b","Ebsr","e","target","preventDefault","stopImmediatePropagation","id","getAttribute","key","toUpperCase","update","_model","dispatchSessionChanged","srcElement","_session","_options","m","whenDefined","then","setPartModel","partA","partB","s","setPartSession","part","o","value","partSession","complete","dispatchEvent","tagName","toLowerCase","querySelector","_render","addEventListener","onSessionUpdated","removeEventListener","innerHTML","HTMLElement"],"mappings":"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","sourcesContent":["import cloneDeep from 'lodash/cloneDeep';\nimport MultipleChoice from '@pie-element/multiple-choice';\nimport debug from 'debug';\nimport get from 'lodash/get';\n\nimport { SessionChangedEvent } from '@pie-framework/pie-player-events';\nconst MC_TAG_NAME = 'ebsr-multiple-choice';\nconst SESSION_CHANGED = SessionChangedEvent.TYPE;\n\nconst log = debug('pie-element:ebsr:print');\n\n/**\n * Live in same package as main element - so we can access some of the shared comps!\n *\n * - update pslb to build print if src/print.js is there\n * - update demo el\n * - get configure/controller building\n */\n\nconst preparePrintModel = (model, opts) => {\n const instr = opts.role === 'instructor';\n\n model.prompt = model.promptEnabled !== false ? model.prompt : undefined;\n model.teacherInstructions =\n instr && model.teacherInstructionsEnabled !== false ? model.teacherInstructions : undefined;\n model.showTeacherInstructions = instr;\n model.alwaysShowCorrect = instr;\n model.mode = instr ? 'evaluate' : 'gather';\n\n model.disabled = true;\n model.animationsDisabled = true;\n model.lockChoiceOrder = true;\n model.choicesLayout = model.choicesLayout || 'vertical';\n\n const choices = cloneDeep(model.choices);\n\n model.choices = choices.map((c) => {\n c.rationale = instr && model.rationaleEnabled !== false ? c.rationale : undefined;\n c.hideTick = instr;\n c.feedback = undefined;\n return c;\n });\n\n model.keyMode = model.choicePrefix || 'letters';\n\n return model;\n};\n\nclass EbsrMC extends MultipleChoice {}\n\nconst defineMultipleChoice = () => {\n if (!customElements.get(MC_TAG_NAME)) {\n customElements.define(MC_TAG_NAME, EbsrMC);\n }\n};\n\ndefineMultipleChoice();\n\nconst isNonEmptyArray = (a) => Array.isArray(a) && a.length > 0;\n\nexport const isSessionComplete = (session) => {\n const a = get(session, 'value.partA.value');\n const b = get(session, 'value.partB.value');\n\n return isNonEmptyArray(a) && isNonEmptyArray(b);\n};\n\nexport default class Ebsr extends HTMLElement {\n constructor() {\n super();\n this._model = {};\n this._session = {};\n this._options = null;\n }\n\n onSessionUpdated = (e) => {\n if (e.target === this) {\n return;\n }\n\n e.preventDefault();\n e.stopImmediatePropagation();\n\n const id = e.target.getAttribute('id');\n\n if (id) {\n const key = `part${id.toUpperCase()}`;\n\n if (e.update) {\n this._model[key] = e.update;\n }\n //TODO: accessing a private property here. The session event should contain the update in future to prevent this.\n this.dispatchSessionChanged(e.srcElement._session, key);\n }\n };\n\n set model(m) {\n this._model = m;\n\n customElements.whenDefined(MC_TAG_NAME).then(() => {\n this.setPartModel(this.partA, 'partA');\n this.setPartModel(this.partB, 'partB');\n });\n }\n\n set session(s) {\n this._session = s;\n\n customElements.whenDefined(MC_TAG_NAME).then(() => {\n this.setPartSession(this.partA, 'partA');\n this.setPartSession(this.partB, 'partB');\n });\n }\n\n setPartModel(part, key) {\n if (this._model && this._model[key] && part) {\n part.model = {\n ...preparePrintModel(this._model[key], this._options),\n keyMode: this._model[key].choicePrefix,\n };\n\n if (!part._session) {\n // for print, \"set session\" is not called,\n // but ebsr needs sessions in order to render the elements,\n // so we set it here it was not set already\n part.session = {};\n }\n }\n }\n\n set options(o) {\n this._options = o;\n }\n\n setPartSession(part, key) {\n if (this._session && this._model && part) {\n const { value } = this._session;\n part.session = value && value[key] ? value[key] : { id: key };\n }\n }\n\n dispatchSessionChanged(partSession, key) {\n this._session.value = {\n ...this._session.value,\n [key]: partSession,\n };\n\n log('[onSessionChanged] session: ', this._session);\n const complete = isSessionComplete(this._session);\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), complete));\n }\n\n get partA() {\n return this.querySelector(`${MC_TAG_NAME}#a`);\n }\n\n get partB() {\n return this.querySelector(`${MC_TAG_NAME}#b`);\n }\n\n connectedCallback() {\n this._render();\n this.addEventListener(SESSION_CHANGED, this.onSessionUpdated);\n }\n\n disconnectedCallback() {\n this.removeEventListener(SESSION_CHANGED, this.onSessionUpdated);\n }\n\n _render() {\n this.innerHTML = `\n <div>\n <${MC_TAG_NAME} id=\"a\"></${MC_TAG_NAME}>\n <${MC_TAG_NAME} id=\"b\"></${MC_TAG_NAME}>\n </div>\n `;\n }\n}\n"],"file":"print.js"}
|