@pie-element/number-line 5.10.0 → 5.10.1-beta.587

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.
Files changed (73) hide show
  1. package/CHANGELOG.md +504 -0
  2. package/configure/CHANGELOG.md +429 -0
  3. package/configure/lib/arrows.js +3 -3
  4. package/configure/lib/arrows.js.map +1 -1
  5. package/configure/lib/card-bar.js +10 -3
  6. package/configure/lib/card-bar.js.map +1 -1
  7. package/configure/lib/defaults.js +21 -2
  8. package/configure/lib/defaults.js.map +1 -1
  9. package/configure/lib/domain.js +3 -3
  10. package/configure/lib/domain.js.map +1 -1
  11. package/configure/lib/index.js +61 -8
  12. package/configure/lib/index.js.map +1 -1
  13. package/configure/lib/main.js +212 -92
  14. package/configure/lib/main.js.map +1 -1
  15. package/configure/lib/number-text-field.js +4 -4
  16. package/configure/lib/number-text-field.js.map +1 -1
  17. package/configure/lib/point-config.js +7 -4
  18. package/configure/lib/point-config.js.map +1 -1
  19. package/configure/lib/size.js +2 -2
  20. package/configure/lib/size.js.map +1 -1
  21. package/configure/lib/ticks.js +8 -4
  22. package/configure/lib/ticks.js.map +1 -1
  23. package/configure/lib/utils.js +14 -0
  24. package/configure/lib/utils.js.map +1 -0
  25. package/configure/package.json +4 -4
  26. package/controller/CHANGELOG.md +90 -0
  27. package/controller/lib/defaults.js +36 -23
  28. package/controller/lib/defaults.js.map +1 -1
  29. package/controller/lib/index.js +179 -64
  30. package/controller/lib/index.js.map +1 -1
  31. package/controller/package.json +3 -3
  32. package/docs/config-schema.json +16 -0
  33. package/docs/config-schema.json.md +12 -0
  34. package/docs/demo/config.js +2 -2
  35. package/docs/demo/generate.js +22 -26
  36. package/docs/demo/index.html +1 -1
  37. package/docs/pie-schema.json +29 -13
  38. package/docs/pie-schema.json.md +23 -8
  39. package/lib/data-converter.js +1 -1
  40. package/lib/data-converter.js.map +1 -1
  41. package/lib/draggable/index.js +1 -1
  42. package/lib/draggable/index.js.map +1 -1
  43. package/lib/index.js +16 -5
  44. package/lib/index.js.map +1 -1
  45. package/lib/number-line/colors.js +1 -1
  46. package/lib/number-line/feedback.js.map +1 -1
  47. package/lib/number-line/graph/arrow.js.map +1 -1
  48. package/lib/number-line/graph/elements/base.js.map +1 -1
  49. package/lib/number-line/graph/elements/builder.js.map +1 -1
  50. package/lib/number-line/graph/elements/line.js +3 -3
  51. package/lib/number-line/graph/elements/line.js.map +1 -1
  52. package/lib/number-line/graph/elements/point.js +12 -4
  53. package/lib/number-line/graph/elements/point.js.map +1 -1
  54. package/lib/number-line/graph/elements/ray.js +12 -5
  55. package/lib/number-line/graph/elements/ray.js.map +1 -1
  56. package/lib/number-line/graph/index.js +6 -4
  57. package/lib/number-line/graph/index.js.map +1 -1
  58. package/lib/number-line/graph/line.js.map +1 -1
  59. package/lib/number-line/graph/stacks.js +1 -1
  60. package/lib/number-line/graph/stacks.js.map +1 -1
  61. package/lib/number-line/graph/tick-utils.js +14 -10
  62. package/lib/number-line/graph/tick-utils.js.map +1 -1
  63. package/lib/number-line/graph/ticks.js +58 -14
  64. package/lib/number-line/graph/ticks.js.map +1 -1
  65. package/lib/number-line/index.js +68 -45
  66. package/lib/number-line/index.js.map +1 -1
  67. package/lib/number-line/point-chooser/button.js.map +1 -1
  68. package/lib/number-line/point-chooser/index.js +1 -1
  69. package/lib/number-line/point-chooser/index.js.map +1 -1
  70. package/lib/number-line/point-chooser/styles.js +1 -1
  71. package/lib/number-line/point-chooser/styles.js.map +1 -1
  72. package/lib/number-line/transitions/fade.js.map +1 -1
  73. package/package.json +9 -8
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
-
5
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
4
 
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
@@ -35,13 +35,49 @@ var _pieConfigureEvents = require("@pie-framework/pie-configure-events");
35
35
 
36
36
  var defaults = _interopRequireWildcard(require("./defaults"));
37
37
 
38
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
38
+ var math = _interopRequireWildcard(require("mathjs"));
39
+
40
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
41
+
42
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
43
+
44
+ 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; }
39
45
 
40
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
46
+ 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; }
41
47
 
42
48
  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); }; }
43
49
 
44
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
50
+ 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; } }
51
+
52
+ // this function is duplicated in controller; at some point, use the same shared function
53
+ var updateTicks = function updateTicks(model) {
54
+ var _model$graph = model.graph;
55
+ _model$graph = _model$graph === void 0 ? {} : _model$graph;
56
+ var domain = _model$graph.domain,
57
+ labelStep = _model$graph.labelStep,
58
+ _model$graph$ticks = _model$graph.ticks,
59
+ ticks = _model$graph$ticks === void 0 ? {} : _model$graph$ticks;
60
+ var minor = ticks.minor,
61
+ major = ticks.major;
62
+
63
+ if (domain) {
64
+ domain.min = Number((domain.min || 0).toFixed(2));
65
+ domain.max = Number((domain.max || 0).toFixed(2));
66
+ }
67
+
68
+ if (labelStep && typeof labelStep === 'string' && labelStep.match(/^[1-9][0-9]*\/[1-9][0-9]*$/g)) {
69
+ model.graph.fraction = true; // update the ticks frequency and label value to match the label step if needed
70
+
71
+ var step = math.evaluate(labelStep);
72
+
73
+ if (step !== major) {
74
+ ticks.major = step;
75
+ ticks.minor = step / (major / minor);
76
+ }
77
+ }
78
+
79
+ return model;
80
+ };
45
81
 
46
82
  var NumberLine = /*#__PURE__*/function (_HTMLElement) {
47
83
  (0, _inherits2["default"])(NumberLine, _HTMLElement);
@@ -56,7 +92,7 @@ var NumberLine = /*#__PURE__*/function (_HTMLElement) {
56
92
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onChange", function (o) {
57
93
  _this._model = _objectSpread(_objectSpread({}, _this._model), o);
58
94
 
59
- _this.dispatchEvent(new _pieConfigureEvents.ModelUpdatedEvent(_this._model, true));
95
+ _this.dispatchEvent(new _pieConfigureEvents.ModelUpdatedEvent(_this._model));
60
96
 
61
97
  _this._rerender();
62
98
  });
@@ -72,13 +108,27 @@ var NumberLine = /*#__PURE__*/function (_HTMLElement) {
72
108
 
73
109
  this._rerender();
74
110
  }
111
+ }, {
112
+ key: "insertSound",
113
+ value: function insertSound(handler) {
114
+ this.dispatchEvent(new _pieConfigureEvents.InsertSoundEvent(handler));
115
+ }
116
+ }, {
117
+ key: "onDeleteSound",
118
+ value: function onDeleteSound(src, done) {
119
+ this.dispatchEvent(new _pieConfigureEvents.DeleteSoundEvent(src, done));
120
+ }
75
121
  }, {
76
122
  key: "_rerender",
77
123
  value: function _rerender() {
78
124
  var element = /*#__PURE__*/_react["default"].createElement(_main["default"], {
79
125
  model: this._model,
80
126
  configuration: this._configuration,
81
- onChange: this.onChange
127
+ onChange: this.onChange,
128
+ uploadSoundSupport: {
129
+ add: this.insertSound.bind(this),
130
+ "delete": this.onDeleteSound.bind(this)
131
+ }
82
132
  });
83
133
 
84
134
  _reactDom["default"].render(element, this);
@@ -90,6 +140,9 @@ var NumberLine = /*#__PURE__*/function (_HTMLElement) {
90
140
  exports["default"] = NumberLine;
91
141
  (0, _defineProperty2["default"])(NumberLine, "createDefaultModel", function () {
92
142
  var model = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
93
- return _objectSpread(_objectSpread({}, defaults.model), model);
143
+
144
+ var normalizedModel = _objectSpread(_objectSpread({}, defaults.model), model);
145
+
146
+ return updateTicks(normalizedModel);
94
147
  });
95
148
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["NumberLine","o","_model","dispatchEvent","ModelUpdatedEvent","_rerender","createDefaultModel","_configuration","defaults","configuration","s","element","React","createElement","Main","model","onChange","ReactDOM","render","HTMLElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;IAEqBA,U;;;;;AAMnB,wBAAc;AAAA;;AAAA;AACZ;AADY,iGAWH,UAAAC,CAAC,EAAI;AACd,YAAKC,MAAL,mCAAmB,MAAKA,MAAxB,GAAmCD,CAAnC;;AAEA,YAAKE,aAAL,CAAmB,IAAIC,qCAAJ,CAAsB,MAAKF,MAA3B,EAAmC,IAAnC,CAAnB;;AAEA,YAAKG,SAAL;AACD,KAjBa;AAEZ,UAAKH,MAAL,GAAcF,UAAU,CAACM,kBAAX,EAAd;AACA,UAAKC,cAAL,GAAsBC,QAAQ,CAACC,aAA/B;AAHY;AAIb;;;;SAED,aAAUC,CAAV,EAAa;AACX,WAAKR,MAAL,GAAcF,UAAU,CAACM,kBAAX,CAA8BI,CAA9B,CAAd;;AACA,WAAKL,SAAL;AACD;;;WAUD,qBAAY;AACV,UAAIM,OAAO,gBAAGC,kBAAMC,aAAN,CAAoBC,gBAApB,EAA0B;AACtCC,QAAAA,KAAK,EAAE,KAAKb,MAD0B;AAEtCO,QAAAA,aAAa,EAAE,KAAKF,cAFkB;AAGtCS,QAAAA,QAAQ,EAAE,KAAKA;AAHuB,OAA1B,CAAd;;AAKAC,2BAASC,MAAT,CAAgBP,OAAhB,EAAyB,IAAzB;AACD;;;kDAhCqCQ,W;;;iCAAnBnB,U,wBACS;AAAA,MAACe,KAAD,uEAAS,EAAT;AAAA,yCACvBP,QAAQ,CAACO,KADc,GAEvBA,KAFuB;AAAA,C","sourcesContent":["import Main from './main';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { ModelUpdatedEvent } from '@pie-framework/pie-configure-events';\nimport * as defaults from './defaults';\n\nexport default class NumberLine extends HTMLElement {\n static createDefaultModel = (model = {}) => ({\n ...defaults.model,\n ...model\n });\n\n constructor() {\n super();\n this._model = NumberLine.createDefaultModel();\n this._configuration = defaults.configuration;\n }\n\n set model(s) {\n this._model = NumberLine.createDefaultModel(s);\n this._rerender();\n }\n\n onChange = o => {\n this._model = { ...this._model, ...o };\n\n this.dispatchEvent(new ModelUpdatedEvent(this._model, true));\n\n this._rerender();\n };\n\n _rerender() {\n let element = React.createElement(Main, {\n model: this._model,\n configuration: this._configuration,\n onChange: this.onChange\n });\n ReactDOM.render(element, this);\n }\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.js"],"names":["updateTicks","model","graph","domain","labelStep","ticks","minor","major","min","Number","toFixed","max","match","fraction","step","math","evaluate","NumberLine","o","_model","dispatchEvent","ModelUpdatedEvent","_rerender","createDefaultModel","_configuration","defaults","configuration","s","handler","InsertSoundEvent","src","done","DeleteSoundEvent","element","React","createElement","Main","onChange","uploadSoundSupport","add","insertSound","bind","onDeleteSound","ReactDOM","render","HTMLElement","normalizedModel"],"mappings":"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","sourcesContent":["import Main from './main';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { ModelUpdatedEvent, InsertSoundEvent, DeleteSoundEvent } from '@pie-framework/pie-configure-events';\nimport * as defaults from './defaults';\nimport * as math from 'mathjs';\n\n// this function is duplicated in controller; at some point, use the same shared function\nconst updateTicks = (model) => {\n const { graph: { domain, labelStep, ticks = {} } = {} } = model;\n const { minor, major } = ticks;\n\n if (domain) {\n domain.min = Number((domain.min || 0).toFixed(2));\n domain.max = Number((domain.max || 0).toFixed(2));\n }\n\n if (labelStep && typeof labelStep === 'string' && labelStep.match(/^[1-9][0-9]*\\/[1-9][0-9]*$/g)) {\n model.graph.fraction = true;\n\n // update the ticks frequency and label value to match the label step if needed\n const step = math.evaluate(labelStep);\n\n if (step !== major) {\n ticks.major = step;\n ticks.minor = step / (major / minor);\n }\n }\n\n return model;\n};\n\nexport default class NumberLine extends HTMLElement {\n static createDefaultModel = (model = {}) => {\n const normalizedModel = {\n ...defaults.model,\n ...model,\n };\n\n return updateTicks(normalizedModel);\n };\n\n constructor() {\n super();\n this._model = NumberLine.createDefaultModel();\n this._configuration = defaults.configuration;\n }\n\n set model(s) {\n this._model = NumberLine.createDefaultModel(s);\n this._rerender();\n }\n\n onChange = (o) => {\n this._model = { ...this._model, ...o };\n\n this.dispatchEvent(new ModelUpdatedEvent(this._model));\n\n this._rerender();\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 _rerender() {\n let element = React.createElement(Main, {\n model: this._model,\n configuration: this._configuration,\n onChange: this.onChange,\n uploadSoundSupport: {\n add: this.insertSound.bind(this),\n delete: this.onDeleteSound.bind(this),\n },\n });\n\n ReactDOM.render(element, this);\n }\n}\n"],"file":"index.js"}