@pie-element/complex-rubric 2.4.1-next.17 → 2.4.1-next.5
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/lib/index.js +5 -8
- package/configure/lib/index.js.map +1 -1
- package/configure/src/index.js +6 -11
- package/docs/demo/generate.js +1 -0
- package/module/configure.js +5 -31
- package/module/demo.js +1 -0
- package/module/print-demo.js +1 -0
- package/package.json +4 -4
package/configure/lib/index.js
CHANGED
|
@@ -211,8 +211,6 @@ var ComplexRubricConfigureElement = /*#__PURE__*/function (_HTMLElement) {
|
|
|
211
211
|
|
|
212
212
|
exports["default"] = ComplexRubricConfigureElement;
|
|
213
213
|
(0, _defineProperty2["default"])(ComplexRubricConfigureElement, "createDefaultModel", function () {
|
|
214
|
-
var _sensibleDefaults$mod, _sensibleDefaults$mod2, _sensibleDefaults$mod3;
|
|
215
|
-
|
|
216
214
|
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
217
215
|
_ref$rubrics = _ref.rubrics;
|
|
218
216
|
|
|
@@ -228,13 +226,12 @@ exports["default"] = ComplexRubricConfigureElement;
|
|
|
228
226
|
_ref$rubrics$multiTra = _ref$rubrics.multiTraitRubric,
|
|
229
227
|
multiTraitRubric = _ref$rubrics$multiTra === void 0 ? {} : _ref$rubrics$multiTra,
|
|
230
228
|
model = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
|
|
231
|
-
var
|
|
232
|
-
|
|
233
|
-
return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, pieDefaults), currentModel), model), {}, {
|
|
229
|
+
var defaults = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
230
|
+
return _objectSpread(_objectSpread(_objectSpread({}, defaults), model), {}, {
|
|
234
231
|
rubrics: {
|
|
235
|
-
simpleRubric: _objectSpread(_objectSpread(
|
|
236
|
-
multiTraitRubric: _objectSpread(_objectSpread(
|
|
237
|
-
rubricless: _objectSpread(_objectSpread(
|
|
232
|
+
simpleRubric: _objectSpread(_objectSpread({}, (defaults.rubrics || {}).simpleRubric), simpleRubric),
|
|
233
|
+
multiTraitRubric: _objectSpread(_objectSpread({}, (defaults.rubrics || {}).multiTraitRubric), multiTraitRubric),
|
|
234
|
+
rubricless: _objectSpread(_objectSpread({}, (defaults.rubrics || {}).rubricless), rubricless)
|
|
238
235
|
}
|
|
239
236
|
});
|
|
240
237
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js"],"names":["MODEL_UPDATED","ModelUpdatedEvent","TYPE","RUBRIC_TAG_NAME","MULTI_TRAIT_RUBRIC_TAG_NAME","ComplexSimpleRubricConfigure","RubricConfigure","ComplexMTRConfigure","MultiTraitRubricConfigure","defineComplexRubric","customElements","get","define","prepareCustomizationObject","config","model","configuration","sensibleDefaults","ComplexRubricConfigureElement","m","reset","_model","createDefaultModel","dispatchModelUpdated","_render","e","target","preventDefault","stopImmediatePropagation","id","getAttribute","update","rubrics","dispatchEvent","canUpdateModel","debug","log","_configuration","onConfigurationChanged","bind","resetValue","c","info","onModelChanged","addEventListener","onModelUpdated","removeEventListener","element","React","createElement","Main","ReactDOM","render","HTMLElement","simpleRubric","rubricless","multiTraitRubric","
|
|
1
|
+
{"version":3,"sources":["../src/index.js"],"names":["MODEL_UPDATED","ModelUpdatedEvent","TYPE","RUBRIC_TAG_NAME","MULTI_TRAIT_RUBRIC_TAG_NAME","ComplexSimpleRubricConfigure","RubricConfigure","ComplexMTRConfigure","MultiTraitRubricConfigure","defineComplexRubric","customElements","get","define","prepareCustomizationObject","config","model","configuration","sensibleDefaults","ComplexRubricConfigureElement","m","reset","_model","createDefaultModel","dispatchModelUpdated","_render","e","target","preventDefault","stopImmediatePropagation","id","getAttribute","update","rubrics","dispatchEvent","canUpdateModel","debug","log","_configuration","onConfigurationChanged","bind","resetValue","c","info","onModelChanged","addEventListener","onModelUpdated","removeEventListener","element","React","createElement","Main","ReactDOM","render","HTMLElement","simpleRubric","rubricless","multiTraitRubric","defaults"],"mappings":"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","sourcesContent":["import { ModelUpdatedEvent } from '@pie-framework/pie-configure-events';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport RubricConfigure from '@pie-element/rubric/configure/lib';\nimport MultiTraitRubricConfigure from '@pie-element/multi-trait-rubric/configure/lib';\nimport debug from 'debug';\nimport defaults from 'lodash/defaults';\nimport Main from './main';\nimport sensibleDefaults from './defaults';\n\nconst MODEL_UPDATED = ModelUpdatedEvent.TYPE;\nconst RUBRIC_TAG_NAME = 'rubric-configure';\nconst MULTI_TRAIT_RUBRIC_TAG_NAME = 'multi-trait-rubric-configure';\n\nclass ComplexSimpleRubricConfigure extends RubricConfigure {\n}\n\nclass ComplexMTRConfigure extends MultiTraitRubricConfigure {\n}\n\nconst defineComplexRubric = () => {\n if (!customElements.get(RUBRIC_TAG_NAME)) {\n customElements.define(RUBRIC_TAG_NAME, ComplexSimpleRubricConfigure);\n }\n if (!customElements.get(MULTI_TRAIT_RUBRIC_TAG_NAME)) {\n customElements.define(MULTI_TRAIT_RUBRIC_TAG_NAME, ComplexMTRConfigure);\n }\n};\n\ndefineComplexRubric();\n\nconst prepareCustomizationObject = (config, model) => {\n const configuration = defaults(config, sensibleDefaults.configuration);\n\n return {\n configuration,\n model,\n };\n};\n\nexport default class ComplexRubricConfigureElement extends HTMLElement {\n static createDefaultModel = (\n {\n rubrics: { simpleRubric = {}, rubricless = {}, multiTraitRubric = {} } = { simpleRubric: {}, rubricless: {}, multiTraitRubric: {} },\n ...model\n } = {},\n defaults = {},\n ) =>\n {\n return {\n ...defaults,\n ...model,\n rubrics: {\n simpleRubric: {\n ...(defaults.rubrics || {}).simpleRubric,\n ...simpleRubric,\n },\n multiTraitRubric: {\n ...(defaults.rubrics || {}).multiTraitRubric,\n ...multiTraitRubric,\n },\n rubricless: {\n ...(defaults.rubrics || {}).rubricless,\n ...rubricless,\n },\n },\n }};\n\n constructor() {\n super();\n this.canUpdateModel = false;\n\n debug.log('constructor called');\n\n this._model = ComplexRubricConfigureElement.createDefaultModel();\n this._configuration = sensibleDefaults.configuration;\n\n this.onConfigurationChanged = this.onConfigurationChanged.bind(this);\n }\n\n set model(m) {\n this._model = ComplexRubricConfigureElement.createDefaultModel(m, this._model);\n\n this.canUpdateModel = true;\n this._render();\n }\n\n dispatchModelUpdated(reset) {\n const resetValue = !!reset;\n\n this.dispatchEvent(new ModelUpdatedEvent(this._model, resetValue));\n }\n\n onModelChanged = (m, reset) => {\n this._model = ComplexRubricConfigureElement.createDefaultModel(m, this._model);\n\n this.dispatchModelUpdated(reset);\n\n this._render();\n };\n\n set configuration(c) {\n const info = prepareCustomizationObject(c, this._model);\n this._configuration = info.configuration;\n\n this._render();\n }\n\n onConfigurationChanged(c) {\n this._configuration = prepareCustomizationObject(c, this._model).configuration;\n\n if (this._model) {\n this.onModelChanged(this._model);\n }\n\n this._render();\n }\n\n onModelUpdated = (e) => {\n if (e.target === this) {\n return;\n }\n\n e.preventDefault();\n e.stopImmediatePropagation();\n\n const id = e.target && e.target.getAttribute('id');\n\n if (id) {\n if (e.update) {\n this._model.rubrics[id] = e.update;\n }\n\n this.dispatchEvent(new ModelUpdatedEvent(this._model));\n }\n };\n\n connectedCallback() {\n this.addEventListener(MODEL_UPDATED, this.onModelUpdated);\n this._render();\n }\n\n disconnectedCallback() {\n this.removeEventListener(MODEL_UPDATED, this.onModelUpdated);\n }\n\n _render() {\n let element = React.createElement(Main, {\n model: this._model,\n configuration: this._configuration,\n onModelChanged: this.onModelChanged,\n onConfigurationChanged: this.onConfigurationChanged,\n canUpdateModel: this.canUpdateModel\n });\n\n ReactDOM.render(element, this);\n }\n}\n"],"file":"index.js"}
|
package/configure/src/index.js
CHANGED
|
@@ -44,28 +44,23 @@ export default class ComplexRubricConfigureElement extends HTMLElement {
|
|
|
44
44
|
rubrics: { simpleRubric = {}, rubricless = {}, multiTraitRubric = {} } = { simpleRubric: {}, rubricless: {}, multiTraitRubric: {} },
|
|
45
45
|
...model
|
|
46
46
|
} = {},
|
|
47
|
-
|
|
47
|
+
defaults = {},
|
|
48
48
|
) =>
|
|
49
49
|
{
|
|
50
|
-
const pieDefaults = sensibleDefaults?.model || {}
|
|
51
50
|
return {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
...model,
|
|
51
|
+
...defaults,
|
|
52
|
+
...model,
|
|
55
53
|
rubrics: {
|
|
56
54
|
simpleRubric: {
|
|
57
|
-
...(
|
|
58
|
-
...(currentModel.rubrics || {}).simpleRubric,
|
|
55
|
+
...(defaults.rubrics || {}).simpleRubric,
|
|
59
56
|
...simpleRubric,
|
|
60
57
|
},
|
|
61
58
|
multiTraitRubric: {
|
|
62
|
-
...(
|
|
63
|
-
...(currentModel.rubrics || {}).multiTraitRubric,
|
|
59
|
+
...(defaults.rubrics || {}).multiTraitRubric,
|
|
64
60
|
...multiTraitRubric,
|
|
65
61
|
},
|
|
66
62
|
rubricless: {
|
|
67
|
-
...(
|
|
68
|
-
...(currentModel.rubrics || {}).rubricless,
|
|
63
|
+
...(defaults.rubrics || {}).rubricless,
|
|
69
64
|
...rubricless,
|
|
70
65
|
},
|
|
71
66
|
},
|
package/docs/demo/generate.js
CHANGED
package/module/configure.js
CHANGED
|
@@ -233016,27 +233016,6 @@ const React = _dll_react;
|
|
|
233016
233016
|
const ReactDOM = _dll_react_dom;
|
|
233017
233017
|
const debug = _dll_debug;
|
|
233018
233018
|
const {defaults: defaults} = _dll_lodash;
|
|
233019
|
-
function _optionalChain(ops) {
|
|
233020
|
-
let lastAccessLHS = undefined;
|
|
233021
|
-
let value = ops[0];
|
|
233022
|
-
let i = 1;
|
|
233023
|
-
while (i < ops.length) {
|
|
233024
|
-
const op = ops[i];
|
|
233025
|
-
const fn = ops[i + 1];
|
|
233026
|
-
i += 2;
|
|
233027
|
-
if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {
|
|
233028
|
-
return undefined;
|
|
233029
|
-
}
|
|
233030
|
-
if (op === 'access' || op === 'optionalAccess') {
|
|
233031
|
-
lastAccessLHS = value;
|
|
233032
|
-
value = fn(value);
|
|
233033
|
-
} else if (op === 'call' || op === 'optionalCall') {
|
|
233034
|
-
value = fn((...args) => value.call(lastAccessLHS, ...args));
|
|
233035
|
-
lastAccessLHS = undefined;
|
|
233036
|
-
}
|
|
233037
|
-
}
|
|
233038
|
-
return value;
|
|
233039
|
-
}
|
|
233040
233019
|
const MODEL_UPDATED = ModelUpdatedEvent_1.TYPE;
|
|
233041
233020
|
const RUBRIC_TAG_NAME = 'rubric-configure';
|
|
233042
233021
|
const MULTI_TRAIT_RUBRIC_TAG_NAME = 'multi-trait-rubric-configure';
|
|
@@ -233064,26 +233043,21 @@ class ComplexRubricConfigureElement extends HTMLElement {
|
|
|
233064
233043
|
simpleRubric: {},
|
|
233065
233044
|
rubricless: {},
|
|
233066
233045
|
multiTraitRubric: {}
|
|
233067
|
-
}, ...model} = {},
|
|
233068
|
-
const pieDefaults = _optionalChain([sensibleDefaults, 'optionalAccess', _8 => _8.model]) || ({});
|
|
233046
|
+
}, ...model} = {}, defaults = {}) => {
|
|
233069
233047
|
return {
|
|
233070
|
-
...
|
|
233071
|
-
...currentModel,
|
|
233048
|
+
...defaults,
|
|
233072
233049
|
...model,
|
|
233073
233050
|
rubrics: {
|
|
233074
233051
|
simpleRubric: {
|
|
233075
|
-
...(
|
|
233076
|
-
...(currentModel.rubrics || ({})).simpleRubric,
|
|
233052
|
+
...(defaults.rubrics || ({})).simpleRubric,
|
|
233077
233053
|
...simpleRubric
|
|
233078
233054
|
},
|
|
233079
233055
|
multiTraitRubric: {
|
|
233080
|
-
...(
|
|
233081
|
-
...(currentModel.rubrics || ({})).multiTraitRubric,
|
|
233056
|
+
...(defaults.rubrics || ({})).multiTraitRubric,
|
|
233082
233057
|
...multiTraitRubric
|
|
233083
233058
|
},
|
|
233084
233059
|
rubricless: {
|
|
233085
|
-
...(
|
|
233086
|
-
...(currentModel.rubrics || ({})).rubricless,
|
|
233060
|
+
...(defaults.rubrics || ({})).rubricless,
|
|
233087
233061
|
...rubricless
|
|
233088
233062
|
}
|
|
233089
233063
|
}
|
package/module/demo.js
CHANGED
package/module/print-demo.js
CHANGED
package/package.json
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/complex-rubric",
|
|
3
3
|
"repository": "pie-framework/pie-elements",
|
|
4
|
-
"version": "2.4.1-next.
|
|
4
|
+
"version": "2.4.1-next.5+5d4f0b3fc",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
8
8
|
"dependencies": {
|
|
9
9
|
"@material-ui/core": "^3.9.2",
|
|
10
|
-
"@pie-element/multi-trait-rubric": "^3.4.1-next.
|
|
11
|
-
"@pie-element/rubric": "^3.3.1-next.
|
|
10
|
+
"@pie-element/multi-trait-rubric": "^3.4.1-next.5+5d4f0b3fc",
|
|
11
|
+
"@pie-element/rubric": "^3.3.1-next.5+5d4f0b3fc",
|
|
12
12
|
"@pie-framework/pie-player-events": "^0.1.0",
|
|
13
13
|
"classnames": "^2.2.5",
|
|
14
14
|
"debug": "^4.1.1",
|
|
15
15
|
"lodash": "^4.17.11",
|
|
16
16
|
"prop-types": "^15.7.2"
|
|
17
17
|
},
|
|
18
|
-
"gitHead": "
|
|
18
|
+
"gitHead": "5d4f0b3fc4aef3f303cdf3df051a78b8ae8e203c",
|
|
19
19
|
"scripts": {
|
|
20
20
|
"postpublish": "../../scripts/postpublish"
|
|
21
21
|
},
|