@pie-element/passage 2.15.1-next.3 → 2.16.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.
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+
12
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
+
14
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
15
+
16
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
17
+
18
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
19
+
20
+ var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));
21
+
22
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
23
+
24
+ var _react = _interopRequireDefault(require("react"));
25
+
26
+ var _reactDom = _interopRequireDefault(require("react-dom"));
27
+
28
+ var _design = _interopRequireDefault(require("./design"));
29
+
30
+ var _pieConfigureEvents = require("@pie-framework/pie-configure-events");
31
+
32
+ var _defaults = _interopRequireDefault(require("./defaults"));
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 PassageConfigure = /*#__PURE__*/function (_HTMLElement) {
43
+ (0, _inherits2["default"])(PassageConfigure, _HTMLElement);
44
+
45
+ var _super = _createSuper(PassageConfigure);
46
+
47
+ function PassageConfigure() {
48
+ var _this;
49
+
50
+ (0, _classCallCheck2["default"])(this, PassageConfigure);
51
+ _this = _super.call(this);
52
+ _this._model = PassageConfigure.createDefaultModel();
53
+ _this._configuration = _defaults["default"].configuration;
54
+ return _this;
55
+ }
56
+
57
+ (0, _createClass2["default"])(PassageConfigure, [{
58
+ key: "model",
59
+ set: function set(m) {
60
+ this._model = PassageConfigure.createDefaultModel(m);
61
+ this.render();
62
+ }
63
+ }, {
64
+ key: "configuration",
65
+ set: function set(c) {
66
+ this._configuration = c;
67
+ this.render();
68
+ }
69
+ }, {
70
+ key: "connectedCallback",
71
+ value: function connectedCallback() {
72
+ this.render();
73
+ }
74
+ }, {
75
+ key: "modelChanged",
76
+ value: function modelChanged(m) {
77
+ this._model = m;
78
+ this.dispatchEvent(new _pieConfigureEvents.ModelUpdatedEvent(this._model), true);
79
+ this.render();
80
+ }
81
+ }, {
82
+ key: "onConfigurationChanged",
83
+ value: function onConfigurationChanged(c) {
84
+ this._configuration = c;
85
+ this.render();
86
+ }
87
+ }, {
88
+ key: "insertImage",
89
+ value: function insertImage(handler) {
90
+ this.dispatchEvent(new _pieConfigureEvents.InsertImageEvent(handler));
91
+ }
92
+ }, {
93
+ key: "onDeleteImage",
94
+ value: function onDeleteImage(src, done) {
95
+ this.dispatchEvent(new _pieConfigureEvents.DeleteImageEvent(src, done));
96
+ }
97
+ }, {
98
+ key: "insertSound",
99
+ value: function insertSound(handler) {
100
+ this.dispatchEvent(new _pieConfigureEvents.InsertSoundEvent(handler));
101
+ }
102
+ }, {
103
+ key: "onDeleteSound",
104
+ value: function onDeleteSound(src, done) {
105
+ this.dispatchEvent(new _pieConfigureEvents.DeleteSoundEvent(src, done));
106
+ }
107
+ }, {
108
+ key: "render",
109
+ value: function render() {
110
+ if (this._model) {
111
+ var el = /*#__PURE__*/_react["default"].createElement(_design["default"], {
112
+ model: this._model,
113
+ configuration: this._configuration,
114
+ onModelChanged: this.modelChanged.bind(this),
115
+ onConfigurationChanged: this.onConfigurationChanged.bind(this),
116
+ imageSupport: {
117
+ add: this.insertImage.bind(this),
118
+ "delete": this.onDeleteImage.bind(this)
119
+ },
120
+ uploadSoundSupport: {
121
+ add: this.insertSound.bind(this),
122
+ "delete": this.onDeleteSound.bind(this)
123
+ }
124
+ });
125
+
126
+ _reactDom["default"].render(el, this);
127
+ }
128
+ }
129
+ }]);
130
+ return PassageConfigure;
131
+ }( /*#__PURE__*/(0, _wrapNativeSuper2["default"])(HTMLElement));
132
+
133
+ exports["default"] = PassageConfigure;
134
+ (0, _defineProperty2["default"])(PassageConfigure, "createDefaultModel", function () {
135
+ var model = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
136
+ return _objectSpread(_objectSpread({}, _defaults["default"].model), model);
137
+ });
138
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.js"],"names":["PassageConfigure","_model","createDefaultModel","_configuration","defaultValues","configuration","m","render","c","dispatchEvent","ModelUpdatedEvent","handler","InsertImageEvent","src","done","DeleteImageEvent","InsertSoundEvent","DeleteSoundEvent","el","React","createElement","Main","model","onModelChanged","modelChanged","bind","onConfigurationChanged","imageSupport","add","insertImage","onDeleteImage","uploadSoundSupport","insertSound","onDeleteSound","ReactDOM","HTMLElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAOA;;;;;;;;;;IAEqBA,gB;;;;;AAMnB,8BAAc;AAAA;;AAAA;AACZ;AACA,UAAKC,MAAL,GAAcD,gBAAgB,CAACE,kBAAjB,EAAd;AACA,UAAKC,cAAL,GAAsBC,qBAAcC,aAApC;AAHY;AAIb;;;;SAED,aAAUC,CAAV,EAAa;AACX,WAAKL,MAAL,GAAcD,gBAAgB,CAACE,kBAAjB,CAAoCI,CAApC,CAAd;AACA,WAAKC,MAAL;AACD;;;SAED,aAAkBC,CAAlB,EAAqB;AACnB,WAAKL,cAAL,GAAsBK,CAAtB;AACA,WAAKD,MAAL;AACD;;;WAED,6BAAoB;AAClB,WAAKA,MAAL;AACD;;;WAED,sBAAaD,CAAb,EAAgB;AACd,WAAKL,MAAL,GAAcK,CAAd;AACA,WAAKG,aAAL,CAAmB,IAAIC,qCAAJ,CAAsB,KAAKT,MAA3B,CAAnB,EAAuD,IAAvD;AACA,WAAKM,MAAL;AACD;;;WAED,gCAAuBC,CAAvB,EAA0B;AACxB,WAAKL,cAAL,GAAsBK,CAAtB;AAEA,WAAKD,MAAL;AACD;;;WAED,qBAAYI,OAAZ,EAAqB;AACnB,WAAKF,aAAL,CAAmB,IAAIG,oCAAJ,CAAqBD,OAArB,CAAnB;AACD;;;WAED,uBAAcE,GAAd,EAAmBC,IAAnB,EAAyB;AACvB,WAAKL,aAAL,CAAmB,IAAIM,oCAAJ,CAAqBF,GAArB,EAA0BC,IAA1B,CAAnB;AACD;;;WAED,qBAAYH,OAAZ,EAAqB;AACnB,WAAKF,aAAL,CAAmB,IAAIO,oCAAJ,CAAqBL,OAArB,CAAnB;AACD;;;WAED,uBAAcE,GAAd,EAAmBC,IAAnB,EAAyB;AACvB,WAAKL,aAAL,CAAmB,IAAIQ,oCAAJ,CAAqBJ,GAArB,EAA0BC,IAA1B,CAAnB;AACD;;;WAED,kBAAS;AACP,UAAI,KAAKb,MAAT,EAAiB;AACf,YAAMiB,EAAE,gBAAGC,kBAAMC,aAAN,CAAoBC,kBAApB,EAA0B;AACnCC,UAAAA,KAAK,EAAE,KAAKrB,MADuB;AAEnCI,UAAAA,aAAa,EAAE,KAAKF,cAFe;AAGnCoB,UAAAA,cAAc,EAAE,KAAKC,YAAL,CAAkBC,IAAlB,CAAuB,IAAvB,CAHmB;AAInCC,UAAAA,sBAAsB,EAAE,KAAKA,sBAAL,CAA4BD,IAA5B,CAAiC,IAAjC,CAJW;AAKnCE,UAAAA,YAAY,EAAE;AACZC,YAAAA,GAAG,EAAE,KAAKC,WAAL,CAAiBJ,IAAjB,CAAsB,IAAtB,CADO;AAEZ,sBAAQ,KAAKK,aAAL,CAAmBL,IAAnB,CAAwB,IAAxB;AAFI,WALqB;AASnCM,UAAAA,kBAAkB,EAAE;AAClBH,YAAAA,GAAG,EAAE,KAAKI,WAAL,CAAiBP,IAAjB,CAAsB,IAAtB,CADa;AAElB,sBAAQ,KAAKQ,aAAL,CAAmBR,IAAnB,CAAwB,IAAxB;AAFU;AATe,SAA1B,CAAX;;AAeAS,6BAAS3B,MAAT,CAAgBW,EAAhB,EAAoB,IAApB;AACD;AACF;;;kDAzE2CiB,W;;;iCAAzBnC,gB,wBACS;AAAA,MAACsB,KAAD,uEAAS,EAAT;AAAA,yCACvBlB,qBAAckB,KADS,GAEvBA,KAFuB;AAAA,C","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport Main from './design';\nimport {\n ModelUpdatedEvent,\n DeleteImageEvent,\n InsertImageEvent,\n InsertSoundEvent,\n DeleteSoundEvent,\n} from '@pie-framework/pie-configure-events';\nimport defaultValues from './defaults';\n\nexport default class PassageConfigure extends HTMLElement {\n static createDefaultModel = (model = {}) => ({\n ...defaultValues.model,\n ...model,\n });\n\n constructor() {\n super();\n this._model = PassageConfigure.createDefaultModel();\n this._configuration = defaultValues.configuration;\n }\n\n set model(m) {\n this._model = PassageConfigure.createDefaultModel(m);\n this.render();\n }\n\n set configuration(c) {\n this._configuration = c;\n this.render();\n }\n\n connectedCallback() {\n this.render();\n }\n\n modelChanged(m) {\n this._model = m;\n this.dispatchEvent(new ModelUpdatedEvent(this._model), true);\n this.render();\n }\n\n onConfigurationChanged(c) {\n this._configuration = c;\n\n this.render();\n }\n\n insertImage(handler) {\n this.dispatchEvent(new InsertImageEvent(handler));\n }\n\n onDeleteImage(src, done) {\n this.dispatchEvent(new DeleteImageEvent(src, done));\n }\n\n insertSound(handler) {\n this.dispatchEvent(new InsertSoundEvent(handler));\n }\n\n onDeleteSound(src, done) {\n this.dispatchEvent(new DeleteSoundEvent(src, done));\n }\n\n render() {\n if (this._model) {\n const el = React.createElement(Main, {\n model: this._model,\n configuration: this._configuration,\n onModelChanged: this.modelChanged.bind(this),\n onConfigurationChanged: this.onConfigurationChanged.bind(this),\n imageSupport: {\n add: this.insertImage.bind(this),\n delete: this.onDeleteImage.bind(this),\n },\n uploadSoundSupport: {\n add: this.insertSound.bind(this),\n delete: this.onDeleteSound.bind(this),\n },\n });\n\n ReactDOM.render(el, this);\n }\n }\n}"],"file":"index.js"}
@@ -0,0 +1,19 @@
1
+ {
2
+ "name": "@pie-element/passage-configure",
3
+ "private": true,
4
+ "version": "1.1.0",
5
+ "description": "",
6
+ "main": "lib/index.js",
7
+ "module": "src/index.js",
8
+ "author": "pie framework developers",
9
+ "license": "ISC",
10
+ "dependencies": {
11
+ "@material-ui/core": "^3.9.2",
12
+ "@pie-framework/pie-configure-events": "^1.3.0",
13
+ "@pie-lib/pie-toolbox": "1.24.0",
14
+ "lodash": "^4.17.15",
15
+ "prop-types": "^15.6.2",
16
+ "react": "^16.8.1",
17
+ "react-dom": "^16.8.1"
18
+ }
19
+ }
@@ -3,6 +3,18 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [1.3.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/passage-controller@1.2.0...@pie-element/passage-controller@1.3.0) (2024-06-24)
7
+
8
+
9
+ ### Features
10
+
11
+ * **passage:** added validation model for passage PD-3770 ([dfcd62f](https://github.com/pie-framework/pie-elements/commit/dfcd62f8abb79226a8875f938328a97372bfcc79))
12
+ * **passage:** Improvements for passage configure & controller ([ba8f690](https://github.com/pie-framework/pie-elements/commit/ba8f690d60a2faca8eaacf36bae5b80cff18f894))
13
+
14
+
15
+
16
+
17
+
6
18
  # [1.2.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/passage-controller@1.1.0...@pie-element/passage-controller@1.2.0) (2024-03-04)
7
19
 
8
20
 
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ var _default = {
8
+ teacherInstructionsEnabled: false,
9
+ titleEnabled: true,
10
+ subtitleEnabled: true,
11
+ textEnabled: true,
12
+ authorEnabled: true,
13
+ passages: [{
14
+ teacherInstructions: '',
15
+ title: '',
16
+ subtitle: '',
17
+ author: '',
18
+ text: ''
19
+ }]
20
+ };
21
+ exports["default"] = _default;
22
+ //# sourceMappingURL=defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/defaults.js"],"names":["teacherInstructionsEnabled","titleEnabled","subtitleEnabled","textEnabled","authorEnabled","passages","teacherInstructions","title","subtitle","author","text"],"mappings":";;;;;;eAAe;AACbA,EAAAA,0BAA0B,EAAE,KADf;AAEbC,EAAAA,YAAY,EAAE,IAFD;AAGbC,EAAAA,eAAe,EAAE,IAHJ;AAIbC,EAAAA,WAAW,EAAE,IAJA;AAKbC,EAAAA,aAAa,EAAE,IALF;AAMbC,EAAAA,QAAQ,EAAE,CACR;AACEC,IAAAA,mBAAmB,EAAE,EADvB;AAEEC,IAAAA,KAAK,EAAE,EAFT;AAGEC,IAAAA,QAAQ,EAAE,EAHZ;AAIEC,IAAAA,MAAM,EAAE,EAJV;AAKEC,IAAAA,IAAI,EAAE;AALR,GADQ;AANG,C","sourcesContent":["export default {\n teacherInstructionsEnabled: false,\n titleEnabled: true,\n subtitleEnabled: true,\n textEnabled: true,\n authorEnabled: true,\n passages: [\n {\n teacherInstructions: '',\n title: '',\n subtitle: '',\n author: '',\n text: '',\n }\n ],\n};\n"],"file":"defaults.js"}
@@ -5,43 +5,73 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
+ exports.createDefaultModel = createDefaultModel;
8
9
  exports.model = model;
10
+ exports.validate = exports.normalize = void 0;
9
11
 
10
12
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
13
 
12
14
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
15
 
16
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
17
+
14
18
  var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
15
19
 
20
+ var _defaults = _interopRequireDefault(require("./defaults"));
21
+
22
+ 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; }
23
+
24
+ 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; }
25
+
26
+ var getContent = function getContent(html) {
27
+ return (html || '').replace(/(<(?!img|iframe)([^>]+)>)/gi, '');
28
+ };
29
+
30
+ function createDefaultModel() {
31
+ var model = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
32
+ return new Promise(function (resolve) {
33
+ resolve(_objectSpread(_objectSpread({}, _defaults["default"]), model));
34
+ });
35
+ }
36
+
37
+ var normalize = function normalize(question) {
38
+ return _objectSpread(_objectSpread({}, _defaults["default"]), question);
39
+ };
16
40
  /**
17
41
  *
18
42
  * @param {*} question
19
43
  * @param {*} session
20
44
  * @param {*} env
21
45
  */
46
+
47
+
48
+ exports.normalize = normalize;
49
+
22
50
  function model(_x, _x2, _x3) {
23
51
  return _model.apply(this, arguments);
24
52
  }
25
53
 
26
54
  function _model() {
27
55
  _model = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(question, session, env) {
28
- var _ref, role, mode, response;
56
+ var _ref, role, mode, normalizedQuestion, out;
29
57
 
30
58
  return _regenerator["default"].wrap(function _callee$(_context) {
31
59
  while (1) {
32
60
  switch (_context.prev = _context.next) {
33
61
  case 0:
34
62
  _ref = env || {}, role = _ref.role, mode = _ref.mode;
35
- response = (0, _cloneDeep["default"])(question);
36
- response.showTeacherInstructions = role === 'instructor' && (mode === 'view' || mode === 'evaluate'); // if we don't show the teacher instructions don't pass them on
63
+ normalizedQuestion = normalize(question);
64
+ out = _objectSpread(_objectSpread({}, normalizedQuestion), {}, {
65
+ teacherInstructions: null
66
+ });
37
67
 
38
- if (!response.showTeacherInstructions) {
39
- response.passages.forEach(function (passage) {
40
- delete passage.teacherInstructions;
41
- });
68
+ if (role === 'instructor' && (mode === 'view' || mode === 'evaluate')) {
69
+ if (normalizedQuestion.teacherInstructionsEnabled) {
70
+ out.teacherInstructions = normalizedQuestion.teacherInstructions;
71
+ }
42
72
  }
43
73
 
44
- return _context.abrupt("return", response);
74
+ return _context.abrupt("return", out);
45
75
 
46
76
  case 5:
47
77
  case "end":
@@ -52,4 +82,20 @@ function _model() {
52
82
  }));
53
83
  return _model.apply(this, arguments);
54
84
  }
85
+
86
+ var validate = function validate() {
87
+ var model = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
88
+ var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
89
+ var errors = {};
90
+ ['teacherInstructions', 'title', 'subtitle', 'author', 'text'].forEach(function (field) {
91
+ var _config$field;
92
+
93
+ if ((_config$field = config[field]) !== null && _config$field !== void 0 && _config$field.required && !getContent(model[field])) {
94
+ errors[field] = 'This field is required.';
95
+ }
96
+ });
97
+ return errors;
98
+ };
99
+
100
+ exports.validate = validate;
55
101
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["model","question","session","env","role","mode","response","showTeacherInstructions","passages","forEach","passage","teacherInstructions"],"mappings":";;;;;;;;;;;;;AAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;SACsBA,K;;;;;yFAAf,iBAAqBC,QAArB,EAA+BC,OAA/B,EAAwCC,GAAxC;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,mBACkBA,GAAG,IAAI,EADzB,EACGC,IADH,QACGA,IADH,EACSC,IADT,QACSA,IADT;AAECC,YAAAA,QAFD,GAEY,2BAAUL,QAAV,CAFZ;AAILK,YAAAA,QAAQ,CAACC,uBAAT,GAAmCH,IAAI,KAAK,YAAT,KAA0BC,IAAI,KAAK,MAAT,IAAmBA,IAAI,KAAK,UAAtD,CAAnC,CAJK,CAML;;AACA,gBAAI,CAACC,QAAQ,CAACC,uBAAd,EAAuC;AACrCD,cAAAA,QAAQ,CAACE,QAAT,CAAkBC,OAAlB,CAA0B,UAACC,OAAD,EAAa;AACrC,uBAAOA,OAAO,CAACC,mBAAf;AACD,eAFD;AAGD;;AAXI,6CAaEL,QAbF;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G","sourcesContent":["import cloneDeep from 'lodash/cloneDeep';\n\n/**\n *\n * @param {*} question\n * @param {*} session\n * @param {*} env\n */\nexport async function model(question, session, env) {\n const { role, mode } = env || {};\n const response = cloneDeep(question);\n\n response.showTeacherInstructions = role === 'instructor' && (mode === 'view' || mode === 'evaluate');\n\n // if we don't show the teacher instructions don't pass them on\n if (!response.showTeacherInstructions) {\n response.passages.forEach((passage) => {\n delete passage.teacherInstructions;\n });\n }\n\n return response;\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.js"],"names":["getContent","html","replace","createDefaultModel","model","Promise","resolve","defaults","normalize","question","session","env","role","mode","normalizedQuestion","out","teacherInstructions","teacherInstructionsEnabled","validate","config","errors","forEach","field","required"],"mappings":";;;;;;;;;;;;;;;;;AAAA;;AACA;;;;;;AAEA,IAAMA,UAAU,GAAG,SAAbA,UAAa,CAACC,IAAD;AAAA,SAAU,CAACA,IAAI,IAAI,EAAT,EAAaC,OAAb,CAAqB,6BAArB,EAAoD,EAApD,CAAV;AAAA,CAAnB;;AAEO,SAASC,kBAAT,GAAwC;AAAA,MAAZC,KAAY,uEAAJ,EAAI;AAC7C,SAAO,IAAIC,OAAJ,CAAY,UAACC,OAAD,EAAa;AAC9BA,IAAAA,OAAO,iCACFC,oBADE,GAEFH,KAFE,EAAP;AAID,GALM,CAAP;AAMD;;AAEM,IAAMI,SAAS,GAAG,SAAZA,SAAY,CAACC,QAAD;AAAA,yCACpBF,oBADoB,GAEpBE,QAFoB;AAAA,CAAlB;AAKP;AACA;AACA;AACA;AACA;AACA;;;;;SACsBL,K;;;;;yFAAf,iBAAqBK,QAArB,EAA+BC,OAA/B,EAAwCC,GAAxC;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,mBACkBA,GAAG,IAAI,EADzB,EACGC,IADH,QACGA,IADH,EACSC,IADT,QACSA,IADT;AAECC,YAAAA,kBAFD,GAEsBN,SAAS,CAACC,QAAD,CAF/B;AAICM,YAAAA,GAJD,mCAKAD,kBALA;AAMHE,cAAAA,mBAAmB,EAAE;AANlB;;AASL,gBAAIJ,IAAI,KAAK,YAAT,KAA0BC,IAAI,KAAK,MAAT,IAAmBA,IAAI,KAAK,UAAtD,CAAJ,EAAuE;AACrE,kBAAIC,kBAAkB,CAACG,0BAAvB,EAAmD;AACjDF,gBAAAA,GAAG,CAACC,mBAAJ,GAA0BF,kBAAkB,CAACE,mBAA7C;AACD;AACF;;AAbI,6CAeED,GAfF;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;AAkBA,IAAMG,QAAQ,GAAG,SAAXA,QAAW,GAA6B;AAAA,MAA5Bd,KAA4B,uEAApB,EAAoB;AAAA,MAAhBe,MAAgB,uEAAP,EAAO;AACnD,MAAMC,MAAM,GAAG,EAAf;AAEA,GAAC,qBAAD,EAAwB,OAAxB,EAAiC,UAAjC,EAA6C,QAA7C,EAAuD,MAAvD,EAA+DC,OAA/D,CAAuE,UAACC,KAAD,EAAW;AAAA;;AAChF,QAAI,iBAAAH,MAAM,CAACG,KAAD,CAAN,wDAAeC,QAAf,IAA2B,CAACvB,UAAU,CAACI,KAAK,CAACkB,KAAD,CAAN,CAA1C,EAA0D;AACxDF,MAAAA,MAAM,CAACE,KAAD,CAAN,GAAgB,yBAAhB;AACD;AACF,GAJD;AAMA,SAAOF,MAAP;AACD,CAVM","sourcesContent":["import cloneDeep from 'lodash/cloneDeep';\nimport defaults from './defaults';\n\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe)([^>]+)>)/gi, '');\n\nexport function createDefaultModel(model = {}) {\n return new Promise((resolve) => {\n resolve({\n ...defaults,\n ...model,\n });\n });\n}\n\nexport const normalize = (question) => ({\n ...defaults,\n ...question,\n});\n\n/**\n *\n * @param {*} question\n * @param {*} session\n * @param {*} env\n */\nexport async function model(question, session, env) {\n const { role, mode } = env || {};\n const normalizedQuestion = normalize(question);\n\n const out = {\n ...normalizedQuestion,\n teacherInstructions: null\n };\n\n if (role === 'instructor' && (mode === 'view' || mode === 'evaluate')) {\n if (normalizedQuestion.teacherInstructionsEnabled) {\n out.teacherInstructions = normalizedQuestion.teacherInstructions;\n }\n }\n\n return out;\n}\n\nexport const validate = (model = {}, config = {}) => {\n const errors = {};\n\n ['teacherInstructions', 'title', 'subtitle', 'author', 'text'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n return errors;\n};\n"],"file":"index.js"}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@pie-element/passage-controller",
3
3
  "private": true,
4
- "version": "1.2.0",
4
+ "version": "1.3.0",
5
5
  "description": "",
6
6
  "main": "lib/index.js",
7
7
  "module": "src/index.js",