@pie-element/number-line 5.11.2 → 5.11.3-next.1016

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 (69) hide show
  1. package/CHANGELOG.md +189 -0
  2. package/configure/CHANGELOG.md +142 -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 +9 -2
  6. package/configure/lib/card-bar.js.map +1 -1
  7. package/configure/lib/defaults.js +7 -1
  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 +40 -7
  12. package/configure/lib/index.js.map +1 -1
  13. package/configure/lib/main.js +90 -15
  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 +3 -3
  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 +3 -3
  26. package/controller/CHANGELOG.md +32 -0
  27. package/controller/lib/defaults.js +0 -3
  28. package/controller/lib/defaults.js.map +1 -1
  29. package/controller/lib/index.js +89 -9
  30. package/controller/lib/index.js.map +1 -1
  31. package/controller/package.json +1 -1
  32. package/docs/config-schema.json +16 -0
  33. package/docs/config-schema.json.md +12 -0
  34. package/docs/demo/generate.js +2 -4
  35. package/docs/pie-schema.json +29 -1
  36. package/docs/pie-schema.json.md +23 -0
  37. package/lib/data-converter.js +1 -1
  38. package/lib/data-converter.js.map +1 -1
  39. package/lib/draggable/index.js +1 -1
  40. package/lib/index.js +16 -5
  41. package/lib/index.js.map +1 -1
  42. package/lib/number-line/colors.js +1 -1
  43. package/lib/number-line/feedback.js.map +1 -1
  44. package/lib/number-line/graph/elements/line.js +3 -3
  45. package/lib/number-line/graph/elements/line.js.map +1 -1
  46. package/lib/number-line/graph/elements/point.js +1 -1
  47. package/lib/number-line/graph/elements/point.js.map +1 -1
  48. package/lib/number-line/graph/elements/ray.js +12 -5
  49. package/lib/number-line/graph/elements/ray.js.map +1 -1
  50. package/lib/number-line/graph/index.js +6 -4
  51. package/lib/number-line/graph/index.js.map +1 -1
  52. package/lib/number-line/graph/stacks.js +1 -1
  53. package/lib/number-line/graph/stacks.js.map +1 -1
  54. package/lib/number-line/graph/tick-utils.js +11 -7
  55. package/lib/number-line/graph/tick-utils.js.map +1 -1
  56. package/lib/number-line/graph/ticks.js +58 -14
  57. package/lib/number-line/graph/ticks.js.map +1 -1
  58. package/lib/number-line/index.js +10 -9
  59. package/lib/number-line/index.js.map +1 -1
  60. package/lib/number-line/point-chooser/index.js +1 -1
  61. package/lib/number-line/point-chooser/index.js.map +1 -1
  62. package/lib/number-line/transitions/fade.js.map +1 -1
  63. package/package.json +5 -5
  64. package/module/configure.js +0 -1335
  65. package/module/controller.js +0 -22387
  66. package/module/demo.js +0 -134
  67. package/module/element.js +0 -10272
  68. package/module/index.html +0 -16
  69. package/module/manifest.json +0 -14
@@ -41,13 +41,13 @@ var _isNumber = _interopRequireDefault(require("lodash/isNumber"));
41
41
 
42
42
  var _renderUi = require("@pie-lib/render-ui");
43
43
 
44
- 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; }
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; }
45
45
 
46
- 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; }
47
47
 
48
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); }; }
49
49
 
50
- 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
51
 
52
52
  var duration = '150ms';
53
53
  var style = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/number-line/graph/elements/line.jsx"],"names":["duration","style","line","stroke","color","primary","cursor","strokeWidth","transition","opacity","disabled","selected","primaryDark","correct","incorrect","Line","props","state","left","right","nextProps","position","setState","side","p","domain","min","max","newState","d","newPosition","onMoveLine","interval","empty","y","classes","xScale","context","onDrag","onMove","onMoveLeft","bind","onMoveRight","onDragLeft","onDragRight","is","onMouseDown","e","nativeEvent","preventDefault","onLineDragStart","startX","clientX","onLineClick","endX","deltaX","Math","abs","onToggleSelect","onRectClick","onLineDragStop","dd","invertedX","invert","lastX","scaledLineBounds","lineClass","common","handle","React","Component","PropTypes","shape","bool","isRequired","number","func","onDragStart","onDragStop","undefined","snapValue"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;AAEA,IAAMA,QAAQ,GAAG,OAAjB;AAEA,IAAMC,KAAK,GAAG;AACZC,EAAAA,IAAI,EAAE;AACJ,sBAAkB;AAChBC,MAAAA,MAAM,EAAEC,gBAAMC,OAAN,EADQ;AAEhBC,MAAAA,MAAM,EAAE,SAFQ;AAGhBC,MAAAA,WAAW,EAAE,KAHG;AAIhBC,MAAAA,UAAU,oBAAaR,QAAb,2CACKA,QADL,oCAEDA,QAFC;AAJM,KADd;AASJ,kCAA8B;AAC5BS,MAAAA,OAAO,EAAE,GADmB;AAE5B,wBAAkB;AAChBA,QAAAA,OAAO,EAAE,GADO;AAEhBF,QAAAA,WAAW,EAAE;AAFG;AAFU;AAT1B,GADM;AAkBZG,EAAAA,QAAQ,EAAE;AACRJ,IAAAA,MAAM,EAAE,aADA;AAERG,IAAAA,OAAO,EAAE;AAFD,GAlBE;AAsBZE,EAAAA,QAAQ,EAAE;AACR,sBAAkB;AAChBR,MAAAA,MAAM,EAAEC,gBAAMQ,WAAN;AADQ,KADV;AAIR,gBAAY;AACVT,MAAAA,MAAM,EAAEC,gBAAMQ,WAAN;AADE;AAJJ,GAtBE;AA8BZC,EAAAA,OAAO,EAAE;AACP,sBAAkB;AAChBP,MAAAA,MAAM,EAAE,SADQ;AAEhBH,MAAAA,MAAM,EAAEC,gBAAMS,OAAN;AAFQ;AADX,GA9BG;AAoCZC,EAAAA,SAAS,EAAE;AACT,sBAAkB;AAChBR,MAAAA,MAAM,EAAE,SADQ;AAEhBH,MAAAA,MAAM,EAAEC,gBAAMU,SAAN;AAFQ;AADT;AApCC,CAAd;;IA4CaC,I;;;;;AAiCX,gBAAYC,KAAZ,EAAmB;AAAA;;AAAA;AACjB,8BAAMA,KAAN;AACA,UAAKC,KAAL,GAAa;AACXC,MAAAA,IAAI,EAAE,IADK;AAEXC,MAAAA,KAAK,EAAE;AAFI,KAAb;AAFiB;AAMlB;;;;WAED,0CAAiCC,SAAjC,EAA4C;AAC1C,UAAIA,SAAJ,EAAe;AAAA,YACLC,QADK,GACQD,SADR,CACLC,QADK;AAEb,aAAKC,QAAL,CAAc;AAAEJ,UAAAA,IAAI,EAAEG,QAAQ,CAACH,IAAjB;AAAuBC,UAAAA,KAAK,EAAEE,QAAQ,CAACF;AAAvC,SAAd;AACD;AACF;;;WAED,gBAAOI,IAAP,EAAaC,CAAb,EAAgB;AAAA,UACNC,MADM,GACK,KAAKT,KADV,CACNS,MADM;;AAEd,UAAID,CAAC,IAAIC,MAAM,CAACC,GAAZ,IAAmBF,CAAC,IAAIC,MAAM,CAACE,GAAnC,EAAwC;AACtC,YAAMC,QAAQ,GAAG,EAAjB;AACAA,QAAAA,QAAQ,CAACL,IAAD,CAAR,GAAiBC,CAAjB;AACA,aAAKF,QAAL,CAAcM,QAAd;AACD;AACF;;;WAED,gBAAOL,IAAP,EAAaM,CAAb,EAAgB;AAAA,UACIL,CADJ,GACU,KAAKR,KADf,CACNK,QADM;AAEd,UAAMS,WAAW,GAAG;AAAEZ,QAAAA,IAAI,EAAEM,CAAC,CAACN,IAAV;AAAgBC,QAAAA,KAAK,EAAEK,CAAC,CAACL;AAAzB,OAApB;AACAW,MAAAA,WAAW,CAACP,IAAD,CAAX,GAAoBM,CAApB;AACA,WAAKb,KAAL,CAAWe,UAAX,CAAsBD,WAAtB;AACD;;;WAED,kBAAS;AAAA;AAAA;;AAAA,wBAWH,KAAKd,KAXF;AAAA,UAELgB,QAFK,eAELA,QAFK;AAAA,UAGLC,KAHK,eAGLA,KAHK;AAAA,UAILZ,QAJK,eAILA,QAJK;AAAA,UAKLI,MALK,eAKLA,MALK;AAAA,UAMLS,CANK,eAMLA,CANK;AAAA,UAOLvB,QAPK,eAOLA,QAPK;AAAA,UAQLD,QARK,eAQLA,QARK;AAAA,UASLG,OATK,eASLA,OATK;AAAA,UAULsB,OAVK,eAULA,OAVK;AAAA,UAaCC,MAbD,GAaY,KAAKC,OAbjB,CAaCD,MAbD;AAAA,UAeCE,MAfD,GAeoB,IAfpB,CAeCA,MAfD;AAAA,UAeSC,MAfT,GAeoB,IAfpB,CAeSA,MAfT;AAgBP,UAAMC,UAAU,GAAGD,MAAM,CAACE,IAAP,CAAY,IAAZ,EAAkB,MAAlB,CAAnB;AACA,UAAMC,WAAW,GAAGH,MAAM,CAACE,IAAP,CAAY,IAAZ,EAAkB,OAAlB,CAApB;AACA,UAAME,UAAU,GAAGL,MAAM,CAACG,IAAP,CAAY,IAAZ,EAAkB,MAAlB,CAAnB;AACA,UAAMG,WAAW,GAAGN,MAAM,CAACG,IAAP,CAAY,IAAZ,EAAkB,OAAlB,CAApB;AAEA,UAAMvB,IAAI,GAAG,0BAAS,KAAKD,KAAL,CAAWC,IAApB,IAA4B,KAAKD,KAAL,CAAWC,IAAvC,GAA8CG,QAAQ,CAACH,IAApE;AACA,UAAMC,KAAK,GAAG,0BAAS,KAAKF,KAAL,CAAWE,KAApB,IACV,KAAKF,KAAL,CAAWE,KADD,GAEVE,QAAQ,CAACF,KAFb;AAIA,UAAM0B,EAAE,GAAGT,MAAM,CAACJ,QAAD,CAAN,GAAmBI,MAAM,CAAC,CAAD,CAApC;;AAEA,UAAMU,WAAW,GAAG,SAAdA,WAAc,CAAAC,CAAC;AAAA,eAAIA,CAAC,CAACC,WAAF,CAAcC,cAAd,EAAJ;AAAA,OAArB;;AACA,UAAMC,eAAe,GAAG,SAAlBA,eAAkB,CAAAH,CAAC;AAAA,eAAI,MAAI,CAACzB,QAAL,CAAc;AAAE6B,UAAAA,MAAM,EAAEJ,CAAC,CAACK;AAAZ,SAAd,CAAJ;AAAA,OAAzB;;AAEA,UAAMC,WAAW,GAAG,SAAdA,WAAc,GAAM;AAAA,2BACC,MAAI,CAACpC,KADN;AAAA,YAChBkC,MADgB,gBAChBA,MADgB;AAAA,YACRG,IADQ,gBACRA,IADQ;;AAExB,YAAI,CAACH,MAAD,IAAW,CAACG,IAAhB,EAAsB;AACpB;AACD;;AAED,YAAMC,MAAM,GAAGC,IAAI,CAACC,GAAL,CAASH,IAAI,GAAGH,MAAhB,CAAf;;AACA,YAAII,MAAM,GAAGV,EAAE,GAAG,EAAlB,EAAsB;AACpB,UAAA,MAAI,CAAC7B,KAAL,CAAW0C,cAAX;;AACA,UAAA,MAAI,CAACpC,QAAL,CAAc;AAAE6B,YAAAA,MAAM,EAAE,IAAV;AAAgBG,YAAAA,IAAI,EAAE;AAAtB,WAAd;AACD;AACF,OAXD;;AAaA,UAAMK,WAAW,GAAG,SAAdA,WAAc,GAAM;AACxB,QAAA,MAAI,CAAC3C,KAAL,CAAW0C,cAAX;AACD,OAFD;;AAIA,UAAME,cAAc,GAAG,SAAjBA,cAAiB,CAACb,CAAD,EAAIc,EAAJ,EAAW;AAChC,QAAA,MAAI,CAACvC,QAAL,CAAc;AAAEgC,UAAAA,IAAI,EAAEP,CAAC,CAACK;AAAV,SAAd;;AACA,YAAMU,SAAS,GAAG1B,MAAM,CAAC2B,MAAP,CAAcF,EAAE,CAACG,KAAH,GAAW5B,MAAM,CAAC,CAAD,CAA/B,CAAlB;AACA,YAAMN,WAAW,GAAG;AAClBZ,UAAAA,IAAI,EAAEG,QAAQ,CAACH,IAAT,GAAgB4C,SADJ;AAElB3C,UAAAA,KAAK,EAAEE,QAAQ,CAACF,KAAT,GAAiB2C;AAFN,SAApB;;AAKA,YAAI,CAAC,yBAAQhC,WAAR,EAAqB,MAAI,CAACd,KAAL,CAAWK,QAAhC,CAAL,EAAgD;AAC9C,UAAA,MAAI,CAACL,KAAL,CAAWe,UAAX,CAAsBD,WAAtB;AACD;AACF,OAXD;;AAaA,UAAMmC,gBAAgB,GAAG;AACvB/C,QAAAA,IAAI,EAAE,CAACO,MAAM,CAACC,GAAP,GAAaL,QAAQ,CAACH,IAAvB,IAA+Bc,QAA/B,GAA0Ca,EADzB;AAEvB1B,QAAAA,KAAK,EAAE,CAACM,MAAM,CAACE,GAAP,GAAaN,QAAQ,CAACF,KAAvB,IAAgCa,QAAhC,GAA2Ca;AAF3B,OAAzB;AAKA,UAAIqB,SAAS,GAAG,4BAAW/B,OAAO,CAACjC,IAAnB,mEACbiC,OAAO,CAACzB,QADK,EACMA,QADN,iDAEbyB,OAAO,CAACxB,QAFK,EAEMA,QAFN,iDAGbwB,OAAO,CAACtB,OAHK,EAGKA,OAAO,KAAK,IAHjB,iDAIbsB,OAAO,CAACrB,SAJK,EAIOD,OAAO,KAAK,KAJnB,gBAAhB;AAOA,UAAMsD,MAAM,GAAG;AACbnC,QAAAA,QAAQ,EAARA,QADa;AAEbrB,QAAAA,QAAQ,EAARA,QAFa;AAGbD,QAAAA,QAAQ,EAARA,QAHa;AAIbG,QAAAA,OAAO,EAAPA;AAJa,OAAf;AAOA,0BACE,gCAAC,qBAAD;AACE,QAAA,QAAQ,EAAEH,QADZ;AAEE,QAAA,IAAI,EAAC,GAFP;AAGE,QAAA,MAAM,EAAC,cAHT;AAIE,QAAA,IAAI,EAAE,CAACmC,EAAD,CAJR;AAKE,QAAA,MAAM,EAAEoB,gBALV;AAME,QAAA,OAAO,EAAEf,eANX;AAOE,QAAA,MAAM,EAAEU,cAPV;AAQE,QAAA,WAAW,EAAEd;AARf,sBAUE;AAAG,QAAA,SAAS,EAAEoB;AAAd,sBACE;AAAG,QAAA,SAAS,yBAAkBhC,CAAlB;AAAZ,sBACE;AACE,QAAA,CAAC,EAAEE,MAAM,CAAClB,IAAD,CADX;AAEE,QAAA,KAAK,EAAEsC,IAAI,CAACC,GAAL,CAASrB,MAAM,CAACjB,KAAD,CAAN,GAAgBiB,MAAM,CAAClB,IAAD,CAA/B,CAFT;AAGE,QAAA,IAAI,EAAC,KAHP;AAIE,QAAA,WAAW,EAAC,KAJd;AAKE,QAAA,CAAC,EAAC,IALJ;AAME,QAAA,MAAM,EAAE,EANV;AAOE,QAAA,OAAO,EAAEyC;AAPX,QADF,eAUE;AACE,QAAA,SAAS,EAAE,4BAAW,aAAX,EAA0BxB,OAAO,CAACiC,MAAlC,uCACRjC,OAAO,CAACxB,QADA,EACWA,QADX,EADb;AAIE,QAAA,EAAE,EAAEyB,MAAM,CAAClB,IAAD,CAJZ;AAKE,QAAA,EAAE,EAAEkB,MAAM,CAACjB,KAAD,CALZ;AAME,QAAA,OAAO,EAAEkC;AANX,QAVF,eAkBE,gCAAC,iBAAD,gCACMc,MADN;AAEE,QAAA,KAAK,EAAElC,KAAK,CAACf,IAFf;AAGE,QAAA,MAAM,EAAE;AACNA,UAAAA,IAAI,EAAEO,MAAM,CAACC,GAAP,GAAaL,QAAQ,CAACH,IADtB;AAENC,UAAAA,KAAK,EAAEM,MAAM,CAACE,GAAP,GAAaN,QAAQ,CAACH;AAFvB,SAHV;AAOE,QAAA,QAAQ,EAAEG,QAAQ,CAACH,IAPrB;AAQE,QAAA,MAAM,EAAEyB,UARV;AASE,QAAA,MAAM,EAAEH;AATV,SAlBF,eA6BE,gCAAC,iBAAD,gCACM2B,MADN;AAEE,QAAA,KAAK,EAAElC,KAAK,CAACd,KAFf;AAGE,QAAA,MAAM,EAAE;AACND,UAAAA,IAAI,EAAEO,MAAM,CAACC,GAAP,GAAaL,QAAQ,CAACF,KADtB;AAENA,UAAAA,KAAK,EAAEM,MAAM,CAACE,GAAP,GAAaN,QAAQ,CAACF;AAFvB,SAHV;AAOE,QAAA,QAAQ,EAAEE,QAAQ,CAACF,KAPrB;AAQE,QAAA,MAAM,EAAEyB,WARV;AASE,QAAA,MAAM,EAAEF;AATV,SA7BF,CADF,CAVF,CADF;AAwDD;;;EAxMuB2B,kBAAMC,S;;;iCAAnBvD,I,+CAEN,0B;AACHkB,EAAAA,KAAK,EAAEsC,sBAAUC,KAAV,CAAgB;AACrBtD,IAAAA,IAAI,EAAEqD,sBAAUE,IAAV,CAAeC,UADA;AAErBvD,IAAAA,KAAK,EAAEoD,sBAAUE,IAAV,CAAeC;AAFD,GAAhB,EAGJA,U;AACHrD,EAAAA,QAAQ,EAAEkD,sBAAUC,KAAV,CAAgB;AACxBtD,IAAAA,IAAI,EAAEqD,sBAAUI,MAAV,CAAiBD,UADC;AAExBvD,IAAAA,KAAK,EAAEoD,sBAAUI,MAAV,CAAiBD;AAFA,GAAhB,EAGPA,U;AACHxC,EAAAA,CAAC,EAAEqC,sBAAUI,M;AACbhE,EAAAA,QAAQ,EAAE4D,sBAAUE,I;AACpB/D,EAAAA,QAAQ,EAAE6D,sBAAUE,I;AACpB5D,EAAAA,OAAO,EAAE0D,sBAAUE,I;AACnB1C,EAAAA,UAAU,EAAEwC,sBAAUK,IAAV,CAAeF,U;AAC3BhB,EAAAA,cAAc,EAAEa,sBAAUK,IAAV,CAAeF,U;AAC/BG,EAAAA,WAAW,EAAEN,sBAAUK,I;AACvBE,EAAAA,UAAU,EAAEP,sBAAUK;;iCAlBb7D,I,kBAqBW;AACpBJ,EAAAA,QAAQ,EAAE,KADU;AAEpBuB,EAAAA,CAAC,EAAE,CAFiB;AAGpBxB,EAAAA,QAAQ,EAAE,KAHU;AAIpBG,EAAAA,OAAO,EAAEkE;AAJW,C;iCArBXhE,I,kBA4BW;AACpBqB,EAAAA,MAAM,EAAEmC,sBAAUK,IAAV,CAAeF,UADH;AAEpBM,EAAAA,SAAS,EAAET,sBAAUK,IAAV,CAAeF;AAFN,C;;eA+KT,0BAAYzE,KAAZ,EAAmBc,IAAnB,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Draggable from '../../../draggable';\nimport Point from './point';\nimport { basePropTypes } from './base';\nimport classNames from 'classnames';\nimport injectSheet from 'react-jss';\nimport isEqual from 'lodash/isEqual';\nimport isNumber from 'lodash/isNumber';\nimport { color } from '@pie-lib/render-ui';\n\nconst duration = '150ms';\n\nconst style = {\n line: {\n '& .line-handle': {\n stroke: color.primary(),\n cursor: 'pointer',\n strokeWidth: '5px',\n transition: `opacity ${duration} linear, \n stroke-width ${duration} linear,\n stroke ${duration} linear`\n },\n '&.react-draggable-dragging': {\n opacity: 0.6,\n '& .line-handle': {\n opacity: 1.0,\n strokeWidth: '12px'\n }\n }\n },\n disabled: {\n cursor: 'not-allowed',\n opacity: 0.8\n },\n selected: {\n '& .line-handle': {\n stroke: color.primaryDark()\n },\n '& circle': {\n stroke: color.primaryDark()\n }\n },\n correct: {\n '& .line-handle': {\n cursor: 'inherit',\n stroke: color.correct()\n }\n },\n incorrect: {\n '& .line-handle': {\n cursor: 'inherit',\n stroke: color.incorrect()\n }\n }\n};\n\nexport class Line extends React.Component {\n static propTypes = {\n ...basePropTypes(),\n empty: PropTypes.shape({\n left: PropTypes.bool.isRequired,\n right: PropTypes.bool.isRequired\n }).isRequired,\n position: PropTypes.shape({\n left: PropTypes.number.isRequired,\n right: PropTypes.number.isRequired\n }).isRequired,\n y: PropTypes.number,\n selected: PropTypes.bool,\n disabled: PropTypes.bool,\n correct: PropTypes.bool,\n onMoveLine: PropTypes.func.isRequired,\n onToggleSelect: PropTypes.func.isRequired,\n onDragStart: PropTypes.func,\n onDragStop: PropTypes.func\n };\n\n static defaultProps = {\n selected: false,\n y: 0,\n disabled: false,\n correct: undefined\n };\n\n static contextTypes = {\n xScale: PropTypes.func.isRequired,\n snapValue: PropTypes.func.isRequired\n };\n\n constructor(props) {\n super(props);\n this.state = {\n left: null,\n right: null\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps) {\n const { position } = nextProps;\n this.setState({ left: position.left, right: position.right });\n }\n }\n\n onDrag(side, p) {\n const { domain } = this.props;\n if (p >= domain.min && p <= domain.max) {\n const newState = {};\n newState[side] = p;\n this.setState(newState);\n }\n }\n\n onMove(side, d) {\n const { position: p } = this.props;\n const newPosition = { left: p.left, right: p.right };\n newPosition[side] = d;\n this.props.onMoveLine(newPosition);\n }\n\n render() {\n const {\n interval,\n empty,\n position,\n domain,\n y,\n selected,\n disabled,\n correct,\n classes\n } = this.props;\n\n const { xScale } = this.context;\n\n const { onDrag, onMove } = this;\n const onMoveLeft = onMove.bind(this, 'left');\n const onMoveRight = onMove.bind(this, 'right');\n const onDragLeft = onDrag.bind(this, 'left');\n const onDragRight = onDrag.bind(this, 'right');\n\n const left = isNumber(this.state.left) ? this.state.left : position.left;\n const right = isNumber(this.state.right)\n ? this.state.right\n : position.right;\n\n const is = xScale(interval) - xScale(0);\n\n const onMouseDown = e => e.nativeEvent.preventDefault();\n const onLineDragStart = e => this.setState({ startX: e.clientX });\n\n const onLineClick = () => {\n const { startX, endX } = this.state;\n if (!startX || !endX) {\n return;\n }\n\n const deltaX = Math.abs(endX - startX);\n if (deltaX < is / 10) {\n this.props.onToggleSelect();\n this.setState({ startX: null, endX: null });\n }\n };\n\n const onRectClick = () => {\n this.props.onToggleSelect();\n };\n\n const onLineDragStop = (e, dd) => {\n this.setState({ endX: e.clientX });\n const invertedX = xScale.invert(dd.lastX + xScale(0));\n const newPosition = {\n left: position.left + invertedX,\n right: position.right + invertedX\n };\n\n if (!isEqual(newPosition, this.props.position)) {\n this.props.onMoveLine(newPosition);\n }\n };\n\n const scaledLineBounds = {\n left: (domain.min - position.left) / interval * is,\n right: (domain.max - position.right) / interval * is\n };\n\n var lineClass = classNames(classes.line, {\n [classes.disabled]: disabled,\n [classes.selected]: selected,\n [classes.correct]: correct === true,\n [classes.incorrect]: correct === false\n });\n\n const common = {\n interval,\n selected,\n disabled,\n correct\n };\n\n return (\n <Draggable\n disabled={disabled}\n axis=\"x\"\n handle=\".line-handle\"\n grid={[is]}\n bounds={scaledLineBounds}\n onStart={onLineDragStart}\n onStop={onLineDragStop}\n onMouseDown={onMouseDown}\n >\n <g className={lineClass}>\n <g transform={`translate(0, ${y})`}>\n <rect\n x={xScale(left)}\n width={Math.abs(xScale(right) - xScale(left))}\n fill=\"red\"\n fillOpacity=\"0.0\"\n y=\"-8\"\n height={16}\n onClick={onRectClick}\n />\n <line\n className={classNames('line-handle', classes.handle, {\n [classes.selected]: selected\n })}\n x1={xScale(left)}\n x2={xScale(right)}\n onClick={onLineClick}\n />\n <Point\n {...common}\n empty={empty.left}\n bounds={{\n left: domain.min - position.left,\n right: domain.max - position.left\n }}\n position={position.left}\n onDrag={onDragLeft}\n onMove={onMoveLeft}\n />\n <Point\n {...common}\n empty={empty.right}\n bounds={{\n left: domain.min - position.right,\n right: domain.max - position.right\n }}\n position={position.right}\n onDrag={onDragRight}\n onMove={onMoveRight}\n />\n </g>\n </g>\n </Draggable>\n );\n }\n}\n\nexport default injectSheet(style)(Line);\n"],"file":"line.js"}
1
+ {"version":3,"sources":["../../../../src/number-line/graph/elements/line.jsx"],"names":["duration","style","line","stroke","color","primary","cursor","strokeWidth","transition","opacity","disabled","selected","primaryDark","correct","incorrect","Line","props","state","left","right","nextProps","position","setState","side","p","domain","min","max","newState","d","newPosition","onMoveLine","interval","empty","y","classes","xScale","context","onDrag","onMove","onMoveLeft","bind","onMoveRight","onDragLeft","onDragRight","is","onMouseDown","e","nativeEvent","preventDefault","onLineDragStart","startX","clientX","onLineClick","endX","deltaX","Math","abs","onToggleSelect","onRectClick","onLineDragStop","dd","invertedX","invert","lastX","scaledLineBounds","lineClass","common","handle","React","Component","PropTypes","shape","bool","isRequired","number","func","onDragStart","onDragStop","undefined","snapValue"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Draggable from '../../../draggable';\nimport Point from './point';\nimport { basePropTypes } from './base';\nimport classNames from 'classnames';\nimport injectSheet from 'react-jss';\nimport isEqual from 'lodash/isEqual';\nimport isNumber from 'lodash/isNumber';\nimport { color } from '@pie-lib/render-ui';\n\nconst duration = '150ms';\n\nconst style = {\n line: {\n '& .line-handle': {\n stroke: color.primary(),\n cursor: 'pointer',\n strokeWidth: '5px',\n transition: `opacity ${duration} linear, \n stroke-width ${duration} linear,\n stroke ${duration} linear`\n },\n '&.react-draggable-dragging': {\n opacity: 0.6,\n '& .line-handle': {\n opacity: 1.0,\n strokeWidth: '12px'\n }\n }\n },\n disabled: {\n cursor: 'not-allowed',\n opacity: 0.8\n },\n selected: {\n '& .line-handle': {\n stroke: color.primaryDark()\n },\n '& circle': {\n stroke: color.primaryDark()\n }\n },\n correct: {\n '& .line-handle': {\n cursor: 'inherit',\n stroke: color.correct()\n }\n },\n incorrect: {\n '& .line-handle': {\n cursor: 'inherit',\n stroke: color.incorrect()\n }\n }\n};\n\nexport class Line extends React.Component {\n static propTypes = {\n ...basePropTypes(),\n empty: PropTypes.shape({\n left: PropTypes.bool.isRequired,\n right: PropTypes.bool.isRequired\n }).isRequired,\n position: PropTypes.shape({\n left: PropTypes.number.isRequired,\n right: PropTypes.number.isRequired\n }).isRequired,\n y: PropTypes.number,\n selected: PropTypes.bool,\n disabled: PropTypes.bool,\n correct: PropTypes.bool,\n onMoveLine: PropTypes.func.isRequired,\n onToggleSelect: PropTypes.func.isRequired,\n onDragStart: PropTypes.func,\n onDragStop: PropTypes.func\n };\n\n static defaultProps = {\n selected: false,\n y: 0,\n disabled: false,\n correct: undefined\n };\n\n static contextTypes = {\n xScale: PropTypes.func.isRequired,\n snapValue: PropTypes.func.isRequired\n };\n\n constructor(props) {\n super(props);\n this.state = {\n left: null,\n right: null\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps) {\n const { position } = nextProps;\n this.setState({ left: position.left, right: position.right });\n }\n }\n\n onDrag(side, p) {\n const { domain } = this.props;\n if (p >= domain.min && p <= domain.max) {\n const newState = {};\n newState[side] = p;\n this.setState(newState);\n }\n }\n\n onMove(side, d) {\n const { position: p } = this.props;\n const newPosition = { left: p.left, right: p.right };\n newPosition[side] = d;\n this.props.onMoveLine(newPosition);\n }\n\n render() {\n const {\n interval,\n empty,\n position,\n domain,\n y,\n selected,\n disabled,\n correct,\n classes\n } = this.props;\n\n const { xScale } = this.context;\n\n const { onDrag, onMove } = this;\n const onMoveLeft = onMove.bind(this, 'left');\n const onMoveRight = onMove.bind(this, 'right');\n const onDragLeft = onDrag.bind(this, 'left');\n const onDragRight = onDrag.bind(this, 'right');\n\n const left = isNumber(this.state.left) ? this.state.left : position.left;\n const right = isNumber(this.state.right)\n ? this.state.right\n : position.right;\n\n const is = xScale(interval) - xScale(0);\n\n const onMouseDown = e => e.nativeEvent.preventDefault();\n const onLineDragStart = e => this.setState({ startX: e.clientX });\n\n const onLineClick = () => {\n const { startX, endX } = this.state;\n if (!startX || !endX) {\n return;\n }\n\n const deltaX = Math.abs(endX - startX);\n if (deltaX < is / 10) {\n this.props.onToggleSelect();\n this.setState({ startX: null, endX: null });\n }\n };\n\n const onRectClick = () => {\n this.props.onToggleSelect();\n };\n\n const onLineDragStop = (e, dd) => {\n this.setState({ endX: e.clientX });\n const invertedX = xScale.invert(dd.lastX + xScale(0));\n const newPosition = {\n left: position.left + invertedX,\n right: position.right + invertedX\n };\n\n if (!isEqual(newPosition, this.props.position)) {\n this.props.onMoveLine(newPosition);\n }\n };\n\n const scaledLineBounds = {\n left: (domain.min - position.left) / interval * is,\n right: (domain.max - position.right) / interval * is\n };\n\n var lineClass = classNames(classes.line, {\n [classes.disabled]: disabled,\n [classes.selected]: selected,\n [classes.correct]: correct === true,\n [classes.incorrect]: correct === false\n });\n\n const common = {\n interval,\n selected,\n disabled,\n correct\n };\n\n return (\n <Draggable\n disabled={disabled}\n axis=\"x\"\n handle=\".line-handle\"\n grid={[is]}\n bounds={scaledLineBounds}\n onStart={onLineDragStart}\n onStop={onLineDragStop}\n onMouseDown={onMouseDown}\n >\n <g className={lineClass}>\n <g transform={`translate(0, ${y})`}>\n <rect\n x={xScale(left)}\n width={Math.abs(xScale(right) - xScale(left))}\n fill=\"red\"\n fillOpacity=\"0.0\"\n y=\"-8\"\n height={16}\n onClick={onRectClick}\n />\n <line\n className={classNames('line-handle', classes.handle, {\n [classes.selected]: selected\n })}\n x1={xScale(left)}\n x2={xScale(right)}\n onClick={onLineClick}\n />\n <Point\n {...common}\n empty={empty.left}\n bounds={{\n left: domain.min - position.left,\n right: domain.max - position.left\n }}\n position={position.left}\n onDrag={onDragLeft}\n onMove={onMoveLeft}\n />\n <Point\n {...common}\n empty={empty.right}\n bounds={{\n left: domain.min - position.right,\n right: domain.max - position.right\n }}\n position={position.right}\n onDrag={onDragRight}\n onMove={onMoveRight}\n />\n </g>\n </g>\n </Draggable>\n );\n }\n}\n\nexport default injectSheet(style)(Line);\n"],"file":"line.js"}
@@ -33,7 +33,7 @@ var _reactJss = _interopRequireDefault(require("react-jss"));
33
33
 
34
34
  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); }; }
35
35
 
36
- 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; } }
36
+ 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; } }
37
37
 
38
38
  var duration = '150ms';
39
39
  var style = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/number-line/graph/elements/point.jsx"],"names":["duration","style","point","cursor","transition","stroke","color","primary","fill","opacity","r","primaryDark","selected","disabled","correct","incorrect","empty","Point","props","onDragStop","onDragStart","onDragCallback","onDrag","onClick","onMove","interval","y","bounds","position","classes","context","snapValue","xScale","dragPosition","x","normalized","inverted","invert","onStart","e","setState","startX","clientX","onStop","dd","endX","state","deltaX","Math","abs","is","newPosition","lastX","onMouseDown","nativeEvent","preventDefault","scaledBounds","left","right","p","circleClass","React","Component","undefined","PropTypes","number","isRequired","shape","bool","func","object"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { color } from '@pie-lib/render-ui';\nimport Draggable from '../../../draggable';\nimport classNames from 'classnames';\nimport injectSheet from 'react-jss';\n\nconst duration = '150ms';\n\nconst style = {\n point: {\n cursor: 'pointer',\n transition: `r ${duration} linear, \n opacity ${duration} linear, \n fill ${duration} linear,\n stroke ${duration} linear`,\n\n stroke: color.primary(),\n fill: color.primary(),\n '&.react-draggable-dragging': {\n opacity: 0.25,\n r: '10px'\n },\n '&:hover': {\n stroke: color.primaryDark()\n }\n },\n selected: {\n stroke: color.primaryDark()\n },\n disabled: {\n cursor: 'not-allowed',\n opacity: 0.8\n },\n correct: {\n cursor: 'inherit',\n stroke: color.correct(),\n fill: color.correct()\n },\n incorrect: {\n cursor: 'inherit',\n stroke: color.incorrect(),\n fill: color.incorrect()\n },\n empty: {\n fill: 'white'\n }\n};\n\nexport class Point extends React.Component {\n static defaultProps = {\n y: 0,\n selected: false,\n empty: false,\n disabled: false,\n correct: undefined\n };\n\n static propTypes = {\n interval: PropTypes.number.isRequired,\n position: PropTypes.number.isRequired,\n bounds: PropTypes.shape({\n left: PropTypes.number.isRequired,\n right: PropTypes.number.isRequired\n }),\n selected: PropTypes.bool,\n disabled: PropTypes.bool,\n correct: PropTypes.bool,\n empty: PropTypes.bool,\n y: PropTypes.number,\n onMove: PropTypes.func.isRequired,\n onClick: PropTypes.func,\n onDrag: PropTypes.func,\n onDragStop: PropTypes.func,\n onDragStart: PropTypes.func,\n classes: PropTypes.object.isRequired\n };\n\n static contextTypes = {\n xScale: PropTypes.func.isRequired,\n snapValue: PropTypes.func.isRequired\n };\n\n render() {\n const {\n onDragStop,\n onDragStart,\n onDrag: onDragCallback,\n onClick,\n onMove,\n interval,\n y,\n bounds,\n selected,\n position,\n disabled,\n correct,\n empty,\n classes\n } = this.props;\n\n const { snapValue, xScale } = this.context;\n\n const dragPosition = x => {\n const normalized = x + xScale(0);\n const inverted = xScale.invert(normalized);\n return snapValue(position + inverted);\n };\n\n const onStart = e => {\n this.setState({ startX: e.clientX });\n if (onDragStart) {\n onDragStart();\n }\n };\n\n const onStop = (e, dd) => {\n if (onDragStop) {\n onDragStop();\n }\n\n const endX = e.clientX;\n const startX = this.state.startX;\n const deltaX = Math.abs(endX - startX);\n\n if (deltaX < is / 10) {\n if (onClick) {\n onClick();\n this.setState({ startX: null });\n }\n } else {\n const newPosition = dragPosition(dd.lastX);\n onMove(newPosition);\n }\n };\n\n //prevent the text select icon from rendering.\n const onMouseDown = e => e.nativeEvent.preventDefault();\n\n const is = xScale(interval) - xScale(0);\n const scaledBounds = {\n left: bounds.left / interval * is,\n right: bounds.right / interval * is\n };\n\n const onDrag = (e, dd) => {\n const p = dragPosition(dd.x);\n if (onDragCallback) {\n onDragCallback(p);\n }\n };\n\n const circleClass = classNames(classes.point, {\n [classes.disabled]: disabled,\n [classes.selected]: selected,\n [classes.correct]: correct === true,\n [classes.incorrect]: correct === false,\n [classes.empty]: empty === true\n });\n\n return (\n <Draggable\n disabled={disabled}\n onMouseDown={onMouseDown}\n onStart={onStart}\n onDrag={onDrag}\n onStop={onStop}\n axis=\"x\"\n grid={[is]}\n bounds={scaledBounds}\n >\n <circle\n r=\"5\"\n strokeWidth=\"3\"\n className={circleClass}\n cx={xScale(position)}\n cy={y}\n />\n </Draggable>\n );\n }\n}\n\nexport default injectSheet(style)(Point);\n"],"file":"point.js"}
1
+ {"version":3,"sources":["../../../../src/number-line/graph/elements/point.jsx"],"names":["duration","style","point","cursor","transition","stroke","color","primary","fill","opacity","r","primaryDark","selected","disabled","correct","incorrect","empty","Point","props","onDragStop","onDragStart","onDragCallback","onDrag","onClick","onMove","interval","y","bounds","position","classes","context","snapValue","xScale","dragPosition","x","normalized","inverted","invert","onStart","e","setState","startX","clientX","onStop","dd","endX","state","deltaX","Math","abs","is","newPosition","lastX","onMouseDown","nativeEvent","preventDefault","scaledBounds","left","right","p","circleClass","React","Component","undefined","PropTypes","number","isRequired","shape","bool","func","object"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { color } from '@pie-lib/render-ui';\nimport Draggable from '../../../draggable';\nimport classNames from 'classnames';\nimport injectSheet from 'react-jss';\n\nconst duration = '150ms';\n\nconst style = {\n point: {\n cursor: 'pointer',\n transition: `r ${duration} linear, \n opacity ${duration} linear, \n fill ${duration} linear,\n stroke ${duration} linear`,\n\n stroke: color.primary(),\n fill: color.primary(),\n '&.react-draggable-dragging': {\n opacity: 0.25,\n r: '10px'\n },\n '&:hover': {\n stroke: color.primaryDark()\n }\n },\n selected: {\n stroke: color.primaryDark()\n },\n disabled: {\n cursor: 'not-allowed',\n opacity: 0.8\n },\n correct: {\n cursor: 'inherit',\n stroke: color.correct(),\n fill: color.correct()\n },\n incorrect: {\n cursor: 'inherit',\n stroke: color.incorrect(),\n fill: color.incorrect()\n },\n empty: {\n fill: 'white'\n }\n};\n\nexport class Point extends React.Component {\n static defaultProps = {\n y: 0,\n selected: false,\n empty: false,\n disabled: false,\n correct: undefined\n };\n\n static propTypes = {\n interval: PropTypes.number.isRequired,\n position: PropTypes.number.isRequired,\n bounds: PropTypes.shape({\n left: PropTypes.number.isRequired,\n right: PropTypes.number.isRequired\n }),\n selected: PropTypes.bool,\n disabled: PropTypes.bool,\n correct: PropTypes.bool,\n empty: PropTypes.bool,\n y: PropTypes.number,\n onMove: PropTypes.func.isRequired,\n onClick: PropTypes.func,\n onDrag: PropTypes.func,\n onDragStop: PropTypes.func,\n onDragStart: PropTypes.func,\n classes: PropTypes.object.isRequired\n };\n\n static contextTypes = {\n xScale: PropTypes.func.isRequired,\n snapValue: PropTypes.func.isRequired\n };\n\n render() {\n const {\n onDragStop,\n onDragStart,\n onDrag: onDragCallback,\n onClick,\n onMove,\n interval,\n y,\n bounds,\n selected,\n position,\n disabled,\n correct,\n empty,\n classes\n } = this.props;\n\n const { snapValue, xScale } = this.context;\n\n const dragPosition = x => {\n const normalized = x + xScale(0);\n const inverted = xScale.invert(normalized);\n return snapValue(position + inverted);\n };\n\n const onStart = e => {\n this.setState({ startX: e.clientX });\n if (onDragStart) {\n onDragStart();\n }\n };\n\n const onStop = (e, dd) => {\n if (onDragStop) {\n onDragStop();\n }\n\n const endX = e.clientX;\n const startX = this.state.startX;\n const deltaX = Math.abs(endX - startX);\n\n if (deltaX < is / 10) {\n if (onClick) {\n onClick();\n this.setState({ startX: null });\n }\n } else {\n const newPosition = dragPosition(dd.lastX);\n onMove(newPosition);\n }\n };\n\n //prevent the text select icon from rendering.\n const onMouseDown = e => e.nativeEvent.preventDefault();\n\n const is = xScale(interval) - xScale(0);\n const scaledBounds = {\n left: bounds.left / interval * is,\n right: bounds.right / interval * is\n };\n\n const onDrag = (e, dd) => {\n const p = dragPosition(dd.x);\n if (onDragCallback) {\n onDragCallback(p);\n }\n };\n\n const circleClass = classNames(classes.point, {\n [classes.disabled]: disabled,\n [classes.selected]: selected,\n [classes.correct]: correct === true,\n [classes.incorrect]: correct === false,\n [classes.empty]: empty === true\n });\n\n return (\n <Draggable\n disabled={disabled}\n onMouseDown={onMouseDown}\n onStart={onStart}\n onDrag={onDrag}\n onStop={onStop}\n axis=\"x\"\n grid={[is]}\n bounds={scaledBounds}\n >\n <circle\n r=\"5\"\n strokeWidth=\"3\"\n className={circleClass}\n cx={xScale(position)}\n cy={y}\n />\n </Draggable>\n );\n }\n}\n\nexport default injectSheet(style)(Point);\n"],"file":"point.js"}
@@ -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
  });
@@ -41,13 +41,17 @@ var _reactJss = _interopRequireDefault(require("react-jss"));
41
41
 
42
42
  var _isNumber = _interopRequireDefault(require("lodash/isNumber"));
43
43
 
44
- 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; }
44
+ 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); }
45
+
46
+ 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; }
47
+
48
+ 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; }
45
49
 
46
- 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; }
50
+ 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; }
47
51
 
48
52
  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); }; }
49
53
 
50
- 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; } }
54
+ 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
55
 
52
56
  var rayColor = function rayColor(_rayColor) {
53
57
  return {
@@ -77,12 +81,15 @@ var style = {
77
81
  correct: rayColor(colors.correct),
78
82
  incorrect: rayColor(colors.incorrect),
79
83
  arrowCorrect: {
84
+ fill: colors.correct,
80
85
  '--arrow-color': colors.correct
81
86
  },
82
87
  arrowIncorrect: {
88
+ fill: colors.incorrect,
83
89
  '--arrow-color': colors.incorrect
84
90
  },
85
91
  arrowSelected: {
92
+ fill: colors.selected,
86
93
  '--arrow-color': colors.selected
87
94
  }
88
95
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/number-line/graph/elements/ray.jsx"],"names":["rayColor","stroke","fill","strokeWidth","style","ray","cursor","color","primary","transition","selected","colors","correct","incorrect","arrowCorrect","arrowIncorrect","arrowSelected","Ray","props","state","dragPosition","p","domain","min","max","setState","interval","empty","position","direction","y","disabled","width","classes","xScale","context","drag","bind","stopDrag","finalPosition","className","positive","left","right","x1","x2","arrowX","arrowDirection","noop","arrowClassNames","onToggleSelect","onMove","React","Component","PropTypes","number","isRequired","bool","oneOf","func","snapValue"],"mappings":"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","sourcesContent":["import * as colors from '../../colors';\nimport { color } from '@pie-lib/render-ui';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport Arrow from '../arrow';\nimport Point from './point';\nimport { basePropTypes } from './base';\nimport classNames from 'classnames';\nimport injectSheet from 'react-jss';\nimport isNumber from 'lodash/isNumber';\n\nconst rayColor = rayColor => ({\n '& line': {\n stroke: rayColor\n },\n '& .arrow': {\n fill: rayColor,\n strokeWidth: '1px',\n stroke: rayColor\n }\n});\n\nconst style = {\n ray: {\n '& line': {\n cursor: 'pointer',\n strokeWidth: '5px',\n stroke: color.primary()\n },\n '& line, & .arrow': {\n transition: 'stroke 150ms linear, fill 150ms linear'\n }\n },\n selected: rayColor(colors.selected),\n correct: rayColor(colors.correct),\n incorrect: rayColor(colors.incorrect),\n arrowCorrect: {\n '--arrow-color': colors.correct\n },\n arrowIncorrect: {\n '--arrow-color': colors.incorrect\n },\n arrowSelected: {\n '--arrow-color': colors.selected\n }\n};\n\nexport class Ray extends React.Component {\n static propTypes = {\n ...basePropTypes(),\n width: PropTypes.number.isRequired,\n selected: PropTypes.bool,\n disabled: PropTypes.bool,\n empty: PropTypes.bool,\n direction: PropTypes.oneOf(['positive', 'negative']),\n y: PropTypes.number,\n position: PropTypes.number.isRequired,\n onMove: PropTypes.func.isRequired,\n onToggleSelect: PropTypes.func.isRequired\n };\n\n static defaultProps = {\n selected: false,\n direction: 'positive',\n y: 0,\n disabled: false\n };\n\n static contextTypes = {\n xScale: PropTypes.func.isRequired,\n snapValue: PropTypes.func.isRequired\n };\n\n constructor(props) {\n super(props);\n this.state = {\n dragPosition: null\n };\n }\n\n drag(p) {\n const { domain } = this.props;\n if (p >= domain.min && p <= domain.max) {\n this.setState({ dragPosition: p });\n }\n }\n\n stopDrag() {\n this.setState({ dragPosition: null });\n }\n\n render() {\n /* eslint-disable */\n const {\n interval,\n empty,\n position,\n direction,\n domain,\n y,\n selected,\n disabled,\n width,\n correct,\n classes\n } = this.props;\n /* eslint-enable */\n const { xScale } = this.context;\n\n const drag = this.drag.bind(this);\n const stopDrag = this.stopDrag.bind(this);\n\n const finalPosition = isNumber(this.state.dragPosition)\n ? this.state.dragPosition\n : position;\n\n const className = classNames(classes.ray, {\n [classes.selected]: selected,\n [classes.correct]: correct === true,\n [classes.incorrect]: correct === false\n });\n\n const positive = direction === 'positive';\n const left = positive ? finalPosition : domain.min;\n const right = positive ? domain.max : finalPosition;\n // const triangleX = positive ? xScale(right) : xScale(left);\n\n //const et the line run all the way to 0 or width.\n const x1 = positive ? xScale(left) : 8;\n const x2 = positive ? width - 8 : xScale(right);\n const arrowX = positive ? width : 0;\n const arrowDirection = positive ? 'right' : 'left';\n\n const noop = () => {};\n\n const arrowClassNames = classNames({\n [classes.arrowCorrect]: correct === true,\n [classes.arrowIncorrect]: correct === false,\n [classes.arrowSelected]: selected\n });\n\n return (\n <g className={className} transform={`translate(0, ${y})`}>\n <line\n onClick={disabled ? noop : this.props.onToggleSelect}\n className=\"line-handle\"\n x1={x1}\n x2={x2}\n />\n <Point\n disabled={disabled}\n correct={correct}\n selected={selected}\n empty={empty}\n interval={interval}\n bounds={{ left: domain.min - position, right: domain.max - position }}\n position={position}\n onDrag={drag}\n onDragStop={stopDrag}\n onMove={this.props.onMove}\n />\n <Arrow\n x={arrowX}\n className={arrowClassNames}\n direction={arrowDirection}\n />\n </g>\n );\n }\n}\n\nexport default injectSheet(style)(Ray);\n"],"file":"ray.js"}
1
+ {"version":3,"sources":["../../../../src/number-line/graph/elements/ray.jsx"],"names":["rayColor","stroke","fill","strokeWidth","style","ray","cursor","color","primary","transition","selected","colors","correct","incorrect","arrowCorrect","arrowIncorrect","arrowSelected","Ray","props","state","dragPosition","p","domain","min","max","setState","interval","empty","position","direction","y","disabled","width","classes","xScale","context","drag","bind","stopDrag","finalPosition","className","positive","left","right","x1","x2","arrowX","arrowDirection","noop","arrowClassNames","onToggleSelect","onMove","React","Component","PropTypes","number","isRequired","bool","oneOf","func","snapValue"],"mappings":"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","sourcesContent":["import * as colors from '../../colors';\nimport { color } from '@pie-lib/render-ui';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport Arrow from '../arrow';\nimport Point from './point';\nimport { basePropTypes } from './base';\nimport classNames from 'classnames';\nimport injectSheet from 'react-jss';\nimport isNumber from 'lodash/isNumber';\n\nconst rayColor = rayColor => ({\n '& line': {\n stroke: rayColor\n },\n '& .arrow': {\n fill: rayColor,\n strokeWidth: '1px',\n stroke: rayColor\n }\n});\n\nconst style = {\n ray: {\n '& line': {\n cursor: 'pointer',\n strokeWidth: '5px',\n stroke: color.primary()\n },\n '& line, & .arrow': {\n transition: 'stroke 150ms linear, fill 150ms linear'\n }\n },\n selected: rayColor(colors.selected),\n correct: rayColor(colors.correct),\n incorrect: rayColor(colors.incorrect),\n arrowCorrect: {\n fill: colors.correct,\n '--arrow-color': colors.correct\n },\n arrowIncorrect: {\n fill: colors.incorrect,\n '--arrow-color': colors.incorrect\n },\n arrowSelected: {\n fill: colors.selected,\n '--arrow-color': colors.selected\n }\n};\n\nexport class Ray extends React.Component {\n static propTypes = {\n ...basePropTypes(),\n width: PropTypes.number.isRequired,\n selected: PropTypes.bool,\n disabled: PropTypes.bool,\n empty: PropTypes.bool,\n direction: PropTypes.oneOf(['positive', 'negative']),\n y: PropTypes.number,\n position: PropTypes.number.isRequired,\n onMove: PropTypes.func.isRequired,\n onToggleSelect: PropTypes.func.isRequired\n };\n\n static defaultProps = {\n selected: false,\n direction: 'positive',\n y: 0,\n disabled: false\n };\n\n static contextTypes = {\n xScale: PropTypes.func.isRequired,\n snapValue: PropTypes.func.isRequired\n };\n\n constructor(props) {\n super(props);\n this.state = {\n dragPosition: null\n };\n }\n\n drag(p) {\n const { domain } = this.props;\n if (p >= domain.min && p <= domain.max) {\n this.setState({ dragPosition: p });\n }\n }\n\n stopDrag() {\n this.setState({ dragPosition: null });\n }\n\n render() {\n /* eslint-disable */\n const {\n interval,\n empty,\n position,\n direction,\n domain,\n y,\n selected,\n disabled,\n width,\n correct,\n classes\n } = this.props;\n /* eslint-enable */\n const { xScale } = this.context;\n\n const drag = this.drag.bind(this);\n const stopDrag = this.stopDrag.bind(this);\n\n const finalPosition = isNumber(this.state.dragPosition)\n ? this.state.dragPosition\n : position;\n\n const className = classNames(classes.ray, {\n [classes.selected]: selected,\n [classes.correct]: correct === true,\n [classes.incorrect]: correct === false\n });\n\n const positive = direction === 'positive';\n const left = positive ? finalPosition : domain.min;\n const right = positive ? domain.max : finalPosition;\n // const triangleX = positive ? xScale(right) : xScale(left);\n\n //const et the line run all the way to 0 or width.\n const x1 = positive ? xScale(left) : 8;\n const x2 = positive ? width - 8 : xScale(right);\n const arrowX = positive ? width : 0;\n const arrowDirection = positive ? 'right' : 'left';\n\n const noop = () => {};\n\n const arrowClassNames = classNames({\n [classes.arrowCorrect]: correct === true,\n [classes.arrowIncorrect]: correct === false,\n [classes.arrowSelected]: selected\n });\n\n return (\n <g className={className} transform={`translate(0, ${y})`}>\n <line\n onClick={disabled ? noop : this.props.onToggleSelect}\n className=\"line-handle\"\n x1={x1}\n x2={x2}\n />\n <Point\n disabled={disabled}\n correct={correct}\n selected={selected}\n empty={empty}\n interval={interval}\n bounds={{ left: domain.min - position, right: domain.max - position }}\n position={position}\n onDrag={drag}\n onDragStop={stopDrag}\n onMove={this.props.onMove}\n />\n <Arrow\n x={arrowX}\n className={arrowClassNames}\n direction={arrowDirection}\n />\n </g>\n );\n }\n}\n\nexport default injectSheet(style)(Ray);\n"],"file":"ray.js"}
@@ -53,7 +53,7 @@ var _transitions = require("../transitions");
53
53
 
54
54
  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); }; }
55
55
 
56
- 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; } }
56
+ 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; } }
57
57
 
58
58
  var getXScale = function getXScale(min, max, width, padding) {
59
59
  if (min === undefined || max === undefined || width === undefined) {
@@ -172,7 +172,8 @@ var NumberLineGraph = /*#__PURE__*/function (_React$Component) {
172
172
  height = _this$props4.height,
173
173
  onToggleElement = _this$props4.onToggleElement,
174
174
  onMoveElement = _this$props4.onMoveElement,
175
- disabled = _this$props4.disabled;
175
+ disabled = _this$props4.disabled,
176
+ fraction = _this$props4.fraction;
176
177
  var arrows = this.props.arrows;
177
178
  arrows = arrows || {
178
179
  left: true,
@@ -249,7 +250,7 @@ var NumberLineGraph = /*#__PURE__*/function (_React$Component) {
249
250
  });
250
251
  return /*#__PURE__*/_react["default"].createElement("svg", {
251
252
  width: width,
252
- height: height
253
+ height: fraction ? height + 20 : height
253
254
  }, false && /*#__PURE__*/_react["default"].createElement(Debug, {
254
255
  domain: domain,
255
256
  ticks: ticks
@@ -265,7 +266,8 @@ var NumberLineGraph = /*#__PURE__*/function (_React$Component) {
265
266
  }), /*#__PURE__*/_react["default"].createElement(_ticks["default"], {
266
267
  y: lineY,
267
268
  domain: domain,
268
- ticks: ticks
269
+ ticks: ticks,
270
+ fraction: fraction
269
271
  }), /*#__PURE__*/_react["default"].createElement("rect", {
270
272
  ref: function ref(rect) {
271
273
  return _this2.rect = rect;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/number-line/graph/index.jsx"],"names":["getXScale","min","max","width","padding","undefined","Error","domain","range","Debug","props","JSON","stringify","NumberLineGraph","state","toString","length","ticks","snapTo","bind","minor","xScale","xScaleFn","snapValue","snapValueFn","rect","elements","disabled","anyElementSelected","some","e","selected","onDeselectElements","coords","_groups","x","invert","addElement","on","onRectClick","snapFn","v","onAddElement","height","onToggleElement","onMoveElement","arrows","left","right","lineY","stacks","Stacks","map","el","index","stackIndex","add","y","commonProps","key","interval","correct","toggleElement","moveElement","type","empty","leftPoint","rightPoint","position","bounds","pointType","direction","color","primary","c","React","Component","PropTypes","func","isRequired","shape","number","major","debug","bool","array"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { scaleLinear } from 'd3-scale';\nimport { select, mouse } from 'd3-selection';\nimport { color } from '@pie-lib/render-ui';\nimport Point from './elements/point';\nimport Line from './elements/line';\nimport Ray from './elements/ray';\nimport BaseLine from './line';\nimport Arrow from './arrow';\nimport Ticks from './ticks';\nimport { snapTo } from './tick-utils';\nimport Stacks from './stacks';\nimport { TransitionGroup } from 'react-transition-group';\nimport PropTypes from 'prop-types';\nimport { Fade } from '../transitions';\n\nconst getXScale = (min, max, width, padding) => {\n if (min === undefined || max === undefined || width === undefined) {\n throw new Error('missing min/max/width');\n }\n\n return scaleLinear()\n .domain([min, max])\n .range([padding, width - padding]);\n};\n\nconst Debug = props => (\n <g>\n <text x=\"00\" y=\"20\">\n {JSON.stringify(props)}\n </text>\n </g>\n);\n\nexport class NumberLineGraph extends React.Component {\n static childContextTypes = {\n xScale: PropTypes.func.isRequired,\n snapValue: PropTypes.func.isRequired\n };\n\n static propTypes = {\n domain: PropTypes.shape({\n min: PropTypes.number.isRequired,\n max: PropTypes.number.isRequired\n }).isRequired,\n ticks: PropTypes.shape({ minor: PropTypes.number, major: PropTypes.number })\n .isRequired,\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired,\n onToggleElement: PropTypes.func.isRequired,\n onMoveElement: PropTypes.func.isRequired,\n onAddElement: PropTypes.func.isRequired,\n debug: PropTypes.bool,\n elements: PropTypes.array,\n disabled: PropTypes.bool,\n onDeselectElements: PropTypes.func,\n arrows: PropTypes.shape({ left: PropTypes.bool, right: PropTypes.bool })\n };\n\n static defaultProps = {\n debug: false\n };\n\n constructor(props) {\n super(props);\n this.state = {};\n }\n\n xScaleFn() {\n const { domain, width } = this.props;\n const { max, min } = domain || {};\n\n let padding = 20;\n\n if (max) {\n padding = max.toString().length * 4 + 15;\n }\n\n return getXScale(min, max, width, padding);\n }\n\n snapValueFn() {\n const { domain, ticks } = this.props;\n return snapTo.bind(null, domain.min, domain.max, ticks.minor);\n }\n\n getChildContext() {\n return {\n xScale: this.xScaleFn(),\n snapValue: this.snapValueFn()\n };\n }\n\n /**\n * Note: we use d3 click + mouse to give us domain values directly.\n * Saves us having to calculate them ourselves from a MouseEvent.\n */\n onRectClick(rect) {\n const { elements, disabled } = this.props;\n\n if (disabled) {\n return;\n }\n\n const anyElementSelected = elements.some(e => e.selected);\n\n if (anyElementSelected) {\n this.props.onDeselectElements();\n } else {\n var coords = mouse(rect._groups[0][0]);\n const x = this.xScaleFn().invert(coords[0]);\n this.addElement(x);\n }\n }\n\n componentDidMount() {\n const rect = select(this.rect);\n rect.on('click', this.onRectClick.bind(this, rect));\n }\n\n addElement(x) {\n const snapFn = this.snapValueFn();\n const v = snapFn(x);\n this.props.onAddElement(v);\n }\n\n render() {\n const {\n domain,\n width,\n ticks,\n height,\n onToggleElement,\n onMoveElement,\n disabled\n } = this.props;\n let { arrows } = this.props;\n\n arrows = arrows || { left: true, right: true };\n const { min, max } = domain;\n\n if (domain.max <= domain.min) {\n return (\n <div>\n {domain.max} is less than or equal to {domain.min}\n </div>\n );\n } else {\n const lineY = height - 30;\n\n const stacks = new Stacks(domain);\n\n const elements = this.props.elements.map((el, index) => {\n const stackIndex = stacks.add(el);\n\n if (stackIndex === -1) {\n throw new Error('stack index is -1, cant add element');\n }\n\n const y = lineY - stackIndex * 25;\n\n const commonProps = {\n key: index,\n y,\n selected: el.selected && !disabled,\n interval: ticks.minor,\n disabled,\n correct: el.correct\n };\n\n const toggleElement = onToggleElement.bind(null, index, el);\n const moveElement = onMoveElement.bind(null, index, el);\n\n if (el.type === 'line') {\n const empty = {\n left: el.leftPoint === 'empty',\n right: el.rightPoint === 'empty'\n };\n\n return (\n <Line\n {...commonProps}\n domain={{ min: min, max: max }}\n onMoveLine={moveElement}\n onToggleSelect={toggleElement}\n position={el.position}\n empty={empty}\n />\n );\n } else if (el.type === 'point') {\n const bounds = {\n left: min - el.position,\n right: max - el.position\n };\n\n return (\n <Point\n {...commonProps}\n empty={el.pointType === 'empty'}\n position={el.position}\n bounds={bounds}\n onClick={toggleElement}\n onMove={moveElement}\n />\n );\n } else if (el.type === 'ray') {\n return (\n <Ray\n {...commonProps}\n domain={{ min: min, max: max }}\n direction={el.direction}\n position={el.position}\n onMove={moveElement}\n onToggleSelect={toggleElement}\n width={width}\n empty={el.pointType === 'empty'}\n />\n );\n }\n });\n\n return (\n <svg width={width} height={height}>\n {false && <Debug domain={domain} ticks={ticks}/>}\n <BaseLine y={lineY} width={width}/>\n {arrows.left && <Arrow y={lineY}/>}\n {arrows.right && <Arrow x={width} y={lineY} direction=\"right\"/>}\n <Ticks y={lineY} domain={domain} ticks={ticks}/>\n <rect\n ref={rect => (this.rect = rect)}\n //need to have a fill for it to be clickable\n fill={color.primary()}\n fillOpacity=\"0.0\"\n width={width}\n height={height}\n />\n <TransitionGroup component=\"g\">\n {elements.map((c, index) => (\n <Fade key={index}>{c}</Fade>\n ))}\n </TransitionGroup>\n </svg>\n );\n }\n }\n}\n\nexport default NumberLineGraph;\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../src/number-line/graph/index.jsx"],"names":["getXScale","min","max","width","padding","undefined","Error","domain","range","Debug","props","JSON","stringify","NumberLineGraph","state","toString","length","ticks","snapTo","bind","minor","xScale","xScaleFn","snapValue","snapValueFn","rect","elements","disabled","anyElementSelected","some","e","selected","onDeselectElements","coords","_groups","x","invert","addElement","on","onRectClick","snapFn","v","onAddElement","height","onToggleElement","onMoveElement","fraction","arrows","left","right","lineY","stacks","Stacks","map","el","index","stackIndex","add","y","commonProps","key","interval","correct","toggleElement","moveElement","type","empty","leftPoint","rightPoint","position","bounds","pointType","direction","color","primary","c","React","Component","PropTypes","func","isRequired","shape","number","major","debug","bool","array"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { scaleLinear } from 'd3-scale';\nimport { select, mouse } from 'd3-selection';\nimport { color } from '@pie-lib/render-ui';\nimport Point from './elements/point';\nimport Line from './elements/line';\nimport Ray from './elements/ray';\nimport BaseLine from './line';\nimport Arrow from './arrow';\nimport Ticks from './ticks';\nimport { snapTo } from './tick-utils';\nimport Stacks from './stacks';\nimport { TransitionGroup } from 'react-transition-group';\nimport PropTypes from 'prop-types';\nimport { Fade } from '../transitions';\n\nconst getXScale = (min, max, width, padding) => {\n if (min === undefined || max === undefined || width === undefined) {\n throw new Error('missing min/max/width');\n }\n\n return scaleLinear()\n .domain([min, max])\n .range([padding, width - padding]);\n};\n\nconst Debug = props => (\n <g>\n <text x=\"00\" y=\"20\">\n {JSON.stringify(props)}\n </text>\n </g>\n);\n\nexport class NumberLineGraph extends React.Component {\n static childContextTypes = {\n xScale: PropTypes.func.isRequired,\n snapValue: PropTypes.func.isRequired\n };\n\n static propTypes = {\n domain: PropTypes.shape({\n min: PropTypes.number.isRequired,\n max: PropTypes.number.isRequired\n }).isRequired,\n ticks: PropTypes.shape({ minor: PropTypes.number, major: PropTypes.number })\n .isRequired,\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired,\n onToggleElement: PropTypes.func.isRequired,\n onMoveElement: PropTypes.func.isRequired,\n onAddElement: PropTypes.func.isRequired,\n debug: PropTypes.bool,\n elements: PropTypes.array,\n disabled: PropTypes.bool,\n onDeselectElements: PropTypes.func,\n arrows: PropTypes.shape({ left: PropTypes.bool, right: PropTypes.bool })\n };\n\n static defaultProps = {\n debug: false\n };\n\n constructor(props) {\n super(props);\n this.state = {};\n }\n\n xScaleFn() {\n const { domain, width } = this.props;\n const { max, min } = domain || {};\n\n let padding = 20;\n\n if (max) {\n padding = max.toString().length * 4 + 15;\n }\n\n return getXScale(min, max, width, padding);\n }\n\n snapValueFn() {\n const { domain, ticks } = this.props;\n return snapTo.bind(null, domain.min, domain.max, ticks.minor);\n }\n\n getChildContext() {\n return {\n xScale: this.xScaleFn(),\n snapValue: this.snapValueFn()\n };\n }\n\n /**\n * Note: we use d3 click + mouse to give us domain values directly.\n * Saves us having to calculate them ourselves from a MouseEvent.\n */\n onRectClick(rect) {\n const { elements, disabled } = this.props;\n\n if (disabled) {\n return;\n }\n\n const anyElementSelected = elements.some(e => e.selected);\n\n if (anyElementSelected) {\n this.props.onDeselectElements();\n } else {\n var coords = mouse(rect._groups[0][0]);\n const x = this.xScaleFn().invert(coords[0]);\n this.addElement(x);\n }\n }\n\n componentDidMount() {\n const rect = select(this.rect);\n rect.on('click', this.onRectClick.bind(this, rect));\n }\n\n addElement(x) {\n const snapFn = this.snapValueFn();\n const v = snapFn(x);\n this.props.onAddElement(v);\n }\n\n render() {\n const {\n domain,\n width,\n ticks,\n height,\n onToggleElement,\n onMoveElement,\n disabled,\n fraction\n } = this.props;\n let { arrows } = this.props;\n\n arrows = arrows || { left: true, right: true };\n const { min, max } = domain;\n\n if (domain.max <= domain.min) {\n return (\n <div>\n {domain.max} is less than or equal to {domain.min}\n </div>\n );\n } else {\n const lineY = height - 30;\n\n const stacks = new Stacks(domain);\n\n const elements = this.props.elements.map((el, index) => {\n const stackIndex = stacks.add(el);\n\n if (stackIndex === -1) {\n throw new Error('stack index is -1, cant add element');\n }\n\n const y = lineY - stackIndex * 25;\n\n const commonProps = {\n key: index,\n y,\n selected: el.selected && !disabled,\n interval: ticks.minor,\n disabled,\n correct: el.correct\n };\n\n const toggleElement = onToggleElement.bind(null, index, el);\n const moveElement = onMoveElement.bind(null, index, el);\n\n if (el.type === 'line') {\n const empty = {\n left: el.leftPoint === 'empty',\n right: el.rightPoint === 'empty'\n };\n\n return (\n <Line\n {...commonProps}\n domain={{ min: min, max: max }}\n onMoveLine={moveElement}\n onToggleSelect={toggleElement}\n position={el.position}\n empty={empty}\n />\n );\n } else if (el.type === 'point') {\n const bounds = {\n left: min - el.position,\n right: max - el.position\n };\n\n return (\n <Point\n {...commonProps}\n empty={el.pointType === 'empty'}\n position={el.position}\n bounds={bounds}\n onClick={toggleElement}\n onMove={moveElement}\n />\n );\n } else if (el.type === 'ray') {\n return (\n <Ray\n {...commonProps}\n domain={{ min: min, max: max }}\n direction={el.direction}\n position={el.position}\n onMove={moveElement}\n onToggleSelect={toggleElement}\n width={width}\n empty={el.pointType === 'empty'}\n />\n );\n }\n });\n\n return (\n <svg width={width} height={fraction ? height + 20 : height}>\n {false && <Debug domain={domain} ticks={ticks} />}\n <BaseLine y={lineY} width={width} />\n {arrows.left && <Arrow y={lineY} />}\n {arrows.right && <Arrow x={width} y={lineY} direction=\"right\" />}\n <Ticks\n y={lineY}\n domain={domain}\n ticks={ticks}\n fraction={fraction}\n />\n <rect\n ref={rect => (this.rect = rect)}\n //need to have a fill for it to be clickable\n fill={color.primary()}\n fillOpacity=\"0.0\"\n width={width}\n height={height}\n />\n <TransitionGroup component=\"g\">\n {elements.map((c, index) => (\n <Fade key={index}>{c}</Fade>\n ))}\n </TransitionGroup>\n </svg>\n );\n }\n }\n}\n\nexport default NumberLineGraph;\n"],"file":"index.js"}
@@ -3,8 +3,8 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports["default"] = Stacks;
7
6
  exports.Stack = Stack;
7
+ exports["default"] = Stacks;
8
8
 
9
9
  function Stacks(domain) {
10
10
  var stacks = [new Stack(domain)];
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/number-line/graph/stacks.js"],"names":["Stacks","domain","stacks","Stack","add","el","stack","find","s","indexOf","push","elements","elementRange","getRange","left","min","right","max","touchesExisting","some","e","touchesRange","candidate","existing","leftOf","rightOf","type","position","direction"],"mappings":"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","sourcesContent":["export default function Stacks(domain) {\n let stacks = [new Stack(domain)];\n\n this.add = function(el) {\n let stack = stacks.find(s => s.add(el));\n if (stacks.indexOf(stack) === -1) {\n stack = new Stack(domain);\n stacks.push(stack);\n stack.add(el);\n }\n return stacks.indexOf(stack);\n };\n}\n\nexport function Stack(domain) {\n let elements = [];\n /**\n * Try to add the element to the stack.\n * @return boolean true if added, else false\n */\n this.add = function(el) /*boolean*/ {\n let elementRange = getRange(el);\n if (elementRange.left < domain.min || elementRange.right > domain.max) {\n return false;\n }\n\n let touchesExisting = elements.some(e => touchesRange(e, elementRange));\n\n if (touchesExisting) {\n return false;\n } else {\n elements.push(el);\n return true;\n }\n };\n\n this.elements = function() {\n return elements;\n };\n\n let touchesRange = (el, candidate) => {\n let existing = getRange(el);\n let leftOf =\n candidate.left < existing.left && candidate.right < existing.left;\n let rightOf =\n candidate.left > existing.right && candidate.right > existing.right;\n return !(leftOf || rightOf);\n };\n\n let getRange = el => {\n let { type, position } = el;\n\n switch (type) {\n case 'point': {\n return { left: position, right: position };\n }\n case 'line': {\n return position;\n }\n case 'ray': {\n if (el.direction === 'positive') {\n return {\n left: position,\n right: domain.max\n };\n } else {\n return {\n left: domain.min,\n right: position\n };\n }\n }\n }\n };\n}\n"],"file":"stacks.js"}
1
+ {"version":3,"sources":["../../../src/number-line/graph/stacks.js"],"names":["Stacks","domain","stacks","Stack","add","el","stack","find","s","indexOf","push","elements","elementRange","getRange","left","min","right","max","touchesExisting","some","e","touchesRange","candidate","existing","leftOf","rightOf","type","position","direction"],"mappings":"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","sourcesContent":["export default function Stacks(domain) {\n let stacks = [new Stack(domain)];\n\n this.add = function(el) {\n let stack = stacks.find(s => s.add(el));\n if (stacks.indexOf(stack) === -1) {\n stack = new Stack(domain);\n stacks.push(stack);\n stack.add(el);\n }\n return stacks.indexOf(stack);\n };\n}\n\nexport function Stack(domain) {\n let elements = [];\n /**\n * Try to add the element to the stack.\n * @return boolean true if added, else false\n */\n this.add = function(el) /*boolean*/ {\n let elementRange = getRange(el);\n if (elementRange.left < domain.min || elementRange.right > domain.max) {\n return false;\n }\n\n let touchesExisting = elements.some(e => touchesRange(e, elementRange));\n\n if (touchesExisting) {\n return false;\n } else {\n elements.push(el);\n return true;\n }\n };\n\n this.elements = function() {\n return elements;\n };\n\n let touchesRange = (el, candidate) => {\n let existing = getRange(el);\n let leftOf =\n candidate.left < existing.left && candidate.right < existing.left;\n let rightOf =\n candidate.left > existing.right && candidate.right > existing.right;\n return !(leftOf || rightOf);\n };\n\n let getRange = el => {\n let { type, position } = el;\n\n switch (type) {\n case 'point': {\n return { left: position, right: position };\n }\n case 'line': {\n return position;\n }\n case 'ray': {\n if (el.direction === 'positive') {\n return {\n left: position,\n right: domain.max\n };\n } else {\n return {\n left: domain.min,\n right: position\n };\n }\n }\n }\n };\n}\n"],"file":"stacks.js"}
@@ -1,13 +1,13 @@
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
  });
10
- exports.snapElements = exports.buildTickData = exports.buildTickDataAsFractions = exports.normalizeTicks = exports.fraction = exports.isMultiple = exports.minorLimits = exports.closeTo = exports.simpleRange = exports.zeroBasedRange = exports.zbrErrorMessage = exports.fractionRange = exports.snapTo = exports.fractionSnapTo = void 0;
10
+ exports.zeroBasedRange = exports.zbrErrorMessage = exports.snapTo = exports.snapElements = exports.simpleRange = exports.normalizeTicks = exports.minorLimits = exports.isMultiple = exports.fractionSnapTo = exports.fractionRange = exports.fraction = exports.closeTo = exports.buildTickDataAsFractions = exports.buildTickData = void 0;
11
11
 
12
12
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
13
 
@@ -19,9 +19,13 @@ var _isObject = _interopRequireDefault(require("lodash/isObject"));
19
19
 
20
20
  var _isNumber = _interopRequireDefault(require("lodash/isNumber"));
21
21
 
22
- 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; }
22
+ 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); }
23
+
24
+ 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; }
25
+
26
+ 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
27
 
24
- 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; }
28
+ 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
29
 
26
30
  var fractionSnapTo = function fractionSnapTo(min, max, interval, value) {
27
31
  value = fmax(fmin(value, max), min);
@@ -261,8 +265,8 @@ exports.buildTickDataAsFractions = buildTickDataAsFractions;
261
265
  var buildTickData = function buildTickData(domain, ticks, opts) {
262
266
  var result = buildTickDataAsFractions(domain, ticks, opts);
263
267
  var out = result.map(function (o) {
264
- return _objectSpread(_objectSpread({}, o), {}, {
265
- x: math.number(o.x)
268
+ return opts.fraction ? o : _objectSpread(_objectSpread({}, o), {}, {
269
+ x: math.number(o.x) || 0
266
270
  });
267
271
  });
268
272
  return out;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/number-line/graph/tick-utils.js"],"names":["fractionSnapTo","min","max","interval","value","fmax","fmin","mod","v","half","div","math","largerEq","abs","d","sub","fn","fn2","snapTo","out","fraction","number","fractionRange","start","end","m","equal","Error","e","subtract","direction","larger","smallerEq","compareFn","next","push","add","zbrErrorMessage","zeroBasedRange","length","a","multiplier","smaller","s","r","map","multiply","reverse","b","simpleRange","positiveRange","negativeRange","together","concat","closeTo","precision","expectedDiff","Math","pow","receivedDiff","limit","minorLimits","domain","divide","isMultiple","multiple","src","n","normalizeTicks","ticks","opts","l","minor","major","buildTickDataAsFractions","rng","o","filter","x","type","modulo","buildTickData","result","snapElements","elements","size","Number","isFinite","undefined","domainPosition"],"mappings":"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","sourcesContent":["import * as math from 'mathjs';\nimport uniqWith from 'lodash/uniqWith';\nimport isObject from 'lodash/isObject';\nimport isNumber from 'lodash/isNumber';\n\nexport const fractionSnapTo = (min, max, interval, value) => {\n value = fmax(fmin(value, max), min);\n const mod = value.mod(interval);\n let v;\n\n const half = interval.div(2);\n if (math.largerEq(math.abs(mod), half)) {\n const d = interval.sub(math.abs(mod));\n const fn = math.largerEq(value, 0) ? 'add' : 'sub';\n v = value[fn](d);\n } else {\n const fn2 = math.largerEq(value, 0) ? 'sub' : 'add';\n v = value[fn2](math.abs(mod));\n }\n return v;\n};\n\nexport const snapTo = (min, max, interval, value) => {\n const out = fractionSnapTo(\n math.fraction(min),\n math.fraction(max),\n math.fraction(interval),\n math.fraction(value)\n );\n return math.number(out);\n};\n\nexport const fractionRange = (start, end, interval) => {\n const m = math.mod(math.abs(start), math.abs(interval));\n if (!math.equal(m, 0)) {\n throw new Error('start point must be divisible by interval');\n }\n\n if (math.equal(start, end)) {\n return [];\n }\n\n const e = math.subtract(end, math.mod(end, math.abs(interval)));\n\n const direction = math.larger(interval, 0) ? 'positive' : 'negative';\n\n if (direction === 'negative' && math.largerEq(end, start)) {\n throw new Error('start must be > than end when doing a negative decrement');\n }\n if (direction === 'positive' && math.smallerEq(end, start)) {\n throw new Error('start must be < end when doing increments');\n }\n const compareFn =\n direction === 'positive'\n ? math.smallerEq\n : math.equal(e, end)\n ? math.largerEq\n : math.larger;\n const out = [];\n\n let next = start;\n while (compareFn(next, e)) {\n out.push(next);\n next = math.add(next, interval);\n }\n return out;\n};\n\nexport const zbrErrorMessage = (start, end) =>\n `Can only do a positive or negative range, but got: start: ${start} and end:${end}`;\n\nexport const zeroBasedRange = (start, end, interval) => {\n start = math.fraction(start);\n end = math.fraction(end);\n interval = math.fraction(interval);\n\n const length = math.abs(math.subtract(end, start));\n\n if (math.larger(length, math.abs(end))) {\n throw new Error(zbrErrorMessage(start, end));\n }\n const a = {\n start: math.abs(start),\n end: math.abs(end),\n interval: math.abs(interval),\n multiplier: math.smaller(interval, 0) ? -1 : 1,\n };\n\n const m = math.mod(a.start, a.interval);\n const s = math.larger(m, 0)\n ? math.add(math.subtract(a.start, m), a.interval)\n : a.start;\n\n const r = fractionRange(s, a.end, a.interval);\n const out = a.multiplier === -1 ? r.map((v) => math.multiply(v, -1)) : r;\n\n if (math.smaller(interval, 0)) {\n out.reverse();\n }\n return out;\n};\n\nconst fmin = (a, b) => {\n a = math.fraction(a);\n b = math.fraction(b);\n return math.smaller(a, b) ? a : b;\n};\n\nconst fmax = (a, b) => {\n a = math.fraction(a);\n b = math.fraction(b);\n return math.larger(a, b) ? a : b;\n};\n/**\n * the lodash range was causing too much variance in the rounding errors\n * such that it was hard to round the numbers.\n * This is a more simplistic version but makes rounding work.\n */\nexport const simpleRange = (start, end, interval) => {\n start = math.fraction(start);\n end = math.fraction(end);\n interval = math.fraction(interval);\n\n const positiveRange = math.larger(end, 0)\n ? zeroBasedRange(fmax(0, start), end, interval)\n : [];\n\n const negativeRange = math.smaller(start, 0)\n ? zeroBasedRange(fmin(0, end), start, math.multiply(interval, -1))\n : [];\n let together = negativeRange.concat(positiveRange);\n\n const out = uniqWith(together, math.equal);\n return out;\n};\n\nexport const closeTo = (a, b, precision) => {\n precision = precision || 2;\n const expectedDiff = Math.pow(10, -precision) / 2;\n const receivedDiff = Math.abs(a - b);\n return receivedDiff < expectedDiff;\n};\n\nconst limit = (v, min, max) => {\n if (math.smaller(v, min)) {\n return min;\n }\n\n if (math.larger(v, max)) {\n return max;\n }\n\n return v;\n};\n\nexport const minorLimits = (domain) => {\n const end = domain.max - domain.min;\n return {\n min: math.divide(math.fraction(end), 100),\n max: math.divide(math.fraction(end), 3),\n };\n};\n\nexport const isMultiple = (multiple, src) => {\n const mod = math.mod(multiple, src);\n return math.equal(mod, 0);\n};\n\n/**\n * Accepts a fraction object {n,d,s} or number.\n * @param {*} v\n * @return mathjs.fraction\n */\nexport const fraction = (v) => {\n if (isObject(v)) {\n return math.fraction(v.n * v.s, v.d);\n } else if (isNumber(v)) {\n return math.fraction(v);\n }\n};\n\nexport const normalizeTicks = (domain, ticks, opts) => {\n const l = opts ? opts.limit !== false : true;\n const end = fraction(domain.max - domain.min);\n const minor = l\n ? limit(fraction(ticks.minor), math.divide(end, 100), math.divide(end, 3))\n : math.fraction(ticks.minor);\n const major = l\n ? limit(fraction(ticks.major), minor, math.multiply(minor, 10))\n : math.fraction(ticks.major);\n\n const m = isMultiple(major, minor);\n\n if (!m) {\n return { minor, major: math.multiply(minor, 2) };\n }\n\n return { major, minor };\n};\n\n/**\n * Build ticks as an array of mathjs Fractions\n */\nexport const buildTickDataAsFractions = (domain, ticks, opts) => {\n ticks = normalizeTicks(domain, ticks, opts);\n const rng = simpleRange(domain.min, domain.max, ticks.minor);\n\n const o = rng\n .filter((x) => math.smallerEq(x, math.fraction(domain.max)))\n .map((x) => {\n let type = 'minor';\n const modulo = math.mod(x, ticks.major);\n if (closeTo(math.number(modulo), 0)) {\n type = 'major';\n }\n\n return { x, type };\n });\n\n return o;\n};\n\nexport const buildTickData = (domain, ticks, opts) => {\n const result = buildTickDataAsFractions(domain, ticks, opts);\n\n const out = result.map((o) => ({ ...o, x: math.number(o.x) }));\n return out;\n};\n\nexport const snapElements = (domain, ticks, elements) => {\n return elements.map((e) => {\n const size = Number.isFinite(e.size)\n ? snapTo(0, e.size, ticks.minor, e.size)\n : undefined;\n const domainPosition = snapTo(\n domain.min,\n domain.max,\n ticks.minor,\n e.domainPosition\n );\n const out = { ...e, domainPosition };\n if (Number.isFinite(size)) {\n out.size = size;\n }\n return out;\n });\n};\n"],"file":"tick-utils.js"}
1
+ {"version":3,"sources":["../../../src/number-line/graph/tick-utils.js"],"names":["fractionSnapTo","min","max","interval","value","fmax","fmin","mod","v","half","div","math","largerEq","abs","d","sub","fn","fn2","snapTo","out","fraction","number","fractionRange","start","end","m","equal","Error","e","subtract","direction","larger","smallerEq","compareFn","next","push","add","zbrErrorMessage","zeroBasedRange","length","a","multiplier","smaller","s","r","map","multiply","reverse","b","simpleRange","positiveRange","negativeRange","together","concat","closeTo","precision","expectedDiff","Math","pow","receivedDiff","limit","minorLimits","domain","divide","isMultiple","multiple","src","n","normalizeTicks","ticks","opts","l","minor","major","buildTickDataAsFractions","rng","o","filter","x","type","modulo","buildTickData","result","snapElements","elements","size","Number","isFinite","undefined","domainPosition"],"mappings":"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","sourcesContent":["import * as math from 'mathjs';\nimport uniqWith from 'lodash/uniqWith';\nimport isObject from 'lodash/isObject';\nimport isNumber from 'lodash/isNumber';\n\nexport const fractionSnapTo = (min, max, interval, value) => {\n value = fmax(fmin(value, max), min);\n const mod = value.mod(interval);\n let v;\n\n const half = interval.div(2);\n if (math.largerEq(math.abs(mod), half)) {\n const d = interval.sub(math.abs(mod));\n const fn = math.largerEq(value, 0) ? 'add' : 'sub';\n v = value[fn](d);\n } else {\n const fn2 = math.largerEq(value, 0) ? 'sub' : 'add';\n v = value[fn2](math.abs(mod));\n }\n return v;\n};\n\nexport const snapTo = (min, max, interval, value) => {\n const out = fractionSnapTo(\n math.fraction(min),\n math.fraction(max),\n math.fraction(interval),\n math.fraction(value)\n );\n return math.number(out);\n};\n\nexport const fractionRange = (start, end, interval) => {\n const m = math.mod(math.abs(start), math.abs(interval));\n if (!math.equal(m, 0)) {\n throw new Error('start point must be divisible by interval');\n }\n\n if (math.equal(start, end)) {\n return [];\n }\n\n const e = math.subtract(end, math.mod(end, math.abs(interval)));\n\n const direction = math.larger(interval, 0) ? 'positive' : 'negative';\n\n if (direction === 'negative' && math.largerEq(end, start)) {\n throw new Error('start must be > than end when doing a negative decrement');\n }\n if (direction === 'positive' && math.smallerEq(end, start)) {\n throw new Error('start must be < end when doing increments');\n }\n const compareFn =\n direction === 'positive'\n ? math.smallerEq\n : math.equal(e, end)\n ? math.largerEq\n : math.larger;\n const out = [];\n\n let next = start;\n while (compareFn(next, e)) {\n out.push(next);\n next = math.add(next, interval);\n }\n return out;\n};\n\nexport const zbrErrorMessage = (start, end) =>\n `Can only do a positive or negative range, but got: start: ${start} and end:${end}`;\n\nexport const zeroBasedRange = (start, end, interval) => {\n start = math.fraction(start);\n end = math.fraction(end);\n interval = math.fraction(interval);\n\n const length = math.abs(math.subtract(end, start));\n\n if (math.larger(length, math.abs(end))) {\n throw new Error(zbrErrorMessage(start, end));\n }\n const a = {\n start: math.abs(start),\n end: math.abs(end),\n interval: math.abs(interval),\n multiplier: math.smaller(interval, 0) ? -1 : 1,\n };\n\n const m = math.mod(a.start, a.interval);\n const s = math.larger(m, 0)\n ? math.add(math.subtract(a.start, m), a.interval)\n : a.start;\n\n const r = fractionRange(s, a.end, a.interval);\n const out = a.multiplier === -1 ? r.map((v) => math.multiply(v, -1)) : r;\n\n if (math.smaller(interval, 0)) {\n out.reverse();\n }\n return out;\n};\n\nconst fmin = (a, b) => {\n a = math.fraction(a);\n b = math.fraction(b);\n return math.smaller(a, b) ? a : b;\n};\n\nconst fmax = (a, b) => {\n a = math.fraction(a);\n b = math.fraction(b);\n return math.larger(a, b) ? a : b;\n};\n/**\n * the lodash range was causing too much variance in the rounding errors\n * such that it was hard to round the numbers.\n * This is a more simplistic version but makes rounding work.\n */\nexport const simpleRange = (start, end, interval) => {\n start = math.fraction(start);\n end = math.fraction(end);\n interval = math.fraction(interval);\n\n const positiveRange = math.larger(end, 0)\n ? zeroBasedRange(fmax(0, start), end, interval)\n : [];\n\n const negativeRange = math.smaller(start, 0)\n ? zeroBasedRange(fmin(0, end), start, math.multiply(interval, -1))\n : [];\n let together = negativeRange.concat(positiveRange);\n\n const out = uniqWith(together, math.equal);\n return out;\n};\n\nexport const closeTo = (a, b, precision) => {\n precision = precision || 2;\n const expectedDiff = Math.pow(10, -precision) / 2;\n const receivedDiff = Math.abs(a - b);\n return receivedDiff < expectedDiff;\n};\n\nconst limit = (v, min, max) => {\n if (math.smaller(v, min)) {\n return min;\n }\n\n if (math.larger(v, max)) {\n return max;\n }\n\n return v;\n};\n\nexport const minorLimits = (domain) => {\n const end = domain.max - domain.min;\n return {\n min: math.divide(math.fraction(end), 100),\n max: math.divide(math.fraction(end), 3),\n };\n};\n\nexport const isMultiple = (multiple, src) => {\n const mod = math.mod(multiple, src);\n return math.equal(mod, 0);\n};\n\n/**\n * Accepts a fraction object {n,d,s} or number.\n * @param {*} v\n * @return mathjs.fraction\n */\nexport const fraction = (v) => {\n if (isObject(v)) {\n return math.fraction(v.n * v.s, v.d);\n } else if (isNumber(v)) {\n return math.fraction(v);\n }\n};\n\nexport const normalizeTicks = (domain, ticks, opts) => {\n const l = opts ? opts.limit !== false : true;\n const end = fraction(domain.max - domain.min);\n const minor = l\n ? limit(fraction(ticks.minor), math.divide(end, 100), math.divide(end, 3))\n : math.fraction(ticks.minor);\n const major = l\n ? limit(fraction(ticks.major), minor, math.multiply(minor, 10))\n : math.fraction(ticks.major);\n\n const m = isMultiple(major, minor);\n\n if (!m) {\n return { minor, major: math.multiply(minor, 2) };\n }\n\n return { major, minor };\n};\n\n/**\n * Build ticks as an array of mathjs Fractions\n */\nexport const buildTickDataAsFractions = (domain, ticks, opts) => {\n ticks = normalizeTicks(domain, ticks, opts);\n const rng = simpleRange(domain.min, domain.max, ticks.minor);\n\n const o = rng\n .filter((x) => math.smallerEq(x, math.fraction(domain.max)))\n .map((x) => {\n let type = 'minor';\n const modulo = math.mod(x, ticks.major);\n\n if (closeTo(math.number(modulo), 0)) {\n type = 'major';\n }\n\n return { x, type };\n });\n\n return o;\n};\n\nexport const buildTickData = (domain, ticks, opts) => {\n const result = buildTickDataAsFractions(domain, ticks, opts);\n\n const out = result.map((o) => (opts.fraction ? o : { ...o, x: math.number(o.x) || 0 }));\n\n return out;\n};\n\nexport const snapElements = (domain, ticks, elements) => {\n return elements.map((e) => {\n const size = Number.isFinite(e.size)\n ? snapTo(0, e.size, ticks.minor, e.size)\n : undefined;\n const domainPosition = snapTo(\n domain.min,\n domain.max,\n ticks.minor,\n e.domainPosition\n );\n const out = { ...e, domainPosition };\n\n if (Number.isFinite(size)) {\n out.size = size;\n }\n\n return out;\n });\n};\n"],"file":"tick-utils.js"}