From a0de4454d3f0e863c9658bb82fc328ad554d277b Mon Sep 17 00:00:00 2001 From: csavelief Date: Mon, 14 Oct 2024 18:00:42 +0200 Subject: [PATCH] MinimalFileInput - Add the ability to select one or more files. --- dist/cjs/main.js | 27 ++++++++++++++++++++++++--- dist/cjs/main.js.map | 2 +- dist/esm/main.js | 27 ++++++++++++++++++++++++--- dist/esm/main.js.map | 2 +- dist/index.html | 27 +++++++++++++++++++++------ dist/main.min.js | 2 +- dist/main.min.js.map | 2 +- src/blueprintjs.js | 27 ++++++++++++++++++++++++--- 8 files changed, 97 insertions(+), 19 deletions(-) diff --git a/dist/cjs/main.js b/dist/cjs/main.js index 24ed51b..418229f 100644 --- a/dist/cjs/main.js +++ b/dist/cjs/main.js @@ -820,7 +820,8 @@ blueprintjs.Blueprintjs = class extends widgets.Widget { break; } case 'FileInput': { - obj.el = new blueprintjs.MinimalFileInput(container); + const multiple = obj.multiple; + obj.el = new blueprintjs.MinimalFileInput(container, multiple); break; } case 'RadioGroup': { @@ -2931,15 +2932,17 @@ blueprintjs.MinimalFileInput = class extends blueprintjs.Blueprintjs { /** * @param {Element} container the parent element. + * @param {boolean} multiple true iif the user must be able to select one or more files. * @constructor */ - constructor(container) { + constructor(container, multiple) { super(container); this.observers_ = new observers.Subject(); this.disabled_ = false; this.text_ = null; this.buttonText_ = null; this.fill_ = true; + this.multiple_ = multiple === true; this.render(); } @@ -2979,6 +2982,15 @@ blueprintjs.MinimalFileInput = class extends blueprintjs.Blueprintjs { this.render(); } + get multiple() { + return this.multiple_; + } + + set multiple(value) { + this.multiple_ = value; + this.render(); + } + /** * Listen to the `selection-change` event. * @@ -2997,8 +3009,17 @@ blueprintjs.MinimalFileInput = class extends blueprintjs.Blueprintjs { } _newElement() { + const props = {}; + if (this.multiple) { + props.multiple = 'multiple'; + } return React__default["default"].createElement(core.FileInput, { - disabled: this.disabled, text: this.text, buttonText: this.buttonText, fill: this.fill, onInputChange: (el) => { + inputProps: props, + disabled: this.disabled, + text: this.text, + buttonText: this.buttonText, + fill: this.fill, + onInputChange: (el) => { this.text = el.target.files[0].name; this.render(); this.observers_.notify('selection-change', el.target.files[0]); diff --git a/dist/cjs/main.js.map b/dist/cjs/main.js.map index 379e7a9..3e146a3 100644 --- a/dist/cjs/main.js.map +++ b/dist/cjs/main.js.map @@ -1 +1 @@ -{"version":3,"file":"main.js","sources":["../../src/arrays.js","../../src/observers.js","../../src/widgets.js","../../src/strings.js","../../src/blueprintjs.js","../../src/caches.js","../../src/dates.js","../../src/helpers.js","../../src/platform.js","../../src/promises.js","../../src/webcomponents.js"],"sourcesContent":["'use strict'\n\n/**\n * @module arrays\n */\nexport const arrays = {};\n\n/**\n * Removes {@link undefined} elements from an array of strings or numbers and returns distinct values.\n * This function does not preserve the elements order.\n *\n * @param {Array} array an array of strings.\n * @return {Array} an array of distinct strings.\n * @memberOf module:arrays\n */\narrays.distinct = function (array) {\n return array instanceof Array ? Array.from(new Set(array.filter(el => el !== undefined))) : [];\n}\n\n/**\n * Removes {@link undefined} elements from an array of objects and return distinct objects i.e. unique by all properties.\n * This function does not preserve the elements order.\n *\n * @param {Array} array an array of objects.\n * @return {Array} an array of distinct objects.\n * @memberOf module:arrays\n */\narrays.distinctObjects = function (array) {\n return array instanceof Array ? array\n .filter(el => el !== undefined)\n .filter((el1, index, self) => self.findIndex(el2 => (JSON.stringify(el2) === JSON.stringify(el1))) === index) : [];\n}\n\n/**\n * Computes the intersection of two arrays of strings or numbers.\n *\n * @param {Array} array1 the first array.\n * @param {Array} array2 the second array.\n * @return {Array} the intersection of the two arrays.\n * @memberOf module:arrays\n */\narrays.intersect = function (array1, array2) {\n return array1 instanceof Array && array2 instanceof Array ? array1.filter(el => array2.includes(el)) : [];\n}\n\n","'use strict'\n\n/**\n * @module observers\n */\nexport const observers = {};\n\n/**\n * The Subject type.\n *\n * The observer pattern is a software design pattern in which an object, named the subject,\n * maintains a list of its dependents, called observers, and notifies them automatically of\n * any state changes, usually by calling one of their methods.\n *\n * @memberOf module:observers\n * @constructor\n * @struct\n * @final\n */\nobservers.Subject = function () {\n\n const observers = {};\n\n /**\n * Returns the number of observers for a given message type.\n *\n * @param {string} message the observed message.\n * @return {number} the number of observers.\n */\n this.numberOfObservers = function (message) {\n if (message) {\n return observers.hasOwnProperty(message) ? observers[message].length : 0;\n }\n let nbObservers = 0;\n for (const msg in observers) {\n nbObservers += observers[msg].length\n }\n return nbObservers;\n }\n\n /**\n * Register a callback for a given message type.\n *\n * @param {string} message the message to observe.\n * @param {Function} observer the callback to notify.\n */\n this.register = function (message, observer) {\n if (message && typeof message === 'string' && observer && observer instanceof Function) {\n if (!observers.hasOwnProperty(message)) {\n observers[message] = [];\n }\n observers[message].push(observer);\n }\n }\n\n /**\n * Unregister a callback for a given message type.\n *\n * @param {string} message the observed message.\n * @param {Function} observer the notified callback.\n */\n this.unregister = function (message, observer) {\n if (message && typeof message === 'string' && observer && observer instanceof Function && observers.hasOwnProperty(\n message)) {\n observers[message] = observers[message].filter(o => o !== observer);\n }\n }\n\n /**\n * Notify all observers listening to a given message type.\n *\n * @param {string} message the message type.\n * @param {...*} args a list of arguments to pass to each callback.\n */\n this.notify = function (message, ...args) {\n if (message && typeof message === 'string' && args && observers.hasOwnProperty(message)) {\n observers[message].forEach(observer => observer(...args));\n }\n }\n}\n","'use strict'\n\n/**\n * @module widgets\n */\nexport const widgets = {};\n\n/**\n * A skeleton to ease the creation of simple widgets.\n *\n * @memberOf module:widgets\n * @type {widgets.Widget}\n */\nwidgets.Widget = class {\n\n /**\n * @param {Element} container the parent element.\n * @constructor\n */\n constructor(container) {\n this.container_ = container;\n }\n\n /**\n * Returns the widget parent element.\n *\n * @return {Element} the parent element.\n * @name container\n * @function\n * @public\n */\n get container() {\n return this.container_;\n }\n\n /**\n * Sets the widget parent element.\n *\n * @param container\n * @name container\n * @function\n * @public\n */\n set container(container) {\n this.container_ = container;\n this.render();\n }\n\n /**\n * If the current widget creates more widgets, register them using this method.\n * It allows the current widget to properly removes its children from the DOM.\n *\n * @param {Widget} widget the widget to register.\n * @name register\n * @function\n * @protected\n */\n register(widget) {\n if (widget) {\n if (!this.widgets_) {\n this.widgets_ = [];\n }\n this.widgets_.push(widget);\n }\n }\n\n /**\n * In order to avoid a memory leak, properly remove the widget from the DOM.\n *\n * @name destroy\n * @function\n * @public\n */\n destroy() {\n\n if (this.widgets_) {\n\n // Remove registered widgets\n for (let i = 0; i < this.widgets_.length; i++) {\n this.widgets_[i].destroy();\n }\n this.widgets_ = [];\n }\n\n // Empty the container\n while (this.container.firstChild) {\n this.container.removeChild(this.container.firstChild);\n }\n }\n\n /**\n * Renders the widget.\n *\n * @name render\n * @function\n * @public\n */\n render() {\n this.destroy();\n const element = this._newElement();\n if (element) {\n this.container.appendChild(element);\n }\n }\n\n /**\n * Initializes the widget.\n *\n * @return {Element|null}\n * @name _newElement\n * @function\n * @protected\n */\n _newElement() {\n return null;\n }\n}","'use strict'\n\n/**\n * @module strings\n */\nexport const strings = {};\n\n/**\n * Escapes characters with special meaning in {@link RegExp}.\n *\n * @param {string} str the string to escape.\n * @return {string} the escaped string.\n * @memberOf module:strings\n */\nstrings.escapeCharactersWithSpecialMeaningInRegExp = function (str) {\n return str ? ('' + str).replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&' /* the whole matched string */) : '';\n}\n\n/**\n * Converts a string to a {@link RegExp} literal.\n *\n * @param {string} str the string to convert.\n * @param {string} flags the flags of the regular expression.\n * @return {RegExp} a {@link RegExp}.\n * @memberOf module:strings\n */\nstrings.toRegExp = function (str, flags) {\n\n // As of 2020-01-06, the DOT_ALL flag is not available on Firefox\n // If truly needed, use [^]* that reads \"match any character that is not nothing\"\n const newFlags = flags ? flags : 'im';\n const escapedString = strings.escapeCharactersWithSpecialMeaningInRegExp(str).split(/[\\s\\u00a0]+/).join(\n '(\\\\s|\\u00a0)*');\n return new RegExp(escapedString, newFlags);\n}\n\n/**\n * Removes diacritical marks from a string.\n *\n * @param {string} str the string to clean.\n * @param {boolean} preserveStringLength true iif the original string length must be preserved.\n * @return {string} the cleaned text i.e. without diacritical marks.\n * @memberOf module:strings\n * @preserve The code is extracted from https://web.archive.org/web/20121231230126/http://lehelk.com:80/2011/05/06/script-to-remove-diacritics/.\n */\nstrings.removeDiacritics = function (str, preserveStringLength) {\n\n str = str ? '' + str : '';\n\n const diacritics = [{\n base: 'A',\n letters: /[\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F]/g\n }, {\n base: 'B', letters: /[\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181]/g\n }, {\n base: 'C', letters: /[\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E]/g\n }, {\n base: 'D', letters: /[\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779]/g\n }, {\n base: 'E',\n letters: /[\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E]/g\n }, {\n base: 'F', letters: /[\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B]/g\n }, {\n base: 'G', letters: /[\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E]/g\n }, {\n base: 'H', letters: /[\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D]/g\n }, {\n base: 'I',\n letters: /[\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197]/g\n }, {base: 'J', letters: /[\\u004A\\u24BF\\uFF2A\\u0134\\u0248]/g}, {\n base: 'K', letters: /[\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2]/g\n }, {\n base: 'L',\n letters: /[\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780]/g\n }, {\n base: 'M', letters: /[\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C]/g\n }, {\n base: 'N',\n letters: /[\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4]/g\n }, {\n base: 'O',\n letters: /[\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C]/g\n }, {\n base: 'P', letters: /[\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754]/g\n }, {\n base: 'Q', letters: /[\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A]/g\n }, {\n base: 'R',\n letters: /[\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782]/g\n }, {\n base: 'S',\n letters: /[\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784]/g\n }, {\n base: 'T', letters: /[\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786]/g\n }, {\n base: 'U',\n letters: /[\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244]/g\n }, {\n base: 'V', letters: /[\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245]/g\n }, {\n base: 'W', letters: /[\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72]/g\n }, {base: 'X', letters: /[\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C]/g}, {\n base: 'Y', letters: /[\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE]/g\n }, {\n base: 'Z', letters: /[\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762]/g\n }, {\n base: 'a',\n letters: /[\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250]/g\n }, {\n base: 'b', letters: /[\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253]/g\n }, {\n base: 'c', letters: /[\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184]/g\n }, {\n base: 'd', letters: /[\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A]/g\n }, {\n base: 'e',\n letters: /[\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD]/g\n }, {\n base: 'f', letters: /[\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C]/g\n }, {\n base: 'g', letters: /[\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F]/g\n }, {\n base: 'h', letters: /[\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265]/g\n }, {\n base: 'i',\n letters: /[\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131]/g\n }, {\n base: 'j', letters: /[\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249]/g\n }, {\n base: 'k', letters: /[\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3]/g\n }, {\n base: 'l',\n letters: /[\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747]/g\n }, {\n base: 'm', letters: /[\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F]/g\n }, {\n base: 'n',\n letters: /[\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5]/g\n }, {\n base: 'o',\n letters: /[\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275]/g\n }, {\n base: 'p', letters: /[\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755]/g\n }, {\n base: 'q', letters: /[\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759]/g\n }, {\n base: 'r',\n letters: /[\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783]/g\n }, {\n base: 's',\n letters: /[\\u0073\\u24E2\\uFF53\\u00DF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B]/g\n }, {\n base: 't',\n letters: /[\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787]/g\n }, {\n base: 'u',\n letters: /[\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289]/g\n }, {\n base: 'v', letters: /[\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C]/g\n }, {\n base: 'w', letters: /[\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73]/g\n }, {base: 'x', letters: /[\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D]/g}, {\n base: 'y',\n letters: /[\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF]/g\n }, {\n base: 'z', letters: /[\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763]/g\n }];\n\n if (preserveStringLength === undefined || preserveStringLength === true) {\n diacritics.push({base: 'AA', letters: /\\uA732/g}, {base: 'AE', letters: /[\\u00C6\\u01FC\\u01E2]/g},\n {base: 'AO', letters: /\\uA734/g}, {base: 'AU', letters: /\\uA736/g}, {base: 'AV', letters: /[\\uA738\\uA73A]/g},\n {base: 'AY', letters: /\\uA73C/g}, {base: 'DZ', letters: /[\\u01F1\\u01C4]/g},\n {base: 'Dz', letters: /[\\u01F2\\u01C5]/g}, {base: 'LJ', letters: /\\u01C7/g}, {base: 'Lj', letters: /\\u01C8/g},\n {base: 'NJ', letters: /\\u01CA/g}, {base: 'Nj', letters: /\\u01CB/g}, {base: 'OI', letters: /\\u01A2/g},\n {base: 'OO', letters: /\\uA74E/g}, {base: 'OU', letters: /\\u0222/g}, {base: 'TZ', letters: /\\uA728/g},\n {base: 'VY', letters: /\\uA760/g}, {base: 'aa', letters: /\\uA733/g},\n {base: 'ae', letters: /[\\u00E6\\u01FD\\u01E3]/g}, {base: 'ao', letters: /\\uA735/g},\n {base: 'au', letters: /\\uA737/g}, {base: 'av', letters: /[\\uA739\\uA73B]/g}, {base: 'ay', letters: /\\uA73D/g},\n {base: 'dz', letters: /[\\u01F3\\u01C6]/g}, {base: 'hv', letters: /\\u0195/g}, {base: 'lj', letters: /\\u01C9/g},\n {base: 'nj', letters: /\\u01CC/g}, {base: 'oi', letters: /\\u01A3/g}, {base: 'ou', letters: /\\u0223/g},\n {base: 'oo', letters: /\\uA74F/g}, {base: 'tz', letters: /\\uA729/g}, {base: 'vy', letters: /\\uA761/g});\n }\n\n for (let i = 0; i < diacritics.length; i++) {\n str = str.replace(diacritics[i].letters, diacritics[i].base);\n }\n return str;\n}\n\n/**\n * The Pattern type.\n *\n * @param {RegExp} regexp the pattern to match.\n * @param {string} color the highlight color as a hexadecimal string.\n * @memberOf module:strings\n * @constructor\n * @struct\n * @final\n */\nstrings.Pattern = function (regexp, color) {\n this.regexp = regexp;\n this.color = color;\n}\n\n/**\n * The Highlight type.\n *\n * @param {string} matchedText the matched text fragment.\n * @param {number} matchedPage the page number (1-based) from which the snippet was extracted.\n * @param {string} rawSnippet a snippet of text surrounding the matched text fragment (about 300 characters).\n * @param {string} highlightedSnippet a snippet of text surrounding the matched and highlighted text fragment (about 300 characters).\n * @memberOf module:strings\n * @constructor\n * @struct\n * @final\n */\nstrings.Highlight = function (matchedText, matchedPage, rawSnippet, highlightedSnippet) {\n this.matchedText = matchedText;\n this.matchedPage = matchedPage;\n this.rawSnippet = rawSnippet\n this.highlightedSnippet = highlightedSnippet;\n}\n\n/**\n * The HighlightedText type.\n *\n * @param {string} text the whole text, highlighted.\n * @param {Array} snippets the snippet associated with each highlighted text fragment.\n * @memberOf module:strings\n * @constructor\n * @struct\n * @final\n */\nstrings.HighlightedText = function (text, snippets) {\n this.text = text;\n this.snippets = snippets;\n}\n\n/**\n * Highlights all occurrences of a given set of patterns in a string.\n *\n * @param {string} text the text to highlight.\n * @param {Array} patterns a set of patterns to match and highlight.\n * @return {strings.HighlightedText} the highlighted text.\n * @memberOf module:strings\n */\nstrings.highlight = function (text, patterns) {\n\n text = text ? '' + text : '';\n\n if (!patterns || patterns.length <= 0 || strings.isNullOrBlank(text)) {\n return new strings.HighlightedText(text, []);\n }\n\n let highlightedText = text;\n text = strings.removeDiacritics(text, true);\n\n if (text.length !== highlightedText.length) {\n highlightedText = text;\n }\n const highlights = patterns.flatMap(pattern => {\n\n const matcher = pattern.regexp;\n const matches = [];\n let match = null;\n\n while (match = matcher.exec(text)) {\n matches.push({\n start: match.index, end: match.index + match[0].length, color: pattern.color\n });\n }\n return matches;\n }).sort((a, b) => {\n if (a.start < b.start) {\n return 1;\n }\n if (a.start > b.start) {\n return -1;\n }\n return 0;\n }).map(position => {\n\n // TODO : deal with overlaps?\n const prefix = highlightedText.substring(0, position.start);\n const infix = highlightedText.substring(position.start, position.end);\n const suffix = highlightedText.substring(position.end);\n\n highlightedText = `${prefix}${infix}${suffix}`;\n\n const begin = Math.max(0, prefix.length - 50);\n const end = Math.min(150, suffix.length);\n const rawSnippet = `${prefix.substring(begin)}${infix}${suffix.substring(0, end)}`;\n let highlightedSnippet = `${prefix.substring(\n begin)}${infix}${suffix.substring(0, end)}`;\n const pages = prefix.split('\\f' /* page separator */).map((page, index) => index);\n const beginMark = highlightedSnippet.lastIndexOf('');\n\n if (beginMark && (!endMark || beginMark > endMark)) {\n highlightedSnippet = highlightedSnippet.substring(0, beginMark);\n }\n return new strings.Highlight(infix, pages.length, rawSnippet, highlightedSnippet);\n });\n return new strings.HighlightedText(highlightedText, highlights);\n}\n\n/**\n * Returns true iif a string is either null or blank, false otherwise.\n *\n * @param {string} str the string to check.\n * @return {boolean} true if the string is null or blank, false otherwise.\n * @memberOf module:strings\n */\nstrings.isNullOrBlank = function (str) {\n return !(typeof str === 'string' && str.trim() !== '');\n}\n\n/**\n * Prepends '0' to a string or number until a given length is reached.\n *\n * @param {string|number} str a string or number.\n * @param {number} targetLength the string target length.\n * @return {string} a padded string.\n * @memberOf module:strings\n */\nstrings.pad = function (str, targetLength) {\n return (str ? '' + str : '').padStart(targetLength, '0');\n}\n\n/**\n * Removes all '0' from the beginning of a string.\n *\n * @param {string} str a string.\n * @return {string} an un-padded string.\n * @memberOf module:strings\n */\nstrings.unpad = function (str) {\n str = str ? '' + str : '';\n let i = 0;\n for (; i < str.length && str[i] === '0'; i++) {\n }\n return str.substring(i);\n}\n\n/**\n * Checks if a string represents a numeric value.\n *\n * @param {string} str the string to check.\n * @return {boolean} true if the string is a number, false otherwise.\n * @memberOf module:strings\n * @preserve The code is extracted from https://stackoverflow.com/a/175787.\n */\nstrings.isNumeric = function (str) {\n return typeof str === 'string' ? !isNaN(str) && !isNaN(parseFloat(str)) : false;\n}\n\n/**\n * Formats null or blank values.\n *\n * @param {string|number} str the value to format.\n * @param {string} defaultValue the string to return if the value is either null or empty.\n * @return {string} the formatted value.\n */\nstrings.formatNullOrBlank = function (str, defaultValue) {\n str = str ? '' + str : '';\n return strings.isNullOrBlank(str) ? defaultValue : str;\n}\n\n/**\n * Returns true iif a string starts with 'MASKED_', false otherwise.\n *\n * @param {string} str the string to check.\n * @return {boolean} true iif the string starts with 'MASKED_', false otherwise.\n */\nstrings.isMasked = function (str) {\n return typeof str === 'string' ? str.trim().toUpperCase().startsWith('MASKED_') : false;\n}\n\n/**\n * Convert a string from camel case to snake case.\n *\n * @param {string} str the string in camel case.\n * @returns {string} the string in snake case.\n */\nstrings.camelToSnakeCase = function (str) {\n return typeof str === 'string' ? str.replace(/[A-Z]/g,\n (letter, idx) => idx === 0 ? letter.toLowerCase() : `_${letter.toLowerCase()}`) : null;\n}\n\n/**\n * Convert a string from snake case to camel case.\n *\n * @param {string} str the string in snake case.\n * @returns {string} the string in camel case.\n */\nstrings.snakeCaseToCamelCase = function (str) {\n return typeof str === 'string' ? str.replace(/_[a-z]/g,\n (group, idx) => idx === 0 ? group.replace('_', '') : group.toUpperCase().replace('_', '')) : null;\n}","'use strict'\n\nimport {observers} from \"./observers\";\nimport {widgets} from \"./widgets\";\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport {\n Alignment,\n Button,\n Card,\n Checkbox,\n Drawer,\n FileInput,\n Icon,\n InputGroup,\n Intent,\n Menu,\n MenuItem,\n NumericInput,\n Position,\n RadioGroup,\n RangeSlider,\n Slider,\n Spinner,\n SpinnerSize,\n Switch,\n Tab,\n Tabs,\n Toast,\n Toaster\n} from '@blueprintjs/core';\nimport {Cell, Column, ColumnHeaderCell, Table2, TableLoadingOption} from '@blueprintjs/table';\nimport {MultiSelect2, Select2, Suggest2} from '@blueprintjs/select';\nimport {TimePrecision} from '@blueprintjs/datetime';\nimport {DateInput2, DateRangeInput2} from '@blueprintjs/datetime2';\nimport {add, format, parse, sub} from \"date-fns\";\nimport {strings} from \"./strings\";\n\n/**\n * @module blueprintjs\n */\nexport const blueprintjs = {};\n\n/**\n * Base class that deals with injecting the common styles and scripts.\n *\n * @memberOf module:blueprintjs\n * @type {blueprintjs.Blueprintjs}\n */\nblueprintjs.Blueprintjs = class extends widgets.Widget {\n\n /**\n * @param {Element} container the parent element.\n * @constructor\n */\n constructor(container) {\n super(container);\n }\n\n /**\n * Populate a DOM element with Blueprintjs components.\n *\n * @param template the DOM element.\n * @param objs the components.\n */\n static populate(template, objs) {\n objs.forEach(obj => blueprintjs.Blueprintjs.component(template, obj));\n }\n\n /**\n * Create a Blueprintjs component from a JSON object.\n *\n * @param template the DOM element where the component will be added.\n * @param obj the component properties.\n */\n static component(template, obj) {\n\n // {\n // type: '',\n // container: '',\n // el: null,\n // ...\n // }\n const container = template.querySelector(`#${obj.container}`);\n if (!container) {\n return obj;\n }\n switch (obj.type) {\n case 'Table': {\n obj.el = new blueprintjs.MinimalTable(container);\n break;\n }\n case 'Select': {\n const itemToText = obj.item_to_text;\n const itemToLabel = obj.item_to_label;\n const itemPredicate = obj.item_predicate;\n const itemCreate = obj.item_create;\n obj.el = new blueprintjs.MinimalSelect(container, itemToText, itemToLabel, itemPredicate, itemCreate);\n break;\n }\n case 'Slider': {\n const min = obj.min;\n const max = obj.max;\n const increment = obj.increment;\n const displayIncrement = obj.display_increment;\n obj.el = new blueprintjs.MinimalSlider(container, min, max, increment, displayIncrement);\n break;\n }\n case 'RangeSlider': {\n const min = obj.min;\n const max = obj.max;\n const increment = obj.increment;\n const displayIncrement = obj.display_increment;\n const defaultMinValue = obj.default_min_value;\n const defaultMaxValue = obj.default_max_value;\n obj.el = new blueprintjs.MinimalRangeSlider(container, min, max, increment, displayIncrement, defaultMinValue,\n defaultMaxValue);\n break;\n }\n case 'Drawer': {\n const width = obj.width;\n obj.el = new blueprintjs.MinimalDrawer(container, width);\n break;\n }\n case 'Tabs': {\n obj.el = new blueprintjs.MinimalTabs(container);\n break;\n }\n case 'Spinner': {\n const size = obj.size;\n obj.el = new blueprintjs.MinimalSpinner(container, size);\n break;\n }\n case 'Switch': {\n const checked = obj.checked;\n const label = obj.label;\n const labelPosition = obj.label_position;\n const labelChecked = obj.label_checked;\n const labelUnchecked = obj.label_unchecked;\n obj.el = new blueprintjs.MinimalSwitch(container, checked, label, labelPosition, labelChecked, labelUnchecked);\n break;\n }\n case 'Toaster': {\n obj.el = new blueprintjs.MinimalToaster(container);\n break;\n }\n case 'Card': {\n const body = obj.body;\n obj.el = new blueprintjs.MinimalCard(container, body);\n break;\n }\n case 'Icon': {\n const icon = obj.icon;\n const intent = obj.intent;\n obj.el = new blueprintjs.MinimalIcon(container, icon, intent);\n break;\n }\n case 'Checkbox': {\n const checked = obj.checked;\n const label = obj.label;\n const labelPosition = obj.label_position;\n obj.el = new blueprintjs.MinimalCheckbox(container, checked, label, labelPosition);\n break;\n }\n case 'Date': {\n const format = obj.format;\n const minDate = obj.min_date;\n const maxDate = obj.max_date;\n obj.el = new blueprintjs.MinimalDate(container, format, minDate, maxDate);\n break;\n }\n case 'Datetime': {\n const format = obj.format;\n const minDate = obj.min_date;\n const maxDate = obj.max_date;\n const timePrecision = obj.default_precision;\n const defaultTimezone = obj.default_timezone;\n obj.el = new blueprintjs.MinimalDatetime(container, format, minDate, maxDate, timePrecision, defaultTimezone);\n break;\n }\n case 'DateRange': {\n const format = obj.format;\n const minDate = obj.min_date;\n const maxDate = obj.max_date;\n obj.el = new blueprintjs.MinimalDateRange(container, format, minDate, maxDate);\n break;\n }\n case 'MultiSelect': {\n const itemToText = obj.item_to_text;\n const itemToLabel = obj.item_to_label;\n const itemToTag = obj.item_to_tag;\n const itemPredicate = obj.item_predicate;\n const itemCreate = obj.item_create;\n obj.el = new blueprintjs.MinimalMultiSelect(container, itemToText, itemToLabel, itemToTag, itemPredicate,\n itemCreate);\n break;\n }\n case 'Suggest': {\n const itemToText = obj.item_to_text;\n const itemToLabel = obj.item_to_label;\n const itemPredicate = obj.item_predicate;\n obj.el = new blueprintjs.MinimalSuggest(container, itemToText, itemToLabel, itemPredicate);\n break;\n }\n case 'FileInput': {\n obj.el = new blueprintjs.MinimalFileInput(container);\n break;\n }\n case 'RadioGroup': {\n const label = obj.label;\n const inline = obj.inline;\n obj.el = new blueprintjs.MinimalRadioGroup(container, label, inline);\n break;\n }\n case 'TextInput': {\n const defaultValue = obj.default_value;\n const icon = obj.icon;\n const intent = obj.intent;\n obj.el = new blueprintjs.MinimalTextInput(container, defaultValue, icon, intent);\n break;\n }\n case 'NumericInput': {\n const min = obj.min;\n const max = obj.max;\n const increment = obj.increment;\n const defaultValue = obj.default_value;\n const icon = obj.icon;\n const intent = obj.intent;\n obj.el = new blueprintjs.MinimalNumericInput(container, min, max, increment, defaultValue, icon, intent);\n break;\n }\n case 'Button': {\n const label = obj.label;\n const labelPosition = obj.label_position;\n const leftIcon = obj.left_icon;\n const rightIcon = obj.right_icon;\n const intent = obj.intent;\n obj.el = new blueprintjs.MinimalButton(container, label, labelPosition, leftIcon, rightIcon, intent);\n break;\n }\n default:\n obj.el = null;\n break;\n }\n if (obj.el) {\n for (let key in obj) {\n if (key === 'type' || key === 'container' || key === 'el') {\n continue;\n }\n const prop = strings.snakeCaseToCamelCase(key);\n const desc = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(obj.el), prop);\n // console.log(prop, desc);\n if (desc) {\n if (desc.set) { // setter\n obj.el[prop] = obj[key];\n } else if (desc.writable) { // function\n obj.el[prop](obj[key]);\n }\n }\n }\n }\n return obj;\n }\n\n /**\n * In order to avoid a memory leak, properly remove the component from the DOM.\n *\n * @name destroy\n * @function\n * @protected\n */\n destroy() {\n\n if (this.widgets_) {\n\n // Remove registered widgets\n for (let i = 0; i < this.widgets_.length; i++) {\n this.widgets_[i].destroy();\n }\n this.widgets_ = [];\n }\n\n ReactDOM.unmountComponentAtNode(this.container);\n }\n\n /**\n * Renders the component.\n *\n * @name render\n * @function\n * @protected\n */\n render() {\n const element = this._newElement();\n if (element) {\n ReactDOM.render(element, this.container);\n }\n }\n\n /**\n * Initializes the component.\n *\n * @return {ReactElement|null}\n * @name _newElement\n * @function\n * @protected\n */\n _newElement() {\n return null;\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs table component.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalTable}\n */\nblueprintjs.MinimalTable = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {function(number, number, *): ReactElement} cellRenderer a function in charge of rendering a single cell (optional).\n * @constructor\n */\n constructor(container, cellRenderer) {\n super(container);\n this.cellRenderer_ = cellRenderer;\n this.observers_ = new observers.Subject();\n this.columns_ = [];\n this.columnWidths_ = [];\n this.columnTypes_ = [];\n this.rows_ = [];\n this.loadingOptions_ = [];\n this.render();\n }\n\n get columns() {\n return this.columns_;\n }\n\n set columns(value) {\n this.columns_ = value;\n this.render();\n }\n\n get columnTypes() {\n return this.columnTypes_;\n }\n\n set columnTypes(values) {\n this.columnTypes_ = values;\n this.render();\n }\n\n get columnWidths() {\n return this.columnWidths_;\n }\n\n set columnWidths(values) {\n this.columnWidths_ = values;\n this.render();\n }\n\n get rows() {\n return this.rows_;\n }\n\n set rows(values) {\n this.rows_ = values;\n this.render();\n }\n\n get loadingOptions() {\n return this.loadingOptions_;\n }\n\n set loadingOptions(values) {\n this.loadingOptions_ = values;\n this.render();\n }\n\n /**\n * Listen to the `sort` event.\n *\n * @param {function(string, string): void} callback the callback to call when the event is triggered.\n * @name onSortColumn\n * @function\n * @public\n */\n onSortColumn(callback) {\n this.observers_.register('sort', (column, order) => {\n // console.log('Sort ' + order + ' is ' + column);\n if (callback) {\n callback(column, order);\n }\n });\n }\n\n /**\n * Listen to the `fetch-next-rows` event.\n *\n * @param {function(number): void} callback the callback to call when the event is triggered.\n * @name onFetchNextRows\n * @function\n * @public\n */\n onFetchNextRows(callback) {\n this.observers_.register('fetch-next-rows', (nextRow) => {\n // console.log('Next row is ' + nextRow);\n if (callback) {\n callback(nextRow);\n }\n });\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(Array): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (regions) => {\n // console.log('Selected regions are ', regions);\n if (callback) {\n\n const cells = [];\n\n for (let i = 0; i < regions.length; i++) {\n\n if (!regions[i].hasOwnProperty('rows')) {\n continue; // ignore the region if a whole column has been selected\n }\n if (!regions[i].hasOwnProperty('cols')) {\n continue; // ignore the region if a whole row has been selected\n }\n\n const rows = regions[i].rows;\n const columns = regions[i].cols;\n\n for (let j = rows[0]; j <= rows[1]; j++) {\n for (let k = columns[0]; k <= columns[1]; k++) {\n cells.push({row_idx: j, col_idx: k, value: this.rows[j][k]});\n }\n }\n }\n callback(cells);\n }\n });\n }\n\n _newCell(self, rowIdx, colIdx) {\n return self.cellRenderer_ ? self.cellRenderer_(rowIdx, colIdx, self.rows[rowIdx][colIdx]) : React.createElement(\n Cell, {\n rowIndex: rowIdx, columnIndex: colIdx, style: {\n 'text-align': self.columnTypes[colIdx] === 'number' ? 'right' : 'left'\n }, children: React.createElement('div', {}, self.rows[rowIdx][colIdx]),\n });\n }\n\n _newColumnHeader(self, column) {\n return React.createElement(ColumnHeaderCell, {\n name: column, menuRenderer: () => {\n\n // Menu item for sorting the column in ascending order\n const menuItemSortAsc = React.createElement(MenuItem, {\n icon: 'sort-asc', text: 'Sort Asc', onClick: () => self.observers_.notify('sort', column, 'ASC'),\n });\n\n // Menu item for sorting the column in descending order\n const menuItemSortDesc = React.createElement(MenuItem, {\n icon: 'sort-desc', text: 'Sort Desc', onClick: () => self.observers_.notify('sort', column, 'DESC'),\n });\n\n return React.createElement(Menu, {\n children: [menuItemSortAsc, menuItemSortDesc]\n });\n }\n });\n }\n\n _newColumn(self, column) {\n return React.createElement(Column, {\n name: column,\n cellRenderer: (rowIdx, colIdx) => self._newCell(self, rowIdx, colIdx),\n columnHeaderCellRenderer: () => self._newColumnHeader(self, column),\n });\n }\n\n _newElement() {\n return React.createElement(Table2, {\n numRows: this.rows.length,\n children: this.columns.map(column => this._newColumn(this, column)),\n enableColumnReordering: true,\n loadingOptions: this.loadingOptions,\n columnWidths: this.columnWidths.length <= 0 ? null : this.columnWidths,\n onSelection: (regions) => {\n this.observers_.notify('selection-change', regions);\n },\n onVisibleCellsChange: (rowIndex, columnIndex) => {\n if (rowIndex.rowIndexEnd + 1 >= this.rows.length) {\n this.observers_.notify('fetch-next-rows', this.rows.length);\n }\n },\n onColumnsReordered: (oldIndex, newIndex, length) => {\n\n this.loadingOptions = [TableLoadingOption.CELLS];\n\n // First, reorder the rows header\n const oldColumnsOrder = this.columns;\n const newColumnsOrder = [];\n\n const oldColumnTypes = this.columnTypes;\n const newColumnTypes = [];\n\n for (let i = 0; i < oldColumnsOrder.length; i++) {\n if (!(oldIndex <= i && i < oldIndex + length)) {\n newColumnsOrder.push(oldColumnsOrder[i]);\n newColumnTypes.push(oldColumnTypes[i]);\n }\n }\n for (let k = oldIndex; k < oldIndex + length; k++) {\n newColumnsOrder.splice(newIndex + k - oldIndex, 0, oldColumnsOrder[k]);\n newColumnTypes.splice(newIndex + k - oldIndex, 0, oldColumnTypes[k]);\n }\n\n // console.log('Previous column order was [' + oldColumnsOrder.join(', ') + ']');\n // console.log('New column order is [' + newColumnsOrder.join(', ') + ']');\n\n // console.log('Previous column types were [' + oldColumnTypes.join(', ') + ']');\n // console.log('New column types is [' + newColumnTypes.join(', ') + ']');\n\n // Then, reorder the rows data\n const oldColumnsIndex = {};\n const newColumnsIndex = {};\n\n for (let i = 0; i < oldColumnsOrder.length; i++) {\n oldColumnsIndex[oldColumnsOrder[i]] = i;\n }\n for (let i = 0; i < newColumnsOrder.length; i++) {\n newColumnsIndex[i] = newColumnsOrder[i];\n }\n\n const oldRows = this.rows;\n const newRows = [];\n\n for (let i = 0; i < oldRows.length; i++) {\n\n const newRow = [];\n\n for (let j = 0; j < oldRows[i].length; j++) {\n newRow.push(oldRows[i][oldColumnsIndex[newColumnsIndex[j]]]);\n }\n newRows.push(newRow);\n }\n\n // Next, redraw the table\n this.columns = newColumnsOrder;\n this.columnTypes = newColumnTypes;\n this.rows = newRows;\n this.loadingOptions = [];\n },\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs select element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalSelect}\n */\nblueprintjs.MinimalSelect = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {function(*): string} itemToText a function that maps an item to the text to be displayed (optional).\n * @param {function(*): string} itemToLabel a function that maps an item to the label to be displayed (optional).\n * @param {function(string, *): boolean} itemPredicate a function that filters the internal list of items when user enters something in the input (optional).\n * @param {function(string): *} itemCreate a function that creates an item from a string (optional).\n * @constructor\n */\n constructor(container, itemToText, itemToLabel, itemPredicate, itemCreate) {\n super(container);\n this.itemToText_ = itemToText;\n this.itemToLabel_ = itemToLabel;\n this.itemPredicate_ = (query, item) => {\n if (itemPredicate) {\n return itemPredicate(query, item);\n }\n if (query && query !== '') {\n const txt = this.itemToText_ ? this.itemToText_(item) : item;\n return txt.trim().toLowerCase().indexOf(query.trim().toLowerCase()) >= 0;\n }\n return true;\n };\n this.itemCreate_ = itemCreate;\n this.observers_ = new observers.Subject();\n this.selectedItem_ = null;\n this.fillContainer_ = true;\n this.disabled_ = false;\n this.filterable_ = true;\n this.items_ = [];\n this.defaultText_ = 'Sélectionnez un élément...';\n this.noResults_ = 'Il n\\'y a aucun résultat pour cette recherche.';\n this.render();\n }\n\n get fillContainer() {\n return this.fillContainer_;\n }\n\n set fillContainer(value) {\n this.fillContainer_ = value;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get filterable() {\n return this.filterable_;\n }\n\n set filterable(value) {\n this.filterable_ = value;\n this.render();\n }\n\n get items() {\n return this.items_;\n }\n\n set items(values) {\n this.items_ = values;\n this.render();\n }\n\n get selectedItem() {\n return this.selectedItem_;\n }\n\n set selectedItem(value) {\n this.selectedItem_ = value;\n this.render();\n }\n\n get defaultText() {\n return this.defaultText_;\n }\n\n set defaultText(value) {\n this.defaultText_ = value;\n this.render();\n }\n\n get noResults() {\n return this.noResults_;\n }\n\n set noResults(value) {\n this.noResults_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(*): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (item) => {\n // console.log('Selected item is ', item);\n if (callback) {\n callback(item);\n }\n });\n }\n\n /**\n * Listen to the `filter-change` event.\n *\n * @param {function(*): void} callback the callback to call when the event is triggered.\n * @name onFilterChange\n * @function\n * @public\n */\n onFilterChange(callback) {\n this.observers_.register('filter-change', (filter) => {\n // console.log('Filter is ', filter);\n if (callback) {\n callback(filter);\n }\n });\n }\n\n _newButton() {\n return React.createElement(Button, {\n text: this.selectedItem ? this.itemToText_ ? this.itemToText_(this.selectedItem) : this.selectedItem\n : this.defaultText,\n alignText: 'left',\n rightIcon: 'double-caret-vertical',\n fill: this.fillContainer,\n disabled: this.disabled,\n });\n }\n\n _newElement() {\n return React.createElement(Select2, {\n fill: this.fillContainer,\n disabled: this.disabled,\n children: [this._newButton()],\n items: this.items,\n filterable: this.filterable,\n itemPredicate: this.itemPredicate_,\n onItemSelect: (item) => {\n // If the user selects twice the same item, removes the selection\n const selection = item === this.selectedItem ? null : item;\n this.selectedItem_ = selection;\n this.render();\n this.observers_.notify('selection-change', selection);\n },\n onQueryChange: (query) => {\n this.observers_.notify('filter-change', query);\n },\n itemRenderer: (item, props) => {\n if (!props.modifiers.matchesPredicate) {\n return null;\n }\n return React.createElement(MenuItem, {\n key: props.index,\n selected: props.modifiers.active,\n text: this.itemToText_ ? this.itemToText_(item) : item,\n label: this.itemToLabel_ ? this.itemToLabel_(item) : '',\n onFocus: props.handleFocus,\n onClick: props.handleClick,\n });\n },\n noResults: React.createElement(MenuItem, {\n text: this.noResults, disabled: true,\n }),\n popoverProps: {\n matchTargetWidth: true,\n },\n createNewItemFromQuery: this.itemCreate_,\n createNewItemRenderer: (query, active, handleClick) => {\n return React.createElement(MenuItem, {\n icon: 'add', selected: active, text: query, onClick: handleClick,\n });\n },\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs slider element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalSlider}\n */\nblueprintjs.MinimalSlider = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {number} min the minimum value.\n * @param {number} max the maximum value.\n * @param {number} increment the internal increment.\n * @param {number} displayIncrement the display increment.\n * @constructor\n */\n constructor(container, min, max, increment, displayIncrement) {\n super(container);\n this.min_ = min;\n this.max_ = max;\n this.increment_ = increment;\n this.displayIncrement_ = displayIncrement;\n this.value_ = min;\n this.observers_ = new observers.Subject();\n this.disabled_ = false;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get value() {\n return this.value_;\n }\n\n set value(value) {\n this.value_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(number): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (value) => {\n // console.log('Selected value is ', item);\n if (callback) {\n callback(value);\n }\n });\n }\n\n _newElement() {\n return React.createElement(Slider, {\n min: this.min_,\n max: this.max_,\n stepSize: this.increment_,\n labelStepSize: this.displayIncrement_,\n value: this.value,\n disabled: this.disabled,\n onChange: (value) => {\n this.value = value;\n this.observers_.notify('selection-change', value);\n },\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs range slider element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalRangeSlider}\n */\nblueprintjs.MinimalRangeSlider = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {number} min the minimum value.\n * @param {number} max the maximum value.\n * @param {number} increment the internal increment.\n * @param {number} displayIncrement the display increment.\n * @param {number} defaultMinValue the minimum value selected when the component is rendered the first time.\n * @param {number} defaultMaxValue the maximum value selected when the component is rendered the first time.\n * @constructor\n */\n constructor(container, min, max, increment, displayIncrement, defaultMinValue, defaultMaxValue) {\n super(container);\n this.min_ = min;\n this.max_ = max;\n this.increment_ = increment;\n this.displayIncrement_ = displayIncrement;\n this.minValue_ = defaultMinValue;\n this.maxValue_ = defaultMaxValue;\n this.observers_ = new observers.Subject();\n this.disabled_ = false;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get minValue() {\n return this.minValue_;\n }\n\n set minValue(value) {\n this.minValue_ = value;\n this.render();\n }\n\n get maxValue() {\n return this.maxValue_;\n }\n\n set maxValue(value) {\n this.maxValue_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(number, number): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (value) => {\n // console.log('Selected value is ', value);\n if (callback) {\n callback(value[0], value[1]);\n }\n });\n }\n\n _newElement() {\n return React.createElement(RangeSlider, {\n min: this.min_,\n max: this.max_,\n stepSize: this.increment_,\n labelStepSize: this.displayIncrement_,\n value: [this.minValue, this.maxValue],\n disabled: this.disabled,\n onChange: (value) => {\n this.minValue = value[0];\n this.maxValue = value[1];\n this.observers_.notify('selection-change', value);\n },\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs drawer element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalDrawer}\n */\nblueprintjs.MinimalDrawer = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {string} width the drawer width in pixels or percents (optional).\n * @constructor\n */\n constructor(container, width) {\n super(container);\n this.observers_ = new observers.Subject();\n this.show_ = false;\n this.width_ = width ? width : '75%';\n this.render();\n }\n\n get show() {\n return this.show_;\n }\n\n set show(value) {\n this.show_ = value;\n this.render();\n }\n\n /**\n * Listen to the `opening` event.\n *\n * @param {function(Element): void} callback the callback to call when the event is triggered.\n * @name onOpen\n * @function\n * @public\n */\n onOpen(callback) {\n this.observers_.register('opening', (el) => {\n if (callback) {\n callback(el);\n }\n });\n }\n\n /**\n * Listen to the `opened` event.\n *\n * @param {function(Element): void} callback the callback to call when the event is triggered.\n * @name onOpened\n * @function\n * @public\n */\n onOpened(callback) {\n this.observers_.register('opened', (el) => {\n if (callback) {\n callback(el);\n }\n });\n }\n\n /**\n * Listen to the `closing` event.\n *\n * @param {function(Element): void} callback the callback to call when the event is triggered.\n * @name onClose\n * @function\n * @public\n */\n onClose(callback) {\n this.observers_.register('closing', (el) => {\n if (callback) {\n callback(el);\n }\n });\n }\n\n _newElement() {\n return React.createElement(Drawer, {\n isOpen: this.show,\n size: this.width_,\n position: Position.RIGHT,\n onOpening: (el) => this.observers_.notify('opening', el),\n onOpened: (el) => this.observers_.notify('opened', el),\n onClose: () => this.show = false,\n onClosed: (el) => this.observers_.notify('closing', el),\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs tabs element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalTabs}\n */\nblueprintjs.MinimalTabs = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @constructor\n */\n constructor(container) {\n super(container);\n this.observers_ = new observers.Subject();\n this.tabs_ = [];\n this.render();\n }\n\n /**\n * Add a single tab to the nav bar.\n *\n * @param {string} name the tab name.\n * @param {Element} panel the tab content.\n * @name addTab\n * @function\n * @public\n */\n addTab(name, panel) {\n this.tabs_.push({\n name: name, panel: panel, disabled: false, is_selected: false,\n });\n this.render();\n }\n\n /**\n * Remove a single tab from the nav bar.\n *\n * @param {string} name the tab name.\n * @name removeTab\n * @function\n * @public\n */\n removeTab(name) {\n this.tabs_ = this.tabs_.filter(tab => tab.name !== name);\n this.render();\n }\n\n /**\n * Select the tab to display.\n *\n * @param {string} name the tab name.\n * @name selectTab\n * @function\n * @public\n */\n selectTab(name) {\n let selectedTab = null;\n this.tabs_.forEach(tab => {\n if (tab.name !== name) {\n tab.is_selected = false;\n } else {\n tab.is_selected = true;\n selectedTab = tab;\n }\n });\n this.render();\n if (selectedTab) {\n this.observers_.notify('selection-change', selectedTab.name, selectedTab.panel);\n }\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(string, Element): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (tabName, tabBody) => {\n // console.log('Selected tab is ' + tabName);\n if (callback) {\n callback(tabName, tabBody);\n }\n });\n }\n\n _newTab(tab) {\n return React.createElement(Tab, {\n id: tab.name, title: tab.name, panel: null, disabled: tab.disabled,\n });\n }\n\n _newElement() {\n const selectedTab = this.tabs_.find(tab => tab.is_selected);\n return React.createElement(Tabs, {\n id: 'tabs',\n children: this.tabs_.map(tab => this._newTab(tab)),\n selectedTabId: selectedTab ? selectedTab.name : null,\n onChange: (newTabId, oldTabId) => this.selectTab(newTabId)\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs spinner element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalSpinner}\n */\nblueprintjs.MinimalSpinner = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {string} size the spinner size in {'small', 'standard', 'large'}\n * @constructor\n */\n constructor(container, size) {\n super(container);\n this.value_ = null;\n if (size === 'small') {\n this.size_ = SpinnerSize.SMALL;\n } else if (size === 'large') {\n this.size_ = SpinnerSize.LARGE;\n } else {\n this.size_ = SpinnerSize.STANDARD;\n }\n this.render();\n }\n\n /**\n * Represents how far along an operation is.\n *\n * @param {number} value a value between 0 and 1 (inclusive) representing how far along an operation is.\n * @name advance\n * @function\n * @public\n */\n advance(value) {\n this.value_ = value;\n this.render();\n }\n\n _newElement() {\n return React.createElement(Spinner, {\n value: this.value_, size: this.size_,\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs switch element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalSwitch}\n */\nblueprintjs.MinimalSwitch = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {boolean} checked true iif the control should initially be checked, false otherwise (optional).\n * @param {string} label the switch label (optional).\n * @param {string} labelPosition the switch label position (in {left, right}) in respect to the element (optional).\n * @param {string} labelChecked the text to display inside the switch indicator when checked (optional).\n * @param {string} labelUnchecked the text to display inside the switch indicator when unchecked (optional).\n * @constructor\n */\n constructor(container, checked, label, labelPosition, labelChecked, labelUnchecked) {\n super(container);\n this.checked_ = checked;\n this.label_ = label;\n this.switchPosition_ = labelPosition === 'left' ? Alignment.RIGHT : Alignment.LEFT;\n this.labelChecked_ = labelChecked;\n this.labelUnchecked_ = labelUnchecked;\n this.observers_ = new observers.Subject();\n this.disabled_ = false;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get checked() {\n return this.checked_;\n }\n\n set checked(value) {\n this.checked_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(boolean): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (value) => {\n // console.log('Selected option is ' + (value ? 'checked' : 'unchecked'));\n if (callback) {\n callback(value ? 'checked' : 'unchecked');\n }\n });\n }\n\n _newElement() {\n return React.createElement(Switch, {\n disabled: this.disabled_,\n checked: this.checked_,\n label: this.label_,\n alignIndicator: this.switchPosition_,\n innerLabel: this.labelUnchecked_,\n innerLabelChecked: this.labelChecked_,\n onChange: () => {\n this.checked = !this.checked;\n this.observers_.notify('selection-change', this.checked);\n },\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs toast element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalToast}\n */\nblueprintjs.MinimalToast = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {string} message the message to display.\n * @param {string} intent the message intent in {none, primary, success, warning, danger} (optional).\n * @param {number} timeout the number of milliseconds to wait before automatically dismissing the toast (optional).\n * @constructor\n */\n constructor(container, message, intent, timeout) {\n super(container);\n this.timeout_ = timeout;\n this.message_ = message;\n if (intent === 'primary') {\n this.intent_ = Intent.PRIMARY;\n this.icon_ = null;\n } else if (intent === 'success') {\n this.intent_ = Intent.SUCCESS;\n this.icon_ = 'tick';\n } else if (intent === 'warning') {\n this.intent_ = Intent.WARNING;\n this.icon_ = 'warning-sign';\n } else if (intent === 'danger') {\n this.intent_ = Intent.DANGER;\n this.icon_ = 'warning-sign';\n } else {\n this.intent_ = Intent.NONE;\n this.icon_ = null;\n }\n this.observers_ = new observers.Subject();\n this.render();\n }\n\n /**\n * Listen to the `dismiss` event.\n *\n * @param {function(void): void} callback the callback to call when the event is triggered.\n * @name onDismiss\n * @function\n * @public\n */\n onDismiss(callback) {\n this.observers_.register('dismiss', (self) => {\n // console.log('Toast dismissed!');\n if (callback) {\n callback();\n }\n });\n }\n\n _newElement() {\n return React.createElement(Toast, {\n intent: this.intent_,\n icon: this.icon_,\n message: React.createElement('div', {}, this.message_),\n timeout: this.timeout_,\n onDismiss: () => this.observers_.notify('dismiss', this),\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs toaster element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalToaster}\n */\nblueprintjs.MinimalToaster = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @constructor\n */\n constructor(container) {\n super(container);\n this.toasts_ = [];\n this.render();\n }\n\n /**\n * Create and display a new toast.\n *\n * @param {string} message the message to display.\n * @param {string} intent the message intent in {none, primary, success, warning, danger} (optional).\n * @param {number} timeout the number of milliseconds to wait before automatically dismissing the toast (optional).\n * @name toast\n * @function\n * @public\n */\n toast(message, intent, timeout) {\n const toast = new blueprintjs.MinimalToast(this.container, message, intent, timeout);\n toast.el_ = toast._newElement();\n toast.onDismiss(() => {\n this.toasts_ = this.toasts_.filter(t => t !== toast);\n this.render();\n });\n this.toasts_.push(toast);\n this.render();\n }\n\n _newElement() {\n return React.createElement(Toaster, {\n children: this.toasts_.map(toast => toast.el_), position: Position.TOP,\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs card element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalCard}\n */\nblueprintjs.MinimalCard = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {Element} body the card body.\n * @constructor\n */\n constructor(container, body) {\n super(container);\n this.elevation_ = 0;\n this.interactive_ = false;\n this.observers_ = new observers.Subject();\n this.body_ = React.createElement('div', {\n ref: React.createRef(),\n });\n this.render(); // this.body_ must be rendered first!\n this.body_.ref.current.appendChild(body);\n this.render();\n }\n\n get elevation() {\n return this.elevation_;\n }\n\n set elevation(value) {\n this.elevation_ = !value ? 0 : value > 4 ? 4 : value;\n this.render();\n }\n\n get interactive() {\n return this.interactive_;\n }\n\n set interactive(value) {\n this.interactive_ = value;\n this.render();\n }\n\n /**\n * Listen to the `click` event.\n *\n * @param {function(void): void} callback the callback to call when the event is triggered.\n * @name onClick\n * @function\n * @public\n */\n onClick(callback) {\n this.observers_.register('click', (self) => {\n // console.log('Card clicked!');\n if (callback) {\n callback();\n }\n });\n }\n\n _newElement() {\n return React.createElement(Card, {\n children: [this.body_],\n elevation: this.elevation_,\n interactive: this.interactive_,\n onClick: () => this.observers_.notify('click', this),\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs icon element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalIcon}\n */\nblueprintjs.MinimalIcon = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {string} icon the icon name.\n * @param {string} intent the icon intent in {none, primary, success, warning, danger} (optional).\n * @constructor\n */\n constructor(container, icon, intent) {\n super(container);\n this.observers_ = new observers.Subject();\n this.icon_ = icon;\n this.size_ = 20;\n if (intent === 'primary') {\n this.intent_ = Intent.PRIMARY;\n } else if (intent === 'success') {\n this.intent_ = Intent.SUCCESS;\n } else if (intent === 'warning') {\n this.intent_ = Intent.WARNING;\n } else if (intent === 'danger') {\n this.intent_ = Intent.DANGER;\n } else {\n this.intent_ = Intent.NONE;\n }\n this.render();\n }\n\n get icon() {\n return this.icon_;\n }\n\n set icon(value) {\n this.icon_ = value;\n this.render();\n }\n\n get size() {\n return this.size_;\n }\n\n set size(value) {\n this.size_ = value;\n this.render();\n }\n\n get intent() {\n return this.intent_;\n }\n\n set intent(value) {\n this.intent_ = value;\n this.render();\n }\n\n /**\n * Listen to the `click` event.\n *\n * @param {function(void): void} callback the callback to call when the event is triggered.\n * @name onClick\n * @function\n * @public\n */\n onClick(callback) {\n this.observers_.register('click', (self) => {\n // console.log('Icon clicked!');\n if (callback) {\n callback();\n }\n });\n }\n\n _newElement() {\n return React.createElement(Icon, {\n icon: this.icon_, size: this.size_, intent: this.intent_, onClick: () => this.observers_.notify('click', this),\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs checkbox element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalCheckbox}\n */\nblueprintjs.MinimalCheckbox = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {boolean} checked true iif the control should initially be checked, false otherwise (optional).\n * @param {string} label the switch label (optional).\n * @param {string} labelPosition the switch label position (in {left, right}) in respect to the element (optional).\n * @constructor\n */\n constructor(container, checked, label, labelPosition) {\n super(container);\n this.observers_ = new observers.Subject();\n this.checked_ = checked;\n this.label_ = label;\n this.boxPosition_ = labelPosition === 'left' ? Alignment.RIGHT : Alignment.LEFT;\n this.disabled_ = false;\n this.render();\n }\n\n get checked() {\n return this.checked_;\n }\n\n set checked(value) {\n this.checked_ = value;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(string): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (value) => {\n // console.log('Selected option is ' + (value ? 'checked' : 'unchecked'));\n if (callback) {\n callback(value ? 'checked' : 'unchecked');\n }\n });\n }\n\n _newElement() {\n return React.createElement(Checkbox, {\n checked: this.checked_,\n disabled: this.disabled_,\n label: this.label_,\n alignIndicator: this.boxPosition_,\n onChange: () => {\n this.checked = !this.checked;\n this.observers_.notify('selection-change', this.checked);\n },\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs date element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalDate}\n */\nblueprintjs.MinimalDate = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {string} format the date format (optional). Default is 'yyyy-MM-dd'.\n * @param {Date} minDate the earliest date the user can select (optional).\n * @param {Date} maxDate the latest date the user can select (optional).\n * @constructor\n */\n constructor(container, format, minDate, maxDate) {\n super(container);\n this.observers_ = new observers.Subject();\n this.value_ = null;\n this.disabled_ = false;\n this.format_ = format ? format : 'yyyy-MM-dd';\n this.fillContainer_ = true;\n this.shortcuts_ = false;\n this.showActionsBar_ = false;\n this.minDate_ = minDate ? minDate : sub(new Date(), {years: 10});\n this.maxDate_ = maxDate ? maxDate : add(new Date(), {years: 10});\n this.render();\n }\n\n get date() {\n return this.value_;\n }\n\n set date(value) {\n this.value_ = value;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get shortcuts() {\n return this.shortcuts_;\n }\n\n set shortcuts(value) {\n this.shortcuts_ = value;\n this.render();\n }\n\n get showActionsBar() {\n return this.showActionsBar_;\n }\n\n set showActionsBar(value) {\n this.showActionsBar_ = value;\n this.render();\n }\n\n get fillContainer() {\n return this.fillContainer_;\n }\n\n set fillContainer(value) {\n this.fillContainer_ = value;\n this.render();\n }\n\n get minDate() {\n return this.minDate_;\n }\n\n set minDate(value) {\n this.minDate_ = value;\n this.render();\n }\n\n get maxDate() {\n return this.maxDate_;\n }\n\n set maxDate(value) {\n this.maxDate_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(string): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (value) => {\n // console.log('Selected date is ' + value);\n if (callback) {\n callback(value);\n }\n });\n }\n\n _newElement() {\n return React.createElement(DateInput2, {\n formatDate: (date) => format(date, this.format_),\n parseDate: (str) => parse(str, this.format_, new Date()),\n value: this.date,\n disabled: this.disabled,\n placeholder: this.format_,\n fill: this.fillContainer,\n minDate: this.minDate,\n maxDate: this.maxDate,\n shortcuts: this.shortcuts,\n showActionsBar: this.showActionsBar,\n showTimezoneSelect: this._showTimezone(),\n disableTimezoneSelect: this._disableTimezone(),\n timePrecision: this._timePrecision(),\n defaultTimezone: this._defaultTimezone(),\n onChange: (value) => {\n this.date = value;\n this.observers_.notify('selection-change', this.date);\n }\n });\n }\n\n /* Time-specific functions */\n\n _showTimezone() {\n return false;\n }\n\n _timePrecision() {\n return null;\n }\n\n _defaultTimezone() {\n return null;\n }\n\n _disableTimezone() {\n return true;\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs datetime element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalDatetime}\n */\nblueprintjs.MinimalDatetime = class extends blueprintjs.MinimalDate {\n\n /**\n * @param {Element} container the parent element.\n * @param {string} format the date format (optional). Default is 'yyyy-MM-dd HH:mm'.\n * @param {Date} minDate the earliest date the user can select (optional).\n * @param {Date} maxDate the latest date the user can select (optional).\n * @param {string} timePrecision the time precision in {'hours', 'minutes', 'seconds'} (optional). Default is 'minutes'.\n * @param {string} defaultTimezone the default time zone (optional). Default is 'UTC'.\n * @constructor\n */\n constructor(container, format, minDate, maxDate, timePrecision, defaultTimezone) {\n super(container, format ? format : 'yyyy-MM-dd HH:mm', minDate, maxDate);\n this.timePrecision_ = timePrecision === 'hours' ? TimePrecision.HOUR_24 : timePrecision === 'seconds'\n ? TimePrecision.SECOND : TimePrecision.MINUTE;\n this.defaultTimezone_ = defaultTimezone ? defaultTimezone : 'Etc/UTC';\n this.disableTimezone_ = false;\n this.render();\n }\n\n get disableTimezone() {\n return this.disableTimezone_;\n }\n\n set disableTimezone(value) {\n this.disableTimezone_ = value;\n this.render();\n }\n\n _showTimezone() {\n return true;\n }\n\n _timePrecision() {\n return this.timePrecision_;\n }\n\n _defaultTimezone() {\n return this.defaultTimezone_;\n }\n\n _disableTimezone() {\n return this.disableTimezone;\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs date range element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalDateRange}\n */\nblueprintjs.MinimalDateRange = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {string} format the date format (optional). Default is 'yyyy-MM-dd'.\n * @param {Date} minDate the earliest date the user can select (optional).\n * @param {Date} maxDate the latest date the user can select (optional).\n * @constructor\n */\n constructor(container, format, minDate, maxDate) {\n super(container);\n this.observers_ = new observers.Subject();\n this.disabled_ = false;\n this.shortcuts_ = true;\n this.dateMin_ = null;\n this.dateMax_ = null;\n this.format_ = format ? format : 'yyyy-MM-dd';\n this.minDate_ = minDate ? minDate : sub(new Date(), {years: 10});\n this.maxDate_ = maxDate ? maxDate : add(new Date(), {years: 10});\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get shortcuts() {\n return this.shortcuts_;\n }\n\n set shortcuts(value) {\n this.shortcuts_ = value;\n this.render();\n }\n\n get dateMin() {\n return this.dateMin_;\n }\n\n set dateMin(value) {\n this.dateMin_ = value;\n this.render();\n }\n\n get dateMax() {\n return this.dateMax_;\n }\n\n set dateMax(value) {\n this.dateMax_ = value;\n this.render();\n }\n\n get minDate() {\n return this.minDate_;\n }\n\n set minDate(value) {\n this.minDate_ = value;\n this.render();\n }\n\n get maxDate() {\n return this.maxDate_;\n }\n\n set maxDate(value) {\n this.maxDate_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(Date, Date): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (range) => {\n // console.log('Selected range is ' + range);\n if (callback) {\n callback(range[0], range[1]);\n }\n });\n }\n\n _newElement() {\n return React.createElement(DateRangeInput2, {\n formatDate: (date) => format(date, this.format_),\n parseDate: (str) => parse(str, this.format_, new Date()),\n value: [this.dateMin, this.dateMax],\n disabled: this.disabled,\n placeholder: this.format_,\n shortcuts: this.shortcuts,\n minDate: this.minDate,\n maxDate: this.maxDate,\n onChange: (range) => {\n this.dateMin = range[0];\n this.dateMax = range[1];\n this.observers_.notify('selection-change', range);\n }\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs multiselect element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalMultiSelect}\n */\nblueprintjs.MinimalMultiSelect = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {function(*): string} itemToText a function that maps an item to the text to be displayed (optional).\n * @param {function(*): string} itemToLabel a function that maps an item to the label to be displayed (optional).\n * @param {function(*): string} itemToTag a function that maps an item to the tag to be displayed (optional).\n * @param {function(string, *): boolean} itemPredicate a function that filters the internal list of items when user enters something in the input (optional).\n * @param {function(string): *} itemCreate a function that creates an item from a string (optional).\n * @constructor\n */\n constructor(container, itemToText, itemToLabel, itemToTag, itemPredicate, itemCreate) {\n super(container);\n this.itemToText_ = itemToText;\n this.itemToLabel_ = itemToLabel;\n this.itemToTag_ = itemToTag;\n this.itemPredicate_ = (query, item) => {\n if (itemPredicate) {\n return itemPredicate(query, item);\n }\n if (query && query !== '') {\n const txt = this.itemToText_ ? this.itemToText_(item) : item;\n return txt.trim().toLowerCase().indexOf(query.trim().toLowerCase()) >= 0;\n }\n return true;\n };\n this.itemCreate_ = itemCreate;\n this.observers_ = new observers.Subject();\n this.fillContainer_ = true;\n this.disabled_ = false;\n this.items_ = [];\n this.selectedItems_ = [];\n this.defaultText_ = 'Sélectionnez un élément...';\n this.noResults_ = 'Il n\\'y a aucun résultat pour cette recherche.';\n this.render();\n }\n\n get fillContainer() {\n return this.fillContainer_;\n }\n\n set fillContainer(value) {\n this.fillContainer_ = value;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get items() {\n return this.items_;\n }\n\n set items(values) {\n this.items_ = values;\n this.render();\n }\n\n get selectedItems() {\n return this.selectedItems_;\n }\n\n set selectedItems(value) {\n this.selectedItems_ = value ? value : [];\n this.render();\n }\n\n get defaultText() {\n return this.defaultText_;\n }\n\n set defaultText(value) {\n this.defaultText_ = value;\n this.render();\n }\n\n get noResults() {\n return this.noResults_;\n }\n\n set noResults(value) {\n this.noResults_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(*): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (items) => {\n // console.log('Selected items are ', items);\n if (callback) {\n callback(items);\n }\n });\n }\n\n /**\n * Listen to the `filter-change` event.\n *\n * @param {function(*): void} callback the callback to call when the event is triggered.\n * @name onFilterChange\n * @function\n * @public\n */\n onFilterChange(callback) {\n this.observers_.register('filter-change', (query) => {\n // console.log('Query is ', query);\n if (callback) {\n callback(query);\n }\n });\n }\n\n _newElement() {\n return React.createElement(MultiSelect2, {\n fill: this.fillContainer,\n disabled: this.disabled,\n items: this.items,\n selectedItems: this.selectedItems,\n placeholder: this.defaultText,\n onQueryChange: (query) => {\n this.observers_.notify('filter-change', query);\n },\n onClear: () => {\n this.selectedItems_ = [];\n this.render();\n this.observers_.notify('selection-change', this.selectedItems);\n },\n itemPredicate: this.itemPredicate_,\n onItemSelect: (item) => {\n // If the user selects twice the same item, do not add it twice to the selection\n const pos = this.selectedItems.map(i => this.itemToText_ ? this.itemToText_(i) : i).indexOf(\n this.itemToText_ ? this.itemToText_(item) : item);\n if (pos !== 0 && pos <= -1) {\n this.selectedItems_.push(item);\n this.render();\n this.observers_.notify('selection-change', this.selectedItems);\n }\n },\n itemRenderer: (item, props) => {\n if (!props.modifiers.matchesPredicate) {\n return null;\n }\n return React.createElement(MenuItem, {\n key: props.index,\n selected: props.modifiers.active,\n text: this.itemToText_ ? this.itemToText_(item) : item,\n label: this.itemToLabel_ ? this.itemToLabel_(item) : '',\n onFocus: props.handleFocus,\n onClick: props.handleClick,\n });\n },\n tagRenderer: (item) => {\n return this.itemToTag_ ? this.itemToTag_(item) : item;\n },\n onRemove: (tag, index) => {\n this.selectedItems_.splice(index, 1);\n this.render();\n this.observers_.notify('selection-change', this.selectedItems);\n },\n noResults: React.createElement(MenuItem, {\n text: this.noResults, disabled: true,\n }),\n popoverProps: {\n matchTargetWidth: true,\n },\n resetOnSelect: !!this.itemCreate_,\n createNewItemFromQuery: this.itemCreate_,\n createNewItemRenderer: (query, active, handleClick) => {\n return React.createElement(MenuItem, {\n icon: 'add', selected: active, text: query, onClick: handleClick,\n });\n },\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs suggest element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalSuggest}\n */\nblueprintjs.MinimalSuggest = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {function(*): string} itemToText a function that maps an item to the text to be displayed (optional).\n * @param {function(*): string} itemToLabel a function that maps an item to the label to be displayed (optional).\n * @param {function(*): boolean} itemPredicate a function that filters the internal list of items when user enters something in the input (optional).\n * @constructor\n */\n constructor(container, itemToText, itemToLabel, itemPredicate) {\n super(container);\n this.itemToText_ = itemToText;\n this.itemToLabel_ = itemToLabel;\n this.itemPredicate_ = (query, item) => {\n if (itemPredicate) {\n return itemPredicate(query, item);\n }\n if (query && query !== '') {\n const txt = this.itemToText_ ? this.itemToText_(item) : item;\n return txt.trim().toLowerCase().indexOf(query.trim().toLowerCase()) >= 0;\n }\n return true;\n };\n this.observers_ = new observers.Subject();\n this.fillContainer_ = true;\n this.disabled_ = false;\n this.items_ = [];\n this.selectedItem_ = null;\n this.defaultText_ = 'Saisissez un caractère...';\n this.noResults_ = 'Il n\\'y a aucun résultat pour cette recherche.';\n this.render();\n }\n\n get fillContainer() {\n return this.fillContainer_;\n }\n\n set fillContainer(value) {\n this.fillContainer_ = value;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get items() {\n return this.items_;\n }\n\n set items(values) {\n this.items_ = values;\n this.render();\n }\n\n get selectedItem() {\n return this.selectedItem_;\n }\n\n set selectedItem(value) {\n this.selectedItem_ = value ? value : null;\n this.render();\n }\n\n get defaultText() {\n return this.defaultText_;\n }\n\n set defaultText(value) {\n this.defaultText_ = value;\n const input = this.container.querySelector('input');\n if (input) {\n input.placeholder = this.defaultText_;\n }\n }\n\n get noResults() {\n return this.noResults_;\n }\n\n set noResults(value) {\n this.noResults_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(*): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (item) => {\n // console.log('Selected item is ', item);\n if (callback) {\n callback(item);\n }\n });\n }\n\n /**\n * Listen to the `filter-change` event.\n *\n * @param {function(*): void} callback the callback to call when the event is triggered.\n * @name onFilterChange\n * @function\n * @public\n */\n onFilterChange(callback) {\n this.observers_.register('filter-change', (query) => {\n // console.log('Query is ', query);\n if (callback) {\n callback(query);\n }\n });\n }\n\n _newElement() {\n return React.createElement(Suggest2, {\n fill: this.fillContainer,\n disabled: this.disabled,\n items: this.items,\n selectedItem: this.selectedItem,\n onQueryChange: (query) => {\n this.observers_.notify('filter-change', query);\n },\n inputValueRenderer: item => this.itemToText_ ? this.itemToText_(item) : item,\n onItemSelect: (item) => {\n this.selectedItem_ = item;\n this.render();\n this.observers_.notify('selection-change', this.selectedItem);\n },\n itemPredicate: this.itemPredicate_,\n itemRenderer: (item, props) => {\n if (!props.modifiers.matchesPredicate) {\n return null;\n }\n return React.createElement(MenuItem, {\n key: props.index,\n selected: props.modifiers.active,\n text: this.itemToText_ ? this.itemToText_(item) : item,\n label: this.itemToLabel_ ? this.itemToLabel_(item) : '',\n onFocus: props.handleFocus,\n onClick: props.handleClick,\n });\n },\n noResults: React.createElement(MenuItem, {\n text: this.noResults, disabled: true,\n }),\n popoverProps: {\n matchTargetWidth: true,\n }\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs file input element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalFileInput}\n */\nblueprintjs.MinimalFileInput = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @constructor\n */\n constructor(container) {\n super(container);\n this.observers_ = new observers.Subject();\n this.disabled_ = false;\n this.text_ = null;\n this.buttonText_ = null;\n this.fill_ = true;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get fill() {\n return this.fill_;\n }\n\n set fill(value) {\n this.fill_ = value;\n this.render();\n }\n\n get text() {\n return this.text_;\n }\n\n set text(value) {\n this.text_ = value;\n this.render();\n }\n\n get buttonText() {\n return this.buttonText_;\n }\n\n set buttonText(value) {\n this.buttonText_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(*): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (file) => {\n // console.log('Selected file is ', file);\n if (callback) {\n callback(file);\n }\n });\n }\n\n _newElement() {\n return React.createElement(FileInput, {\n disabled: this.disabled, text: this.text, buttonText: this.buttonText, fill: this.fill, onInputChange: (el) => {\n this.text = el.target.files[0].name;\n this.render();\n this.observers_.notify('selection-change', el.target.files[0]);\n },\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs radio group element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalRadioGroup}\n */\nblueprintjs.MinimalRadioGroup = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {string} label the group label (optional).\n * @param {boolean} inline true iif the radio buttons are to be displayed inline horizontally, false otherwise. (optional).\n * @constructor\n */\n constructor(container, label, inline) {\n super(container);\n this.label_ = label;\n this.inline_ = inline;\n this.observers_ = new observers.Subject();\n this.disabled_ = false;\n this.items_ = [];\n this.selectedItem_ = null;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get items() {\n return this.items_;\n }\n\n set items(values) {\n this.items_ = values;\n this.render();\n }\n\n get selectedItem() {\n return this.selectedItem_;\n }\n\n set selectedItem(value) {\n this.selectedItem_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(string): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (value) => {\n // console.log('Selected option is ', value);\n if (callback) {\n callback(value);\n }\n });\n }\n\n _newElement() {\n return React.createElement(RadioGroup, {\n label: this.label_,\n inline: this.inline_,\n disabled: this.disabled,\n options: this.items,\n selectedValue: this.selectedItem,\n onChange: (event) => {\n const selection = this.items.find(item => item.value === event.currentTarget.value);\n if (selection) {\n this.selectedItem = selection.value;\n this.observers_.notify('selection-change', selection);\n }\n },\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs text input element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalTextInput}\n */\nblueprintjs.MinimalTextInput = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {string} defaultValue the input default value (optional).\n * @param {string} icon the icon name (optional).\n * @param {string} intent the input intent in {none, primary, success, warning, danger} (optional).\n *\n * @constructor\n */\n constructor(container, defaultValue, icon, intent) {\n super(container);\n this.defaultValue_ = defaultValue;\n this.icon_ = icon;\n this.intent_ = intent;\n this.observers_ = new observers.Subject();\n this.id_ = 'i' + Math.random().toString(36).substring(2, 12);\n this.disabled_ = false;\n this.fillContainer_ = true;\n this.placeholder_ = null;\n this.render();\n }\n\n get icon() {\n return this.icon_;\n }\n\n set icon(value) {\n this.icon_ = value;\n this.render();\n }\n\n get intent() {\n return this.intent_;\n }\n\n set intent(value) {\n this.intent_ = value;\n this.render();\n }\n\n get fillContainer() {\n return this.fillContainer_;\n }\n\n set fillContainer(value) {\n this.fillContainer_ = value;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get placeholder() {\n return this.placeholder_;\n }\n\n set placeholder(value) {\n this.placeholder_ = value;\n this.render();\n }\n\n get value() {\n return document.getElementById(this.id_).value;\n }\n\n _newElement() {\n return React.createElement(InputGroup, {\n id: this.id_,\n disabled: this.disabled,\n placeholder: this.placeholder,\n defaultValue: this.defaultValue_,\n fill: this.fillContainer,\n leftIcon: this.icon,\n intent: this.intent,\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs text input element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalNumericInput}\n */\nblueprintjs.MinimalNumericInput = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {number} min the minimum value.\n * @param {number} max the maximum value.\n * @param {number} increment the internal increment.\n * @param {string} defaultValue the input default value (optional).\n * @param {string} icon the icon name (optional).\n * @param {string} intent the input intent in {none, primary, success, warning, danger} (optional).\n *\n * @constructor\n */\n constructor(container, min, max, increment, defaultValue, icon, intent) {\n super(container);\n this.min_ = min;\n this.max_ = max;\n this.increment_ = increment;\n this.defaultValue_ = defaultValue;\n this.icon_ = icon;\n this.intent_ = intent;\n this.id_ = 'i' + Math.random().toString(36).substring(2, 12);\n this.observers_ = new observers.Subject();\n this.disabled_ = false;\n this.fillContainer_ = true;\n this.placeholder_ = null;\n this.render();\n }\n\n get icon() {\n return this.icon_;\n }\n\n set icon(value) {\n this.icon_ = value;\n this.render();\n }\n\n get intent() {\n return this.intent_;\n }\n\n set intent(value) {\n this.intent_ = value;\n this.render();\n }\n\n get fillContainer() {\n return this.fillContainer_;\n }\n\n set fillContainer(value) {\n this.fillContainer_ = value;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get placeholder() {\n return this.placeholder_;\n }\n\n set placeholder(value) {\n this.placeholder_ = value;\n this.render();\n }\n\n get value() {\n return document.getElementById(this.id_).value;\n }\n\n /**\n * Listen to the `value-change` event.\n *\n * @param {function(number): void} callback the callback to call when the event is triggered.\n * @name onValueChange\n * @function\n * @public\n */\n onValueChange(callback) {\n this.observers_.register('value-change', (value) => {\n // console.log('Selected value is ' + value);\n if (callback) {\n callback(value);\n }\n });\n }\n\n _newElement() {\n return React.createElement(NumericInput, {\n id: this.id_,\n min: this.min_,\n max: this.max_,\n stepSize: this.increment_,\n disabled: this.disabled,\n placeholder: this.placeholder,\n defaultValue: this.defaultValue_,\n fill: this.fillContainer,\n leftIcon: this.icon,\n intent: this.intent,\n onValueChange: (value) => {\n this.observers_.notify('value-change', value);\n }\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs button element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalButton}\n */\nblueprintjs.MinimalButton = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {string} label the switch label.\n * @param {string} labelPosition the switch label position (in {left, center, right}) in respect to the element (optional).\n * @param {string} leftIcon the left icon name (optional).\n * @param {string} rightIcon the right icon name (optional).\n * @param {string} intent the input intent in {none, primary, success, warning, danger} (optional).\n *\n * @constructor\n */\n constructor(container, label, labelPosition, leftIcon, rightIcon, intent) {\n super(container);\n this.label_ = label;\n this.labelPosition_ = labelPosition === 'left' ? Alignment.LEFT : labelPosition === 'right' ? Alignment.RIGHT\n : Alignment.CENTER;\n this.leftIcon_ = leftIcon;\n this.rightIcon_ = rightIcon;\n this.intent_ = intent;\n this.observers_ = new observers.Subject();\n this.disabled_ = false;\n this.loading_ = false;\n this.fillContainer_ = true;\n this.render();\n }\n\n get leftIcon() {\n return this.leftIcon_;\n }\n\n set leftIcon(value) {\n this.leftIcon_ = value;\n this.render();\n }\n\n get rightIcon() {\n return this.rightIcon_;\n }\n\n set rightIcon(value) {\n this.rightIcon_ = value;\n this.render();\n }\n\n get intent() {\n return this.intent_;\n }\n\n set intent(value) {\n this.intent_ = value;\n this.render();\n }\n\n get fillContainer() {\n return this.fillContainer_;\n }\n\n set fillContainer(value) {\n this.fillContainer_ = value;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get loading() {\n return this.loading_;\n }\n\n set loading(value) {\n this.loading_ = value;\n this.render();\n }\n\n /**\n * Listen to the `click` event.\n *\n * @param {function(void): void} callback the callback to call when the event is triggered.\n * @name onClick\n * @function\n * @public\n */\n onClick(callback) {\n this.observers_.register('click', () => {\n // console.log('Clicked!');\n if (callback) {\n callback();\n }\n });\n }\n\n _newElement() {\n return React.createElement(Button, {\n text: this.label_,\n alignText: this.labelPosition_,\n disabled: this.disabled,\n fill: this.fillContainer,\n loading: this.loading,\n icon: this.leftIcon,\n rightIcon: this.rightIcon,\n intent: this.intent,\n onClick: () => {\n this.observers_.notify('click');\n }\n });\n }\n}\n","'use strict'\n\n/**\n * @module caches\n */\nexport const caches = {};\n\n/**\n * A very minimal cache. When the maximum size is reached, the oldest entry is removed from the cache.\n *\n * @param {number} maxSize the maximum number of entries to keep.\n * @memberOf module:caches\n * @constructor\n * @struct\n * @final\n */\ncaches.Cache = function (maxSize) {\n\n const maxSize_ = maxSize ? maxSize : 100;\n let queue_ = [];\n let map_ = {};\n\n /**\n * Returns the number of cached objects.\n *\n * @return {number} the number of cached objects.\n */\n this.size = function () {\n return Object.keys(map_).length;\n }\n\n /**\n * Check if a key has already been added to the cache.\n *\n * @param {string} key the key to check.\n * @return {boolean} true iif the key already exists, false otherwise.\n */\n this.contains = function (key) {\n return map_.hasOwnProperty(key);\n }\n\n /**\n * Adds a single cache entry.\n *\n * @param {string} key the entry key.\n * @param {*} value the entry value.\n * @return {*|null} the values previously associated with the given key.\n */\n this.put = function (key, value) {\n const prev = this.get(key);\n if (queue_.length >= maxSize_) {\n this.remove(queue_[0].key);\n }\n map_[key] = value;\n queue_.push({key: key, value: value});\n return prev;\n }\n\n /**\n * Returns a single cache entry.\n *\n * @param {string} key the key to get.\n * @return {*|null} the value associated with the given key.\n */\n this.get = function (key) {\n return this.contains(key) ? map_[key] : null;\n }\n\n /**\n * Returns a single cache entry or a default value if the cache key does not belong to the cache.\n *\n * @param {string} key the key to get.\n * @param {*|null} defaultValue the default value to return.\n */\n this.getOrDefault = function (key, defaultValue) {\n return this.contains(key) ? this.get(key) : defaultValue;\n }\n\n /**\n * Returns a single cache entry or add a new one if the cache key does not belong to the cache.\n *\n * @param key the key to get.\n * @param defaultValue the default to add to the cache.\n * @return {*|null}\n */\n this.getOrPut = function (key, defaultValue) {\n if (!this.contains(key)) {\n this.put(key, defaultValue);\n }\n return this.get(key);\n }\n\n /**\n * Removes a single cache entry.\n *\n * @param {string} key the key to evict.\n * @return {*|null} the value previously associated with the given key.\n */\n this.remove = function (key) {\n if (this.contains(key)) {\n const prev = this.get(key);\n queue_ = queue_.filter(entry => entry.key !== key);\n delete map_[key];\n return prev;\n }\n return null;\n }\n\n /**\n * Removes all cache entries.\n */\n this.invalidate = function () {\n map_ = {};\n queue_ = [];\n }\n}","'use strict'\n\n/**\n * @module dates\n */\nexport const dates = {};\n\n/**\n * Initializes a javascript {@link Date} from a string or number formatted as YYYYMMDD.\n *\n * @param {string|number} str a string or number formatted as YYYYMMDD.\n * @return {?Date} a javascript {@link Date}.\n * @memberOf module:dates\n */\ndates.yyyyMmDdToDate = function (str) {\n str = str ? ('' + str).trim() : '';\n if (str.length === 8) {\n const year = parseInt(str.substring(0, 4), 10);\n const month = parseInt(str.substring(4, 6), 10);\n const day = parseInt(str.substring(6, 8), 10);\n return new Date(year, month - 1, day);\n }\n return null;\n}\n\n/**\n * Initializes a javascript {@link Date} from a string or number formatted as DDMMYYYY.\n *\n * @param {string|number} str a string or number formatted as DDMMYYYY.\n * @return {?Date} a javascript {@link Date}.\n * @memberOf module:dates\n */\ndates.ddMmYyyyToDate = function (str) {\n str = str ? ('' + str).trim() : '';\n if (str.length === 8) {\n const day = parseInt(str.substring(0, 2), 10);\n const month = parseInt(str.substring(2, 4), 10);\n const year = parseInt(str.substring(4, 8), 10);\n return new Date(year, month - 1, day);\n }\n return null;\n}\n\n/**\n * Formats a javascript {@link Date} to a string formatted as YYYY-MM-DD.\n *\n * @param {Date} date a javascript {@link Date}.\n * @param {?string} separator a separator that will be inserted between the date parts.\n * @return {?string} a string formatted as YYYY-MM-DD.\n * @memberOf module:dates\n */\ndates.dateToYyyyMmDd = function (date, separator) {\n separator = separator || separator === '' ? separator : '-';\n return date instanceof Date ? date.getFullYear() + separator + (date.getMonth() < 9 ? '0' : '') + (date.getMonth()\n + 1) + separator + (date.getDate() < 10 ? '0' : '') + date.getDate() : null;\n}\n\n/**\n * Formats a javascript {@link Date} to a string formatted as DD-MM-YYYY.\n *\n * @param {Date} date a javascript {@link Date}.\n * @param {?string} separator a separator that will be inserted between the date parts.\n * @return {?string} a string formatted as DD-MM-YYYY.\n * @memberOf module:dates\n */\ndates.dateToDdMmYyyy = function (date, separator) {\n separator = separator || separator === '' ? separator : '-';\n return date instanceof Date ? (date.getDate() < 10 ? '0' : '') + date.getDate() + separator + (date.getMonth() < 9\n ? '0' : '') + (date.getMonth() + 1) + separator + date.getFullYear() : null;\n}","'use strict'\n\n/**\n * @module helpers\n */\nexport const helpers = {};\n\n/**\n * Converts a Javascript value to a base-64 encoded string.\n *\n * @param {*} obj a Javascript value, usually an object or array, to be converted.\n * @return {string} a base-64 encoded string.\n * @memberOf module:helpers\n */\nhelpers.toBase64 = function (obj) {\n return btoa(JSON.stringify(obj));\n}\n\n/**\n * Converts a base-64 encoded string to a Javascript value.\n *\n * @param {string} str a base-64 encoded string.\n * @return {*} a Javascript value.\n * @memberOf module:helpers\n */\nhelpers.fromBase64 = function (str) {\n return JSON.parse(atob(str));\n}\n\n/**\n * A version of {@link JSON.stringify} that returns a canonical JSON format.\n *\n * 'Canonical JSON' means that the same object should always be stringified to the exact same string.\n * JavaScripts native {@link JSON.stringify} does not guarantee any order for object keys when serializing.\n *\n * @param value the value to stringify.\n * @returns {string} the stringified value.\n * @memberOf module:helpers\n * @preserve The code is extracted from https://github.com/mirkokiefer/canonical-json.\n */\nhelpers.stringify = function (value) {\n\n function isObject(object) {\n return Object.prototype.toString.call(object) === '[object Object]'\n }\n\n function copyObjectWithSortedKeys(object) {\n if (isObject(object)) {\n const newObj = {}\n const keysSorted = Object.keys(object).sort()\n let key\n for (let i = 0, len = keysSorted.length; i < len; i++) {\n key = keysSorted[i]\n newObj[key] = copyObjectWithSortedKeys(object[key])\n }\n return newObj\n } else if (Array.isArray(object)) {\n return object.map(copyObjectWithSortedKeys)\n } else {\n return object\n }\n }\n\n return JSON.stringify(copyObjectWithSortedKeys(value))\n}\n\n/**\n * A simple 53-bits hashing algorithm with good enough distribution.\n *\n * @param {*} obj the value to hash.\n * @param {number} seed a seed.\n * @return {number} the hashed value.\n * @memberOf module:helpers\n * @preserve The code is extracted from https://stackoverflow.com/a/52171480.\n */\nhelpers.goodFastHash = function (obj, seed) {\n\n const newStr = obj ? helpers.stringify(obj) : '';\n const newSeed = seed ? seed : 0;\n let h1 = 0xdeadbeef ^ newSeed;\n let h2 = 0x41c6ce57 ^ newSeed;\n\n for (let i = 0, ch; i < newStr.length; i++) {\n ch = newStr.charCodeAt(i);\n h1 = Math.imul(h1 ^ ch, 2654435761);\n h2 = Math.imul(h2 ^ ch, 1597334677);\n }\n\n h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^ Math.imul(h2 ^ (h2 >>> 13), 3266489909);\n h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^ Math.imul(h1 ^ (h1 >>> 13), 3266489909);\n\n return 4294967296 * (2097151 & h2) + (h1 >>> 0);\n}\n\n/**\n * Inject multiple scripts.\n *\n * @param {Element} el the root node where the scripts will be injected.\n * @param {Array} urls the scripts URL.\n * @return a {Promise<*>}.\n */\nhelpers.injectScripts = function (el, urls) {\n\n let promise = null;\n\n for (let i = 0; i < urls.length; i++) {\n if (promise) {\n promise = promise.then(() => this.injectScript(el, urls[i]));\n } else {\n promise = this.injectScript(el, urls[i]);\n }\n }\n return promise;\n}\n\n/**\n * Inject a single script.\n *\n * @param {Element} el the root node where the script will be injected.\n * @param {string} url the script URL.\n * @return a {Promise<*>}.\n * @preserve The code is extracted from https://gist.github.com/james2doyle/28a59f8692cec6f334773007b31a1523.\n */\nhelpers.injectScript = function (el, url) {\n return el ? new Promise((resolve, reject) => {\n const script = document.createElement('script');\n script.src = url;\n script.async = true;\n script.onerror = function (err) {\n console.log('Script failed : ' + url, err);\n reject(url, script, err);\n }\n script.onload = function () {\n console.log('Script loaded : ' + url);\n resolve(url, script)\n }\n el.appendChild(script);\n }) : Promise.reject('invalid node');\n}\n\n/**\n * Inject multiple stylesheets.\n *\n * @param {Element} el the root node where the scripts will be injected.\n * @param {Array} urls the stylesheets URL.\n * @return a {Promise<*>}.\n */\nhelpers.injectStyles = function (el, urls) {\n\n let promise = null;\n\n for (let i = 0; i < urls.length; i++) {\n if (promise) {\n promise = promise.then(() => this.injectStyle(el, urls[i]));\n } else {\n promise = this.injectStyle(el, urls[i]);\n }\n }\n return promise;\n}\n\n/**\n * Inject a single stylesheet.\n *\n * @param {Element} el the root node where the script will be injected.\n * @param {string} url the stylesheet URL.\n * @return a {Promise<*>}.\n * @preserve The code is extracted from https://gist.github.com/james2doyle/28a59f8692cec6f334773007b31a1523.\n */\nhelpers.injectStyle = function (el, url) {\n return el ? new Promise((resolve, reject) => {\n const link = document.createElement('link');\n link.href = url;\n link.rel = 'stylesheet';\n el.appendChild(link);\n console.log('Stylesheet loaded : ' + url);\n resolve(url, link);\n }) : Promise.reject('invalid node');\n}\n\n/**\n * Chunk a list and gives the UI thread a chance to process any pending UI events between each chunk (keeps the UI active).\n *\n * @param {Array} array the array to chunk and process.\n * @param {function(Object, Object): void} callback the callback to call for each array element.\n * @param {Object} context misc. contextual information (optional).\n * @param {number} maxTimePerChunk the maximum time to spend (guidance) in the callback for each chunk (optional).\n *\n * @preserve The code is extracted from https://stackoverflow.com/a/10344560.\n */\nhelpers.forEach = function (array, callback, context, maxTimePerChunk) {\n\n array = array || [];\n context = context || {};\n callback = callback || function (item, context) {\n };\n maxTimePerChunk = maxTimePerChunk || 200;\n let index = 0;\n\n function now() {\n return new Date().getTime();\n }\n\n function doChunk() {\n\n const startTime = now();\n\n while (index < array.length && (now() - startTime) <= maxTimePerChunk) {\n callback(array[index], context);\n ++index;\n }\n if (index < array.length) {\n setTimeout(doChunk, 1);\n }\n }\n\n doChunk();\n}\n\n/**\n * Delay a javascript function call. Executes only the last call.\n *\n * @param func the function to execute.\n * @param timeout the delay before the function can be called.\n * @returns {function}\n */\nhelpers.debounceLast = function (func, timeout = 300) {\n let timer;\n return (...args) => {\n clearTimeout(timer);\n timer = setTimeout(() => {\n func.apply(this, args);\n }, timeout);\n };\n}\n\n/**\n * Delay a javascript function call. Executes only the first call.\n *\n * @param func the function to execute.\n * @param timeout the delay before the function can be called again.\n * @returns {function}\n */\nhelpers.debounceFirst = function (func, timeout = 300) {\n let timer;\n return (...args) => {\n if (!timer) {\n func.apply(this, args);\n }\n clearTimeout(timer);\n timer = setTimeout(() => {\n timer = undefined;\n }, timeout);\n };\n}\n\n/**\n * Download a JSON object or an array of JSON objects.\n *\n * @param filename the name of the downloaded file.\n * @param data the data to download.\n */\nhelpers.download = function (filename, data) {\n\n const blob = new Blob([JSON.stringify(data)], {type: \"application/json;charset=utf-8\"});\n const isIE = false || !!document.documentMode;\n\n if (isIE) {\n window.navigator.msSaveBlob(blob, filename);\n } else {\n const url = window.URL || window.webkitURL;\n const link = url.createObjectURL(blob);\n const a = document.createElement(\"a\");\n a.download = filename;\n a.href = link;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n }\n}","'use strict'\n\n/**\n * @module platform\n */\nexport const platform = {};\n\n/**\n * The HttpClient type.\n *\n * @memberOf module:platform\n * @constructor\n * @struct\n * @final\n */\nplatform.HttpClient = function () {\n\n let baseUrl_ = '';\n let baseUrlAutodetect_ = false;\n let token_ = '';\n let tokenAutodetect_ = false;\n\n const reset = () => {\n baseUrl_ = '';\n baseUrlAutodetect_ = false;\n token_ = '';\n tokenAutodetect_ = false;\n }\n\n const findTokenFromQueryString = () => {\n const urlParams = new URLSearchParams(window?.location?.search);\n const token = urlParams.get('token');\n return token ? token : '';\n }\n\n const findBaseUrlFromReferrer = () => {\n let origin = '';\n if (window && window.document && window.document.referrer) {\n const url = new URL(window.document.referrer);\n origin = url.origin;\n }\n return origin;\n }\n\n /**\n * Execute a Http request to a given platform endpoint.\n *\n * @param {string} endpoint the platform endpoint.\n * @param {Object} body the request payload.\n * @param {...*} customConfig the Http request configuration.\n * @return {Promise} the platform response.\n */\n const fetch = (endpoint, {body, ...customConfig} = {}) => {\n const headers = {'Content-Type': 'application/json'}\n const config = {\n method: 'GET', ...customConfig, headers: {\n ...headers, ...customConfig.headers,\n },\n }\n if (body) {\n if (config.method === 'GET') {\n endpoint += '?' + new URLSearchParams(body);\n } else {\n config.body = JSON.stringify(body);\n }\n }\n return window.fetch(endpoint, config).then(async response => {\n if (response.ok) {\n return await response.json();\n } else {\n const errorMessage = await response.json();\n return Promise.reject(new Error(errorMessage.error));\n }\n });\n }\n\n /**\n * Returns the API token.\n *\n * @return {string} the API token.\n */\n this.getToken = function () {\n return token_;\n }\n\n /**\n * Set the API token.\n *\n * @param {string} token The API token.\n */\n this.setToken = function (token) {\n tokenAutodetect_ = false;\n token_ = token;\n }\n\n /**\n * Checks if the API token is set.\n *\n * @returns {boolean} returns true iif the API token is set, false otherwise.\n */\n this.hasToken = function () {\n return token_ !== '';\n }\n\n /**\n * Returns the API base URL.\n *\n * @return {string} the API base URL.\n */\n this.getBaseUrl = function () {\n return baseUrl_;\n }\n\n /**\n * Set the API base URL.\n *\n * @param {string} url the API base URL.\n */\n this.setBaseUrl = function (url) {\n baseUrlAutodetect_ = false;\n baseUrl_ = url;\n }\n\n /**\n * Checks if the API base URL is set.\n *\n * @returns {boolean} true iif the API base URL is set, false otherwise.\n */\n this.hasBaseUrl = function () {\n return baseUrl_ !== '';\n }\n\n /**\n * Initializes the Http client.\n *\n * If you omit a parameter, we will try to autodetect it.\n * For `token`, we try to find it on the query string. Ex: `?token=your_api_token`.\n * For `baseUrl`, we try to find it from the referrer.\n *\n * @param {string} baseUrl the base URL eg. https://www.company.computablefacts.com\n * @param {string} token the token.\n */\n this.init = function (baseUrl, token) {\n\n reset();\n\n if (typeof token === 'undefined') {\n token_ = findTokenFromQueryString();\n tokenAutodetect_ = this.hasToken();\n // console.log('init-autodetect-token token=', token, '_tokenAutodetect=', _tokenAutodetect)\n } else {\n this.setToken(token)\n }\n\n if (typeof baseUrl === 'undefined') {\n baseUrl_ = findBaseUrlFromReferrer();\n baseUrlAutodetect_ = this.hasBaseUrl();\n // console.log('init-autodetect-baseUrl baseUrl=', baseUrl, 'baseUrlAutodetect_=', baseUrlAutodetect_)\n } else {\n this.setBaseUrl(baseUrl);\n }\n }\n\n /**\n * Checks if the API token and base URL have been automatically set.\n *\n * @return `true` if the API token and base URL have been automatically set during [[`init`]].\n */\n this.hasAutodetect = function () {\n return tokenAutodetect_ && baseUrlAutodetect_;\n }\n\n /**\n * Returns the user information based on the API token.\n *\n * @return {Promise} the user permissions and authorizations.\n */\n this.whoAmI = function () {\n return fetch(`${baseUrl_}/api/v2/public/whoami`, {\n headers: {\n Authorization: `Bearer ${token_}`\n }\n });\n }\n\n /**\n * Call the platform JSON-RPC endpoint.\n *\n * @param {Object} payload the request payload.\n * @return {Promise} the platform response.\n * @preserve The specification can be found at https://www.jsonrpc.org/specification.\n */\n this.fetch = function (payload) {\n return fetch(`${baseUrl_}/api/v2/public/json-rpc?api_token=${token_}`, {body: payload, method: 'POST'}).then(\n response => {\n if ('error' in response) {\n const error = response['error'];\n const message = '(' + error.code + ') ' + error.message + '\\n' + JSON.stringify(error.data);\n return Promise.reject(new Error(message));\n }\n return response['result'];\n });\n }\n\n /**\n * Call the `execute-problog-query` platform endpoint.\n *\n * @param {Object} params the request payload.\n * @return {Promise} the platform response.\n */\n this.executeProblogQuery = function (params) {\n return this.fetch({\n jsonrpc: '2.0', id: Date.now(), method: 'execute-problog-query', params: params\n });\n }\n\n /**\n * Call the `execute-sql-query` platform endpoint.\n *\n * @param {Object} params the request payload.\n * @return {Promise} the platform response.\n */\n this.executeSqlQuery = function (params) {\n return this.fetch({\n jsonrpc: '2.0', id: Date.now(), method: 'execute-sql-query', params: params\n });\n }\n\n /**\n * Call the `find-objects` platform endpoint.\n *\n * @param params the request payload.\n * @return {Promise} the platform response.\n */\n this.findObjects = function (params) {\n return this.fetch({\n jsonrpc: '2.0', id: Date.now(), method: 'find-objects', params: params\n });\n }\n\n /**\n * Call the `get-objects` platform endpoint.\n *\n * @param params the request payload.\n * @return {Promise>} the platform response.\n */\n this.getObjects = function (params) {\n return this.fetch({\n jsonrpc: '2.0', id: Date.now(), method: 'get-objects', params: params\n });\n }\n\n /**\n * Call the `get-flattened-objects` platform endpoint.\n *\n * @param params the request payload.\n * @return {Promise>} the platform response.\n */\n this.getFlattenedObjects = function (params) {\n return this.fetch({\n jsonrpc: '2.0', id: Date.now(), method: 'get-flattened-objects', params: params\n });\n }\n\n /**\n * Call the `find-terms` platform endpoint.\n *\n * @param params the request payload.\n * @return {Promise} the platform response.\n */\n this.findTerms = function (params) {\n return this.fetch({\n jsonrpc: '2.0', id: Date.now(), method: 'find-terms', params: params\n });\n }\n\n /**\n * Sink a single event.\n *\n * @param {string} type the event type.\n * @param {Array} propNames the event property names.\n * @param {Array} propValues the event property values.\n * @return {Promise} the created fact.\n */\n this.sinkEvent = function (type, propNames, propValues) {\n\n if (propNames.length !== propValues.length) {\n throw \"Mismatch between the number of names and values\"\n }\n\n const typeNormalized = 'event_' + type.replace(/-/g, '_').toLowerCase();\n const startDate = new Date();\n\n return fetch(`${baseUrl_}/api/v2/facts`, {\n body: {\n data: [{\n type: typeNormalized,\n values: propValues.map(prop => '' + prop),\n is_valid: true,\n start_date: startDate.toISOString(),\n }]\n }, method: 'POST', headers: {\n Authorization: `Bearer ${token_}`\n }\n });\n }\n\n /**\n * Source one or more events.\n *\n * @param {string} type the event type.\n * @param {Array} propNames the event property names.\n * @param {Array} propPatterns the list of patterns to match.\n * @param {number} maxNbResults the maximum number of events to return.\n * @return {Promise>} an array of events.\n */\n this.sourceEventsAsObjects = function (type, propNames, propPatterns, maxNbResults) {\n return this.sourceEvents(type, propNames, propPatterns, maxNbResults, 'objects');\n }\n\n /**\n * Source one or more events.\n *\n * @param {string} type the event type.\n * @param {Array} propNames the event property names.\n * @param {Array} propPatterns the list of patterns to match.\n * @param {number} maxNbResults the maximum number of events to return.\n * @return {Promise>>} an array of events.\n */\n this.sourceEventsAsArrays = function (type, propNames, propPatterns, maxNbResults) {\n return this.sourceEvents(type, propNames, propPatterns, maxNbResults, 'arrays_with_header');\n }\n\n /**\n * Source one or more events.\n *\n * @param {string} type the event type.\n * @param {Array} propNames the event property names.\n * @param {Object} propPatterns the list of patterns to match.\n * @param {number} maxNbResults the maximum number of events to return.\n * @param {string} format the returned events format. 'objects' returns an `Array`. Both 'arrays' and 'arrays_with_header' return an `Array>`.\n * @return {Promise|Array>>} an array of events.\n */\n this.sourceEvents = function (type, propNames, propPatterns, maxNbResults, format) {\n\n const newRule = (eventType, eventPropertyNames, patterns) => {\n\n let result = eventType + '(';\n result += eventPropertyNames.map(prop => prop.toUpperCase()).join(', ');\n result += ') :- ';\n result += 'fn_mysql_materialize_facts(\"{{ app_url }}/api/v3/facts/no_namespace/';\n result += eventType;\n result += '?alea=' + Math.random().toString(36).substring(2, 12);\n const filtersQuery = Object.entries(patterns).map(entry => entry[0] + '=' + entry[1]).join('&');\n result += filtersQuery ? '&' + filtersQuery : '';\n result += '\", \"{{ client }}\", \"{{ env }}\", \"{{ sftp_host }}\", \"{{ sftp_username }}\", \"{{ sftp_password }}\", ';\n result += eventPropertyNames.map((prop, i) => '\"value_' + i + '\", _, ' + prop.toUpperCase()).join(', ');\n result += ').';\n\n // console.log('newRule = ', result);\n return result.trim();\n }\n\n const pattern = {};\n\n for (let i = 0; i < propNames.length; i++) {\n if (propPatterns[propNames[i]]) {\n pattern['value_' + i] = propPatterns[propNames[i]];\n }\n }\n\n const typeNormalized = 'event_' + type.replace(/-/g, '_').toLowerCase();\n const rule = newRule(typeNormalized, propNames, pattern);\n const alea = Math.random().toString(36).substring(2, 8);\n\n return this.executeProblogQuery({\n problog_rules: [alea + '_' + rule],\n problog_query: alea + '_' + (rule.substring(0, rule.indexOf(':-')).trim()) + '?',\n format: format ? format : 'objects',\n sample_size: maxNbResults ? maxNbResults : 15,\n });\n }\n}","'use strict'\n\nimport {caches} from \"./caches\";\nimport {helpers} from \"./helpers\";\n\n/**\n * @module promises\n */\nexport const promises = {};\n\n/**\n * An object that has the ability to memoize promises returned by a given user-defined function.\n *\n * @param {number} maxCacheSize the maximum number of distinct calls to cache.\n * @param {Function} fn a user-defined function that returns a promise.\n * @memberOf module:promises\n * @constructor\n * @struct\n * @final\n */\npromises.Memoize = function (maxCacheSize, fn) {\n\n // Stats\n let hit_ = 0;\n let miss_ = 0;\n\n // Cache\n const cache_ = new caches.Cache(maxCacheSize);\n const function_ = fn;\n\n /**\n * Either read the cache or call the user-defined function and get a new promise.\n *\n * @param {...*} args a list of arguments to pass to the user-defined function.\n * @return {Promise} a promise to be resolved at a later stage.\n * @suppress {checkTypes}\n */\n this.promise = function (...args) {\n\n const cacheKey = helpers.goodFastHash(Array.from(args), 123).toString(10);\n\n if (cache_.contains(cacheKey)) {\n hit_++;\n return cache_.get(cacheKey);\n }\n\n cache_.put(cacheKey, function_(...args).catch(err => {\n cache_.remove(cacheKey);\n throw err;\n }));\n\n miss_++;\n return cache_.get(cacheKey);\n }\n\n /**\n * Return the number of cache hits.\n *\n * @return {number} the number of hits.\n */\n this.hits = function () {\n return hit_;\n }\n\n /**\n * Return the number of cache misses.\n *\n * @return {number} the number of misses.\n */\n this.misses = function () {\n return miss_;\n }\n\n /**\n * Return the cache hit rate.\n *\n * @return {number} the hit rate.\n */\n this.hitRate = function () {\n return hit_ / (hit_ + miss_);\n }\n\n /**\n * Return the cache miss rate.\n *\n * @return {number} the miss rate.\n */\n this.missRate = function () {\n return miss_ / (hit_ + miss_);\n }\n}\n","'use strict'\n\nimport {helpers} from \"./helpers\";\n\n/**\n * @module webcomponents\n * @deprecated\n */\nexport const webcomponents = {};\n\n/**\n * A skeleton to ease the creation of web components.\n *\n * @memberOf module:webcomponents\n * @type {webcomponents.WebComponent}\n * @extends {HTMLElement}\n */\nwebcomponents.WebComponent = class extends HTMLElement {\n\n /**\n * @constructor\n */\n constructor() {\n super();\n this.attachShadow({mode: 'open'});\n }\n\n /**\n * Called every time the element is inserted into the DOM.\n *\n * @name connectedCallback\n * @function\n * @protected\n * @override\n */\n connectedCallback() {\n\n const styles = this.externalStyles();\n const scripts = this.externalScripts();\n const template = this.template();\n\n const wrapper = document.createElement('div');\n wrapper.id = 'wcw'; // wcw = Web Component Wrapper\n this.shadowRoot.appendChild(wrapper);\n\n if (styles && styles.length > 0 && scripts && scripts.length > 0) {\n helpers.injectStyles(wrapper, styles).then(() => {\n helpers.injectScripts(wrapper, scripts).then(() => {\n if (template !== '') {\n wrapper.insertAdjacentHTML('beforeend', template);\n }\n this.renderedCallback();\n });\n });\n } else if ((!styles || styles.length === 0) && scripts && scripts.length > 0) {\n helpers.injectScripts(wrapper, scripts).then(() => {\n if (template !== '') {\n wrapper.insertAdjacentHTML('beforeend', template);\n }\n this.renderedCallback();\n });\n } else if (styles && styles.length > 0 && (!scripts || scripts.length === 0)) {\n helpers.injectStyles(wrapper, styles).then(() => {\n if (template !== '') {\n wrapper.insertAdjacentHTML('beforeend', template);\n }\n this.renderedCallback();\n });\n } else {\n if (template !== '') {\n wrapper.insertAdjacentHTML('beforeend', template);\n }\n this.renderedCallback();\n }\n }\n\n /**\n * Called every time the element is removed from the DOM.\n *\n * @name disconnectedCallback\n * @function\n * @protected\n * @override\n */\n disconnectedCallback() {\n }\n\n /**\n * Called after the `template` has been added to the DOM.\n *\n * @name renderedCallback\n * @function\n * @protected\n * @override\n */\n renderedCallback() {\n }\n\n /**\n * A list of stylesheets URL.\n *\n * @return {Array} an array of URL.\n * @name externalStyles\n * @function\n * @protected\n * @override\n */\n externalStyles() {\n return [];\n }\n\n /**\n * A list of scripts URL.\n *\n * @return {Array} an array of URL.\n * @name externalScripts\n * @function\n * @protected\n * @override\n */\n externalScripts() {\n return [];\n }\n\n /**\n * Returns the component HTML template.\n *\n * @return {string} the HTML.\n * @name template\n * @function\n * @protected\n */\n template() {\n return ``;\n }\n\n /**\n * Emit a custom event.\n *\n * @param {string} type the event type.\n * @param {Object|null} data any data structure to pass along with the event.\n * @param {Node|null} elem the element to attach the event to.\n * @return {boolean} returns true if either event's cancelable attribute value is false or its preventDefault() method was not invoked, and false otherwise.\n * @name emit\n * @function\n * @protected\n */\n emit(type, data = {}, elem = document) {\n const event = new CustomEvent(type, {\n bubbles: true, cancelable: true, detail: {\n component: this, data: data\n }\n });\n return (elem ? elem : document).dispatchEvent(event);\n }\n\n /**\n * Returns the component attribute value or a default value if none was found.\n *\n * @param {string} attr the attribute to get.\n * @param {string|null} defaultValue the default value.\n * @return {string|null} the attribute value if any, defaultValue otherwise.\n * @name getAttributeOrDefault\n * @function\n * @protected\n */\n getAttributeOrDefault(attr, defaultValue) {\n return this.hasAttribute(attr) ? this.getAttribute(attr) : defaultValue;\n }\n\n /**\n * Returns the first element with a given identifier or class name.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @return {Element|null} an HTML element.\n * @name getElement\n * @function\n * @protected\n */\n getElement(idOrClassName) {\n return this.shadowRoot.querySelector(idOrClassName);\n }\n\n /**\n * Get the first page element with a given identifier or class name.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @return {Element|null} an HTML element.\n * @name getPageElement\n * @function\n * @protected\n */\n getPageElement(idOrClassName) {\n return document.querySelector(idOrClassName);\n }\n\n /**\n * Add a given class to a given element.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @param {string} className the class name to add.\n * @name addCssClass\n * @function\n * @protected\n */\n addCssClass(idOrClassName, className) {\n const el = this.getElement(idOrClassName);\n if (el) {\n el.classList.add(className);\n }\n }\n\n /**\n * Remove a given class from a given element.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @param {string} className the class name to remove.\n * @name removeCssClass\n * @function\n * @protected\n */\n removeCssClass(idOrClassName, className) {\n const el = this.getElement(idOrClassName);\n if (el) {\n el.classList.remove(className);\n }\n }\n\n /**\n * Add a class if it does not already exist on a given element, remove it otherwise.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @param {string} className the class name to toggle.\n * @name toggleCssClass\n * @function\n * @protected\n */\n toggleCssClass(idOrClassName, className) {\n const el = this.getElement(idOrClassName);\n if (el) {\n el.classList.toggle(className);\n }\n }\n\n /**\n * Check if a given element has a given class.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @param {string} className the class name to search.\n * @return true if the element contains the given class, false otherwise.\n * @name includesCssClass\n * @function\n * @protected\n */\n includesCssClass(idOrClassName, className) {\n const el = this.getElement(idOrClassName);\n if (el) {\n return el.classList.contains(className);\n }\n return false;\n }\n\n /**\n * Get all classes associated to a given element.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @return {Array} the class names.\n * @name getAllCssClasses\n * @function\n * @protected\n */\n getAllCssClasses(idOrClassName) {\n const el = this.getElement(idOrClassName);\n if (el) {\n return el.className.split(' ').map(clazz => clazz.trim());\n }\n return [];\n }\n\n /**\n * Replace all classes associated to a given element.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @param {Array|string} classes the class names.\n * @name replaceAllCssClasses\n * @function\n * @protected\n */\n replaceAllCssClasses(idOrClassName, classes) {\n const el = this.getElement(idOrClassName);\n if (el) {\n if (Array.isArray(classes)) {\n el.className = classes.join(' ');\n } else {\n el.className = classes;\n }\n }\n }\n\n /**\n * Get the style associated to a given element.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @return {CSSStyleDeclaration|null} the element style.\n * @name getStyle\n * @function\n * @protected\n */\n getStyle(idOrClassName) {\n const el = this.getElement(idOrClassName);\n if (el) {\n return el.style;\n }\n return null;\n }\n\n /**\n * Get the actual computed style associated to a given element.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @return {CSSStyleDeclaration|null} the element computed style.\n * @name getComputedStyle\n * @function\n * @protected\n */\n getComputedStyle(idOrClassName) {\n const el = this.getElement(idOrClassName);\n if (el) {\n return window.getComputedStyle(el);\n }\n return null;\n }\n\n /**\n * Set the text associated to a given element.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @param {string} text the text to set.\n * @name setText\n * @function\n * @protected\n */\n setText(idOrClassName, text) {\n const el = this.getElement(idOrClassName);\n if (el) {\n el.textContent = text;\n }\n }\n\n /**\n * Set the HTML associated to a given element.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @param {string} html the html to set.\n * @name setHtml\n * @function\n * @protected\n */\n setHtml(idOrClassName, html) {\n const el = this.getElement(idOrClassName);\n if (el) {\n el.innerHTML = html;\n }\n }\n\n /**\n * Append an element to a given element.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @param {Element} element the element to append.\n * @name replaceContent\n * @function\n * @protected\n */\n replaceContent(idOrClassName, element) {\n const el = this.getElement(idOrClassName);\n if (el) {\n el.innerHTML = '';\n el.appendChild(element);\n }\n }\n}\n"],"names":["ReactDOM","React","Cell","ColumnHeaderCell","MenuItem","Menu","Column","Table2","TableLoadingOption","Button","Select2","Slider","RangeSlider","Drawer","Position","Tab","Tabs","SpinnerSize","Spinner","Alignment","Switch","Intent","Toast","Toaster","Card","Icon","Checkbox","sub","add","DateInput2","format","parse","TimePrecision","DateRangeInput2","MultiSelect2","Suggest2","FileInput","RadioGroup","InputGroup","NumericInput"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"main.js","sources":["../../src/arrays.js","../../src/observers.js","../../src/widgets.js","../../src/strings.js","../../src/blueprintjs.js","../../src/caches.js","../../src/dates.js","../../src/helpers.js","../../src/platform.js","../../src/promises.js","../../src/webcomponents.js"],"sourcesContent":["'use strict'\n\n/**\n * @module arrays\n */\nexport const arrays = {};\n\n/**\n * Removes {@link undefined} elements from an array of strings or numbers and returns distinct values.\n * This function does not preserve the elements order.\n *\n * @param {Array} array an array of strings.\n * @return {Array} an array of distinct strings.\n * @memberOf module:arrays\n */\narrays.distinct = function (array) {\n return array instanceof Array ? Array.from(new Set(array.filter(el => el !== undefined))) : [];\n}\n\n/**\n * Removes {@link undefined} elements from an array of objects and return distinct objects i.e. unique by all properties.\n * This function does not preserve the elements order.\n *\n * @param {Array} array an array of objects.\n * @return {Array} an array of distinct objects.\n * @memberOf module:arrays\n */\narrays.distinctObjects = function (array) {\n return array instanceof Array ? array\n .filter(el => el !== undefined)\n .filter((el1, index, self) => self.findIndex(el2 => (JSON.stringify(el2) === JSON.stringify(el1))) === index) : [];\n}\n\n/**\n * Computes the intersection of two arrays of strings or numbers.\n *\n * @param {Array} array1 the first array.\n * @param {Array} array2 the second array.\n * @return {Array} the intersection of the two arrays.\n * @memberOf module:arrays\n */\narrays.intersect = function (array1, array2) {\n return array1 instanceof Array && array2 instanceof Array ? array1.filter(el => array2.includes(el)) : [];\n}\n\n","'use strict'\n\n/**\n * @module observers\n */\nexport const observers = {};\n\n/**\n * The Subject type.\n *\n * The observer pattern is a software design pattern in which an object, named the subject,\n * maintains a list of its dependents, called observers, and notifies them automatically of\n * any state changes, usually by calling one of their methods.\n *\n * @memberOf module:observers\n * @constructor\n * @struct\n * @final\n */\nobservers.Subject = function () {\n\n const observers = {};\n\n /**\n * Returns the number of observers for a given message type.\n *\n * @param {string} message the observed message.\n * @return {number} the number of observers.\n */\n this.numberOfObservers = function (message) {\n if (message) {\n return observers.hasOwnProperty(message) ? observers[message].length : 0;\n }\n let nbObservers = 0;\n for (const msg in observers) {\n nbObservers += observers[msg].length\n }\n return nbObservers;\n }\n\n /**\n * Register a callback for a given message type.\n *\n * @param {string} message the message to observe.\n * @param {Function} observer the callback to notify.\n */\n this.register = function (message, observer) {\n if (message && typeof message === 'string' && observer && observer instanceof Function) {\n if (!observers.hasOwnProperty(message)) {\n observers[message] = [];\n }\n observers[message].push(observer);\n }\n }\n\n /**\n * Unregister a callback for a given message type.\n *\n * @param {string} message the observed message.\n * @param {Function} observer the notified callback.\n */\n this.unregister = function (message, observer) {\n if (message && typeof message === 'string' && observer && observer instanceof Function && observers.hasOwnProperty(\n message)) {\n observers[message] = observers[message].filter(o => o !== observer);\n }\n }\n\n /**\n * Notify all observers listening to a given message type.\n *\n * @param {string} message the message type.\n * @param {...*} args a list of arguments to pass to each callback.\n */\n this.notify = function (message, ...args) {\n if (message && typeof message === 'string' && args && observers.hasOwnProperty(message)) {\n observers[message].forEach(observer => observer(...args));\n }\n }\n}\n","'use strict'\n\n/**\n * @module widgets\n */\nexport const widgets = {};\n\n/**\n * A skeleton to ease the creation of simple widgets.\n *\n * @memberOf module:widgets\n * @type {widgets.Widget}\n */\nwidgets.Widget = class {\n\n /**\n * @param {Element} container the parent element.\n * @constructor\n */\n constructor(container) {\n this.container_ = container;\n }\n\n /**\n * Returns the widget parent element.\n *\n * @return {Element} the parent element.\n * @name container\n * @function\n * @public\n */\n get container() {\n return this.container_;\n }\n\n /**\n * Sets the widget parent element.\n *\n * @param container\n * @name container\n * @function\n * @public\n */\n set container(container) {\n this.container_ = container;\n this.render();\n }\n\n /**\n * If the current widget creates more widgets, register them using this method.\n * It allows the current widget to properly removes its children from the DOM.\n *\n * @param {Widget} widget the widget to register.\n * @name register\n * @function\n * @protected\n */\n register(widget) {\n if (widget) {\n if (!this.widgets_) {\n this.widgets_ = [];\n }\n this.widgets_.push(widget);\n }\n }\n\n /**\n * In order to avoid a memory leak, properly remove the widget from the DOM.\n *\n * @name destroy\n * @function\n * @public\n */\n destroy() {\n\n if (this.widgets_) {\n\n // Remove registered widgets\n for (let i = 0; i < this.widgets_.length; i++) {\n this.widgets_[i].destroy();\n }\n this.widgets_ = [];\n }\n\n // Empty the container\n while (this.container.firstChild) {\n this.container.removeChild(this.container.firstChild);\n }\n }\n\n /**\n * Renders the widget.\n *\n * @name render\n * @function\n * @public\n */\n render() {\n this.destroy();\n const element = this._newElement();\n if (element) {\n this.container.appendChild(element);\n }\n }\n\n /**\n * Initializes the widget.\n *\n * @return {Element|null}\n * @name _newElement\n * @function\n * @protected\n */\n _newElement() {\n return null;\n }\n}","'use strict'\n\n/**\n * @module strings\n */\nexport const strings = {};\n\n/**\n * Escapes characters with special meaning in {@link RegExp}.\n *\n * @param {string} str the string to escape.\n * @return {string} the escaped string.\n * @memberOf module:strings\n */\nstrings.escapeCharactersWithSpecialMeaningInRegExp = function (str) {\n return str ? ('' + str).replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&' /* the whole matched string */) : '';\n}\n\n/**\n * Converts a string to a {@link RegExp} literal.\n *\n * @param {string} str the string to convert.\n * @param {string} flags the flags of the regular expression.\n * @return {RegExp} a {@link RegExp}.\n * @memberOf module:strings\n */\nstrings.toRegExp = function (str, flags) {\n\n // As of 2020-01-06, the DOT_ALL flag is not available on Firefox\n // If truly needed, use [^]* that reads \"match any character that is not nothing\"\n const newFlags = flags ? flags : 'im';\n const escapedString = strings.escapeCharactersWithSpecialMeaningInRegExp(str).split(/[\\s\\u00a0]+/).join(\n '(\\\\s|\\u00a0)*');\n return new RegExp(escapedString, newFlags);\n}\n\n/**\n * Removes diacritical marks from a string.\n *\n * @param {string} str the string to clean.\n * @param {boolean} preserveStringLength true iif the original string length must be preserved.\n * @return {string} the cleaned text i.e. without diacritical marks.\n * @memberOf module:strings\n * @preserve The code is extracted from https://web.archive.org/web/20121231230126/http://lehelk.com:80/2011/05/06/script-to-remove-diacritics/.\n */\nstrings.removeDiacritics = function (str, preserveStringLength) {\n\n str = str ? '' + str : '';\n\n const diacritics = [{\n base: 'A',\n letters: /[\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F]/g\n }, {\n base: 'B', letters: /[\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181]/g\n }, {\n base: 'C', letters: /[\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E]/g\n }, {\n base: 'D', letters: /[\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779]/g\n }, {\n base: 'E',\n letters: /[\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E]/g\n }, {\n base: 'F', letters: /[\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B]/g\n }, {\n base: 'G', letters: /[\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E]/g\n }, {\n base: 'H', letters: /[\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D]/g\n }, {\n base: 'I',\n letters: /[\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197]/g\n }, {base: 'J', letters: /[\\u004A\\u24BF\\uFF2A\\u0134\\u0248]/g}, {\n base: 'K', letters: /[\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2]/g\n }, {\n base: 'L',\n letters: /[\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780]/g\n }, {\n base: 'M', letters: /[\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C]/g\n }, {\n base: 'N',\n letters: /[\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4]/g\n }, {\n base: 'O',\n letters: /[\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C]/g\n }, {\n base: 'P', letters: /[\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754]/g\n }, {\n base: 'Q', letters: /[\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A]/g\n }, {\n base: 'R',\n letters: /[\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782]/g\n }, {\n base: 'S',\n letters: /[\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784]/g\n }, {\n base: 'T', letters: /[\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786]/g\n }, {\n base: 'U',\n letters: /[\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244]/g\n }, {\n base: 'V', letters: /[\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245]/g\n }, {\n base: 'W', letters: /[\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72]/g\n }, {base: 'X', letters: /[\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C]/g}, {\n base: 'Y', letters: /[\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE]/g\n }, {\n base: 'Z', letters: /[\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762]/g\n }, {\n base: 'a',\n letters: /[\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250]/g\n }, {\n base: 'b', letters: /[\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253]/g\n }, {\n base: 'c', letters: /[\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184]/g\n }, {\n base: 'd', letters: /[\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A]/g\n }, {\n base: 'e',\n letters: /[\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD]/g\n }, {\n base: 'f', letters: /[\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C]/g\n }, {\n base: 'g', letters: /[\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F]/g\n }, {\n base: 'h', letters: /[\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265]/g\n }, {\n base: 'i',\n letters: /[\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131]/g\n }, {\n base: 'j', letters: /[\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249]/g\n }, {\n base: 'k', letters: /[\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3]/g\n }, {\n base: 'l',\n letters: /[\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747]/g\n }, {\n base: 'm', letters: /[\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F]/g\n }, {\n base: 'n',\n letters: /[\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5]/g\n }, {\n base: 'o',\n letters: /[\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275]/g\n }, {\n base: 'p', letters: /[\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755]/g\n }, {\n base: 'q', letters: /[\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759]/g\n }, {\n base: 'r',\n letters: /[\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783]/g\n }, {\n base: 's',\n letters: /[\\u0073\\u24E2\\uFF53\\u00DF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B]/g\n }, {\n base: 't',\n letters: /[\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787]/g\n }, {\n base: 'u',\n letters: /[\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289]/g\n }, {\n base: 'v', letters: /[\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C]/g\n }, {\n base: 'w', letters: /[\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73]/g\n }, {base: 'x', letters: /[\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D]/g}, {\n base: 'y',\n letters: /[\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF]/g\n }, {\n base: 'z', letters: /[\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763]/g\n }];\n\n if (preserveStringLength === undefined || preserveStringLength === true) {\n diacritics.push({base: 'AA', letters: /\\uA732/g}, {base: 'AE', letters: /[\\u00C6\\u01FC\\u01E2]/g},\n {base: 'AO', letters: /\\uA734/g}, {base: 'AU', letters: /\\uA736/g}, {base: 'AV', letters: /[\\uA738\\uA73A]/g},\n {base: 'AY', letters: /\\uA73C/g}, {base: 'DZ', letters: /[\\u01F1\\u01C4]/g},\n {base: 'Dz', letters: /[\\u01F2\\u01C5]/g}, {base: 'LJ', letters: /\\u01C7/g}, {base: 'Lj', letters: /\\u01C8/g},\n {base: 'NJ', letters: /\\u01CA/g}, {base: 'Nj', letters: /\\u01CB/g}, {base: 'OI', letters: /\\u01A2/g},\n {base: 'OO', letters: /\\uA74E/g}, {base: 'OU', letters: /\\u0222/g}, {base: 'TZ', letters: /\\uA728/g},\n {base: 'VY', letters: /\\uA760/g}, {base: 'aa', letters: /\\uA733/g},\n {base: 'ae', letters: /[\\u00E6\\u01FD\\u01E3]/g}, {base: 'ao', letters: /\\uA735/g},\n {base: 'au', letters: /\\uA737/g}, {base: 'av', letters: /[\\uA739\\uA73B]/g}, {base: 'ay', letters: /\\uA73D/g},\n {base: 'dz', letters: /[\\u01F3\\u01C6]/g}, {base: 'hv', letters: /\\u0195/g}, {base: 'lj', letters: /\\u01C9/g},\n {base: 'nj', letters: /\\u01CC/g}, {base: 'oi', letters: /\\u01A3/g}, {base: 'ou', letters: /\\u0223/g},\n {base: 'oo', letters: /\\uA74F/g}, {base: 'tz', letters: /\\uA729/g}, {base: 'vy', letters: /\\uA761/g});\n }\n\n for (let i = 0; i < diacritics.length; i++) {\n str = str.replace(diacritics[i].letters, diacritics[i].base);\n }\n return str;\n}\n\n/**\n * The Pattern type.\n *\n * @param {RegExp} regexp the pattern to match.\n * @param {string} color the highlight color as a hexadecimal string.\n * @memberOf module:strings\n * @constructor\n * @struct\n * @final\n */\nstrings.Pattern = function (regexp, color) {\n this.regexp = regexp;\n this.color = color;\n}\n\n/**\n * The Highlight type.\n *\n * @param {string} matchedText the matched text fragment.\n * @param {number} matchedPage the page number (1-based) from which the snippet was extracted.\n * @param {string} rawSnippet a snippet of text surrounding the matched text fragment (about 300 characters).\n * @param {string} highlightedSnippet a snippet of text surrounding the matched and highlighted text fragment (about 300 characters).\n * @memberOf module:strings\n * @constructor\n * @struct\n * @final\n */\nstrings.Highlight = function (matchedText, matchedPage, rawSnippet, highlightedSnippet) {\n this.matchedText = matchedText;\n this.matchedPage = matchedPage;\n this.rawSnippet = rawSnippet\n this.highlightedSnippet = highlightedSnippet;\n}\n\n/**\n * The HighlightedText type.\n *\n * @param {string} text the whole text, highlighted.\n * @param {Array} snippets the snippet associated with each highlighted text fragment.\n * @memberOf module:strings\n * @constructor\n * @struct\n * @final\n */\nstrings.HighlightedText = function (text, snippets) {\n this.text = text;\n this.snippets = snippets;\n}\n\n/**\n * Highlights all occurrences of a given set of patterns in a string.\n *\n * @param {string} text the text to highlight.\n * @param {Array} patterns a set of patterns to match and highlight.\n * @return {strings.HighlightedText} the highlighted text.\n * @memberOf module:strings\n */\nstrings.highlight = function (text, patterns) {\n\n text = text ? '' + text : '';\n\n if (!patterns || patterns.length <= 0 || strings.isNullOrBlank(text)) {\n return new strings.HighlightedText(text, []);\n }\n\n let highlightedText = text;\n text = strings.removeDiacritics(text, true);\n\n if (text.length !== highlightedText.length) {\n highlightedText = text;\n }\n const highlights = patterns.flatMap(pattern => {\n\n const matcher = pattern.regexp;\n const matches = [];\n let match = null;\n\n while (match = matcher.exec(text)) {\n matches.push({\n start: match.index, end: match.index + match[0].length, color: pattern.color\n });\n }\n return matches;\n }).sort((a, b) => {\n if (a.start < b.start) {\n return 1;\n }\n if (a.start > b.start) {\n return -1;\n }\n return 0;\n }).map(position => {\n\n // TODO : deal with overlaps?\n const prefix = highlightedText.substring(0, position.start);\n const infix = highlightedText.substring(position.start, position.end);\n const suffix = highlightedText.substring(position.end);\n\n highlightedText = `${prefix}${infix}${suffix}`;\n\n const begin = Math.max(0, prefix.length - 50);\n const end = Math.min(150, suffix.length);\n const rawSnippet = `${prefix.substring(begin)}${infix}${suffix.substring(0, end)}`;\n let highlightedSnippet = `${prefix.substring(\n begin)}${infix}${suffix.substring(0, end)}`;\n const pages = prefix.split('\\f' /* page separator */).map((page, index) => index);\n const beginMark = highlightedSnippet.lastIndexOf('');\n\n if (beginMark && (!endMark || beginMark > endMark)) {\n highlightedSnippet = highlightedSnippet.substring(0, beginMark);\n }\n return new strings.Highlight(infix, pages.length, rawSnippet, highlightedSnippet);\n });\n return new strings.HighlightedText(highlightedText, highlights);\n}\n\n/**\n * Returns true iif a string is either null or blank, false otherwise.\n *\n * @param {string} str the string to check.\n * @return {boolean} true if the string is null or blank, false otherwise.\n * @memberOf module:strings\n */\nstrings.isNullOrBlank = function (str) {\n return !(typeof str === 'string' && str.trim() !== '');\n}\n\n/**\n * Prepends '0' to a string or number until a given length is reached.\n *\n * @param {string|number} str a string or number.\n * @param {number} targetLength the string target length.\n * @return {string} a padded string.\n * @memberOf module:strings\n */\nstrings.pad = function (str, targetLength) {\n return (str ? '' + str : '').padStart(targetLength, '0');\n}\n\n/**\n * Removes all '0' from the beginning of a string.\n *\n * @param {string} str a string.\n * @return {string} an un-padded string.\n * @memberOf module:strings\n */\nstrings.unpad = function (str) {\n str = str ? '' + str : '';\n let i = 0;\n for (; i < str.length && str[i] === '0'; i++) {\n }\n return str.substring(i);\n}\n\n/**\n * Checks if a string represents a numeric value.\n *\n * @param {string} str the string to check.\n * @return {boolean} true if the string is a number, false otherwise.\n * @memberOf module:strings\n * @preserve The code is extracted from https://stackoverflow.com/a/175787.\n */\nstrings.isNumeric = function (str) {\n return typeof str === 'string' ? !isNaN(str) && !isNaN(parseFloat(str)) : false;\n}\n\n/**\n * Formats null or blank values.\n *\n * @param {string|number} str the value to format.\n * @param {string} defaultValue the string to return if the value is either null or empty.\n * @return {string} the formatted value.\n */\nstrings.formatNullOrBlank = function (str, defaultValue) {\n str = str ? '' + str : '';\n return strings.isNullOrBlank(str) ? defaultValue : str;\n}\n\n/**\n * Returns true iif a string starts with 'MASKED_', false otherwise.\n *\n * @param {string} str the string to check.\n * @return {boolean} true iif the string starts with 'MASKED_', false otherwise.\n */\nstrings.isMasked = function (str) {\n return typeof str === 'string' ? str.trim().toUpperCase().startsWith('MASKED_') : false;\n}\n\n/**\n * Convert a string from camel case to snake case.\n *\n * @param {string} str the string in camel case.\n * @returns {string} the string in snake case.\n */\nstrings.camelToSnakeCase = function (str) {\n return typeof str === 'string' ? str.replace(/[A-Z]/g,\n (letter, idx) => idx === 0 ? letter.toLowerCase() : `_${letter.toLowerCase()}`) : null;\n}\n\n/**\n * Convert a string from snake case to camel case.\n *\n * @param {string} str the string in snake case.\n * @returns {string} the string in camel case.\n */\nstrings.snakeCaseToCamelCase = function (str) {\n return typeof str === 'string' ? str.replace(/_[a-z]/g,\n (group, idx) => idx === 0 ? group.replace('_', '') : group.toUpperCase().replace('_', '')) : null;\n}","'use strict'\n\nimport {observers} from \"./observers\";\nimport {widgets} from \"./widgets\";\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport {\n Alignment,\n Button,\n Card,\n Checkbox,\n Drawer,\n FileInput,\n Icon,\n InputGroup,\n Intent,\n Menu,\n MenuItem,\n NumericInput,\n Position,\n RadioGroup,\n RangeSlider,\n Slider,\n Spinner,\n SpinnerSize,\n Switch,\n Tab,\n Tabs,\n Toast,\n Toaster\n} from '@blueprintjs/core';\nimport {Cell, Column, ColumnHeaderCell, Table2, TableLoadingOption} from '@blueprintjs/table';\nimport {MultiSelect2, Select2, Suggest2} from '@blueprintjs/select';\nimport {TimePrecision} from '@blueprintjs/datetime';\nimport {DateInput2, DateRangeInput2} from '@blueprintjs/datetime2';\nimport {add, format, parse, sub} from \"date-fns\";\nimport {strings} from \"./strings\";\n\n/**\n * @module blueprintjs\n */\nexport const blueprintjs = {};\n\n/**\n * Base class that deals with injecting the common styles and scripts.\n *\n * @memberOf module:blueprintjs\n * @type {blueprintjs.Blueprintjs}\n */\nblueprintjs.Blueprintjs = class extends widgets.Widget {\n\n /**\n * @param {Element} container the parent element.\n * @constructor\n */\n constructor(container) {\n super(container);\n }\n\n /**\n * Populate a DOM element with Blueprintjs components.\n *\n * @param template the DOM element.\n * @param objs the components.\n */\n static populate(template, objs) {\n objs.forEach(obj => blueprintjs.Blueprintjs.component(template, obj));\n }\n\n /**\n * Create a Blueprintjs component from a JSON object.\n *\n * @param template the DOM element where the component will be added.\n * @param obj the component properties.\n */\n static component(template, obj) {\n\n // {\n // type: '',\n // container: '',\n // el: null,\n // ...\n // }\n const container = template.querySelector(`#${obj.container}`);\n if (!container) {\n return obj;\n }\n switch (obj.type) {\n case 'Table': {\n obj.el = new blueprintjs.MinimalTable(container);\n break;\n }\n case 'Select': {\n const itemToText = obj.item_to_text;\n const itemToLabel = obj.item_to_label;\n const itemPredicate = obj.item_predicate;\n const itemCreate = obj.item_create;\n obj.el = new blueprintjs.MinimalSelect(container, itemToText, itemToLabel, itemPredicate, itemCreate);\n break;\n }\n case 'Slider': {\n const min = obj.min;\n const max = obj.max;\n const increment = obj.increment;\n const displayIncrement = obj.display_increment;\n obj.el = new blueprintjs.MinimalSlider(container, min, max, increment, displayIncrement);\n break;\n }\n case 'RangeSlider': {\n const min = obj.min;\n const max = obj.max;\n const increment = obj.increment;\n const displayIncrement = obj.display_increment;\n const defaultMinValue = obj.default_min_value;\n const defaultMaxValue = obj.default_max_value;\n obj.el = new blueprintjs.MinimalRangeSlider(container, min, max, increment, displayIncrement, defaultMinValue,\n defaultMaxValue);\n break;\n }\n case 'Drawer': {\n const width = obj.width;\n obj.el = new blueprintjs.MinimalDrawer(container, width);\n break;\n }\n case 'Tabs': {\n obj.el = new blueprintjs.MinimalTabs(container);\n break;\n }\n case 'Spinner': {\n const size = obj.size;\n obj.el = new blueprintjs.MinimalSpinner(container, size);\n break;\n }\n case 'Switch': {\n const checked = obj.checked;\n const label = obj.label;\n const labelPosition = obj.label_position;\n const labelChecked = obj.label_checked;\n const labelUnchecked = obj.label_unchecked;\n obj.el = new blueprintjs.MinimalSwitch(container, checked, label, labelPosition, labelChecked, labelUnchecked);\n break;\n }\n case 'Toaster': {\n obj.el = new blueprintjs.MinimalToaster(container);\n break;\n }\n case 'Card': {\n const body = obj.body;\n obj.el = new blueprintjs.MinimalCard(container, body);\n break;\n }\n case 'Icon': {\n const icon = obj.icon;\n const intent = obj.intent;\n obj.el = new blueprintjs.MinimalIcon(container, icon, intent);\n break;\n }\n case 'Checkbox': {\n const checked = obj.checked;\n const label = obj.label;\n const labelPosition = obj.label_position;\n obj.el = new blueprintjs.MinimalCheckbox(container, checked, label, labelPosition);\n break;\n }\n case 'Date': {\n const format = obj.format;\n const minDate = obj.min_date;\n const maxDate = obj.max_date;\n obj.el = new blueprintjs.MinimalDate(container, format, minDate, maxDate);\n break;\n }\n case 'Datetime': {\n const format = obj.format;\n const minDate = obj.min_date;\n const maxDate = obj.max_date;\n const timePrecision = obj.default_precision;\n const defaultTimezone = obj.default_timezone;\n obj.el = new blueprintjs.MinimalDatetime(container, format, minDate, maxDate, timePrecision, defaultTimezone);\n break;\n }\n case 'DateRange': {\n const format = obj.format;\n const minDate = obj.min_date;\n const maxDate = obj.max_date;\n obj.el = new blueprintjs.MinimalDateRange(container, format, minDate, maxDate);\n break;\n }\n case 'MultiSelect': {\n const itemToText = obj.item_to_text;\n const itemToLabel = obj.item_to_label;\n const itemToTag = obj.item_to_tag;\n const itemPredicate = obj.item_predicate;\n const itemCreate = obj.item_create;\n obj.el = new blueprintjs.MinimalMultiSelect(container, itemToText, itemToLabel, itemToTag, itemPredicate,\n itemCreate);\n break;\n }\n case 'Suggest': {\n const itemToText = obj.item_to_text;\n const itemToLabel = obj.item_to_label;\n const itemPredicate = obj.item_predicate;\n obj.el = new blueprintjs.MinimalSuggest(container, itemToText, itemToLabel, itemPredicate);\n break;\n }\n case 'FileInput': {\n const multiple = obj.multiple;\n obj.el = new blueprintjs.MinimalFileInput(container, multiple);\n break;\n }\n case 'RadioGroup': {\n const label = obj.label;\n const inline = obj.inline;\n obj.el = new blueprintjs.MinimalRadioGroup(container, label, inline);\n break;\n }\n case 'TextInput': {\n const defaultValue = obj.default_value;\n const icon = obj.icon;\n const intent = obj.intent;\n obj.el = new blueprintjs.MinimalTextInput(container, defaultValue, icon, intent);\n break;\n }\n case 'NumericInput': {\n const min = obj.min;\n const max = obj.max;\n const increment = obj.increment;\n const defaultValue = obj.default_value;\n const icon = obj.icon;\n const intent = obj.intent;\n obj.el = new blueprintjs.MinimalNumericInput(container, min, max, increment, defaultValue, icon, intent);\n break;\n }\n case 'Button': {\n const label = obj.label;\n const labelPosition = obj.label_position;\n const leftIcon = obj.left_icon;\n const rightIcon = obj.right_icon;\n const intent = obj.intent;\n obj.el = new blueprintjs.MinimalButton(container, label, labelPosition, leftIcon, rightIcon, intent);\n break;\n }\n default:\n obj.el = null;\n break;\n }\n if (obj.el) {\n for (let key in obj) {\n if (key === 'type' || key === 'container' || key === 'el') {\n continue;\n }\n const prop = strings.snakeCaseToCamelCase(key);\n const desc = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(obj.el), prop);\n // console.log(prop, desc);\n if (desc) {\n if (desc.set) { // setter\n obj.el[prop] = obj[key];\n } else if (desc.writable) { // function\n obj.el[prop](obj[key]);\n }\n }\n }\n }\n return obj;\n }\n\n /**\n * In order to avoid a memory leak, properly remove the component from the DOM.\n *\n * @name destroy\n * @function\n * @protected\n */\n destroy() {\n\n if (this.widgets_) {\n\n // Remove registered widgets\n for (let i = 0; i < this.widgets_.length; i++) {\n this.widgets_[i].destroy();\n }\n this.widgets_ = [];\n }\n\n ReactDOM.unmountComponentAtNode(this.container);\n }\n\n /**\n * Renders the component.\n *\n * @name render\n * @function\n * @protected\n */\n render() {\n const element = this._newElement();\n if (element) {\n ReactDOM.render(element, this.container);\n }\n }\n\n /**\n * Initializes the component.\n *\n * @return {ReactElement|null}\n * @name _newElement\n * @function\n * @protected\n */\n _newElement() {\n return null;\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs table component.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalTable}\n */\nblueprintjs.MinimalTable = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {function(number, number, *): ReactElement} cellRenderer a function in charge of rendering a single cell (optional).\n * @constructor\n */\n constructor(container, cellRenderer) {\n super(container);\n this.cellRenderer_ = cellRenderer;\n this.observers_ = new observers.Subject();\n this.columns_ = [];\n this.columnWidths_ = [];\n this.columnTypes_ = [];\n this.rows_ = [];\n this.loadingOptions_ = [];\n this.render();\n }\n\n get columns() {\n return this.columns_;\n }\n\n set columns(value) {\n this.columns_ = value;\n this.render();\n }\n\n get columnTypes() {\n return this.columnTypes_;\n }\n\n set columnTypes(values) {\n this.columnTypes_ = values;\n this.render();\n }\n\n get columnWidths() {\n return this.columnWidths_;\n }\n\n set columnWidths(values) {\n this.columnWidths_ = values;\n this.render();\n }\n\n get rows() {\n return this.rows_;\n }\n\n set rows(values) {\n this.rows_ = values;\n this.render();\n }\n\n get loadingOptions() {\n return this.loadingOptions_;\n }\n\n set loadingOptions(values) {\n this.loadingOptions_ = values;\n this.render();\n }\n\n /**\n * Listen to the `sort` event.\n *\n * @param {function(string, string): void} callback the callback to call when the event is triggered.\n * @name onSortColumn\n * @function\n * @public\n */\n onSortColumn(callback) {\n this.observers_.register('sort', (column, order) => {\n // console.log('Sort ' + order + ' is ' + column);\n if (callback) {\n callback(column, order);\n }\n });\n }\n\n /**\n * Listen to the `fetch-next-rows` event.\n *\n * @param {function(number): void} callback the callback to call when the event is triggered.\n * @name onFetchNextRows\n * @function\n * @public\n */\n onFetchNextRows(callback) {\n this.observers_.register('fetch-next-rows', (nextRow) => {\n // console.log('Next row is ' + nextRow);\n if (callback) {\n callback(nextRow);\n }\n });\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(Array): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (regions) => {\n // console.log('Selected regions are ', regions);\n if (callback) {\n\n const cells = [];\n\n for (let i = 0; i < regions.length; i++) {\n\n if (!regions[i].hasOwnProperty('rows')) {\n continue; // ignore the region if a whole column has been selected\n }\n if (!regions[i].hasOwnProperty('cols')) {\n continue; // ignore the region if a whole row has been selected\n }\n\n const rows = regions[i].rows;\n const columns = regions[i].cols;\n\n for (let j = rows[0]; j <= rows[1]; j++) {\n for (let k = columns[0]; k <= columns[1]; k++) {\n cells.push({row_idx: j, col_idx: k, value: this.rows[j][k]});\n }\n }\n }\n callback(cells);\n }\n });\n }\n\n _newCell(self, rowIdx, colIdx) {\n return self.cellRenderer_ ? self.cellRenderer_(rowIdx, colIdx, self.rows[rowIdx][colIdx]) : React.createElement(\n Cell, {\n rowIndex: rowIdx, columnIndex: colIdx, style: {\n 'text-align': self.columnTypes[colIdx] === 'number' ? 'right' : 'left'\n }, children: React.createElement('div', {}, self.rows[rowIdx][colIdx]),\n });\n }\n\n _newColumnHeader(self, column) {\n return React.createElement(ColumnHeaderCell, {\n name: column, menuRenderer: () => {\n\n // Menu item for sorting the column in ascending order\n const menuItemSortAsc = React.createElement(MenuItem, {\n icon: 'sort-asc', text: 'Sort Asc', onClick: () => self.observers_.notify('sort', column, 'ASC'),\n });\n\n // Menu item for sorting the column in descending order\n const menuItemSortDesc = React.createElement(MenuItem, {\n icon: 'sort-desc', text: 'Sort Desc', onClick: () => self.observers_.notify('sort', column, 'DESC'),\n });\n\n return React.createElement(Menu, {\n children: [menuItemSortAsc, menuItemSortDesc]\n });\n }\n });\n }\n\n _newColumn(self, column) {\n return React.createElement(Column, {\n name: column,\n cellRenderer: (rowIdx, colIdx) => self._newCell(self, rowIdx, colIdx),\n columnHeaderCellRenderer: () => self._newColumnHeader(self, column),\n });\n }\n\n _newElement() {\n return React.createElement(Table2, {\n numRows: this.rows.length,\n children: this.columns.map(column => this._newColumn(this, column)),\n enableColumnReordering: true,\n loadingOptions: this.loadingOptions,\n columnWidths: this.columnWidths.length <= 0 ? null : this.columnWidths,\n onSelection: (regions) => {\n this.observers_.notify('selection-change', regions);\n },\n onVisibleCellsChange: (rowIndex, columnIndex) => {\n if (rowIndex.rowIndexEnd + 1 >= this.rows.length) {\n this.observers_.notify('fetch-next-rows', this.rows.length);\n }\n },\n onColumnsReordered: (oldIndex, newIndex, length) => {\n\n this.loadingOptions = [TableLoadingOption.CELLS];\n\n // First, reorder the rows header\n const oldColumnsOrder = this.columns;\n const newColumnsOrder = [];\n\n const oldColumnTypes = this.columnTypes;\n const newColumnTypes = [];\n\n for (let i = 0; i < oldColumnsOrder.length; i++) {\n if (!(oldIndex <= i && i < oldIndex + length)) {\n newColumnsOrder.push(oldColumnsOrder[i]);\n newColumnTypes.push(oldColumnTypes[i]);\n }\n }\n for (let k = oldIndex; k < oldIndex + length; k++) {\n newColumnsOrder.splice(newIndex + k - oldIndex, 0, oldColumnsOrder[k]);\n newColumnTypes.splice(newIndex + k - oldIndex, 0, oldColumnTypes[k]);\n }\n\n // console.log('Previous column order was [' + oldColumnsOrder.join(', ') + ']');\n // console.log('New column order is [' + newColumnsOrder.join(', ') + ']');\n\n // console.log('Previous column types were [' + oldColumnTypes.join(', ') + ']');\n // console.log('New column types is [' + newColumnTypes.join(', ') + ']');\n\n // Then, reorder the rows data\n const oldColumnsIndex = {};\n const newColumnsIndex = {};\n\n for (let i = 0; i < oldColumnsOrder.length; i++) {\n oldColumnsIndex[oldColumnsOrder[i]] = i;\n }\n for (let i = 0; i < newColumnsOrder.length; i++) {\n newColumnsIndex[i] = newColumnsOrder[i];\n }\n\n const oldRows = this.rows;\n const newRows = [];\n\n for (let i = 0; i < oldRows.length; i++) {\n\n const newRow = [];\n\n for (let j = 0; j < oldRows[i].length; j++) {\n newRow.push(oldRows[i][oldColumnsIndex[newColumnsIndex[j]]]);\n }\n newRows.push(newRow);\n }\n\n // Next, redraw the table\n this.columns = newColumnsOrder;\n this.columnTypes = newColumnTypes;\n this.rows = newRows;\n this.loadingOptions = [];\n },\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs select element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalSelect}\n */\nblueprintjs.MinimalSelect = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {function(*): string} itemToText a function that maps an item to the text to be displayed (optional).\n * @param {function(*): string} itemToLabel a function that maps an item to the label to be displayed (optional).\n * @param {function(string, *): boolean} itemPredicate a function that filters the internal list of items when user enters something in the input (optional).\n * @param {function(string): *} itemCreate a function that creates an item from a string (optional).\n * @constructor\n */\n constructor(container, itemToText, itemToLabel, itemPredicate, itemCreate) {\n super(container);\n this.itemToText_ = itemToText;\n this.itemToLabel_ = itemToLabel;\n this.itemPredicate_ = (query, item) => {\n if (itemPredicate) {\n return itemPredicate(query, item);\n }\n if (query && query !== '') {\n const txt = this.itemToText_ ? this.itemToText_(item) : item;\n return txt.trim().toLowerCase().indexOf(query.trim().toLowerCase()) >= 0;\n }\n return true;\n };\n this.itemCreate_ = itemCreate;\n this.observers_ = new observers.Subject();\n this.selectedItem_ = null;\n this.fillContainer_ = true;\n this.disabled_ = false;\n this.filterable_ = true;\n this.items_ = [];\n this.defaultText_ = 'Sélectionnez un élément...';\n this.noResults_ = 'Il n\\'y a aucun résultat pour cette recherche.';\n this.render();\n }\n\n get fillContainer() {\n return this.fillContainer_;\n }\n\n set fillContainer(value) {\n this.fillContainer_ = value;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get filterable() {\n return this.filterable_;\n }\n\n set filterable(value) {\n this.filterable_ = value;\n this.render();\n }\n\n get items() {\n return this.items_;\n }\n\n set items(values) {\n this.items_ = values;\n this.render();\n }\n\n get selectedItem() {\n return this.selectedItem_;\n }\n\n set selectedItem(value) {\n this.selectedItem_ = value;\n this.render();\n }\n\n get defaultText() {\n return this.defaultText_;\n }\n\n set defaultText(value) {\n this.defaultText_ = value;\n this.render();\n }\n\n get noResults() {\n return this.noResults_;\n }\n\n set noResults(value) {\n this.noResults_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(*): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (item) => {\n // console.log('Selected item is ', item);\n if (callback) {\n callback(item);\n }\n });\n }\n\n /**\n * Listen to the `filter-change` event.\n *\n * @param {function(*): void} callback the callback to call when the event is triggered.\n * @name onFilterChange\n * @function\n * @public\n */\n onFilterChange(callback) {\n this.observers_.register('filter-change', (filter) => {\n // console.log('Filter is ', filter);\n if (callback) {\n callback(filter);\n }\n });\n }\n\n _newButton() {\n return React.createElement(Button, {\n text: this.selectedItem ? this.itemToText_ ? this.itemToText_(this.selectedItem) : this.selectedItem\n : this.defaultText,\n alignText: 'left',\n rightIcon: 'double-caret-vertical',\n fill: this.fillContainer,\n disabled: this.disabled,\n });\n }\n\n _newElement() {\n return React.createElement(Select2, {\n fill: this.fillContainer,\n disabled: this.disabled,\n children: [this._newButton()],\n items: this.items,\n filterable: this.filterable,\n itemPredicate: this.itemPredicate_,\n onItemSelect: (item) => {\n // If the user selects twice the same item, removes the selection\n const selection = item === this.selectedItem ? null : item;\n this.selectedItem_ = selection;\n this.render();\n this.observers_.notify('selection-change', selection);\n },\n onQueryChange: (query) => {\n this.observers_.notify('filter-change', query);\n },\n itemRenderer: (item, props) => {\n if (!props.modifiers.matchesPredicate) {\n return null;\n }\n return React.createElement(MenuItem, {\n key: props.index,\n selected: props.modifiers.active,\n text: this.itemToText_ ? this.itemToText_(item) : item,\n label: this.itemToLabel_ ? this.itemToLabel_(item) : '',\n onFocus: props.handleFocus,\n onClick: props.handleClick,\n });\n },\n noResults: React.createElement(MenuItem, {\n text: this.noResults, disabled: true,\n }),\n popoverProps: {\n matchTargetWidth: true,\n },\n createNewItemFromQuery: this.itemCreate_,\n createNewItemRenderer: (query, active, handleClick) => {\n return React.createElement(MenuItem, {\n icon: 'add', selected: active, text: query, onClick: handleClick,\n });\n },\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs slider element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalSlider}\n */\nblueprintjs.MinimalSlider = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {number} min the minimum value.\n * @param {number} max the maximum value.\n * @param {number} increment the internal increment.\n * @param {number} displayIncrement the display increment.\n * @constructor\n */\n constructor(container, min, max, increment, displayIncrement) {\n super(container);\n this.min_ = min;\n this.max_ = max;\n this.increment_ = increment;\n this.displayIncrement_ = displayIncrement;\n this.value_ = min;\n this.observers_ = new observers.Subject();\n this.disabled_ = false;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get value() {\n return this.value_;\n }\n\n set value(value) {\n this.value_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(number): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (value) => {\n // console.log('Selected value is ', item);\n if (callback) {\n callback(value);\n }\n });\n }\n\n _newElement() {\n return React.createElement(Slider, {\n min: this.min_,\n max: this.max_,\n stepSize: this.increment_,\n labelStepSize: this.displayIncrement_,\n value: this.value,\n disabled: this.disabled,\n onChange: (value) => {\n this.value = value;\n this.observers_.notify('selection-change', value);\n },\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs range slider element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalRangeSlider}\n */\nblueprintjs.MinimalRangeSlider = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {number} min the minimum value.\n * @param {number} max the maximum value.\n * @param {number} increment the internal increment.\n * @param {number} displayIncrement the display increment.\n * @param {number} defaultMinValue the minimum value selected when the component is rendered the first time.\n * @param {number} defaultMaxValue the maximum value selected when the component is rendered the first time.\n * @constructor\n */\n constructor(container, min, max, increment, displayIncrement, defaultMinValue, defaultMaxValue) {\n super(container);\n this.min_ = min;\n this.max_ = max;\n this.increment_ = increment;\n this.displayIncrement_ = displayIncrement;\n this.minValue_ = defaultMinValue;\n this.maxValue_ = defaultMaxValue;\n this.observers_ = new observers.Subject();\n this.disabled_ = false;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get minValue() {\n return this.minValue_;\n }\n\n set minValue(value) {\n this.minValue_ = value;\n this.render();\n }\n\n get maxValue() {\n return this.maxValue_;\n }\n\n set maxValue(value) {\n this.maxValue_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(number, number): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (value) => {\n // console.log('Selected value is ', value);\n if (callback) {\n callback(value[0], value[1]);\n }\n });\n }\n\n _newElement() {\n return React.createElement(RangeSlider, {\n min: this.min_,\n max: this.max_,\n stepSize: this.increment_,\n labelStepSize: this.displayIncrement_,\n value: [this.minValue, this.maxValue],\n disabled: this.disabled,\n onChange: (value) => {\n this.minValue = value[0];\n this.maxValue = value[1];\n this.observers_.notify('selection-change', value);\n },\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs drawer element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalDrawer}\n */\nblueprintjs.MinimalDrawer = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {string} width the drawer width in pixels or percents (optional).\n * @constructor\n */\n constructor(container, width) {\n super(container);\n this.observers_ = new observers.Subject();\n this.show_ = false;\n this.width_ = width ? width : '75%';\n this.render();\n }\n\n get show() {\n return this.show_;\n }\n\n set show(value) {\n this.show_ = value;\n this.render();\n }\n\n /**\n * Listen to the `opening` event.\n *\n * @param {function(Element): void} callback the callback to call when the event is triggered.\n * @name onOpen\n * @function\n * @public\n */\n onOpen(callback) {\n this.observers_.register('opening', (el) => {\n if (callback) {\n callback(el);\n }\n });\n }\n\n /**\n * Listen to the `opened` event.\n *\n * @param {function(Element): void} callback the callback to call when the event is triggered.\n * @name onOpened\n * @function\n * @public\n */\n onOpened(callback) {\n this.observers_.register('opened', (el) => {\n if (callback) {\n callback(el);\n }\n });\n }\n\n /**\n * Listen to the `closing` event.\n *\n * @param {function(Element): void} callback the callback to call when the event is triggered.\n * @name onClose\n * @function\n * @public\n */\n onClose(callback) {\n this.observers_.register('closing', (el) => {\n if (callback) {\n callback(el);\n }\n });\n }\n\n _newElement() {\n return React.createElement(Drawer, {\n isOpen: this.show,\n size: this.width_,\n position: Position.RIGHT,\n onOpening: (el) => this.observers_.notify('opening', el),\n onOpened: (el) => this.observers_.notify('opened', el),\n onClose: () => this.show = false,\n onClosed: (el) => this.observers_.notify('closing', el),\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs tabs element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalTabs}\n */\nblueprintjs.MinimalTabs = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @constructor\n */\n constructor(container) {\n super(container);\n this.observers_ = new observers.Subject();\n this.tabs_ = [];\n this.render();\n }\n\n /**\n * Add a single tab to the nav bar.\n *\n * @param {string} name the tab name.\n * @param {Element} panel the tab content.\n * @name addTab\n * @function\n * @public\n */\n addTab(name, panel) {\n this.tabs_.push({\n name: name, panel: panel, disabled: false, is_selected: false,\n });\n this.render();\n }\n\n /**\n * Remove a single tab from the nav bar.\n *\n * @param {string} name the tab name.\n * @name removeTab\n * @function\n * @public\n */\n removeTab(name) {\n this.tabs_ = this.tabs_.filter(tab => tab.name !== name);\n this.render();\n }\n\n /**\n * Select the tab to display.\n *\n * @param {string} name the tab name.\n * @name selectTab\n * @function\n * @public\n */\n selectTab(name) {\n let selectedTab = null;\n this.tabs_.forEach(tab => {\n if (tab.name !== name) {\n tab.is_selected = false;\n } else {\n tab.is_selected = true;\n selectedTab = tab;\n }\n });\n this.render();\n if (selectedTab) {\n this.observers_.notify('selection-change', selectedTab.name, selectedTab.panel);\n }\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(string, Element): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (tabName, tabBody) => {\n // console.log('Selected tab is ' + tabName);\n if (callback) {\n callback(tabName, tabBody);\n }\n });\n }\n\n _newTab(tab) {\n return React.createElement(Tab, {\n id: tab.name, title: tab.name, panel: null, disabled: tab.disabled,\n });\n }\n\n _newElement() {\n const selectedTab = this.tabs_.find(tab => tab.is_selected);\n return React.createElement(Tabs, {\n id: 'tabs',\n children: this.tabs_.map(tab => this._newTab(tab)),\n selectedTabId: selectedTab ? selectedTab.name : null,\n onChange: (newTabId, oldTabId) => this.selectTab(newTabId)\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs spinner element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalSpinner}\n */\nblueprintjs.MinimalSpinner = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {string} size the spinner size in {'small', 'standard', 'large'}\n * @constructor\n */\n constructor(container, size) {\n super(container);\n this.value_ = null;\n if (size === 'small') {\n this.size_ = SpinnerSize.SMALL;\n } else if (size === 'large') {\n this.size_ = SpinnerSize.LARGE;\n } else {\n this.size_ = SpinnerSize.STANDARD;\n }\n this.render();\n }\n\n /**\n * Represents how far along an operation is.\n *\n * @param {number} value a value between 0 and 1 (inclusive) representing how far along an operation is.\n * @name advance\n * @function\n * @public\n */\n advance(value) {\n this.value_ = value;\n this.render();\n }\n\n _newElement() {\n return React.createElement(Spinner, {\n value: this.value_, size: this.size_,\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs switch element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalSwitch}\n */\nblueprintjs.MinimalSwitch = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {boolean} checked true iif the control should initially be checked, false otherwise (optional).\n * @param {string} label the switch label (optional).\n * @param {string} labelPosition the switch label position (in {left, right}) in respect to the element (optional).\n * @param {string} labelChecked the text to display inside the switch indicator when checked (optional).\n * @param {string} labelUnchecked the text to display inside the switch indicator when unchecked (optional).\n * @constructor\n */\n constructor(container, checked, label, labelPosition, labelChecked, labelUnchecked) {\n super(container);\n this.checked_ = checked;\n this.label_ = label;\n this.switchPosition_ = labelPosition === 'left' ? Alignment.RIGHT : Alignment.LEFT;\n this.labelChecked_ = labelChecked;\n this.labelUnchecked_ = labelUnchecked;\n this.observers_ = new observers.Subject();\n this.disabled_ = false;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get checked() {\n return this.checked_;\n }\n\n set checked(value) {\n this.checked_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(boolean): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (value) => {\n // console.log('Selected option is ' + (value ? 'checked' : 'unchecked'));\n if (callback) {\n callback(value ? 'checked' : 'unchecked');\n }\n });\n }\n\n _newElement() {\n return React.createElement(Switch, {\n disabled: this.disabled_,\n checked: this.checked_,\n label: this.label_,\n alignIndicator: this.switchPosition_,\n innerLabel: this.labelUnchecked_,\n innerLabelChecked: this.labelChecked_,\n onChange: () => {\n this.checked = !this.checked;\n this.observers_.notify('selection-change', this.checked);\n },\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs toast element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalToast}\n */\nblueprintjs.MinimalToast = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {string} message the message to display.\n * @param {string} intent the message intent in {none, primary, success, warning, danger} (optional).\n * @param {number} timeout the number of milliseconds to wait before automatically dismissing the toast (optional).\n * @constructor\n */\n constructor(container, message, intent, timeout) {\n super(container);\n this.timeout_ = timeout;\n this.message_ = message;\n if (intent === 'primary') {\n this.intent_ = Intent.PRIMARY;\n this.icon_ = null;\n } else if (intent === 'success') {\n this.intent_ = Intent.SUCCESS;\n this.icon_ = 'tick';\n } else if (intent === 'warning') {\n this.intent_ = Intent.WARNING;\n this.icon_ = 'warning-sign';\n } else if (intent === 'danger') {\n this.intent_ = Intent.DANGER;\n this.icon_ = 'warning-sign';\n } else {\n this.intent_ = Intent.NONE;\n this.icon_ = null;\n }\n this.observers_ = new observers.Subject();\n this.render();\n }\n\n /**\n * Listen to the `dismiss` event.\n *\n * @param {function(void): void} callback the callback to call when the event is triggered.\n * @name onDismiss\n * @function\n * @public\n */\n onDismiss(callback) {\n this.observers_.register('dismiss', (self) => {\n // console.log('Toast dismissed!');\n if (callback) {\n callback();\n }\n });\n }\n\n _newElement() {\n return React.createElement(Toast, {\n intent: this.intent_,\n icon: this.icon_,\n message: React.createElement('div', {}, this.message_),\n timeout: this.timeout_,\n onDismiss: () => this.observers_.notify('dismiss', this),\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs toaster element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalToaster}\n */\nblueprintjs.MinimalToaster = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @constructor\n */\n constructor(container) {\n super(container);\n this.toasts_ = [];\n this.render();\n }\n\n /**\n * Create and display a new toast.\n *\n * @param {string} message the message to display.\n * @param {string} intent the message intent in {none, primary, success, warning, danger} (optional).\n * @param {number} timeout the number of milliseconds to wait before automatically dismissing the toast (optional).\n * @name toast\n * @function\n * @public\n */\n toast(message, intent, timeout) {\n const toast = new blueprintjs.MinimalToast(this.container, message, intent, timeout);\n toast.el_ = toast._newElement();\n toast.onDismiss(() => {\n this.toasts_ = this.toasts_.filter(t => t !== toast);\n this.render();\n });\n this.toasts_.push(toast);\n this.render();\n }\n\n _newElement() {\n return React.createElement(Toaster, {\n children: this.toasts_.map(toast => toast.el_), position: Position.TOP,\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs card element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalCard}\n */\nblueprintjs.MinimalCard = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {Element} body the card body.\n * @constructor\n */\n constructor(container, body) {\n super(container);\n this.elevation_ = 0;\n this.interactive_ = false;\n this.observers_ = new observers.Subject();\n this.body_ = React.createElement('div', {\n ref: React.createRef(),\n });\n this.render(); // this.body_ must be rendered first!\n this.body_.ref.current.appendChild(body);\n this.render();\n }\n\n get elevation() {\n return this.elevation_;\n }\n\n set elevation(value) {\n this.elevation_ = !value ? 0 : value > 4 ? 4 : value;\n this.render();\n }\n\n get interactive() {\n return this.interactive_;\n }\n\n set interactive(value) {\n this.interactive_ = value;\n this.render();\n }\n\n /**\n * Listen to the `click` event.\n *\n * @param {function(void): void} callback the callback to call when the event is triggered.\n * @name onClick\n * @function\n * @public\n */\n onClick(callback) {\n this.observers_.register('click', (self) => {\n // console.log('Card clicked!');\n if (callback) {\n callback();\n }\n });\n }\n\n _newElement() {\n return React.createElement(Card, {\n children: [this.body_],\n elevation: this.elevation_,\n interactive: this.interactive_,\n onClick: () => this.observers_.notify('click', this),\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs icon element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalIcon}\n */\nblueprintjs.MinimalIcon = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {string} icon the icon name.\n * @param {string} intent the icon intent in {none, primary, success, warning, danger} (optional).\n * @constructor\n */\n constructor(container, icon, intent) {\n super(container);\n this.observers_ = new observers.Subject();\n this.icon_ = icon;\n this.size_ = 20;\n if (intent === 'primary') {\n this.intent_ = Intent.PRIMARY;\n } else if (intent === 'success') {\n this.intent_ = Intent.SUCCESS;\n } else if (intent === 'warning') {\n this.intent_ = Intent.WARNING;\n } else if (intent === 'danger') {\n this.intent_ = Intent.DANGER;\n } else {\n this.intent_ = Intent.NONE;\n }\n this.render();\n }\n\n get icon() {\n return this.icon_;\n }\n\n set icon(value) {\n this.icon_ = value;\n this.render();\n }\n\n get size() {\n return this.size_;\n }\n\n set size(value) {\n this.size_ = value;\n this.render();\n }\n\n get intent() {\n return this.intent_;\n }\n\n set intent(value) {\n this.intent_ = value;\n this.render();\n }\n\n /**\n * Listen to the `click` event.\n *\n * @param {function(void): void} callback the callback to call when the event is triggered.\n * @name onClick\n * @function\n * @public\n */\n onClick(callback) {\n this.observers_.register('click', (self) => {\n // console.log('Icon clicked!');\n if (callback) {\n callback();\n }\n });\n }\n\n _newElement() {\n return React.createElement(Icon, {\n icon: this.icon_, size: this.size_, intent: this.intent_, onClick: () => this.observers_.notify('click', this),\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs checkbox element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalCheckbox}\n */\nblueprintjs.MinimalCheckbox = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {boolean} checked true iif the control should initially be checked, false otherwise (optional).\n * @param {string} label the switch label (optional).\n * @param {string} labelPosition the switch label position (in {left, right}) in respect to the element (optional).\n * @constructor\n */\n constructor(container, checked, label, labelPosition) {\n super(container);\n this.observers_ = new observers.Subject();\n this.checked_ = checked;\n this.label_ = label;\n this.boxPosition_ = labelPosition === 'left' ? Alignment.RIGHT : Alignment.LEFT;\n this.disabled_ = false;\n this.render();\n }\n\n get checked() {\n return this.checked_;\n }\n\n set checked(value) {\n this.checked_ = value;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(string): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (value) => {\n // console.log('Selected option is ' + (value ? 'checked' : 'unchecked'));\n if (callback) {\n callback(value ? 'checked' : 'unchecked');\n }\n });\n }\n\n _newElement() {\n return React.createElement(Checkbox, {\n checked: this.checked_,\n disabled: this.disabled_,\n label: this.label_,\n alignIndicator: this.boxPosition_,\n onChange: () => {\n this.checked = !this.checked;\n this.observers_.notify('selection-change', this.checked);\n },\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs date element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalDate}\n */\nblueprintjs.MinimalDate = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {string} format the date format (optional). Default is 'yyyy-MM-dd'.\n * @param {Date} minDate the earliest date the user can select (optional).\n * @param {Date} maxDate the latest date the user can select (optional).\n * @constructor\n */\n constructor(container, format, minDate, maxDate) {\n super(container);\n this.observers_ = new observers.Subject();\n this.value_ = null;\n this.disabled_ = false;\n this.format_ = format ? format : 'yyyy-MM-dd';\n this.fillContainer_ = true;\n this.shortcuts_ = false;\n this.showActionsBar_ = false;\n this.minDate_ = minDate ? minDate : sub(new Date(), {years: 10});\n this.maxDate_ = maxDate ? maxDate : add(new Date(), {years: 10});\n this.render();\n }\n\n get date() {\n return this.value_;\n }\n\n set date(value) {\n this.value_ = value;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get shortcuts() {\n return this.shortcuts_;\n }\n\n set shortcuts(value) {\n this.shortcuts_ = value;\n this.render();\n }\n\n get showActionsBar() {\n return this.showActionsBar_;\n }\n\n set showActionsBar(value) {\n this.showActionsBar_ = value;\n this.render();\n }\n\n get fillContainer() {\n return this.fillContainer_;\n }\n\n set fillContainer(value) {\n this.fillContainer_ = value;\n this.render();\n }\n\n get minDate() {\n return this.minDate_;\n }\n\n set minDate(value) {\n this.minDate_ = value;\n this.render();\n }\n\n get maxDate() {\n return this.maxDate_;\n }\n\n set maxDate(value) {\n this.maxDate_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(string): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (value) => {\n // console.log('Selected date is ' + value);\n if (callback) {\n callback(value);\n }\n });\n }\n\n _newElement() {\n return React.createElement(DateInput2, {\n formatDate: (date) => format(date, this.format_),\n parseDate: (str) => parse(str, this.format_, new Date()),\n value: this.date,\n disabled: this.disabled,\n placeholder: this.format_,\n fill: this.fillContainer,\n minDate: this.minDate,\n maxDate: this.maxDate,\n shortcuts: this.shortcuts,\n showActionsBar: this.showActionsBar,\n showTimezoneSelect: this._showTimezone(),\n disableTimezoneSelect: this._disableTimezone(),\n timePrecision: this._timePrecision(),\n defaultTimezone: this._defaultTimezone(),\n onChange: (value) => {\n this.date = value;\n this.observers_.notify('selection-change', this.date);\n }\n });\n }\n\n /* Time-specific functions */\n\n _showTimezone() {\n return false;\n }\n\n _timePrecision() {\n return null;\n }\n\n _defaultTimezone() {\n return null;\n }\n\n _disableTimezone() {\n return true;\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs datetime element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalDatetime}\n */\nblueprintjs.MinimalDatetime = class extends blueprintjs.MinimalDate {\n\n /**\n * @param {Element} container the parent element.\n * @param {string} format the date format (optional). Default is 'yyyy-MM-dd HH:mm'.\n * @param {Date} minDate the earliest date the user can select (optional).\n * @param {Date} maxDate the latest date the user can select (optional).\n * @param {string} timePrecision the time precision in {'hours', 'minutes', 'seconds'} (optional). Default is 'minutes'.\n * @param {string} defaultTimezone the default time zone (optional). Default is 'UTC'.\n * @constructor\n */\n constructor(container, format, minDate, maxDate, timePrecision, defaultTimezone) {\n super(container, format ? format : 'yyyy-MM-dd HH:mm', minDate, maxDate);\n this.timePrecision_ = timePrecision === 'hours' ? TimePrecision.HOUR_24 : timePrecision === 'seconds'\n ? TimePrecision.SECOND : TimePrecision.MINUTE;\n this.defaultTimezone_ = defaultTimezone ? defaultTimezone : 'Etc/UTC';\n this.disableTimezone_ = false;\n this.render();\n }\n\n get disableTimezone() {\n return this.disableTimezone_;\n }\n\n set disableTimezone(value) {\n this.disableTimezone_ = value;\n this.render();\n }\n\n _showTimezone() {\n return true;\n }\n\n _timePrecision() {\n return this.timePrecision_;\n }\n\n _defaultTimezone() {\n return this.defaultTimezone_;\n }\n\n _disableTimezone() {\n return this.disableTimezone;\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs date range element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalDateRange}\n */\nblueprintjs.MinimalDateRange = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {string} format the date format (optional). Default is 'yyyy-MM-dd'.\n * @param {Date} minDate the earliest date the user can select (optional).\n * @param {Date} maxDate the latest date the user can select (optional).\n * @constructor\n */\n constructor(container, format, minDate, maxDate) {\n super(container);\n this.observers_ = new observers.Subject();\n this.disabled_ = false;\n this.shortcuts_ = true;\n this.dateMin_ = null;\n this.dateMax_ = null;\n this.format_ = format ? format : 'yyyy-MM-dd';\n this.minDate_ = minDate ? minDate : sub(new Date(), {years: 10});\n this.maxDate_ = maxDate ? maxDate : add(new Date(), {years: 10});\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get shortcuts() {\n return this.shortcuts_;\n }\n\n set shortcuts(value) {\n this.shortcuts_ = value;\n this.render();\n }\n\n get dateMin() {\n return this.dateMin_;\n }\n\n set dateMin(value) {\n this.dateMin_ = value;\n this.render();\n }\n\n get dateMax() {\n return this.dateMax_;\n }\n\n set dateMax(value) {\n this.dateMax_ = value;\n this.render();\n }\n\n get minDate() {\n return this.minDate_;\n }\n\n set minDate(value) {\n this.minDate_ = value;\n this.render();\n }\n\n get maxDate() {\n return this.maxDate_;\n }\n\n set maxDate(value) {\n this.maxDate_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(Date, Date): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (range) => {\n // console.log('Selected range is ' + range);\n if (callback) {\n callback(range[0], range[1]);\n }\n });\n }\n\n _newElement() {\n return React.createElement(DateRangeInput2, {\n formatDate: (date) => format(date, this.format_),\n parseDate: (str) => parse(str, this.format_, new Date()),\n value: [this.dateMin, this.dateMax],\n disabled: this.disabled,\n placeholder: this.format_,\n shortcuts: this.shortcuts,\n minDate: this.minDate,\n maxDate: this.maxDate,\n onChange: (range) => {\n this.dateMin = range[0];\n this.dateMax = range[1];\n this.observers_.notify('selection-change', range);\n }\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs multiselect element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalMultiSelect}\n */\nblueprintjs.MinimalMultiSelect = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {function(*): string} itemToText a function that maps an item to the text to be displayed (optional).\n * @param {function(*): string} itemToLabel a function that maps an item to the label to be displayed (optional).\n * @param {function(*): string} itemToTag a function that maps an item to the tag to be displayed (optional).\n * @param {function(string, *): boolean} itemPredicate a function that filters the internal list of items when user enters something in the input (optional).\n * @param {function(string): *} itemCreate a function that creates an item from a string (optional).\n * @constructor\n */\n constructor(container, itemToText, itemToLabel, itemToTag, itemPredicate, itemCreate) {\n super(container);\n this.itemToText_ = itemToText;\n this.itemToLabel_ = itemToLabel;\n this.itemToTag_ = itemToTag;\n this.itemPredicate_ = (query, item) => {\n if (itemPredicate) {\n return itemPredicate(query, item);\n }\n if (query && query !== '') {\n const txt = this.itemToText_ ? this.itemToText_(item) : item;\n return txt.trim().toLowerCase().indexOf(query.trim().toLowerCase()) >= 0;\n }\n return true;\n };\n this.itemCreate_ = itemCreate;\n this.observers_ = new observers.Subject();\n this.fillContainer_ = true;\n this.disabled_ = false;\n this.items_ = [];\n this.selectedItems_ = [];\n this.defaultText_ = 'Sélectionnez un élément...';\n this.noResults_ = 'Il n\\'y a aucun résultat pour cette recherche.';\n this.render();\n }\n\n get fillContainer() {\n return this.fillContainer_;\n }\n\n set fillContainer(value) {\n this.fillContainer_ = value;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get items() {\n return this.items_;\n }\n\n set items(values) {\n this.items_ = values;\n this.render();\n }\n\n get selectedItems() {\n return this.selectedItems_;\n }\n\n set selectedItems(value) {\n this.selectedItems_ = value ? value : [];\n this.render();\n }\n\n get defaultText() {\n return this.defaultText_;\n }\n\n set defaultText(value) {\n this.defaultText_ = value;\n this.render();\n }\n\n get noResults() {\n return this.noResults_;\n }\n\n set noResults(value) {\n this.noResults_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(*): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (items) => {\n // console.log('Selected items are ', items);\n if (callback) {\n callback(items);\n }\n });\n }\n\n /**\n * Listen to the `filter-change` event.\n *\n * @param {function(*): void} callback the callback to call when the event is triggered.\n * @name onFilterChange\n * @function\n * @public\n */\n onFilterChange(callback) {\n this.observers_.register('filter-change', (query) => {\n // console.log('Query is ', query);\n if (callback) {\n callback(query);\n }\n });\n }\n\n _newElement() {\n return React.createElement(MultiSelect2, {\n fill: this.fillContainer,\n disabled: this.disabled,\n items: this.items,\n selectedItems: this.selectedItems,\n placeholder: this.defaultText,\n onQueryChange: (query) => {\n this.observers_.notify('filter-change', query);\n },\n onClear: () => {\n this.selectedItems_ = [];\n this.render();\n this.observers_.notify('selection-change', this.selectedItems);\n },\n itemPredicate: this.itemPredicate_,\n onItemSelect: (item) => {\n // If the user selects twice the same item, do not add it twice to the selection\n const pos = this.selectedItems.map(i => this.itemToText_ ? this.itemToText_(i) : i).indexOf(\n this.itemToText_ ? this.itemToText_(item) : item);\n if (pos !== 0 && pos <= -1) {\n this.selectedItems_.push(item);\n this.render();\n this.observers_.notify('selection-change', this.selectedItems);\n }\n },\n itemRenderer: (item, props) => {\n if (!props.modifiers.matchesPredicate) {\n return null;\n }\n return React.createElement(MenuItem, {\n key: props.index,\n selected: props.modifiers.active,\n text: this.itemToText_ ? this.itemToText_(item) : item,\n label: this.itemToLabel_ ? this.itemToLabel_(item) : '',\n onFocus: props.handleFocus,\n onClick: props.handleClick,\n });\n },\n tagRenderer: (item) => {\n return this.itemToTag_ ? this.itemToTag_(item) : item;\n },\n onRemove: (tag, index) => {\n this.selectedItems_.splice(index, 1);\n this.render();\n this.observers_.notify('selection-change', this.selectedItems);\n },\n noResults: React.createElement(MenuItem, {\n text: this.noResults, disabled: true,\n }),\n popoverProps: {\n matchTargetWidth: true,\n },\n resetOnSelect: !!this.itemCreate_,\n createNewItemFromQuery: this.itemCreate_,\n createNewItemRenderer: (query, active, handleClick) => {\n return React.createElement(MenuItem, {\n icon: 'add', selected: active, text: query, onClick: handleClick,\n });\n },\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs suggest element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalSuggest}\n */\nblueprintjs.MinimalSuggest = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {function(*): string} itemToText a function that maps an item to the text to be displayed (optional).\n * @param {function(*): string} itemToLabel a function that maps an item to the label to be displayed (optional).\n * @param {function(*): boolean} itemPredicate a function that filters the internal list of items when user enters something in the input (optional).\n * @constructor\n */\n constructor(container, itemToText, itemToLabel, itemPredicate) {\n super(container);\n this.itemToText_ = itemToText;\n this.itemToLabel_ = itemToLabel;\n this.itemPredicate_ = (query, item) => {\n if (itemPredicate) {\n return itemPredicate(query, item);\n }\n if (query && query !== '') {\n const txt = this.itemToText_ ? this.itemToText_(item) : item;\n return txt.trim().toLowerCase().indexOf(query.trim().toLowerCase()) >= 0;\n }\n return true;\n };\n this.observers_ = new observers.Subject();\n this.fillContainer_ = true;\n this.disabled_ = false;\n this.items_ = [];\n this.selectedItem_ = null;\n this.defaultText_ = 'Saisissez un caractère...';\n this.noResults_ = 'Il n\\'y a aucun résultat pour cette recherche.';\n this.render();\n }\n\n get fillContainer() {\n return this.fillContainer_;\n }\n\n set fillContainer(value) {\n this.fillContainer_ = value;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get items() {\n return this.items_;\n }\n\n set items(values) {\n this.items_ = values;\n this.render();\n }\n\n get selectedItem() {\n return this.selectedItem_;\n }\n\n set selectedItem(value) {\n this.selectedItem_ = value ? value : null;\n this.render();\n }\n\n get defaultText() {\n return this.defaultText_;\n }\n\n set defaultText(value) {\n this.defaultText_ = value;\n const input = this.container.querySelector('input');\n if (input) {\n input.placeholder = this.defaultText_;\n }\n }\n\n get noResults() {\n return this.noResults_;\n }\n\n set noResults(value) {\n this.noResults_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(*): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (item) => {\n // console.log('Selected item is ', item);\n if (callback) {\n callback(item);\n }\n });\n }\n\n /**\n * Listen to the `filter-change` event.\n *\n * @param {function(*): void} callback the callback to call when the event is triggered.\n * @name onFilterChange\n * @function\n * @public\n */\n onFilterChange(callback) {\n this.observers_.register('filter-change', (query) => {\n // console.log('Query is ', query);\n if (callback) {\n callback(query);\n }\n });\n }\n\n _newElement() {\n return React.createElement(Suggest2, {\n fill: this.fillContainer,\n disabled: this.disabled,\n items: this.items,\n selectedItem: this.selectedItem,\n onQueryChange: (query) => {\n this.observers_.notify('filter-change', query);\n },\n inputValueRenderer: item => this.itemToText_ ? this.itemToText_(item) : item,\n onItemSelect: (item) => {\n this.selectedItem_ = item;\n this.render();\n this.observers_.notify('selection-change', this.selectedItem);\n },\n itemPredicate: this.itemPredicate_,\n itemRenderer: (item, props) => {\n if (!props.modifiers.matchesPredicate) {\n return null;\n }\n return React.createElement(MenuItem, {\n key: props.index,\n selected: props.modifiers.active,\n text: this.itemToText_ ? this.itemToText_(item) : item,\n label: this.itemToLabel_ ? this.itemToLabel_(item) : '',\n onFocus: props.handleFocus,\n onClick: props.handleClick,\n });\n },\n noResults: React.createElement(MenuItem, {\n text: this.noResults, disabled: true,\n }),\n popoverProps: {\n matchTargetWidth: true,\n }\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs file input element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalFileInput}\n */\nblueprintjs.MinimalFileInput = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {boolean} multiple true iif the user must be able to select one or more files.\n * @constructor\n */\n constructor(container, multiple) {\n super(container);\n this.observers_ = new observers.Subject();\n this.disabled_ = false;\n this.text_ = null;\n this.buttonText_ = null;\n this.fill_ = true;\n this.multiple_ = multiple === true;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get fill() {\n return this.fill_;\n }\n\n set fill(value) {\n this.fill_ = value;\n this.render();\n }\n\n get text() {\n return this.text_;\n }\n\n set text(value) {\n this.text_ = value;\n this.render();\n }\n\n get buttonText() {\n return this.buttonText_;\n }\n\n set buttonText(value) {\n this.buttonText_ = value;\n this.render();\n }\n\n get multiple() {\n return this.multiple_;\n }\n\n set multiple(value) {\n this.multiple_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(*): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (file) => {\n // console.log('Selected file is ', file);\n if (callback) {\n callback(file);\n }\n });\n }\n\n _newElement() {\n const props = {};\n if (this.multiple) {\n props.multiple = 'multiple';\n }\n return React.createElement(FileInput, {\n inputProps: props,\n disabled: this.disabled,\n text: this.text,\n buttonText: this.buttonText,\n fill: this.fill,\n onInputChange: (el) => {\n this.text = el.target.files[0].name;\n this.render();\n this.observers_.notify('selection-change', el.target.files[0]);\n },\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs radio group element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalRadioGroup}\n */\nblueprintjs.MinimalRadioGroup = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {string} label the group label (optional).\n * @param {boolean} inline true iif the radio buttons are to be displayed inline horizontally, false otherwise. (optional).\n * @constructor\n */\n constructor(container, label, inline) {\n super(container);\n this.label_ = label;\n this.inline_ = inline;\n this.observers_ = new observers.Subject();\n this.disabled_ = false;\n this.items_ = [];\n this.selectedItem_ = null;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get items() {\n return this.items_;\n }\n\n set items(values) {\n this.items_ = values;\n this.render();\n }\n\n get selectedItem() {\n return this.selectedItem_;\n }\n\n set selectedItem(value) {\n this.selectedItem_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(string): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (value) => {\n // console.log('Selected option is ', value);\n if (callback) {\n callback(value);\n }\n });\n }\n\n _newElement() {\n return React.createElement(RadioGroup, {\n label: this.label_,\n inline: this.inline_,\n disabled: this.disabled,\n options: this.items,\n selectedValue: this.selectedItem,\n onChange: (event) => {\n const selection = this.items.find(item => item.value === event.currentTarget.value);\n if (selection) {\n this.selectedItem = selection.value;\n this.observers_.notify('selection-change', selection);\n }\n },\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs text input element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalTextInput}\n */\nblueprintjs.MinimalTextInput = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {string} defaultValue the input default value (optional).\n * @param {string} icon the icon name (optional).\n * @param {string} intent the input intent in {none, primary, success, warning, danger} (optional).\n *\n * @constructor\n */\n constructor(container, defaultValue, icon, intent) {\n super(container);\n this.defaultValue_ = defaultValue;\n this.icon_ = icon;\n this.intent_ = intent;\n this.observers_ = new observers.Subject();\n this.id_ = 'i' + Math.random().toString(36).substring(2, 12);\n this.disabled_ = false;\n this.fillContainer_ = true;\n this.placeholder_ = null;\n this.render();\n }\n\n get icon() {\n return this.icon_;\n }\n\n set icon(value) {\n this.icon_ = value;\n this.render();\n }\n\n get intent() {\n return this.intent_;\n }\n\n set intent(value) {\n this.intent_ = value;\n this.render();\n }\n\n get fillContainer() {\n return this.fillContainer_;\n }\n\n set fillContainer(value) {\n this.fillContainer_ = value;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get placeholder() {\n return this.placeholder_;\n }\n\n set placeholder(value) {\n this.placeholder_ = value;\n this.render();\n }\n\n get value() {\n return document.getElementById(this.id_).value;\n }\n\n _newElement() {\n return React.createElement(InputGroup, {\n id: this.id_,\n disabled: this.disabled,\n placeholder: this.placeholder,\n defaultValue: this.defaultValue_,\n fill: this.fillContainer,\n leftIcon: this.icon,\n intent: this.intent,\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs text input element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalNumericInput}\n */\nblueprintjs.MinimalNumericInput = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {number} min the minimum value.\n * @param {number} max the maximum value.\n * @param {number} increment the internal increment.\n * @param {string} defaultValue the input default value (optional).\n * @param {string} icon the icon name (optional).\n * @param {string} intent the input intent in {none, primary, success, warning, danger} (optional).\n *\n * @constructor\n */\n constructor(container, min, max, increment, defaultValue, icon, intent) {\n super(container);\n this.min_ = min;\n this.max_ = max;\n this.increment_ = increment;\n this.defaultValue_ = defaultValue;\n this.icon_ = icon;\n this.intent_ = intent;\n this.id_ = 'i' + Math.random().toString(36).substring(2, 12);\n this.observers_ = new observers.Subject();\n this.disabled_ = false;\n this.fillContainer_ = true;\n this.placeholder_ = null;\n this.render();\n }\n\n get icon() {\n return this.icon_;\n }\n\n set icon(value) {\n this.icon_ = value;\n this.render();\n }\n\n get intent() {\n return this.intent_;\n }\n\n set intent(value) {\n this.intent_ = value;\n this.render();\n }\n\n get fillContainer() {\n return this.fillContainer_;\n }\n\n set fillContainer(value) {\n this.fillContainer_ = value;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get placeholder() {\n return this.placeholder_;\n }\n\n set placeholder(value) {\n this.placeholder_ = value;\n this.render();\n }\n\n get value() {\n return document.getElementById(this.id_).value;\n }\n\n /**\n * Listen to the `value-change` event.\n *\n * @param {function(number): void} callback the callback to call when the event is triggered.\n * @name onValueChange\n * @function\n * @public\n */\n onValueChange(callback) {\n this.observers_.register('value-change', (value) => {\n // console.log('Selected value is ' + value);\n if (callback) {\n callback(value);\n }\n });\n }\n\n _newElement() {\n return React.createElement(NumericInput, {\n id: this.id_,\n min: this.min_,\n max: this.max_,\n stepSize: this.increment_,\n disabled: this.disabled,\n placeholder: this.placeholder,\n defaultValue: this.defaultValue_,\n fill: this.fillContainer,\n leftIcon: this.icon,\n intent: this.intent,\n onValueChange: (value) => {\n this.observers_.notify('value-change', value);\n }\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs button element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalButton}\n */\nblueprintjs.MinimalButton = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {string} label the switch label.\n * @param {string} labelPosition the switch label position (in {left, center, right}) in respect to the element (optional).\n * @param {string} leftIcon the left icon name (optional).\n * @param {string} rightIcon the right icon name (optional).\n * @param {string} intent the input intent in {none, primary, success, warning, danger} (optional).\n *\n * @constructor\n */\n constructor(container, label, labelPosition, leftIcon, rightIcon, intent) {\n super(container);\n this.label_ = label;\n this.labelPosition_ = labelPosition === 'left' ? Alignment.LEFT : labelPosition === 'right' ? Alignment.RIGHT\n : Alignment.CENTER;\n this.leftIcon_ = leftIcon;\n this.rightIcon_ = rightIcon;\n this.intent_ = intent;\n this.observers_ = new observers.Subject();\n this.disabled_ = false;\n this.loading_ = false;\n this.fillContainer_ = true;\n this.render();\n }\n\n get leftIcon() {\n return this.leftIcon_;\n }\n\n set leftIcon(value) {\n this.leftIcon_ = value;\n this.render();\n }\n\n get rightIcon() {\n return this.rightIcon_;\n }\n\n set rightIcon(value) {\n this.rightIcon_ = value;\n this.render();\n }\n\n get intent() {\n return this.intent_;\n }\n\n set intent(value) {\n this.intent_ = value;\n this.render();\n }\n\n get fillContainer() {\n return this.fillContainer_;\n }\n\n set fillContainer(value) {\n this.fillContainer_ = value;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get loading() {\n return this.loading_;\n }\n\n set loading(value) {\n this.loading_ = value;\n this.render();\n }\n\n /**\n * Listen to the `click` event.\n *\n * @param {function(void): void} callback the callback to call when the event is triggered.\n * @name onClick\n * @function\n * @public\n */\n onClick(callback) {\n this.observers_.register('click', () => {\n // console.log('Clicked!');\n if (callback) {\n callback();\n }\n });\n }\n\n _newElement() {\n return React.createElement(Button, {\n text: this.label_,\n alignText: this.labelPosition_,\n disabled: this.disabled,\n fill: this.fillContainer,\n loading: this.loading,\n icon: this.leftIcon,\n rightIcon: this.rightIcon,\n intent: this.intent,\n onClick: () => {\n this.observers_.notify('click');\n }\n });\n }\n}\n","'use strict'\n\n/**\n * @module caches\n */\nexport const caches = {};\n\n/**\n * A very minimal cache. When the maximum size is reached, the oldest entry is removed from the cache.\n *\n * @param {number} maxSize the maximum number of entries to keep.\n * @memberOf module:caches\n * @constructor\n * @struct\n * @final\n */\ncaches.Cache = function (maxSize) {\n\n const maxSize_ = maxSize ? maxSize : 100;\n let queue_ = [];\n let map_ = {};\n\n /**\n * Returns the number of cached objects.\n *\n * @return {number} the number of cached objects.\n */\n this.size = function () {\n return Object.keys(map_).length;\n }\n\n /**\n * Check if a key has already been added to the cache.\n *\n * @param {string} key the key to check.\n * @return {boolean} true iif the key already exists, false otherwise.\n */\n this.contains = function (key) {\n return map_.hasOwnProperty(key);\n }\n\n /**\n * Adds a single cache entry.\n *\n * @param {string} key the entry key.\n * @param {*} value the entry value.\n * @return {*|null} the values previously associated with the given key.\n */\n this.put = function (key, value) {\n const prev = this.get(key);\n if (queue_.length >= maxSize_) {\n this.remove(queue_[0].key);\n }\n map_[key] = value;\n queue_.push({key: key, value: value});\n return prev;\n }\n\n /**\n * Returns a single cache entry.\n *\n * @param {string} key the key to get.\n * @return {*|null} the value associated with the given key.\n */\n this.get = function (key) {\n return this.contains(key) ? map_[key] : null;\n }\n\n /**\n * Returns a single cache entry or a default value if the cache key does not belong to the cache.\n *\n * @param {string} key the key to get.\n * @param {*|null} defaultValue the default value to return.\n */\n this.getOrDefault = function (key, defaultValue) {\n return this.contains(key) ? this.get(key) : defaultValue;\n }\n\n /**\n * Returns a single cache entry or add a new one if the cache key does not belong to the cache.\n *\n * @param key the key to get.\n * @param defaultValue the default to add to the cache.\n * @return {*|null}\n */\n this.getOrPut = function (key, defaultValue) {\n if (!this.contains(key)) {\n this.put(key, defaultValue);\n }\n return this.get(key);\n }\n\n /**\n * Removes a single cache entry.\n *\n * @param {string} key the key to evict.\n * @return {*|null} the value previously associated with the given key.\n */\n this.remove = function (key) {\n if (this.contains(key)) {\n const prev = this.get(key);\n queue_ = queue_.filter(entry => entry.key !== key);\n delete map_[key];\n return prev;\n }\n return null;\n }\n\n /**\n * Removes all cache entries.\n */\n this.invalidate = function () {\n map_ = {};\n queue_ = [];\n }\n}","'use strict'\n\n/**\n * @module dates\n */\nexport const dates = {};\n\n/**\n * Initializes a javascript {@link Date} from a string or number formatted as YYYYMMDD.\n *\n * @param {string|number} str a string or number formatted as YYYYMMDD.\n * @return {?Date} a javascript {@link Date}.\n * @memberOf module:dates\n */\ndates.yyyyMmDdToDate = function (str) {\n str = str ? ('' + str).trim() : '';\n if (str.length === 8) {\n const year = parseInt(str.substring(0, 4), 10);\n const month = parseInt(str.substring(4, 6), 10);\n const day = parseInt(str.substring(6, 8), 10);\n return new Date(year, month - 1, day);\n }\n return null;\n}\n\n/**\n * Initializes a javascript {@link Date} from a string or number formatted as DDMMYYYY.\n *\n * @param {string|number} str a string or number formatted as DDMMYYYY.\n * @return {?Date} a javascript {@link Date}.\n * @memberOf module:dates\n */\ndates.ddMmYyyyToDate = function (str) {\n str = str ? ('' + str).trim() : '';\n if (str.length === 8) {\n const day = parseInt(str.substring(0, 2), 10);\n const month = parseInt(str.substring(2, 4), 10);\n const year = parseInt(str.substring(4, 8), 10);\n return new Date(year, month - 1, day);\n }\n return null;\n}\n\n/**\n * Formats a javascript {@link Date} to a string formatted as YYYY-MM-DD.\n *\n * @param {Date} date a javascript {@link Date}.\n * @param {?string} separator a separator that will be inserted between the date parts.\n * @return {?string} a string formatted as YYYY-MM-DD.\n * @memberOf module:dates\n */\ndates.dateToYyyyMmDd = function (date, separator) {\n separator = separator || separator === '' ? separator : '-';\n return date instanceof Date ? date.getFullYear() + separator + (date.getMonth() < 9 ? '0' : '') + (date.getMonth()\n + 1) + separator + (date.getDate() < 10 ? '0' : '') + date.getDate() : null;\n}\n\n/**\n * Formats a javascript {@link Date} to a string formatted as DD-MM-YYYY.\n *\n * @param {Date} date a javascript {@link Date}.\n * @param {?string} separator a separator that will be inserted between the date parts.\n * @return {?string} a string formatted as DD-MM-YYYY.\n * @memberOf module:dates\n */\ndates.dateToDdMmYyyy = function (date, separator) {\n separator = separator || separator === '' ? separator : '-';\n return date instanceof Date ? (date.getDate() < 10 ? '0' : '') + date.getDate() + separator + (date.getMonth() < 9\n ? '0' : '') + (date.getMonth() + 1) + separator + date.getFullYear() : null;\n}","'use strict'\n\n/**\n * @module helpers\n */\nexport const helpers = {};\n\n/**\n * Converts a Javascript value to a base-64 encoded string.\n *\n * @param {*} obj a Javascript value, usually an object or array, to be converted.\n * @return {string} a base-64 encoded string.\n * @memberOf module:helpers\n */\nhelpers.toBase64 = function (obj) {\n return btoa(JSON.stringify(obj));\n}\n\n/**\n * Converts a base-64 encoded string to a Javascript value.\n *\n * @param {string} str a base-64 encoded string.\n * @return {*} a Javascript value.\n * @memberOf module:helpers\n */\nhelpers.fromBase64 = function (str) {\n return JSON.parse(atob(str));\n}\n\n/**\n * A version of {@link JSON.stringify} that returns a canonical JSON format.\n *\n * 'Canonical JSON' means that the same object should always be stringified to the exact same string.\n * JavaScripts native {@link JSON.stringify} does not guarantee any order for object keys when serializing.\n *\n * @param value the value to stringify.\n * @returns {string} the stringified value.\n * @memberOf module:helpers\n * @preserve The code is extracted from https://github.com/mirkokiefer/canonical-json.\n */\nhelpers.stringify = function (value) {\n\n function isObject(object) {\n return Object.prototype.toString.call(object) === '[object Object]'\n }\n\n function copyObjectWithSortedKeys(object) {\n if (isObject(object)) {\n const newObj = {}\n const keysSorted = Object.keys(object).sort()\n let key\n for (let i = 0, len = keysSorted.length; i < len; i++) {\n key = keysSorted[i]\n newObj[key] = copyObjectWithSortedKeys(object[key])\n }\n return newObj\n } else if (Array.isArray(object)) {\n return object.map(copyObjectWithSortedKeys)\n } else {\n return object\n }\n }\n\n return JSON.stringify(copyObjectWithSortedKeys(value))\n}\n\n/**\n * A simple 53-bits hashing algorithm with good enough distribution.\n *\n * @param {*} obj the value to hash.\n * @param {number} seed a seed.\n * @return {number} the hashed value.\n * @memberOf module:helpers\n * @preserve The code is extracted from https://stackoverflow.com/a/52171480.\n */\nhelpers.goodFastHash = function (obj, seed) {\n\n const newStr = obj ? helpers.stringify(obj) : '';\n const newSeed = seed ? seed : 0;\n let h1 = 0xdeadbeef ^ newSeed;\n let h2 = 0x41c6ce57 ^ newSeed;\n\n for (let i = 0, ch; i < newStr.length; i++) {\n ch = newStr.charCodeAt(i);\n h1 = Math.imul(h1 ^ ch, 2654435761);\n h2 = Math.imul(h2 ^ ch, 1597334677);\n }\n\n h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^ Math.imul(h2 ^ (h2 >>> 13), 3266489909);\n h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^ Math.imul(h1 ^ (h1 >>> 13), 3266489909);\n\n return 4294967296 * (2097151 & h2) + (h1 >>> 0);\n}\n\n/**\n * Inject multiple scripts.\n *\n * @param {Element} el the root node where the scripts will be injected.\n * @param {Array} urls the scripts URL.\n * @return a {Promise<*>}.\n */\nhelpers.injectScripts = function (el, urls) {\n\n let promise = null;\n\n for (let i = 0; i < urls.length; i++) {\n if (promise) {\n promise = promise.then(() => this.injectScript(el, urls[i]));\n } else {\n promise = this.injectScript(el, urls[i]);\n }\n }\n return promise;\n}\n\n/**\n * Inject a single script.\n *\n * @param {Element} el the root node where the script will be injected.\n * @param {string} url the script URL.\n * @return a {Promise<*>}.\n * @preserve The code is extracted from https://gist.github.com/james2doyle/28a59f8692cec6f334773007b31a1523.\n */\nhelpers.injectScript = function (el, url) {\n return el ? new Promise((resolve, reject) => {\n const script = document.createElement('script');\n script.src = url;\n script.async = true;\n script.onerror = function (err) {\n console.log('Script failed : ' + url, err);\n reject(url, script, err);\n }\n script.onload = function () {\n console.log('Script loaded : ' + url);\n resolve(url, script)\n }\n el.appendChild(script);\n }) : Promise.reject('invalid node');\n}\n\n/**\n * Inject multiple stylesheets.\n *\n * @param {Element} el the root node where the scripts will be injected.\n * @param {Array} urls the stylesheets URL.\n * @return a {Promise<*>}.\n */\nhelpers.injectStyles = function (el, urls) {\n\n let promise = null;\n\n for (let i = 0; i < urls.length; i++) {\n if (promise) {\n promise = promise.then(() => this.injectStyle(el, urls[i]));\n } else {\n promise = this.injectStyle(el, urls[i]);\n }\n }\n return promise;\n}\n\n/**\n * Inject a single stylesheet.\n *\n * @param {Element} el the root node where the script will be injected.\n * @param {string} url the stylesheet URL.\n * @return a {Promise<*>}.\n * @preserve The code is extracted from https://gist.github.com/james2doyle/28a59f8692cec6f334773007b31a1523.\n */\nhelpers.injectStyle = function (el, url) {\n return el ? new Promise((resolve, reject) => {\n const link = document.createElement('link');\n link.href = url;\n link.rel = 'stylesheet';\n el.appendChild(link);\n console.log('Stylesheet loaded : ' + url);\n resolve(url, link);\n }) : Promise.reject('invalid node');\n}\n\n/**\n * Chunk a list and gives the UI thread a chance to process any pending UI events between each chunk (keeps the UI active).\n *\n * @param {Array} array the array to chunk and process.\n * @param {function(Object, Object): void} callback the callback to call for each array element.\n * @param {Object} context misc. contextual information (optional).\n * @param {number} maxTimePerChunk the maximum time to spend (guidance) in the callback for each chunk (optional).\n *\n * @preserve The code is extracted from https://stackoverflow.com/a/10344560.\n */\nhelpers.forEach = function (array, callback, context, maxTimePerChunk) {\n\n array = array || [];\n context = context || {};\n callback = callback || function (item, context) {\n };\n maxTimePerChunk = maxTimePerChunk || 200;\n let index = 0;\n\n function now() {\n return new Date().getTime();\n }\n\n function doChunk() {\n\n const startTime = now();\n\n while (index < array.length && (now() - startTime) <= maxTimePerChunk) {\n callback(array[index], context);\n ++index;\n }\n if (index < array.length) {\n setTimeout(doChunk, 1);\n }\n }\n\n doChunk();\n}\n\n/**\n * Delay a javascript function call. Executes only the last call.\n *\n * @param func the function to execute.\n * @param timeout the delay before the function can be called.\n * @returns {function}\n */\nhelpers.debounceLast = function (func, timeout = 300) {\n let timer;\n return (...args) => {\n clearTimeout(timer);\n timer = setTimeout(() => {\n func.apply(this, args);\n }, timeout);\n };\n}\n\n/**\n * Delay a javascript function call. Executes only the first call.\n *\n * @param func the function to execute.\n * @param timeout the delay before the function can be called again.\n * @returns {function}\n */\nhelpers.debounceFirst = function (func, timeout = 300) {\n let timer;\n return (...args) => {\n if (!timer) {\n func.apply(this, args);\n }\n clearTimeout(timer);\n timer = setTimeout(() => {\n timer = undefined;\n }, timeout);\n };\n}\n\n/**\n * Download a JSON object or an array of JSON objects.\n *\n * @param filename the name of the downloaded file.\n * @param data the data to download.\n */\nhelpers.download = function (filename, data) {\n\n const blob = new Blob([JSON.stringify(data)], {type: \"application/json;charset=utf-8\"});\n const isIE = false || !!document.documentMode;\n\n if (isIE) {\n window.navigator.msSaveBlob(blob, filename);\n } else {\n const url = window.URL || window.webkitURL;\n const link = url.createObjectURL(blob);\n const a = document.createElement(\"a\");\n a.download = filename;\n a.href = link;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n }\n}","'use strict'\n\n/**\n * @module platform\n */\nexport const platform = {};\n\n/**\n * The HttpClient type.\n *\n * @memberOf module:platform\n * @constructor\n * @struct\n * @final\n */\nplatform.HttpClient = function () {\n\n let baseUrl_ = '';\n let baseUrlAutodetect_ = false;\n let token_ = '';\n let tokenAutodetect_ = false;\n\n const reset = () => {\n baseUrl_ = '';\n baseUrlAutodetect_ = false;\n token_ = '';\n tokenAutodetect_ = false;\n }\n\n const findTokenFromQueryString = () => {\n const urlParams = new URLSearchParams(window?.location?.search);\n const token = urlParams.get('token');\n return token ? token : '';\n }\n\n const findBaseUrlFromReferrer = () => {\n let origin = '';\n if (window && window.document && window.document.referrer) {\n const url = new URL(window.document.referrer);\n origin = url.origin;\n }\n return origin;\n }\n\n /**\n * Execute a Http request to a given platform endpoint.\n *\n * @param {string} endpoint the platform endpoint.\n * @param {Object} body the request payload.\n * @param {...*} customConfig the Http request configuration.\n * @return {Promise} the platform response.\n */\n const fetch = (endpoint, {body, ...customConfig} = {}) => {\n const headers = {'Content-Type': 'application/json'}\n const config = {\n method: 'GET', ...customConfig, headers: {\n ...headers, ...customConfig.headers,\n },\n }\n if (body) {\n if (config.method === 'GET') {\n endpoint += '?' + new URLSearchParams(body);\n } else {\n config.body = JSON.stringify(body);\n }\n }\n return window.fetch(endpoint, config).then(async response => {\n if (response.ok) {\n return await response.json();\n } else {\n const errorMessage = await response.json();\n return Promise.reject(new Error(errorMessage.error));\n }\n });\n }\n\n /**\n * Returns the API token.\n *\n * @return {string} the API token.\n */\n this.getToken = function () {\n return token_;\n }\n\n /**\n * Set the API token.\n *\n * @param {string} token The API token.\n */\n this.setToken = function (token) {\n tokenAutodetect_ = false;\n token_ = token;\n }\n\n /**\n * Checks if the API token is set.\n *\n * @returns {boolean} returns true iif the API token is set, false otherwise.\n */\n this.hasToken = function () {\n return token_ !== '';\n }\n\n /**\n * Returns the API base URL.\n *\n * @return {string} the API base URL.\n */\n this.getBaseUrl = function () {\n return baseUrl_;\n }\n\n /**\n * Set the API base URL.\n *\n * @param {string} url the API base URL.\n */\n this.setBaseUrl = function (url) {\n baseUrlAutodetect_ = false;\n baseUrl_ = url;\n }\n\n /**\n * Checks if the API base URL is set.\n *\n * @returns {boolean} true iif the API base URL is set, false otherwise.\n */\n this.hasBaseUrl = function () {\n return baseUrl_ !== '';\n }\n\n /**\n * Initializes the Http client.\n *\n * If you omit a parameter, we will try to autodetect it.\n * For `token`, we try to find it on the query string. Ex: `?token=your_api_token`.\n * For `baseUrl`, we try to find it from the referrer.\n *\n * @param {string} baseUrl the base URL eg. https://www.company.computablefacts.com\n * @param {string} token the token.\n */\n this.init = function (baseUrl, token) {\n\n reset();\n\n if (typeof token === 'undefined') {\n token_ = findTokenFromQueryString();\n tokenAutodetect_ = this.hasToken();\n // console.log('init-autodetect-token token=', token, '_tokenAutodetect=', _tokenAutodetect)\n } else {\n this.setToken(token)\n }\n\n if (typeof baseUrl === 'undefined') {\n baseUrl_ = findBaseUrlFromReferrer();\n baseUrlAutodetect_ = this.hasBaseUrl();\n // console.log('init-autodetect-baseUrl baseUrl=', baseUrl, 'baseUrlAutodetect_=', baseUrlAutodetect_)\n } else {\n this.setBaseUrl(baseUrl);\n }\n }\n\n /**\n * Checks if the API token and base URL have been automatically set.\n *\n * @return `true` if the API token and base URL have been automatically set during [[`init`]].\n */\n this.hasAutodetect = function () {\n return tokenAutodetect_ && baseUrlAutodetect_;\n }\n\n /**\n * Returns the user information based on the API token.\n *\n * @return {Promise} the user permissions and authorizations.\n */\n this.whoAmI = function () {\n return fetch(`${baseUrl_}/api/v2/public/whoami`, {\n headers: {\n Authorization: `Bearer ${token_}`\n }\n });\n }\n\n /**\n * Call the platform JSON-RPC endpoint.\n *\n * @param {Object} payload the request payload.\n * @return {Promise} the platform response.\n * @preserve The specification can be found at https://www.jsonrpc.org/specification.\n */\n this.fetch = function (payload) {\n return fetch(`${baseUrl_}/api/v2/public/json-rpc?api_token=${token_}`, {body: payload, method: 'POST'}).then(\n response => {\n if ('error' in response) {\n const error = response['error'];\n const message = '(' + error.code + ') ' + error.message + '\\n' + JSON.stringify(error.data);\n return Promise.reject(new Error(message));\n }\n return response['result'];\n });\n }\n\n /**\n * Call the `execute-problog-query` platform endpoint.\n *\n * @param {Object} params the request payload.\n * @return {Promise} the platform response.\n */\n this.executeProblogQuery = function (params) {\n return this.fetch({\n jsonrpc: '2.0', id: Date.now(), method: 'execute-problog-query', params: params\n });\n }\n\n /**\n * Call the `execute-sql-query` platform endpoint.\n *\n * @param {Object} params the request payload.\n * @return {Promise} the platform response.\n */\n this.executeSqlQuery = function (params) {\n return this.fetch({\n jsonrpc: '2.0', id: Date.now(), method: 'execute-sql-query', params: params\n });\n }\n\n /**\n * Call the `find-objects` platform endpoint.\n *\n * @param params the request payload.\n * @return {Promise} the platform response.\n */\n this.findObjects = function (params) {\n return this.fetch({\n jsonrpc: '2.0', id: Date.now(), method: 'find-objects', params: params\n });\n }\n\n /**\n * Call the `get-objects` platform endpoint.\n *\n * @param params the request payload.\n * @return {Promise>} the platform response.\n */\n this.getObjects = function (params) {\n return this.fetch({\n jsonrpc: '2.0', id: Date.now(), method: 'get-objects', params: params\n });\n }\n\n /**\n * Call the `get-flattened-objects` platform endpoint.\n *\n * @param params the request payload.\n * @return {Promise>} the platform response.\n */\n this.getFlattenedObjects = function (params) {\n return this.fetch({\n jsonrpc: '2.0', id: Date.now(), method: 'get-flattened-objects', params: params\n });\n }\n\n /**\n * Call the `find-terms` platform endpoint.\n *\n * @param params the request payload.\n * @return {Promise} the platform response.\n */\n this.findTerms = function (params) {\n return this.fetch({\n jsonrpc: '2.0', id: Date.now(), method: 'find-terms', params: params\n });\n }\n\n /**\n * Sink a single event.\n *\n * @param {string} type the event type.\n * @param {Array} propNames the event property names.\n * @param {Array} propValues the event property values.\n * @return {Promise} the created fact.\n */\n this.sinkEvent = function (type, propNames, propValues) {\n\n if (propNames.length !== propValues.length) {\n throw \"Mismatch between the number of names and values\"\n }\n\n const typeNormalized = 'event_' + type.replace(/-/g, '_').toLowerCase();\n const startDate = new Date();\n\n return fetch(`${baseUrl_}/api/v2/facts`, {\n body: {\n data: [{\n type: typeNormalized,\n values: propValues.map(prop => '' + prop),\n is_valid: true,\n start_date: startDate.toISOString(),\n }]\n }, method: 'POST', headers: {\n Authorization: `Bearer ${token_}`\n }\n });\n }\n\n /**\n * Source one or more events.\n *\n * @param {string} type the event type.\n * @param {Array} propNames the event property names.\n * @param {Array} propPatterns the list of patterns to match.\n * @param {number} maxNbResults the maximum number of events to return.\n * @return {Promise>} an array of events.\n */\n this.sourceEventsAsObjects = function (type, propNames, propPatterns, maxNbResults) {\n return this.sourceEvents(type, propNames, propPatterns, maxNbResults, 'objects');\n }\n\n /**\n * Source one or more events.\n *\n * @param {string} type the event type.\n * @param {Array} propNames the event property names.\n * @param {Array} propPatterns the list of patterns to match.\n * @param {number} maxNbResults the maximum number of events to return.\n * @return {Promise>>} an array of events.\n */\n this.sourceEventsAsArrays = function (type, propNames, propPatterns, maxNbResults) {\n return this.sourceEvents(type, propNames, propPatterns, maxNbResults, 'arrays_with_header');\n }\n\n /**\n * Source one or more events.\n *\n * @param {string} type the event type.\n * @param {Array} propNames the event property names.\n * @param {Object} propPatterns the list of patterns to match.\n * @param {number} maxNbResults the maximum number of events to return.\n * @param {string} format the returned events format. 'objects' returns an `Array`. Both 'arrays' and 'arrays_with_header' return an `Array>`.\n * @return {Promise|Array>>} an array of events.\n */\n this.sourceEvents = function (type, propNames, propPatterns, maxNbResults, format) {\n\n const newRule = (eventType, eventPropertyNames, patterns) => {\n\n let result = eventType + '(';\n result += eventPropertyNames.map(prop => prop.toUpperCase()).join(', ');\n result += ') :- ';\n result += 'fn_mysql_materialize_facts(\"{{ app_url }}/api/v3/facts/no_namespace/';\n result += eventType;\n result += '?alea=' + Math.random().toString(36).substring(2, 12);\n const filtersQuery = Object.entries(patterns).map(entry => entry[0] + '=' + entry[1]).join('&');\n result += filtersQuery ? '&' + filtersQuery : '';\n result += '\", \"{{ client }}\", \"{{ env }}\", \"{{ sftp_host }}\", \"{{ sftp_username }}\", \"{{ sftp_password }}\", ';\n result += eventPropertyNames.map((prop, i) => '\"value_' + i + '\", _, ' + prop.toUpperCase()).join(', ');\n result += ').';\n\n // console.log('newRule = ', result);\n return result.trim();\n }\n\n const pattern = {};\n\n for (let i = 0; i < propNames.length; i++) {\n if (propPatterns[propNames[i]]) {\n pattern['value_' + i] = propPatterns[propNames[i]];\n }\n }\n\n const typeNormalized = 'event_' + type.replace(/-/g, '_').toLowerCase();\n const rule = newRule(typeNormalized, propNames, pattern);\n const alea = Math.random().toString(36).substring(2, 8);\n\n return this.executeProblogQuery({\n problog_rules: [alea + '_' + rule],\n problog_query: alea + '_' + (rule.substring(0, rule.indexOf(':-')).trim()) + '?',\n format: format ? format : 'objects',\n sample_size: maxNbResults ? maxNbResults : 15,\n });\n }\n}","'use strict'\n\nimport {caches} from \"./caches\";\nimport {helpers} from \"./helpers\";\n\n/**\n * @module promises\n */\nexport const promises = {};\n\n/**\n * An object that has the ability to memoize promises returned by a given user-defined function.\n *\n * @param {number} maxCacheSize the maximum number of distinct calls to cache.\n * @param {Function} fn a user-defined function that returns a promise.\n * @memberOf module:promises\n * @constructor\n * @struct\n * @final\n */\npromises.Memoize = function (maxCacheSize, fn) {\n\n // Stats\n let hit_ = 0;\n let miss_ = 0;\n\n // Cache\n const cache_ = new caches.Cache(maxCacheSize);\n const function_ = fn;\n\n /**\n * Either read the cache or call the user-defined function and get a new promise.\n *\n * @param {...*} args a list of arguments to pass to the user-defined function.\n * @return {Promise} a promise to be resolved at a later stage.\n * @suppress {checkTypes}\n */\n this.promise = function (...args) {\n\n const cacheKey = helpers.goodFastHash(Array.from(args), 123).toString(10);\n\n if (cache_.contains(cacheKey)) {\n hit_++;\n return cache_.get(cacheKey);\n }\n\n cache_.put(cacheKey, function_(...args).catch(err => {\n cache_.remove(cacheKey);\n throw err;\n }));\n\n miss_++;\n return cache_.get(cacheKey);\n }\n\n /**\n * Return the number of cache hits.\n *\n * @return {number} the number of hits.\n */\n this.hits = function () {\n return hit_;\n }\n\n /**\n * Return the number of cache misses.\n *\n * @return {number} the number of misses.\n */\n this.misses = function () {\n return miss_;\n }\n\n /**\n * Return the cache hit rate.\n *\n * @return {number} the hit rate.\n */\n this.hitRate = function () {\n return hit_ / (hit_ + miss_);\n }\n\n /**\n * Return the cache miss rate.\n *\n * @return {number} the miss rate.\n */\n this.missRate = function () {\n return miss_ / (hit_ + miss_);\n }\n}\n","'use strict'\n\nimport {helpers} from \"./helpers\";\n\n/**\n * @module webcomponents\n * @deprecated\n */\nexport const webcomponents = {};\n\n/**\n * A skeleton to ease the creation of web components.\n *\n * @memberOf module:webcomponents\n * @type {webcomponents.WebComponent}\n * @extends {HTMLElement}\n */\nwebcomponents.WebComponent = class extends HTMLElement {\n\n /**\n * @constructor\n */\n constructor() {\n super();\n this.attachShadow({mode: 'open'});\n }\n\n /**\n * Called every time the element is inserted into the DOM.\n *\n * @name connectedCallback\n * @function\n * @protected\n * @override\n */\n connectedCallback() {\n\n const styles = this.externalStyles();\n const scripts = this.externalScripts();\n const template = this.template();\n\n const wrapper = document.createElement('div');\n wrapper.id = 'wcw'; // wcw = Web Component Wrapper\n this.shadowRoot.appendChild(wrapper);\n\n if (styles && styles.length > 0 && scripts && scripts.length > 0) {\n helpers.injectStyles(wrapper, styles).then(() => {\n helpers.injectScripts(wrapper, scripts).then(() => {\n if (template !== '') {\n wrapper.insertAdjacentHTML('beforeend', template);\n }\n this.renderedCallback();\n });\n });\n } else if ((!styles || styles.length === 0) && scripts && scripts.length > 0) {\n helpers.injectScripts(wrapper, scripts).then(() => {\n if (template !== '') {\n wrapper.insertAdjacentHTML('beforeend', template);\n }\n this.renderedCallback();\n });\n } else if (styles && styles.length > 0 && (!scripts || scripts.length === 0)) {\n helpers.injectStyles(wrapper, styles).then(() => {\n if (template !== '') {\n wrapper.insertAdjacentHTML('beforeend', template);\n }\n this.renderedCallback();\n });\n } else {\n if (template !== '') {\n wrapper.insertAdjacentHTML('beforeend', template);\n }\n this.renderedCallback();\n }\n }\n\n /**\n * Called every time the element is removed from the DOM.\n *\n * @name disconnectedCallback\n * @function\n * @protected\n * @override\n */\n disconnectedCallback() {\n }\n\n /**\n * Called after the `template` has been added to the DOM.\n *\n * @name renderedCallback\n * @function\n * @protected\n * @override\n */\n renderedCallback() {\n }\n\n /**\n * A list of stylesheets URL.\n *\n * @return {Array} an array of URL.\n * @name externalStyles\n * @function\n * @protected\n * @override\n */\n externalStyles() {\n return [];\n }\n\n /**\n * A list of scripts URL.\n *\n * @return {Array} an array of URL.\n * @name externalScripts\n * @function\n * @protected\n * @override\n */\n externalScripts() {\n return [];\n }\n\n /**\n * Returns the component HTML template.\n *\n * @return {string} the HTML.\n * @name template\n * @function\n * @protected\n */\n template() {\n return ``;\n }\n\n /**\n * Emit a custom event.\n *\n * @param {string} type the event type.\n * @param {Object|null} data any data structure to pass along with the event.\n * @param {Node|null} elem the element to attach the event to.\n * @return {boolean} returns true if either event's cancelable attribute value is false or its preventDefault() method was not invoked, and false otherwise.\n * @name emit\n * @function\n * @protected\n */\n emit(type, data = {}, elem = document) {\n const event = new CustomEvent(type, {\n bubbles: true, cancelable: true, detail: {\n component: this, data: data\n }\n });\n return (elem ? elem : document).dispatchEvent(event);\n }\n\n /**\n * Returns the component attribute value or a default value if none was found.\n *\n * @param {string} attr the attribute to get.\n * @param {string|null} defaultValue the default value.\n * @return {string|null} the attribute value if any, defaultValue otherwise.\n * @name getAttributeOrDefault\n * @function\n * @protected\n */\n getAttributeOrDefault(attr, defaultValue) {\n return this.hasAttribute(attr) ? this.getAttribute(attr) : defaultValue;\n }\n\n /**\n * Returns the first element with a given identifier or class name.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @return {Element|null} an HTML element.\n * @name getElement\n * @function\n * @protected\n */\n getElement(idOrClassName) {\n return this.shadowRoot.querySelector(idOrClassName);\n }\n\n /**\n * Get the first page element with a given identifier or class name.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @return {Element|null} an HTML element.\n * @name getPageElement\n * @function\n * @protected\n */\n getPageElement(idOrClassName) {\n return document.querySelector(idOrClassName);\n }\n\n /**\n * Add a given class to a given element.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @param {string} className the class name to add.\n * @name addCssClass\n * @function\n * @protected\n */\n addCssClass(idOrClassName, className) {\n const el = this.getElement(idOrClassName);\n if (el) {\n el.classList.add(className);\n }\n }\n\n /**\n * Remove a given class from a given element.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @param {string} className the class name to remove.\n * @name removeCssClass\n * @function\n * @protected\n */\n removeCssClass(idOrClassName, className) {\n const el = this.getElement(idOrClassName);\n if (el) {\n el.classList.remove(className);\n }\n }\n\n /**\n * Add a class if it does not already exist on a given element, remove it otherwise.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @param {string} className the class name to toggle.\n * @name toggleCssClass\n * @function\n * @protected\n */\n toggleCssClass(idOrClassName, className) {\n const el = this.getElement(idOrClassName);\n if (el) {\n el.classList.toggle(className);\n }\n }\n\n /**\n * Check if a given element has a given class.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @param {string} className the class name to search.\n * @return true if the element contains the given class, false otherwise.\n * @name includesCssClass\n * @function\n * @protected\n */\n includesCssClass(idOrClassName, className) {\n const el = this.getElement(idOrClassName);\n if (el) {\n return el.classList.contains(className);\n }\n return false;\n }\n\n /**\n * Get all classes associated to a given element.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @return {Array} the class names.\n * @name getAllCssClasses\n * @function\n * @protected\n */\n getAllCssClasses(idOrClassName) {\n const el = this.getElement(idOrClassName);\n if (el) {\n return el.className.split(' ').map(clazz => clazz.trim());\n }\n return [];\n }\n\n /**\n * Replace all classes associated to a given element.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @param {Array|string} classes the class names.\n * @name replaceAllCssClasses\n * @function\n * @protected\n */\n replaceAllCssClasses(idOrClassName, classes) {\n const el = this.getElement(idOrClassName);\n if (el) {\n if (Array.isArray(classes)) {\n el.className = classes.join(' ');\n } else {\n el.className = classes;\n }\n }\n }\n\n /**\n * Get the style associated to a given element.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @return {CSSStyleDeclaration|null} the element style.\n * @name getStyle\n * @function\n * @protected\n */\n getStyle(idOrClassName) {\n const el = this.getElement(idOrClassName);\n if (el) {\n return el.style;\n }\n return null;\n }\n\n /**\n * Get the actual computed style associated to a given element.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @return {CSSStyleDeclaration|null} the element computed style.\n * @name getComputedStyle\n * @function\n * @protected\n */\n getComputedStyle(idOrClassName) {\n const el = this.getElement(idOrClassName);\n if (el) {\n return window.getComputedStyle(el);\n }\n return null;\n }\n\n /**\n * Set the text associated to a given element.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @param {string} text the text to set.\n * @name setText\n * @function\n * @protected\n */\n setText(idOrClassName, text) {\n const el = this.getElement(idOrClassName);\n if (el) {\n el.textContent = text;\n }\n }\n\n /**\n * Set the HTML associated to a given element.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @param {string} html the html to set.\n * @name setHtml\n * @function\n * @protected\n */\n setHtml(idOrClassName, html) {\n const el = this.getElement(idOrClassName);\n if (el) {\n el.innerHTML = html;\n }\n }\n\n /**\n * Append an element to a given element.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @param {Element} element the element to append.\n * @name replaceContent\n * @function\n * @protected\n */\n replaceContent(idOrClassName, element) {\n const el = this.getElement(idOrClassName);\n if (el) {\n el.innerHTML = '';\n el.appendChild(element);\n }\n }\n}\n"],"names":["ReactDOM","React","Cell","ColumnHeaderCell","MenuItem","Menu","Column","Table2","TableLoadingOption","Button","Select2","Slider","RangeSlider","Drawer","Position","Tab","Tabs","SpinnerSize","Spinner","Alignment","Switch","Intent","Toast","Toaster","Card","Icon","Checkbox","sub","add","DateInput2","format","parse","TimePrecision","DateRangeInput2","MultiSelect2","Suggest2","FileInput","RadioGroup","InputGroup","NumericInput"],"mappings":"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"} \ No newline at end of file diff --git a/dist/esm/main.js b/dist/esm/main.js index 2a97f8d..d80432f 100644 --- a/dist/esm/main.js +++ b/dist/esm/main.js @@ -811,7 +811,8 @@ blueprintjs.Blueprintjs = class extends widgets.Widget { break; } case 'FileInput': { - obj.el = new blueprintjs.MinimalFileInput(container); + const multiple = obj.multiple; + obj.el = new blueprintjs.MinimalFileInput(container, multiple); break; } case 'RadioGroup': { @@ -2922,15 +2923,17 @@ blueprintjs.MinimalFileInput = class extends blueprintjs.Blueprintjs { /** * @param {Element} container the parent element. + * @param {boolean} multiple true iif the user must be able to select one or more files. * @constructor */ - constructor(container) { + constructor(container, multiple) { super(container); this.observers_ = new observers.Subject(); this.disabled_ = false; this.text_ = null; this.buttonText_ = null; this.fill_ = true; + this.multiple_ = multiple === true; this.render(); } @@ -2970,6 +2973,15 @@ blueprintjs.MinimalFileInput = class extends blueprintjs.Blueprintjs { this.render(); } + get multiple() { + return this.multiple_; + } + + set multiple(value) { + this.multiple_ = value; + this.render(); + } + /** * Listen to the `selection-change` event. * @@ -2988,8 +3000,17 @@ blueprintjs.MinimalFileInput = class extends blueprintjs.Blueprintjs { } _newElement() { + const props = {}; + if (this.multiple) { + props.multiple = 'multiple'; + } return React.createElement(FileInput, { - disabled: this.disabled, text: this.text, buttonText: this.buttonText, fill: this.fill, onInputChange: (el) => { + inputProps: props, + disabled: this.disabled, + text: this.text, + buttonText: this.buttonText, + fill: this.fill, + onInputChange: (el) => { this.text = el.target.files[0].name; this.render(); this.observers_.notify('selection-change', el.target.files[0]); diff --git a/dist/esm/main.js.map b/dist/esm/main.js.map index 26ca9e8..723f8c6 100644 --- a/dist/esm/main.js.map +++ b/dist/esm/main.js.map @@ -1 +1 @@ -{"version":3,"file":"main.js","sources":["../../src/arrays.js","../../src/observers.js","../../src/widgets.js","../../src/strings.js","../../src/blueprintjs.js","../../src/caches.js","../../src/dates.js","../../src/helpers.js","../../src/platform.js","../../src/promises.js","../../src/webcomponents.js"],"sourcesContent":["'use strict'\n\n/**\n * @module arrays\n */\nexport const arrays = {};\n\n/**\n * Removes {@link undefined} elements from an array of strings or numbers and returns distinct values.\n * This function does not preserve the elements order.\n *\n * @param {Array} array an array of strings.\n * @return {Array} an array of distinct strings.\n * @memberOf module:arrays\n */\narrays.distinct = function (array) {\n return array instanceof Array ? Array.from(new Set(array.filter(el => el !== undefined))) : [];\n}\n\n/**\n * Removes {@link undefined} elements from an array of objects and return distinct objects i.e. unique by all properties.\n * This function does not preserve the elements order.\n *\n * @param {Array} array an array of objects.\n * @return {Array} an array of distinct objects.\n * @memberOf module:arrays\n */\narrays.distinctObjects = function (array) {\n return array instanceof Array ? array\n .filter(el => el !== undefined)\n .filter((el1, index, self) => self.findIndex(el2 => (JSON.stringify(el2) === JSON.stringify(el1))) === index) : [];\n}\n\n/**\n * Computes the intersection of two arrays of strings or numbers.\n *\n * @param {Array} array1 the first array.\n * @param {Array} array2 the second array.\n * @return {Array} the intersection of the two arrays.\n * @memberOf module:arrays\n */\narrays.intersect = function (array1, array2) {\n return array1 instanceof Array && array2 instanceof Array ? array1.filter(el => array2.includes(el)) : [];\n}\n\n","'use strict'\n\n/**\n * @module observers\n */\nexport const observers = {};\n\n/**\n * The Subject type.\n *\n * The observer pattern is a software design pattern in which an object, named the subject,\n * maintains a list of its dependents, called observers, and notifies them automatically of\n * any state changes, usually by calling one of their methods.\n *\n * @memberOf module:observers\n * @constructor\n * @struct\n * @final\n */\nobservers.Subject = function () {\n\n const observers = {};\n\n /**\n * Returns the number of observers for a given message type.\n *\n * @param {string} message the observed message.\n * @return {number} the number of observers.\n */\n this.numberOfObservers = function (message) {\n if (message) {\n return observers.hasOwnProperty(message) ? observers[message].length : 0;\n }\n let nbObservers = 0;\n for (const msg in observers) {\n nbObservers += observers[msg].length\n }\n return nbObservers;\n }\n\n /**\n * Register a callback for a given message type.\n *\n * @param {string} message the message to observe.\n * @param {Function} observer the callback to notify.\n */\n this.register = function (message, observer) {\n if (message && typeof message === 'string' && observer && observer instanceof Function) {\n if (!observers.hasOwnProperty(message)) {\n observers[message] = [];\n }\n observers[message].push(observer);\n }\n }\n\n /**\n * Unregister a callback for a given message type.\n *\n * @param {string} message the observed message.\n * @param {Function} observer the notified callback.\n */\n this.unregister = function (message, observer) {\n if (message && typeof message === 'string' && observer && observer instanceof Function && observers.hasOwnProperty(\n message)) {\n observers[message] = observers[message].filter(o => o !== observer);\n }\n }\n\n /**\n * Notify all observers listening to a given message type.\n *\n * @param {string} message the message type.\n * @param {...*} args a list of arguments to pass to each callback.\n */\n this.notify = function (message, ...args) {\n if (message && typeof message === 'string' && args && observers.hasOwnProperty(message)) {\n observers[message].forEach(observer => observer(...args));\n }\n }\n}\n","'use strict'\n\n/**\n * @module widgets\n */\nexport const widgets = {};\n\n/**\n * A skeleton to ease the creation of simple widgets.\n *\n * @memberOf module:widgets\n * @type {widgets.Widget}\n */\nwidgets.Widget = class {\n\n /**\n * @param {Element} container the parent element.\n * @constructor\n */\n constructor(container) {\n this.container_ = container;\n }\n\n /**\n * Returns the widget parent element.\n *\n * @return {Element} the parent element.\n * @name container\n * @function\n * @public\n */\n get container() {\n return this.container_;\n }\n\n /**\n * Sets the widget parent element.\n *\n * @param container\n * @name container\n * @function\n * @public\n */\n set container(container) {\n this.container_ = container;\n this.render();\n }\n\n /**\n * If the current widget creates more widgets, register them using this method.\n * It allows the current widget to properly removes its children from the DOM.\n *\n * @param {Widget} widget the widget to register.\n * @name register\n * @function\n * @protected\n */\n register(widget) {\n if (widget) {\n if (!this.widgets_) {\n this.widgets_ = [];\n }\n this.widgets_.push(widget);\n }\n }\n\n /**\n * In order to avoid a memory leak, properly remove the widget from the DOM.\n *\n * @name destroy\n * @function\n * @public\n */\n destroy() {\n\n if (this.widgets_) {\n\n // Remove registered widgets\n for (let i = 0; i < this.widgets_.length; i++) {\n this.widgets_[i].destroy();\n }\n this.widgets_ = [];\n }\n\n // Empty the container\n while (this.container.firstChild) {\n this.container.removeChild(this.container.firstChild);\n }\n }\n\n /**\n * Renders the widget.\n *\n * @name render\n * @function\n * @public\n */\n render() {\n this.destroy();\n const element = this._newElement();\n if (element) {\n this.container.appendChild(element);\n }\n }\n\n /**\n * Initializes the widget.\n *\n * @return {Element|null}\n * @name _newElement\n * @function\n * @protected\n */\n _newElement() {\n return null;\n }\n}","'use strict'\n\n/**\n * @module strings\n */\nexport const strings = {};\n\n/**\n * Escapes characters with special meaning in {@link RegExp}.\n *\n * @param {string} str the string to escape.\n * @return {string} the escaped string.\n * @memberOf module:strings\n */\nstrings.escapeCharactersWithSpecialMeaningInRegExp = function (str) {\n return str ? ('' + str).replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&' /* the whole matched string */) : '';\n}\n\n/**\n * Converts a string to a {@link RegExp} literal.\n *\n * @param {string} str the string to convert.\n * @param {string} flags the flags of the regular expression.\n * @return {RegExp} a {@link RegExp}.\n * @memberOf module:strings\n */\nstrings.toRegExp = function (str, flags) {\n\n // As of 2020-01-06, the DOT_ALL flag is not available on Firefox\n // If truly needed, use [^]* that reads \"match any character that is not nothing\"\n const newFlags = flags ? flags : 'im';\n const escapedString = strings.escapeCharactersWithSpecialMeaningInRegExp(str).split(/[\\s\\u00a0]+/).join(\n '(\\\\s|\\u00a0)*');\n return new RegExp(escapedString, newFlags);\n}\n\n/**\n * Removes diacritical marks from a string.\n *\n * @param {string} str the string to clean.\n * @param {boolean} preserveStringLength true iif the original string length must be preserved.\n * @return {string} the cleaned text i.e. without diacritical marks.\n * @memberOf module:strings\n * @preserve The code is extracted from https://web.archive.org/web/20121231230126/http://lehelk.com:80/2011/05/06/script-to-remove-diacritics/.\n */\nstrings.removeDiacritics = function (str, preserveStringLength) {\n\n str = str ? '' + str : '';\n\n const diacritics = [{\n base: 'A',\n letters: /[\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F]/g\n }, {\n base: 'B', letters: /[\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181]/g\n }, {\n base: 'C', letters: /[\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E]/g\n }, {\n base: 'D', letters: /[\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779]/g\n }, {\n base: 'E',\n letters: /[\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E]/g\n }, {\n base: 'F', letters: /[\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B]/g\n }, {\n base: 'G', letters: /[\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E]/g\n }, {\n base: 'H', letters: /[\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D]/g\n }, {\n base: 'I',\n letters: /[\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197]/g\n }, {base: 'J', letters: /[\\u004A\\u24BF\\uFF2A\\u0134\\u0248]/g}, {\n base: 'K', letters: /[\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2]/g\n }, {\n base: 'L',\n letters: /[\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780]/g\n }, {\n base: 'M', letters: /[\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C]/g\n }, {\n base: 'N',\n letters: /[\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4]/g\n }, {\n base: 'O',\n letters: /[\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C]/g\n }, {\n base: 'P', letters: /[\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754]/g\n }, {\n base: 'Q', letters: /[\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A]/g\n }, {\n base: 'R',\n letters: /[\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782]/g\n }, {\n base: 'S',\n letters: /[\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784]/g\n }, {\n base: 'T', letters: /[\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786]/g\n }, {\n base: 'U',\n letters: /[\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244]/g\n }, {\n base: 'V', letters: /[\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245]/g\n }, {\n base: 'W', letters: /[\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72]/g\n }, {base: 'X', letters: /[\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C]/g}, {\n base: 'Y', letters: /[\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE]/g\n }, {\n base: 'Z', letters: /[\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762]/g\n }, {\n base: 'a',\n letters: /[\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250]/g\n }, {\n base: 'b', letters: /[\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253]/g\n }, {\n base: 'c', letters: /[\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184]/g\n }, {\n base: 'd', letters: /[\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A]/g\n }, {\n base: 'e',\n letters: /[\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD]/g\n }, {\n base: 'f', letters: /[\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C]/g\n }, {\n base: 'g', letters: /[\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F]/g\n }, {\n base: 'h', letters: /[\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265]/g\n }, {\n base: 'i',\n letters: /[\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131]/g\n }, {\n base: 'j', letters: /[\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249]/g\n }, {\n base: 'k', letters: /[\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3]/g\n }, {\n base: 'l',\n letters: /[\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747]/g\n }, {\n base: 'm', letters: /[\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F]/g\n }, {\n base: 'n',\n letters: /[\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5]/g\n }, {\n base: 'o',\n letters: /[\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275]/g\n }, {\n base: 'p', letters: /[\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755]/g\n }, {\n base: 'q', letters: /[\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759]/g\n }, {\n base: 'r',\n letters: /[\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783]/g\n }, {\n base: 's',\n letters: /[\\u0073\\u24E2\\uFF53\\u00DF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B]/g\n }, {\n base: 't',\n letters: /[\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787]/g\n }, {\n base: 'u',\n letters: /[\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289]/g\n }, {\n base: 'v', letters: /[\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C]/g\n }, {\n base: 'w', letters: /[\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73]/g\n }, {base: 'x', letters: /[\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D]/g}, {\n base: 'y',\n letters: /[\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF]/g\n }, {\n base: 'z', letters: /[\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763]/g\n }];\n\n if (preserveStringLength === undefined || preserveStringLength === true) {\n diacritics.push({base: 'AA', letters: /\\uA732/g}, {base: 'AE', letters: /[\\u00C6\\u01FC\\u01E2]/g},\n {base: 'AO', letters: /\\uA734/g}, {base: 'AU', letters: /\\uA736/g}, {base: 'AV', letters: /[\\uA738\\uA73A]/g},\n {base: 'AY', letters: /\\uA73C/g}, {base: 'DZ', letters: /[\\u01F1\\u01C4]/g},\n {base: 'Dz', letters: /[\\u01F2\\u01C5]/g}, {base: 'LJ', letters: /\\u01C7/g}, {base: 'Lj', letters: /\\u01C8/g},\n {base: 'NJ', letters: /\\u01CA/g}, {base: 'Nj', letters: /\\u01CB/g}, {base: 'OI', letters: /\\u01A2/g},\n {base: 'OO', letters: /\\uA74E/g}, {base: 'OU', letters: /\\u0222/g}, {base: 'TZ', letters: /\\uA728/g},\n {base: 'VY', letters: /\\uA760/g}, {base: 'aa', letters: /\\uA733/g},\n {base: 'ae', letters: /[\\u00E6\\u01FD\\u01E3]/g}, {base: 'ao', letters: /\\uA735/g},\n {base: 'au', letters: /\\uA737/g}, {base: 'av', letters: /[\\uA739\\uA73B]/g}, {base: 'ay', letters: /\\uA73D/g},\n {base: 'dz', letters: /[\\u01F3\\u01C6]/g}, {base: 'hv', letters: /\\u0195/g}, {base: 'lj', letters: /\\u01C9/g},\n {base: 'nj', letters: /\\u01CC/g}, {base: 'oi', letters: /\\u01A3/g}, {base: 'ou', letters: /\\u0223/g},\n {base: 'oo', letters: /\\uA74F/g}, {base: 'tz', letters: /\\uA729/g}, {base: 'vy', letters: /\\uA761/g});\n }\n\n for (let i = 0; i < diacritics.length; i++) {\n str = str.replace(diacritics[i].letters, diacritics[i].base);\n }\n return str;\n}\n\n/**\n * The Pattern type.\n *\n * @param {RegExp} regexp the pattern to match.\n * @param {string} color the highlight color as a hexadecimal string.\n * @memberOf module:strings\n * @constructor\n * @struct\n * @final\n */\nstrings.Pattern = function (regexp, color) {\n this.regexp = regexp;\n this.color = color;\n}\n\n/**\n * The Highlight type.\n *\n * @param {string} matchedText the matched text fragment.\n * @param {number} matchedPage the page number (1-based) from which the snippet was extracted.\n * @param {string} rawSnippet a snippet of text surrounding the matched text fragment (about 300 characters).\n * @param {string} highlightedSnippet a snippet of text surrounding the matched and highlighted text fragment (about 300 characters).\n * @memberOf module:strings\n * @constructor\n * @struct\n * @final\n */\nstrings.Highlight = function (matchedText, matchedPage, rawSnippet, highlightedSnippet) {\n this.matchedText = matchedText;\n this.matchedPage = matchedPage;\n this.rawSnippet = rawSnippet\n this.highlightedSnippet = highlightedSnippet;\n}\n\n/**\n * The HighlightedText type.\n *\n * @param {string} text the whole text, highlighted.\n * @param {Array} snippets the snippet associated with each highlighted text fragment.\n * @memberOf module:strings\n * @constructor\n * @struct\n * @final\n */\nstrings.HighlightedText = function (text, snippets) {\n this.text = text;\n this.snippets = snippets;\n}\n\n/**\n * Highlights all occurrences of a given set of patterns in a string.\n *\n * @param {string} text the text to highlight.\n * @param {Array} patterns a set of patterns to match and highlight.\n * @return {strings.HighlightedText} the highlighted text.\n * @memberOf module:strings\n */\nstrings.highlight = function (text, patterns) {\n\n text = text ? '' + text : '';\n\n if (!patterns || patterns.length <= 0 || strings.isNullOrBlank(text)) {\n return new strings.HighlightedText(text, []);\n }\n\n let highlightedText = text;\n text = strings.removeDiacritics(text, true);\n\n if (text.length !== highlightedText.length) {\n highlightedText = text;\n }\n const highlights = patterns.flatMap(pattern => {\n\n const matcher = pattern.regexp;\n const matches = [];\n let match = null;\n\n while (match = matcher.exec(text)) {\n matches.push({\n start: match.index, end: match.index + match[0].length, color: pattern.color\n });\n }\n return matches;\n }).sort((a, b) => {\n if (a.start < b.start) {\n return 1;\n }\n if (a.start > b.start) {\n return -1;\n }\n return 0;\n }).map(position => {\n\n // TODO : deal with overlaps?\n const prefix = highlightedText.substring(0, position.start);\n const infix = highlightedText.substring(position.start, position.end);\n const suffix = highlightedText.substring(position.end);\n\n highlightedText = `${prefix}${infix}${suffix}`;\n\n const begin = Math.max(0, prefix.length - 50);\n const end = Math.min(150, suffix.length);\n const rawSnippet = `${prefix.substring(begin)}${infix}${suffix.substring(0, end)}`;\n let highlightedSnippet = `${prefix.substring(\n begin)}${infix}${suffix.substring(0, end)}`;\n const pages = prefix.split('\\f' /* page separator */).map((page, index) => index);\n const beginMark = highlightedSnippet.lastIndexOf('');\n\n if (beginMark && (!endMark || beginMark > endMark)) {\n highlightedSnippet = highlightedSnippet.substring(0, beginMark);\n }\n return new strings.Highlight(infix, pages.length, rawSnippet, highlightedSnippet);\n });\n return new strings.HighlightedText(highlightedText, highlights);\n}\n\n/**\n * Returns true iif a string is either null or blank, false otherwise.\n *\n * @param {string} str the string to check.\n * @return {boolean} true if the string is null or blank, false otherwise.\n * @memberOf module:strings\n */\nstrings.isNullOrBlank = function (str) {\n return !(typeof str === 'string' && str.trim() !== '');\n}\n\n/**\n * Prepends '0' to a string or number until a given length is reached.\n *\n * @param {string|number} str a string or number.\n * @param {number} targetLength the string target length.\n * @return {string} a padded string.\n * @memberOf module:strings\n */\nstrings.pad = function (str, targetLength) {\n return (str ? '' + str : '').padStart(targetLength, '0');\n}\n\n/**\n * Removes all '0' from the beginning of a string.\n *\n * @param {string} str a string.\n * @return {string} an un-padded string.\n * @memberOf module:strings\n */\nstrings.unpad = function (str) {\n str = str ? '' + str : '';\n let i = 0;\n for (; i < str.length && str[i] === '0'; i++) {\n }\n return str.substring(i);\n}\n\n/**\n * Checks if a string represents a numeric value.\n *\n * @param {string} str the string to check.\n * @return {boolean} true if the string is a number, false otherwise.\n * @memberOf module:strings\n * @preserve The code is extracted from https://stackoverflow.com/a/175787.\n */\nstrings.isNumeric = function (str) {\n return typeof str === 'string' ? !isNaN(str) && !isNaN(parseFloat(str)) : false;\n}\n\n/**\n * Formats null or blank values.\n *\n * @param {string|number} str the value to format.\n * @param {string} defaultValue the string to return if the value is either null or empty.\n * @return {string} the formatted value.\n */\nstrings.formatNullOrBlank = function (str, defaultValue) {\n str = str ? '' + str : '';\n return strings.isNullOrBlank(str) ? defaultValue : str;\n}\n\n/**\n * Returns true iif a string starts with 'MASKED_', false otherwise.\n *\n * @param {string} str the string to check.\n * @return {boolean} true iif the string starts with 'MASKED_', false otherwise.\n */\nstrings.isMasked = function (str) {\n return typeof str === 'string' ? str.trim().toUpperCase().startsWith('MASKED_') : false;\n}\n\n/**\n * Convert a string from camel case to snake case.\n *\n * @param {string} str the string in camel case.\n * @returns {string} the string in snake case.\n */\nstrings.camelToSnakeCase = function (str) {\n return typeof str === 'string' ? str.replace(/[A-Z]/g,\n (letter, idx) => idx === 0 ? letter.toLowerCase() : `_${letter.toLowerCase()}`) : null;\n}\n\n/**\n * Convert a string from snake case to camel case.\n *\n * @param {string} str the string in snake case.\n * @returns {string} the string in camel case.\n */\nstrings.snakeCaseToCamelCase = function (str) {\n return typeof str === 'string' ? str.replace(/_[a-z]/g,\n (group, idx) => idx === 0 ? group.replace('_', '') : group.toUpperCase().replace('_', '')) : null;\n}","'use strict'\n\nimport {observers} from \"./observers\";\nimport {widgets} from \"./widgets\";\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport {\n Alignment,\n Button,\n Card,\n Checkbox,\n Drawer,\n FileInput,\n Icon,\n InputGroup,\n Intent,\n Menu,\n MenuItem,\n NumericInput,\n Position,\n RadioGroup,\n RangeSlider,\n Slider,\n Spinner,\n SpinnerSize,\n Switch,\n Tab,\n Tabs,\n Toast,\n Toaster\n} from '@blueprintjs/core';\nimport {Cell, Column, ColumnHeaderCell, Table2, TableLoadingOption} from '@blueprintjs/table';\nimport {MultiSelect2, Select2, Suggest2} from '@blueprintjs/select';\nimport {TimePrecision} from '@blueprintjs/datetime';\nimport {DateInput2, DateRangeInput2} from '@blueprintjs/datetime2';\nimport {add, format, parse, sub} from \"date-fns\";\nimport {strings} from \"./strings\";\n\n/**\n * @module blueprintjs\n */\nexport const blueprintjs = {};\n\n/**\n * Base class that deals with injecting the common styles and scripts.\n *\n * @memberOf module:blueprintjs\n * @type {blueprintjs.Blueprintjs}\n */\nblueprintjs.Blueprintjs = class extends widgets.Widget {\n\n /**\n * @param {Element} container the parent element.\n * @constructor\n */\n constructor(container) {\n super(container);\n }\n\n /**\n * Populate a DOM element with Blueprintjs components.\n *\n * @param template the DOM element.\n * @param objs the components.\n */\n static populate(template, objs) {\n objs.forEach(obj => blueprintjs.Blueprintjs.component(template, obj));\n }\n\n /**\n * Create a Blueprintjs component from a JSON object.\n *\n * @param template the DOM element where the component will be added.\n * @param obj the component properties.\n */\n static component(template, obj) {\n\n // {\n // type: '',\n // container: '',\n // el: null,\n // ...\n // }\n const container = template.querySelector(`#${obj.container}`);\n if (!container) {\n return obj;\n }\n switch (obj.type) {\n case 'Table': {\n obj.el = new blueprintjs.MinimalTable(container);\n break;\n }\n case 'Select': {\n const itemToText = obj.item_to_text;\n const itemToLabel = obj.item_to_label;\n const itemPredicate = obj.item_predicate;\n const itemCreate = obj.item_create;\n obj.el = new blueprintjs.MinimalSelect(container, itemToText, itemToLabel, itemPredicate, itemCreate);\n break;\n }\n case 'Slider': {\n const min = obj.min;\n const max = obj.max;\n const increment = obj.increment;\n const displayIncrement = obj.display_increment;\n obj.el = new blueprintjs.MinimalSlider(container, min, max, increment, displayIncrement);\n break;\n }\n case 'RangeSlider': {\n const min = obj.min;\n const max = obj.max;\n const increment = obj.increment;\n const displayIncrement = obj.display_increment;\n const defaultMinValue = obj.default_min_value;\n const defaultMaxValue = obj.default_max_value;\n obj.el = new blueprintjs.MinimalRangeSlider(container, min, max, increment, displayIncrement, defaultMinValue,\n defaultMaxValue);\n break;\n }\n case 'Drawer': {\n const width = obj.width;\n obj.el = new blueprintjs.MinimalDrawer(container, width);\n break;\n }\n case 'Tabs': {\n obj.el = new blueprintjs.MinimalTabs(container);\n break;\n }\n case 'Spinner': {\n const size = obj.size;\n obj.el = new blueprintjs.MinimalSpinner(container, size);\n break;\n }\n case 'Switch': {\n const checked = obj.checked;\n const label = obj.label;\n const labelPosition = obj.label_position;\n const labelChecked = obj.label_checked;\n const labelUnchecked = obj.label_unchecked;\n obj.el = new blueprintjs.MinimalSwitch(container, checked, label, labelPosition, labelChecked, labelUnchecked);\n break;\n }\n case 'Toaster': {\n obj.el = new blueprintjs.MinimalToaster(container);\n break;\n }\n case 'Card': {\n const body = obj.body;\n obj.el = new blueprintjs.MinimalCard(container, body);\n break;\n }\n case 'Icon': {\n const icon = obj.icon;\n const intent = obj.intent;\n obj.el = new blueprintjs.MinimalIcon(container, icon, intent);\n break;\n }\n case 'Checkbox': {\n const checked = obj.checked;\n const label = obj.label;\n const labelPosition = obj.label_position;\n obj.el = new blueprintjs.MinimalCheckbox(container, checked, label, labelPosition);\n break;\n }\n case 'Date': {\n const format = obj.format;\n const minDate = obj.min_date;\n const maxDate = obj.max_date;\n obj.el = new blueprintjs.MinimalDate(container, format, minDate, maxDate);\n break;\n }\n case 'Datetime': {\n const format = obj.format;\n const minDate = obj.min_date;\n const maxDate = obj.max_date;\n const timePrecision = obj.default_precision;\n const defaultTimezone = obj.default_timezone;\n obj.el = new blueprintjs.MinimalDatetime(container, format, minDate, maxDate, timePrecision, defaultTimezone);\n break;\n }\n case 'DateRange': {\n const format = obj.format;\n const minDate = obj.min_date;\n const maxDate = obj.max_date;\n obj.el = new blueprintjs.MinimalDateRange(container, format, minDate, maxDate);\n break;\n }\n case 'MultiSelect': {\n const itemToText = obj.item_to_text;\n const itemToLabel = obj.item_to_label;\n const itemToTag = obj.item_to_tag;\n const itemPredicate = obj.item_predicate;\n const itemCreate = obj.item_create;\n obj.el = new blueprintjs.MinimalMultiSelect(container, itemToText, itemToLabel, itemToTag, itemPredicate,\n itemCreate);\n break;\n }\n case 'Suggest': {\n const itemToText = obj.item_to_text;\n const itemToLabel = obj.item_to_label;\n const itemPredicate = obj.item_predicate;\n obj.el = new blueprintjs.MinimalSuggest(container, itemToText, itemToLabel, itemPredicate);\n break;\n }\n case 'FileInput': {\n obj.el = new blueprintjs.MinimalFileInput(container);\n break;\n }\n case 'RadioGroup': {\n const label = obj.label;\n const inline = obj.inline;\n obj.el = new blueprintjs.MinimalRadioGroup(container, label, inline);\n break;\n }\n case 'TextInput': {\n const defaultValue = obj.default_value;\n const icon = obj.icon;\n const intent = obj.intent;\n obj.el = new blueprintjs.MinimalTextInput(container, defaultValue, icon, intent);\n break;\n }\n case 'NumericInput': {\n const min = obj.min;\n const max = obj.max;\n const increment = obj.increment;\n const defaultValue = obj.default_value;\n const icon = obj.icon;\n const intent = obj.intent;\n obj.el = new blueprintjs.MinimalNumericInput(container, min, max, increment, defaultValue, icon, intent);\n break;\n }\n case 'Button': {\n const label = obj.label;\n const labelPosition = obj.label_position;\n const leftIcon = obj.left_icon;\n const rightIcon = obj.right_icon;\n const intent = obj.intent;\n obj.el = new blueprintjs.MinimalButton(container, label, labelPosition, leftIcon, rightIcon, intent);\n break;\n }\n default:\n obj.el = null;\n break;\n }\n if (obj.el) {\n for (let key in obj) {\n if (key === 'type' || key === 'container' || key === 'el') {\n continue;\n }\n const prop = strings.snakeCaseToCamelCase(key);\n const desc = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(obj.el), prop);\n // console.log(prop, desc);\n if (desc) {\n if (desc.set) { // setter\n obj.el[prop] = obj[key];\n } else if (desc.writable) { // function\n obj.el[prop](obj[key]);\n }\n }\n }\n }\n return obj;\n }\n\n /**\n * In order to avoid a memory leak, properly remove the component from the DOM.\n *\n * @name destroy\n * @function\n * @protected\n */\n destroy() {\n\n if (this.widgets_) {\n\n // Remove registered widgets\n for (let i = 0; i < this.widgets_.length; i++) {\n this.widgets_[i].destroy();\n }\n this.widgets_ = [];\n }\n\n ReactDOM.unmountComponentAtNode(this.container);\n }\n\n /**\n * Renders the component.\n *\n * @name render\n * @function\n * @protected\n */\n render() {\n const element = this._newElement();\n if (element) {\n ReactDOM.render(element, this.container);\n }\n }\n\n /**\n * Initializes the component.\n *\n * @return {ReactElement|null}\n * @name _newElement\n * @function\n * @protected\n */\n _newElement() {\n return null;\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs table component.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalTable}\n */\nblueprintjs.MinimalTable = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {function(number, number, *): ReactElement} cellRenderer a function in charge of rendering a single cell (optional).\n * @constructor\n */\n constructor(container, cellRenderer) {\n super(container);\n this.cellRenderer_ = cellRenderer;\n this.observers_ = new observers.Subject();\n this.columns_ = [];\n this.columnWidths_ = [];\n this.columnTypes_ = [];\n this.rows_ = [];\n this.loadingOptions_ = [];\n this.render();\n }\n\n get columns() {\n return this.columns_;\n }\n\n set columns(value) {\n this.columns_ = value;\n this.render();\n }\n\n get columnTypes() {\n return this.columnTypes_;\n }\n\n set columnTypes(values) {\n this.columnTypes_ = values;\n this.render();\n }\n\n get columnWidths() {\n return this.columnWidths_;\n }\n\n set columnWidths(values) {\n this.columnWidths_ = values;\n this.render();\n }\n\n get rows() {\n return this.rows_;\n }\n\n set rows(values) {\n this.rows_ = values;\n this.render();\n }\n\n get loadingOptions() {\n return this.loadingOptions_;\n }\n\n set loadingOptions(values) {\n this.loadingOptions_ = values;\n this.render();\n }\n\n /**\n * Listen to the `sort` event.\n *\n * @param {function(string, string): void} callback the callback to call when the event is triggered.\n * @name onSortColumn\n * @function\n * @public\n */\n onSortColumn(callback) {\n this.observers_.register('sort', (column, order) => {\n // console.log('Sort ' + order + ' is ' + column);\n if (callback) {\n callback(column, order);\n }\n });\n }\n\n /**\n * Listen to the `fetch-next-rows` event.\n *\n * @param {function(number): void} callback the callback to call when the event is triggered.\n * @name onFetchNextRows\n * @function\n * @public\n */\n onFetchNextRows(callback) {\n this.observers_.register('fetch-next-rows', (nextRow) => {\n // console.log('Next row is ' + nextRow);\n if (callback) {\n callback(nextRow);\n }\n });\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(Array): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (regions) => {\n // console.log('Selected regions are ', regions);\n if (callback) {\n\n const cells = [];\n\n for (let i = 0; i < regions.length; i++) {\n\n if (!regions[i].hasOwnProperty('rows')) {\n continue; // ignore the region if a whole column has been selected\n }\n if (!regions[i].hasOwnProperty('cols')) {\n continue; // ignore the region if a whole row has been selected\n }\n\n const rows = regions[i].rows;\n const columns = regions[i].cols;\n\n for (let j = rows[0]; j <= rows[1]; j++) {\n for (let k = columns[0]; k <= columns[1]; k++) {\n cells.push({row_idx: j, col_idx: k, value: this.rows[j][k]});\n }\n }\n }\n callback(cells);\n }\n });\n }\n\n _newCell(self, rowIdx, colIdx) {\n return self.cellRenderer_ ? self.cellRenderer_(rowIdx, colIdx, self.rows[rowIdx][colIdx]) : React.createElement(\n Cell, {\n rowIndex: rowIdx, columnIndex: colIdx, style: {\n 'text-align': self.columnTypes[colIdx] === 'number' ? 'right' : 'left'\n }, children: React.createElement('div', {}, self.rows[rowIdx][colIdx]),\n });\n }\n\n _newColumnHeader(self, column) {\n return React.createElement(ColumnHeaderCell, {\n name: column, menuRenderer: () => {\n\n // Menu item for sorting the column in ascending order\n const menuItemSortAsc = React.createElement(MenuItem, {\n icon: 'sort-asc', text: 'Sort Asc', onClick: () => self.observers_.notify('sort', column, 'ASC'),\n });\n\n // Menu item for sorting the column in descending order\n const menuItemSortDesc = React.createElement(MenuItem, {\n icon: 'sort-desc', text: 'Sort Desc', onClick: () => self.observers_.notify('sort', column, 'DESC'),\n });\n\n return React.createElement(Menu, {\n children: [menuItemSortAsc, menuItemSortDesc]\n });\n }\n });\n }\n\n _newColumn(self, column) {\n return React.createElement(Column, {\n name: column,\n cellRenderer: (rowIdx, colIdx) => self._newCell(self, rowIdx, colIdx),\n columnHeaderCellRenderer: () => self._newColumnHeader(self, column),\n });\n }\n\n _newElement() {\n return React.createElement(Table2, {\n numRows: this.rows.length,\n children: this.columns.map(column => this._newColumn(this, column)),\n enableColumnReordering: true,\n loadingOptions: this.loadingOptions,\n columnWidths: this.columnWidths.length <= 0 ? null : this.columnWidths,\n onSelection: (regions) => {\n this.observers_.notify('selection-change', regions);\n },\n onVisibleCellsChange: (rowIndex, columnIndex) => {\n if (rowIndex.rowIndexEnd + 1 >= this.rows.length) {\n this.observers_.notify('fetch-next-rows', this.rows.length);\n }\n },\n onColumnsReordered: (oldIndex, newIndex, length) => {\n\n this.loadingOptions = [TableLoadingOption.CELLS];\n\n // First, reorder the rows header\n const oldColumnsOrder = this.columns;\n const newColumnsOrder = [];\n\n const oldColumnTypes = this.columnTypes;\n const newColumnTypes = [];\n\n for (let i = 0; i < oldColumnsOrder.length; i++) {\n if (!(oldIndex <= i && i < oldIndex + length)) {\n newColumnsOrder.push(oldColumnsOrder[i]);\n newColumnTypes.push(oldColumnTypes[i]);\n }\n }\n for (let k = oldIndex; k < oldIndex + length; k++) {\n newColumnsOrder.splice(newIndex + k - oldIndex, 0, oldColumnsOrder[k]);\n newColumnTypes.splice(newIndex + k - oldIndex, 0, oldColumnTypes[k]);\n }\n\n // console.log('Previous column order was [' + oldColumnsOrder.join(', ') + ']');\n // console.log('New column order is [' + newColumnsOrder.join(', ') + ']');\n\n // console.log('Previous column types were [' + oldColumnTypes.join(', ') + ']');\n // console.log('New column types is [' + newColumnTypes.join(', ') + ']');\n\n // Then, reorder the rows data\n const oldColumnsIndex = {};\n const newColumnsIndex = {};\n\n for (let i = 0; i < oldColumnsOrder.length; i++) {\n oldColumnsIndex[oldColumnsOrder[i]] = i;\n }\n for (let i = 0; i < newColumnsOrder.length; i++) {\n newColumnsIndex[i] = newColumnsOrder[i];\n }\n\n const oldRows = this.rows;\n const newRows = [];\n\n for (let i = 0; i < oldRows.length; i++) {\n\n const newRow = [];\n\n for (let j = 0; j < oldRows[i].length; j++) {\n newRow.push(oldRows[i][oldColumnsIndex[newColumnsIndex[j]]]);\n }\n newRows.push(newRow);\n }\n\n // Next, redraw the table\n this.columns = newColumnsOrder;\n this.columnTypes = newColumnTypes;\n this.rows = newRows;\n this.loadingOptions = [];\n },\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs select element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalSelect}\n */\nblueprintjs.MinimalSelect = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {function(*): string} itemToText a function that maps an item to the text to be displayed (optional).\n * @param {function(*): string} itemToLabel a function that maps an item to the label to be displayed (optional).\n * @param {function(string, *): boolean} itemPredicate a function that filters the internal list of items when user enters something in the input (optional).\n * @param {function(string): *} itemCreate a function that creates an item from a string (optional).\n * @constructor\n */\n constructor(container, itemToText, itemToLabel, itemPredicate, itemCreate) {\n super(container);\n this.itemToText_ = itemToText;\n this.itemToLabel_ = itemToLabel;\n this.itemPredicate_ = (query, item) => {\n if (itemPredicate) {\n return itemPredicate(query, item);\n }\n if (query && query !== '') {\n const txt = this.itemToText_ ? this.itemToText_(item) : item;\n return txt.trim().toLowerCase().indexOf(query.trim().toLowerCase()) >= 0;\n }\n return true;\n };\n this.itemCreate_ = itemCreate;\n this.observers_ = new observers.Subject();\n this.selectedItem_ = null;\n this.fillContainer_ = true;\n this.disabled_ = false;\n this.filterable_ = true;\n this.items_ = [];\n this.defaultText_ = 'Sélectionnez un élément...';\n this.noResults_ = 'Il n\\'y a aucun résultat pour cette recherche.';\n this.render();\n }\n\n get fillContainer() {\n return this.fillContainer_;\n }\n\n set fillContainer(value) {\n this.fillContainer_ = value;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get filterable() {\n return this.filterable_;\n }\n\n set filterable(value) {\n this.filterable_ = value;\n this.render();\n }\n\n get items() {\n return this.items_;\n }\n\n set items(values) {\n this.items_ = values;\n this.render();\n }\n\n get selectedItem() {\n return this.selectedItem_;\n }\n\n set selectedItem(value) {\n this.selectedItem_ = value;\n this.render();\n }\n\n get defaultText() {\n return this.defaultText_;\n }\n\n set defaultText(value) {\n this.defaultText_ = value;\n this.render();\n }\n\n get noResults() {\n return this.noResults_;\n }\n\n set noResults(value) {\n this.noResults_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(*): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (item) => {\n // console.log('Selected item is ', item);\n if (callback) {\n callback(item);\n }\n });\n }\n\n /**\n * Listen to the `filter-change` event.\n *\n * @param {function(*): void} callback the callback to call when the event is triggered.\n * @name onFilterChange\n * @function\n * @public\n */\n onFilterChange(callback) {\n this.observers_.register('filter-change', (filter) => {\n // console.log('Filter is ', filter);\n if (callback) {\n callback(filter);\n }\n });\n }\n\n _newButton() {\n return React.createElement(Button, {\n text: this.selectedItem ? this.itemToText_ ? this.itemToText_(this.selectedItem) : this.selectedItem\n : this.defaultText,\n alignText: 'left',\n rightIcon: 'double-caret-vertical',\n fill: this.fillContainer,\n disabled: this.disabled,\n });\n }\n\n _newElement() {\n return React.createElement(Select2, {\n fill: this.fillContainer,\n disabled: this.disabled,\n children: [this._newButton()],\n items: this.items,\n filterable: this.filterable,\n itemPredicate: this.itemPredicate_,\n onItemSelect: (item) => {\n // If the user selects twice the same item, removes the selection\n const selection = item === this.selectedItem ? null : item;\n this.selectedItem_ = selection;\n this.render();\n this.observers_.notify('selection-change', selection);\n },\n onQueryChange: (query) => {\n this.observers_.notify('filter-change', query);\n },\n itemRenderer: (item, props) => {\n if (!props.modifiers.matchesPredicate) {\n return null;\n }\n return React.createElement(MenuItem, {\n key: props.index,\n selected: props.modifiers.active,\n text: this.itemToText_ ? this.itemToText_(item) : item,\n label: this.itemToLabel_ ? this.itemToLabel_(item) : '',\n onFocus: props.handleFocus,\n onClick: props.handleClick,\n });\n },\n noResults: React.createElement(MenuItem, {\n text: this.noResults, disabled: true,\n }),\n popoverProps: {\n matchTargetWidth: true,\n },\n createNewItemFromQuery: this.itemCreate_,\n createNewItemRenderer: (query, active, handleClick) => {\n return React.createElement(MenuItem, {\n icon: 'add', selected: active, text: query, onClick: handleClick,\n });\n },\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs slider element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalSlider}\n */\nblueprintjs.MinimalSlider = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {number} min the minimum value.\n * @param {number} max the maximum value.\n * @param {number} increment the internal increment.\n * @param {number} displayIncrement the display increment.\n * @constructor\n */\n constructor(container, min, max, increment, displayIncrement) {\n super(container);\n this.min_ = min;\n this.max_ = max;\n this.increment_ = increment;\n this.displayIncrement_ = displayIncrement;\n this.value_ = min;\n this.observers_ = new observers.Subject();\n this.disabled_ = false;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get value() {\n return this.value_;\n }\n\n set value(value) {\n this.value_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(number): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (value) => {\n // console.log('Selected value is ', item);\n if (callback) {\n callback(value);\n }\n });\n }\n\n _newElement() {\n return React.createElement(Slider, {\n min: this.min_,\n max: this.max_,\n stepSize: this.increment_,\n labelStepSize: this.displayIncrement_,\n value: this.value,\n disabled: this.disabled,\n onChange: (value) => {\n this.value = value;\n this.observers_.notify('selection-change', value);\n },\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs range slider element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalRangeSlider}\n */\nblueprintjs.MinimalRangeSlider = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {number} min the minimum value.\n * @param {number} max the maximum value.\n * @param {number} increment the internal increment.\n * @param {number} displayIncrement the display increment.\n * @param {number} defaultMinValue the minimum value selected when the component is rendered the first time.\n * @param {number} defaultMaxValue the maximum value selected when the component is rendered the first time.\n * @constructor\n */\n constructor(container, min, max, increment, displayIncrement, defaultMinValue, defaultMaxValue) {\n super(container);\n this.min_ = min;\n this.max_ = max;\n this.increment_ = increment;\n this.displayIncrement_ = displayIncrement;\n this.minValue_ = defaultMinValue;\n this.maxValue_ = defaultMaxValue;\n this.observers_ = new observers.Subject();\n this.disabled_ = false;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get minValue() {\n return this.minValue_;\n }\n\n set minValue(value) {\n this.minValue_ = value;\n this.render();\n }\n\n get maxValue() {\n return this.maxValue_;\n }\n\n set maxValue(value) {\n this.maxValue_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(number, number): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (value) => {\n // console.log('Selected value is ', value);\n if (callback) {\n callback(value[0], value[1]);\n }\n });\n }\n\n _newElement() {\n return React.createElement(RangeSlider, {\n min: this.min_,\n max: this.max_,\n stepSize: this.increment_,\n labelStepSize: this.displayIncrement_,\n value: [this.minValue, this.maxValue],\n disabled: this.disabled,\n onChange: (value) => {\n this.minValue = value[0];\n this.maxValue = value[1];\n this.observers_.notify('selection-change', value);\n },\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs drawer element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalDrawer}\n */\nblueprintjs.MinimalDrawer = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {string} width the drawer width in pixels or percents (optional).\n * @constructor\n */\n constructor(container, width) {\n super(container);\n this.observers_ = new observers.Subject();\n this.show_ = false;\n this.width_ = width ? width : '75%';\n this.render();\n }\n\n get show() {\n return this.show_;\n }\n\n set show(value) {\n this.show_ = value;\n this.render();\n }\n\n /**\n * Listen to the `opening` event.\n *\n * @param {function(Element): void} callback the callback to call when the event is triggered.\n * @name onOpen\n * @function\n * @public\n */\n onOpen(callback) {\n this.observers_.register('opening', (el) => {\n if (callback) {\n callback(el);\n }\n });\n }\n\n /**\n * Listen to the `opened` event.\n *\n * @param {function(Element): void} callback the callback to call when the event is triggered.\n * @name onOpened\n * @function\n * @public\n */\n onOpened(callback) {\n this.observers_.register('opened', (el) => {\n if (callback) {\n callback(el);\n }\n });\n }\n\n /**\n * Listen to the `closing` event.\n *\n * @param {function(Element): void} callback the callback to call when the event is triggered.\n * @name onClose\n * @function\n * @public\n */\n onClose(callback) {\n this.observers_.register('closing', (el) => {\n if (callback) {\n callback(el);\n }\n });\n }\n\n _newElement() {\n return React.createElement(Drawer, {\n isOpen: this.show,\n size: this.width_,\n position: Position.RIGHT,\n onOpening: (el) => this.observers_.notify('opening', el),\n onOpened: (el) => this.observers_.notify('opened', el),\n onClose: () => this.show = false,\n onClosed: (el) => this.observers_.notify('closing', el),\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs tabs element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalTabs}\n */\nblueprintjs.MinimalTabs = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @constructor\n */\n constructor(container) {\n super(container);\n this.observers_ = new observers.Subject();\n this.tabs_ = [];\n this.render();\n }\n\n /**\n * Add a single tab to the nav bar.\n *\n * @param {string} name the tab name.\n * @param {Element} panel the tab content.\n * @name addTab\n * @function\n * @public\n */\n addTab(name, panel) {\n this.tabs_.push({\n name: name, panel: panel, disabled: false, is_selected: false,\n });\n this.render();\n }\n\n /**\n * Remove a single tab from the nav bar.\n *\n * @param {string} name the tab name.\n * @name removeTab\n * @function\n * @public\n */\n removeTab(name) {\n this.tabs_ = this.tabs_.filter(tab => tab.name !== name);\n this.render();\n }\n\n /**\n * Select the tab to display.\n *\n * @param {string} name the tab name.\n * @name selectTab\n * @function\n * @public\n */\n selectTab(name) {\n let selectedTab = null;\n this.tabs_.forEach(tab => {\n if (tab.name !== name) {\n tab.is_selected = false;\n } else {\n tab.is_selected = true;\n selectedTab = tab;\n }\n });\n this.render();\n if (selectedTab) {\n this.observers_.notify('selection-change', selectedTab.name, selectedTab.panel);\n }\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(string, Element): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (tabName, tabBody) => {\n // console.log('Selected tab is ' + tabName);\n if (callback) {\n callback(tabName, tabBody);\n }\n });\n }\n\n _newTab(tab) {\n return React.createElement(Tab, {\n id: tab.name, title: tab.name, panel: null, disabled: tab.disabled,\n });\n }\n\n _newElement() {\n const selectedTab = this.tabs_.find(tab => tab.is_selected);\n return React.createElement(Tabs, {\n id: 'tabs',\n children: this.tabs_.map(tab => this._newTab(tab)),\n selectedTabId: selectedTab ? selectedTab.name : null,\n onChange: (newTabId, oldTabId) => this.selectTab(newTabId)\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs spinner element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalSpinner}\n */\nblueprintjs.MinimalSpinner = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {string} size the spinner size in {'small', 'standard', 'large'}\n * @constructor\n */\n constructor(container, size) {\n super(container);\n this.value_ = null;\n if (size === 'small') {\n this.size_ = SpinnerSize.SMALL;\n } else if (size === 'large') {\n this.size_ = SpinnerSize.LARGE;\n } else {\n this.size_ = SpinnerSize.STANDARD;\n }\n this.render();\n }\n\n /**\n * Represents how far along an operation is.\n *\n * @param {number} value a value between 0 and 1 (inclusive) representing how far along an operation is.\n * @name advance\n * @function\n * @public\n */\n advance(value) {\n this.value_ = value;\n this.render();\n }\n\n _newElement() {\n return React.createElement(Spinner, {\n value: this.value_, size: this.size_,\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs switch element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalSwitch}\n */\nblueprintjs.MinimalSwitch = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {boolean} checked true iif the control should initially be checked, false otherwise (optional).\n * @param {string} label the switch label (optional).\n * @param {string} labelPosition the switch label position (in {left, right}) in respect to the element (optional).\n * @param {string} labelChecked the text to display inside the switch indicator when checked (optional).\n * @param {string} labelUnchecked the text to display inside the switch indicator when unchecked (optional).\n * @constructor\n */\n constructor(container, checked, label, labelPosition, labelChecked, labelUnchecked) {\n super(container);\n this.checked_ = checked;\n this.label_ = label;\n this.switchPosition_ = labelPosition === 'left' ? Alignment.RIGHT : Alignment.LEFT;\n this.labelChecked_ = labelChecked;\n this.labelUnchecked_ = labelUnchecked;\n this.observers_ = new observers.Subject();\n this.disabled_ = false;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get checked() {\n return this.checked_;\n }\n\n set checked(value) {\n this.checked_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(boolean): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (value) => {\n // console.log('Selected option is ' + (value ? 'checked' : 'unchecked'));\n if (callback) {\n callback(value ? 'checked' : 'unchecked');\n }\n });\n }\n\n _newElement() {\n return React.createElement(Switch, {\n disabled: this.disabled_,\n checked: this.checked_,\n label: this.label_,\n alignIndicator: this.switchPosition_,\n innerLabel: this.labelUnchecked_,\n innerLabelChecked: this.labelChecked_,\n onChange: () => {\n this.checked = !this.checked;\n this.observers_.notify('selection-change', this.checked);\n },\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs toast element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalToast}\n */\nblueprintjs.MinimalToast = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {string} message the message to display.\n * @param {string} intent the message intent in {none, primary, success, warning, danger} (optional).\n * @param {number} timeout the number of milliseconds to wait before automatically dismissing the toast (optional).\n * @constructor\n */\n constructor(container, message, intent, timeout) {\n super(container);\n this.timeout_ = timeout;\n this.message_ = message;\n if (intent === 'primary') {\n this.intent_ = Intent.PRIMARY;\n this.icon_ = null;\n } else if (intent === 'success') {\n this.intent_ = Intent.SUCCESS;\n this.icon_ = 'tick';\n } else if (intent === 'warning') {\n this.intent_ = Intent.WARNING;\n this.icon_ = 'warning-sign';\n } else if (intent === 'danger') {\n this.intent_ = Intent.DANGER;\n this.icon_ = 'warning-sign';\n } else {\n this.intent_ = Intent.NONE;\n this.icon_ = null;\n }\n this.observers_ = new observers.Subject();\n this.render();\n }\n\n /**\n * Listen to the `dismiss` event.\n *\n * @param {function(void): void} callback the callback to call when the event is triggered.\n * @name onDismiss\n * @function\n * @public\n */\n onDismiss(callback) {\n this.observers_.register('dismiss', (self) => {\n // console.log('Toast dismissed!');\n if (callback) {\n callback();\n }\n });\n }\n\n _newElement() {\n return React.createElement(Toast, {\n intent: this.intent_,\n icon: this.icon_,\n message: React.createElement('div', {}, this.message_),\n timeout: this.timeout_,\n onDismiss: () => this.observers_.notify('dismiss', this),\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs toaster element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalToaster}\n */\nblueprintjs.MinimalToaster = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @constructor\n */\n constructor(container) {\n super(container);\n this.toasts_ = [];\n this.render();\n }\n\n /**\n * Create and display a new toast.\n *\n * @param {string} message the message to display.\n * @param {string} intent the message intent in {none, primary, success, warning, danger} (optional).\n * @param {number} timeout the number of milliseconds to wait before automatically dismissing the toast (optional).\n * @name toast\n * @function\n * @public\n */\n toast(message, intent, timeout) {\n const toast = new blueprintjs.MinimalToast(this.container, message, intent, timeout);\n toast.el_ = toast._newElement();\n toast.onDismiss(() => {\n this.toasts_ = this.toasts_.filter(t => t !== toast);\n this.render();\n });\n this.toasts_.push(toast);\n this.render();\n }\n\n _newElement() {\n return React.createElement(Toaster, {\n children: this.toasts_.map(toast => toast.el_), position: Position.TOP,\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs card element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalCard}\n */\nblueprintjs.MinimalCard = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {Element} body the card body.\n * @constructor\n */\n constructor(container, body) {\n super(container);\n this.elevation_ = 0;\n this.interactive_ = false;\n this.observers_ = new observers.Subject();\n this.body_ = React.createElement('div', {\n ref: React.createRef(),\n });\n this.render(); // this.body_ must be rendered first!\n this.body_.ref.current.appendChild(body);\n this.render();\n }\n\n get elevation() {\n return this.elevation_;\n }\n\n set elevation(value) {\n this.elevation_ = !value ? 0 : value > 4 ? 4 : value;\n this.render();\n }\n\n get interactive() {\n return this.interactive_;\n }\n\n set interactive(value) {\n this.interactive_ = value;\n this.render();\n }\n\n /**\n * Listen to the `click` event.\n *\n * @param {function(void): void} callback the callback to call when the event is triggered.\n * @name onClick\n * @function\n * @public\n */\n onClick(callback) {\n this.observers_.register('click', (self) => {\n // console.log('Card clicked!');\n if (callback) {\n callback();\n }\n });\n }\n\n _newElement() {\n return React.createElement(Card, {\n children: [this.body_],\n elevation: this.elevation_,\n interactive: this.interactive_,\n onClick: () => this.observers_.notify('click', this),\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs icon element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalIcon}\n */\nblueprintjs.MinimalIcon = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {string} icon the icon name.\n * @param {string} intent the icon intent in {none, primary, success, warning, danger} (optional).\n * @constructor\n */\n constructor(container, icon, intent) {\n super(container);\n this.observers_ = new observers.Subject();\n this.icon_ = icon;\n this.size_ = 20;\n if (intent === 'primary') {\n this.intent_ = Intent.PRIMARY;\n } else if (intent === 'success') {\n this.intent_ = Intent.SUCCESS;\n } else if (intent === 'warning') {\n this.intent_ = Intent.WARNING;\n } else if (intent === 'danger') {\n this.intent_ = Intent.DANGER;\n } else {\n this.intent_ = Intent.NONE;\n }\n this.render();\n }\n\n get icon() {\n return this.icon_;\n }\n\n set icon(value) {\n this.icon_ = value;\n this.render();\n }\n\n get size() {\n return this.size_;\n }\n\n set size(value) {\n this.size_ = value;\n this.render();\n }\n\n get intent() {\n return this.intent_;\n }\n\n set intent(value) {\n this.intent_ = value;\n this.render();\n }\n\n /**\n * Listen to the `click` event.\n *\n * @param {function(void): void} callback the callback to call when the event is triggered.\n * @name onClick\n * @function\n * @public\n */\n onClick(callback) {\n this.observers_.register('click', (self) => {\n // console.log('Icon clicked!');\n if (callback) {\n callback();\n }\n });\n }\n\n _newElement() {\n return React.createElement(Icon, {\n icon: this.icon_, size: this.size_, intent: this.intent_, onClick: () => this.observers_.notify('click', this),\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs checkbox element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalCheckbox}\n */\nblueprintjs.MinimalCheckbox = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {boolean} checked true iif the control should initially be checked, false otherwise (optional).\n * @param {string} label the switch label (optional).\n * @param {string} labelPosition the switch label position (in {left, right}) in respect to the element (optional).\n * @constructor\n */\n constructor(container, checked, label, labelPosition) {\n super(container);\n this.observers_ = new observers.Subject();\n this.checked_ = checked;\n this.label_ = label;\n this.boxPosition_ = labelPosition === 'left' ? Alignment.RIGHT : Alignment.LEFT;\n this.disabled_ = false;\n this.render();\n }\n\n get checked() {\n return this.checked_;\n }\n\n set checked(value) {\n this.checked_ = value;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(string): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (value) => {\n // console.log('Selected option is ' + (value ? 'checked' : 'unchecked'));\n if (callback) {\n callback(value ? 'checked' : 'unchecked');\n }\n });\n }\n\n _newElement() {\n return React.createElement(Checkbox, {\n checked: this.checked_,\n disabled: this.disabled_,\n label: this.label_,\n alignIndicator: this.boxPosition_,\n onChange: () => {\n this.checked = !this.checked;\n this.observers_.notify('selection-change', this.checked);\n },\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs date element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalDate}\n */\nblueprintjs.MinimalDate = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {string} format the date format (optional). Default is 'yyyy-MM-dd'.\n * @param {Date} minDate the earliest date the user can select (optional).\n * @param {Date} maxDate the latest date the user can select (optional).\n * @constructor\n */\n constructor(container, format, minDate, maxDate) {\n super(container);\n this.observers_ = new observers.Subject();\n this.value_ = null;\n this.disabled_ = false;\n this.format_ = format ? format : 'yyyy-MM-dd';\n this.fillContainer_ = true;\n this.shortcuts_ = false;\n this.showActionsBar_ = false;\n this.minDate_ = minDate ? minDate : sub(new Date(), {years: 10});\n this.maxDate_ = maxDate ? maxDate : add(new Date(), {years: 10});\n this.render();\n }\n\n get date() {\n return this.value_;\n }\n\n set date(value) {\n this.value_ = value;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get shortcuts() {\n return this.shortcuts_;\n }\n\n set shortcuts(value) {\n this.shortcuts_ = value;\n this.render();\n }\n\n get showActionsBar() {\n return this.showActionsBar_;\n }\n\n set showActionsBar(value) {\n this.showActionsBar_ = value;\n this.render();\n }\n\n get fillContainer() {\n return this.fillContainer_;\n }\n\n set fillContainer(value) {\n this.fillContainer_ = value;\n this.render();\n }\n\n get minDate() {\n return this.minDate_;\n }\n\n set minDate(value) {\n this.minDate_ = value;\n this.render();\n }\n\n get maxDate() {\n return this.maxDate_;\n }\n\n set maxDate(value) {\n this.maxDate_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(string): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (value) => {\n // console.log('Selected date is ' + value);\n if (callback) {\n callback(value);\n }\n });\n }\n\n _newElement() {\n return React.createElement(DateInput2, {\n formatDate: (date) => format(date, this.format_),\n parseDate: (str) => parse(str, this.format_, new Date()),\n value: this.date,\n disabled: this.disabled,\n placeholder: this.format_,\n fill: this.fillContainer,\n minDate: this.minDate,\n maxDate: this.maxDate,\n shortcuts: this.shortcuts,\n showActionsBar: this.showActionsBar,\n showTimezoneSelect: this._showTimezone(),\n disableTimezoneSelect: this._disableTimezone(),\n timePrecision: this._timePrecision(),\n defaultTimezone: this._defaultTimezone(),\n onChange: (value) => {\n this.date = value;\n this.observers_.notify('selection-change', this.date);\n }\n });\n }\n\n /* Time-specific functions */\n\n _showTimezone() {\n return false;\n }\n\n _timePrecision() {\n return null;\n }\n\n _defaultTimezone() {\n return null;\n }\n\n _disableTimezone() {\n return true;\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs datetime element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalDatetime}\n */\nblueprintjs.MinimalDatetime = class extends blueprintjs.MinimalDate {\n\n /**\n * @param {Element} container the parent element.\n * @param {string} format the date format (optional). Default is 'yyyy-MM-dd HH:mm'.\n * @param {Date} minDate the earliest date the user can select (optional).\n * @param {Date} maxDate the latest date the user can select (optional).\n * @param {string} timePrecision the time precision in {'hours', 'minutes', 'seconds'} (optional). Default is 'minutes'.\n * @param {string} defaultTimezone the default time zone (optional). Default is 'UTC'.\n * @constructor\n */\n constructor(container, format, minDate, maxDate, timePrecision, defaultTimezone) {\n super(container, format ? format : 'yyyy-MM-dd HH:mm', minDate, maxDate);\n this.timePrecision_ = timePrecision === 'hours' ? TimePrecision.HOUR_24 : timePrecision === 'seconds'\n ? TimePrecision.SECOND : TimePrecision.MINUTE;\n this.defaultTimezone_ = defaultTimezone ? defaultTimezone : 'Etc/UTC';\n this.disableTimezone_ = false;\n this.render();\n }\n\n get disableTimezone() {\n return this.disableTimezone_;\n }\n\n set disableTimezone(value) {\n this.disableTimezone_ = value;\n this.render();\n }\n\n _showTimezone() {\n return true;\n }\n\n _timePrecision() {\n return this.timePrecision_;\n }\n\n _defaultTimezone() {\n return this.defaultTimezone_;\n }\n\n _disableTimezone() {\n return this.disableTimezone;\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs date range element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalDateRange}\n */\nblueprintjs.MinimalDateRange = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {string} format the date format (optional). Default is 'yyyy-MM-dd'.\n * @param {Date} minDate the earliest date the user can select (optional).\n * @param {Date} maxDate the latest date the user can select (optional).\n * @constructor\n */\n constructor(container, format, minDate, maxDate) {\n super(container);\n this.observers_ = new observers.Subject();\n this.disabled_ = false;\n this.shortcuts_ = true;\n this.dateMin_ = null;\n this.dateMax_ = null;\n this.format_ = format ? format : 'yyyy-MM-dd';\n this.minDate_ = minDate ? minDate : sub(new Date(), {years: 10});\n this.maxDate_ = maxDate ? maxDate : add(new Date(), {years: 10});\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get shortcuts() {\n return this.shortcuts_;\n }\n\n set shortcuts(value) {\n this.shortcuts_ = value;\n this.render();\n }\n\n get dateMin() {\n return this.dateMin_;\n }\n\n set dateMin(value) {\n this.dateMin_ = value;\n this.render();\n }\n\n get dateMax() {\n return this.dateMax_;\n }\n\n set dateMax(value) {\n this.dateMax_ = value;\n this.render();\n }\n\n get minDate() {\n return this.minDate_;\n }\n\n set minDate(value) {\n this.minDate_ = value;\n this.render();\n }\n\n get maxDate() {\n return this.maxDate_;\n }\n\n set maxDate(value) {\n this.maxDate_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(Date, Date): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (range) => {\n // console.log('Selected range is ' + range);\n if (callback) {\n callback(range[0], range[1]);\n }\n });\n }\n\n _newElement() {\n return React.createElement(DateRangeInput2, {\n formatDate: (date) => format(date, this.format_),\n parseDate: (str) => parse(str, this.format_, new Date()),\n value: [this.dateMin, this.dateMax],\n disabled: this.disabled,\n placeholder: this.format_,\n shortcuts: this.shortcuts,\n minDate: this.minDate,\n maxDate: this.maxDate,\n onChange: (range) => {\n this.dateMin = range[0];\n this.dateMax = range[1];\n this.observers_.notify('selection-change', range);\n }\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs multiselect element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalMultiSelect}\n */\nblueprintjs.MinimalMultiSelect = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {function(*): string} itemToText a function that maps an item to the text to be displayed (optional).\n * @param {function(*): string} itemToLabel a function that maps an item to the label to be displayed (optional).\n * @param {function(*): string} itemToTag a function that maps an item to the tag to be displayed (optional).\n * @param {function(string, *): boolean} itemPredicate a function that filters the internal list of items when user enters something in the input (optional).\n * @param {function(string): *} itemCreate a function that creates an item from a string (optional).\n * @constructor\n */\n constructor(container, itemToText, itemToLabel, itemToTag, itemPredicate, itemCreate) {\n super(container);\n this.itemToText_ = itemToText;\n this.itemToLabel_ = itemToLabel;\n this.itemToTag_ = itemToTag;\n this.itemPredicate_ = (query, item) => {\n if (itemPredicate) {\n return itemPredicate(query, item);\n }\n if (query && query !== '') {\n const txt = this.itemToText_ ? this.itemToText_(item) : item;\n return txt.trim().toLowerCase().indexOf(query.trim().toLowerCase()) >= 0;\n }\n return true;\n };\n this.itemCreate_ = itemCreate;\n this.observers_ = new observers.Subject();\n this.fillContainer_ = true;\n this.disabled_ = false;\n this.items_ = [];\n this.selectedItems_ = [];\n this.defaultText_ = 'Sélectionnez un élément...';\n this.noResults_ = 'Il n\\'y a aucun résultat pour cette recherche.';\n this.render();\n }\n\n get fillContainer() {\n return this.fillContainer_;\n }\n\n set fillContainer(value) {\n this.fillContainer_ = value;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get items() {\n return this.items_;\n }\n\n set items(values) {\n this.items_ = values;\n this.render();\n }\n\n get selectedItems() {\n return this.selectedItems_;\n }\n\n set selectedItems(value) {\n this.selectedItems_ = value ? value : [];\n this.render();\n }\n\n get defaultText() {\n return this.defaultText_;\n }\n\n set defaultText(value) {\n this.defaultText_ = value;\n this.render();\n }\n\n get noResults() {\n return this.noResults_;\n }\n\n set noResults(value) {\n this.noResults_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(*): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (items) => {\n // console.log('Selected items are ', items);\n if (callback) {\n callback(items);\n }\n });\n }\n\n /**\n * Listen to the `filter-change` event.\n *\n * @param {function(*): void} callback the callback to call when the event is triggered.\n * @name onFilterChange\n * @function\n * @public\n */\n onFilterChange(callback) {\n this.observers_.register('filter-change', (query) => {\n // console.log('Query is ', query);\n if (callback) {\n callback(query);\n }\n });\n }\n\n _newElement() {\n return React.createElement(MultiSelect2, {\n fill: this.fillContainer,\n disabled: this.disabled,\n items: this.items,\n selectedItems: this.selectedItems,\n placeholder: this.defaultText,\n onQueryChange: (query) => {\n this.observers_.notify('filter-change', query);\n },\n onClear: () => {\n this.selectedItems_ = [];\n this.render();\n this.observers_.notify('selection-change', this.selectedItems);\n },\n itemPredicate: this.itemPredicate_,\n onItemSelect: (item) => {\n // If the user selects twice the same item, do not add it twice to the selection\n const pos = this.selectedItems.map(i => this.itemToText_ ? this.itemToText_(i) : i).indexOf(\n this.itemToText_ ? this.itemToText_(item) : item);\n if (pos !== 0 && pos <= -1) {\n this.selectedItems_.push(item);\n this.render();\n this.observers_.notify('selection-change', this.selectedItems);\n }\n },\n itemRenderer: (item, props) => {\n if (!props.modifiers.matchesPredicate) {\n return null;\n }\n return React.createElement(MenuItem, {\n key: props.index,\n selected: props.modifiers.active,\n text: this.itemToText_ ? this.itemToText_(item) : item,\n label: this.itemToLabel_ ? this.itemToLabel_(item) : '',\n onFocus: props.handleFocus,\n onClick: props.handleClick,\n });\n },\n tagRenderer: (item) => {\n return this.itemToTag_ ? this.itemToTag_(item) : item;\n },\n onRemove: (tag, index) => {\n this.selectedItems_.splice(index, 1);\n this.render();\n this.observers_.notify('selection-change', this.selectedItems);\n },\n noResults: React.createElement(MenuItem, {\n text: this.noResults, disabled: true,\n }),\n popoverProps: {\n matchTargetWidth: true,\n },\n resetOnSelect: !!this.itemCreate_,\n createNewItemFromQuery: this.itemCreate_,\n createNewItemRenderer: (query, active, handleClick) => {\n return React.createElement(MenuItem, {\n icon: 'add', selected: active, text: query, onClick: handleClick,\n });\n },\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs suggest element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalSuggest}\n */\nblueprintjs.MinimalSuggest = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {function(*): string} itemToText a function that maps an item to the text to be displayed (optional).\n * @param {function(*): string} itemToLabel a function that maps an item to the label to be displayed (optional).\n * @param {function(*): boolean} itemPredicate a function that filters the internal list of items when user enters something in the input (optional).\n * @constructor\n */\n constructor(container, itemToText, itemToLabel, itemPredicate) {\n super(container);\n this.itemToText_ = itemToText;\n this.itemToLabel_ = itemToLabel;\n this.itemPredicate_ = (query, item) => {\n if (itemPredicate) {\n return itemPredicate(query, item);\n }\n if (query && query !== '') {\n const txt = this.itemToText_ ? this.itemToText_(item) : item;\n return txt.trim().toLowerCase().indexOf(query.trim().toLowerCase()) >= 0;\n }\n return true;\n };\n this.observers_ = new observers.Subject();\n this.fillContainer_ = true;\n this.disabled_ = false;\n this.items_ = [];\n this.selectedItem_ = null;\n this.defaultText_ = 'Saisissez un caractère...';\n this.noResults_ = 'Il n\\'y a aucun résultat pour cette recherche.';\n this.render();\n }\n\n get fillContainer() {\n return this.fillContainer_;\n }\n\n set fillContainer(value) {\n this.fillContainer_ = value;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get items() {\n return this.items_;\n }\n\n set items(values) {\n this.items_ = values;\n this.render();\n }\n\n get selectedItem() {\n return this.selectedItem_;\n }\n\n set selectedItem(value) {\n this.selectedItem_ = value ? value : null;\n this.render();\n }\n\n get defaultText() {\n return this.defaultText_;\n }\n\n set defaultText(value) {\n this.defaultText_ = value;\n const input = this.container.querySelector('input');\n if (input) {\n input.placeholder = this.defaultText_;\n }\n }\n\n get noResults() {\n return this.noResults_;\n }\n\n set noResults(value) {\n this.noResults_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(*): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (item) => {\n // console.log('Selected item is ', item);\n if (callback) {\n callback(item);\n }\n });\n }\n\n /**\n * Listen to the `filter-change` event.\n *\n * @param {function(*): void} callback the callback to call when the event is triggered.\n * @name onFilterChange\n * @function\n * @public\n */\n onFilterChange(callback) {\n this.observers_.register('filter-change', (query) => {\n // console.log('Query is ', query);\n if (callback) {\n callback(query);\n }\n });\n }\n\n _newElement() {\n return React.createElement(Suggest2, {\n fill: this.fillContainer,\n disabled: this.disabled,\n items: this.items,\n selectedItem: this.selectedItem,\n onQueryChange: (query) => {\n this.observers_.notify('filter-change', query);\n },\n inputValueRenderer: item => this.itemToText_ ? this.itemToText_(item) : item,\n onItemSelect: (item) => {\n this.selectedItem_ = item;\n this.render();\n this.observers_.notify('selection-change', this.selectedItem);\n },\n itemPredicate: this.itemPredicate_,\n itemRenderer: (item, props) => {\n if (!props.modifiers.matchesPredicate) {\n return null;\n }\n return React.createElement(MenuItem, {\n key: props.index,\n selected: props.modifiers.active,\n text: this.itemToText_ ? this.itemToText_(item) : item,\n label: this.itemToLabel_ ? this.itemToLabel_(item) : '',\n onFocus: props.handleFocus,\n onClick: props.handleClick,\n });\n },\n noResults: React.createElement(MenuItem, {\n text: this.noResults, disabled: true,\n }),\n popoverProps: {\n matchTargetWidth: true,\n }\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs file input element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalFileInput}\n */\nblueprintjs.MinimalFileInput = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @constructor\n */\n constructor(container) {\n super(container);\n this.observers_ = new observers.Subject();\n this.disabled_ = false;\n this.text_ = null;\n this.buttonText_ = null;\n this.fill_ = true;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get fill() {\n return this.fill_;\n }\n\n set fill(value) {\n this.fill_ = value;\n this.render();\n }\n\n get text() {\n return this.text_;\n }\n\n set text(value) {\n this.text_ = value;\n this.render();\n }\n\n get buttonText() {\n return this.buttonText_;\n }\n\n set buttonText(value) {\n this.buttonText_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(*): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (file) => {\n // console.log('Selected file is ', file);\n if (callback) {\n callback(file);\n }\n });\n }\n\n _newElement() {\n return React.createElement(FileInput, {\n disabled: this.disabled, text: this.text, buttonText: this.buttonText, fill: this.fill, onInputChange: (el) => {\n this.text = el.target.files[0].name;\n this.render();\n this.observers_.notify('selection-change', el.target.files[0]);\n },\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs radio group element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalRadioGroup}\n */\nblueprintjs.MinimalRadioGroup = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {string} label the group label (optional).\n * @param {boolean} inline true iif the radio buttons are to be displayed inline horizontally, false otherwise. (optional).\n * @constructor\n */\n constructor(container, label, inline) {\n super(container);\n this.label_ = label;\n this.inline_ = inline;\n this.observers_ = new observers.Subject();\n this.disabled_ = false;\n this.items_ = [];\n this.selectedItem_ = null;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get items() {\n return this.items_;\n }\n\n set items(values) {\n this.items_ = values;\n this.render();\n }\n\n get selectedItem() {\n return this.selectedItem_;\n }\n\n set selectedItem(value) {\n this.selectedItem_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(string): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (value) => {\n // console.log('Selected option is ', value);\n if (callback) {\n callback(value);\n }\n });\n }\n\n _newElement() {\n return React.createElement(RadioGroup, {\n label: this.label_,\n inline: this.inline_,\n disabled: this.disabled,\n options: this.items,\n selectedValue: this.selectedItem,\n onChange: (event) => {\n const selection = this.items.find(item => item.value === event.currentTarget.value);\n if (selection) {\n this.selectedItem = selection.value;\n this.observers_.notify('selection-change', selection);\n }\n },\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs text input element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalTextInput}\n */\nblueprintjs.MinimalTextInput = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {string} defaultValue the input default value (optional).\n * @param {string} icon the icon name (optional).\n * @param {string} intent the input intent in {none, primary, success, warning, danger} (optional).\n *\n * @constructor\n */\n constructor(container, defaultValue, icon, intent) {\n super(container);\n this.defaultValue_ = defaultValue;\n this.icon_ = icon;\n this.intent_ = intent;\n this.observers_ = new observers.Subject();\n this.id_ = 'i' + Math.random().toString(36).substring(2, 12);\n this.disabled_ = false;\n this.fillContainer_ = true;\n this.placeholder_ = null;\n this.render();\n }\n\n get icon() {\n return this.icon_;\n }\n\n set icon(value) {\n this.icon_ = value;\n this.render();\n }\n\n get intent() {\n return this.intent_;\n }\n\n set intent(value) {\n this.intent_ = value;\n this.render();\n }\n\n get fillContainer() {\n return this.fillContainer_;\n }\n\n set fillContainer(value) {\n this.fillContainer_ = value;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get placeholder() {\n return this.placeholder_;\n }\n\n set placeholder(value) {\n this.placeholder_ = value;\n this.render();\n }\n\n get value() {\n return document.getElementById(this.id_).value;\n }\n\n _newElement() {\n return React.createElement(InputGroup, {\n id: this.id_,\n disabled: this.disabled,\n placeholder: this.placeholder,\n defaultValue: this.defaultValue_,\n fill: this.fillContainer,\n leftIcon: this.icon,\n intent: this.intent,\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs text input element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalNumericInput}\n */\nblueprintjs.MinimalNumericInput = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {number} min the minimum value.\n * @param {number} max the maximum value.\n * @param {number} increment the internal increment.\n * @param {string} defaultValue the input default value (optional).\n * @param {string} icon the icon name (optional).\n * @param {string} intent the input intent in {none, primary, success, warning, danger} (optional).\n *\n * @constructor\n */\n constructor(container, min, max, increment, defaultValue, icon, intent) {\n super(container);\n this.min_ = min;\n this.max_ = max;\n this.increment_ = increment;\n this.defaultValue_ = defaultValue;\n this.icon_ = icon;\n this.intent_ = intent;\n this.id_ = 'i' + Math.random().toString(36).substring(2, 12);\n this.observers_ = new observers.Subject();\n this.disabled_ = false;\n this.fillContainer_ = true;\n this.placeholder_ = null;\n this.render();\n }\n\n get icon() {\n return this.icon_;\n }\n\n set icon(value) {\n this.icon_ = value;\n this.render();\n }\n\n get intent() {\n return this.intent_;\n }\n\n set intent(value) {\n this.intent_ = value;\n this.render();\n }\n\n get fillContainer() {\n return this.fillContainer_;\n }\n\n set fillContainer(value) {\n this.fillContainer_ = value;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get placeholder() {\n return this.placeholder_;\n }\n\n set placeholder(value) {\n this.placeholder_ = value;\n this.render();\n }\n\n get value() {\n return document.getElementById(this.id_).value;\n }\n\n /**\n * Listen to the `value-change` event.\n *\n * @param {function(number): void} callback the callback to call when the event is triggered.\n * @name onValueChange\n * @function\n * @public\n */\n onValueChange(callback) {\n this.observers_.register('value-change', (value) => {\n // console.log('Selected value is ' + value);\n if (callback) {\n callback(value);\n }\n });\n }\n\n _newElement() {\n return React.createElement(NumericInput, {\n id: this.id_,\n min: this.min_,\n max: this.max_,\n stepSize: this.increment_,\n disabled: this.disabled,\n placeholder: this.placeholder,\n defaultValue: this.defaultValue_,\n fill: this.fillContainer,\n leftIcon: this.icon,\n intent: this.intent,\n onValueChange: (value) => {\n this.observers_.notify('value-change', value);\n }\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs button element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalButton}\n */\nblueprintjs.MinimalButton = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {string} label the switch label.\n * @param {string} labelPosition the switch label position (in {left, center, right}) in respect to the element (optional).\n * @param {string} leftIcon the left icon name (optional).\n * @param {string} rightIcon the right icon name (optional).\n * @param {string} intent the input intent in {none, primary, success, warning, danger} (optional).\n *\n * @constructor\n */\n constructor(container, label, labelPosition, leftIcon, rightIcon, intent) {\n super(container);\n this.label_ = label;\n this.labelPosition_ = labelPosition === 'left' ? Alignment.LEFT : labelPosition === 'right' ? Alignment.RIGHT\n : Alignment.CENTER;\n this.leftIcon_ = leftIcon;\n this.rightIcon_ = rightIcon;\n this.intent_ = intent;\n this.observers_ = new observers.Subject();\n this.disabled_ = false;\n this.loading_ = false;\n this.fillContainer_ = true;\n this.render();\n }\n\n get leftIcon() {\n return this.leftIcon_;\n }\n\n set leftIcon(value) {\n this.leftIcon_ = value;\n this.render();\n }\n\n get rightIcon() {\n return this.rightIcon_;\n }\n\n set rightIcon(value) {\n this.rightIcon_ = value;\n this.render();\n }\n\n get intent() {\n return this.intent_;\n }\n\n set intent(value) {\n this.intent_ = value;\n this.render();\n }\n\n get fillContainer() {\n return this.fillContainer_;\n }\n\n set fillContainer(value) {\n this.fillContainer_ = value;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get loading() {\n return this.loading_;\n }\n\n set loading(value) {\n this.loading_ = value;\n this.render();\n }\n\n /**\n * Listen to the `click` event.\n *\n * @param {function(void): void} callback the callback to call when the event is triggered.\n * @name onClick\n * @function\n * @public\n */\n onClick(callback) {\n this.observers_.register('click', () => {\n // console.log('Clicked!');\n if (callback) {\n callback();\n }\n });\n }\n\n _newElement() {\n return React.createElement(Button, {\n text: this.label_,\n alignText: this.labelPosition_,\n disabled: this.disabled,\n fill: this.fillContainer,\n loading: this.loading,\n icon: this.leftIcon,\n rightIcon: this.rightIcon,\n intent: this.intent,\n onClick: () => {\n this.observers_.notify('click');\n }\n });\n }\n}\n","'use strict'\n\n/**\n * @module caches\n */\nexport const caches = {};\n\n/**\n * A very minimal cache. When the maximum size is reached, the oldest entry is removed from the cache.\n *\n * @param {number} maxSize the maximum number of entries to keep.\n * @memberOf module:caches\n * @constructor\n * @struct\n * @final\n */\ncaches.Cache = function (maxSize) {\n\n const maxSize_ = maxSize ? maxSize : 100;\n let queue_ = [];\n let map_ = {};\n\n /**\n * Returns the number of cached objects.\n *\n * @return {number} the number of cached objects.\n */\n this.size = function () {\n return Object.keys(map_).length;\n }\n\n /**\n * Check if a key has already been added to the cache.\n *\n * @param {string} key the key to check.\n * @return {boolean} true iif the key already exists, false otherwise.\n */\n this.contains = function (key) {\n return map_.hasOwnProperty(key);\n }\n\n /**\n * Adds a single cache entry.\n *\n * @param {string} key the entry key.\n * @param {*} value the entry value.\n * @return {*|null} the values previously associated with the given key.\n */\n this.put = function (key, value) {\n const prev = this.get(key);\n if (queue_.length >= maxSize_) {\n this.remove(queue_[0].key);\n }\n map_[key] = value;\n queue_.push({key: key, value: value});\n return prev;\n }\n\n /**\n * Returns a single cache entry.\n *\n * @param {string} key the key to get.\n * @return {*|null} the value associated with the given key.\n */\n this.get = function (key) {\n return this.contains(key) ? map_[key] : null;\n }\n\n /**\n * Returns a single cache entry or a default value if the cache key does not belong to the cache.\n *\n * @param {string} key the key to get.\n * @param {*|null} defaultValue the default value to return.\n */\n this.getOrDefault = function (key, defaultValue) {\n return this.contains(key) ? this.get(key) : defaultValue;\n }\n\n /**\n * Returns a single cache entry or add a new one if the cache key does not belong to the cache.\n *\n * @param key the key to get.\n * @param defaultValue the default to add to the cache.\n * @return {*|null}\n */\n this.getOrPut = function (key, defaultValue) {\n if (!this.contains(key)) {\n this.put(key, defaultValue);\n }\n return this.get(key);\n }\n\n /**\n * Removes a single cache entry.\n *\n * @param {string} key the key to evict.\n * @return {*|null} the value previously associated with the given key.\n */\n this.remove = function (key) {\n if (this.contains(key)) {\n const prev = this.get(key);\n queue_ = queue_.filter(entry => entry.key !== key);\n delete map_[key];\n return prev;\n }\n return null;\n }\n\n /**\n * Removes all cache entries.\n */\n this.invalidate = function () {\n map_ = {};\n queue_ = [];\n }\n}","'use strict'\n\n/**\n * @module dates\n */\nexport const dates = {};\n\n/**\n * Initializes a javascript {@link Date} from a string or number formatted as YYYYMMDD.\n *\n * @param {string|number} str a string or number formatted as YYYYMMDD.\n * @return {?Date} a javascript {@link Date}.\n * @memberOf module:dates\n */\ndates.yyyyMmDdToDate = function (str) {\n str = str ? ('' + str).trim() : '';\n if (str.length === 8) {\n const year = parseInt(str.substring(0, 4), 10);\n const month = parseInt(str.substring(4, 6), 10);\n const day = parseInt(str.substring(6, 8), 10);\n return new Date(year, month - 1, day);\n }\n return null;\n}\n\n/**\n * Initializes a javascript {@link Date} from a string or number formatted as DDMMYYYY.\n *\n * @param {string|number} str a string or number formatted as DDMMYYYY.\n * @return {?Date} a javascript {@link Date}.\n * @memberOf module:dates\n */\ndates.ddMmYyyyToDate = function (str) {\n str = str ? ('' + str).trim() : '';\n if (str.length === 8) {\n const day = parseInt(str.substring(0, 2), 10);\n const month = parseInt(str.substring(2, 4), 10);\n const year = parseInt(str.substring(4, 8), 10);\n return new Date(year, month - 1, day);\n }\n return null;\n}\n\n/**\n * Formats a javascript {@link Date} to a string formatted as YYYY-MM-DD.\n *\n * @param {Date} date a javascript {@link Date}.\n * @param {?string} separator a separator that will be inserted between the date parts.\n * @return {?string} a string formatted as YYYY-MM-DD.\n * @memberOf module:dates\n */\ndates.dateToYyyyMmDd = function (date, separator) {\n separator = separator || separator === '' ? separator : '-';\n return date instanceof Date ? date.getFullYear() + separator + (date.getMonth() < 9 ? '0' : '') + (date.getMonth()\n + 1) + separator + (date.getDate() < 10 ? '0' : '') + date.getDate() : null;\n}\n\n/**\n * Formats a javascript {@link Date} to a string formatted as DD-MM-YYYY.\n *\n * @param {Date} date a javascript {@link Date}.\n * @param {?string} separator a separator that will be inserted between the date parts.\n * @return {?string} a string formatted as DD-MM-YYYY.\n * @memberOf module:dates\n */\ndates.dateToDdMmYyyy = function (date, separator) {\n separator = separator || separator === '' ? separator : '-';\n return date instanceof Date ? (date.getDate() < 10 ? '0' : '') + date.getDate() + separator + (date.getMonth() < 9\n ? '0' : '') + (date.getMonth() + 1) + separator + date.getFullYear() : null;\n}","'use strict'\n\n/**\n * @module helpers\n */\nexport const helpers = {};\n\n/**\n * Converts a Javascript value to a base-64 encoded string.\n *\n * @param {*} obj a Javascript value, usually an object or array, to be converted.\n * @return {string} a base-64 encoded string.\n * @memberOf module:helpers\n */\nhelpers.toBase64 = function (obj) {\n return btoa(JSON.stringify(obj));\n}\n\n/**\n * Converts a base-64 encoded string to a Javascript value.\n *\n * @param {string} str a base-64 encoded string.\n * @return {*} a Javascript value.\n * @memberOf module:helpers\n */\nhelpers.fromBase64 = function (str) {\n return JSON.parse(atob(str));\n}\n\n/**\n * A version of {@link JSON.stringify} that returns a canonical JSON format.\n *\n * 'Canonical JSON' means that the same object should always be stringified to the exact same string.\n * JavaScripts native {@link JSON.stringify} does not guarantee any order for object keys when serializing.\n *\n * @param value the value to stringify.\n * @returns {string} the stringified value.\n * @memberOf module:helpers\n * @preserve The code is extracted from https://github.com/mirkokiefer/canonical-json.\n */\nhelpers.stringify = function (value) {\n\n function isObject(object) {\n return Object.prototype.toString.call(object) === '[object Object]'\n }\n\n function copyObjectWithSortedKeys(object) {\n if (isObject(object)) {\n const newObj = {}\n const keysSorted = Object.keys(object).sort()\n let key\n for (let i = 0, len = keysSorted.length; i < len; i++) {\n key = keysSorted[i]\n newObj[key] = copyObjectWithSortedKeys(object[key])\n }\n return newObj\n } else if (Array.isArray(object)) {\n return object.map(copyObjectWithSortedKeys)\n } else {\n return object\n }\n }\n\n return JSON.stringify(copyObjectWithSortedKeys(value))\n}\n\n/**\n * A simple 53-bits hashing algorithm with good enough distribution.\n *\n * @param {*} obj the value to hash.\n * @param {number} seed a seed.\n * @return {number} the hashed value.\n * @memberOf module:helpers\n * @preserve The code is extracted from https://stackoverflow.com/a/52171480.\n */\nhelpers.goodFastHash = function (obj, seed) {\n\n const newStr = obj ? helpers.stringify(obj) : '';\n const newSeed = seed ? seed : 0;\n let h1 = 0xdeadbeef ^ newSeed;\n let h2 = 0x41c6ce57 ^ newSeed;\n\n for (let i = 0, ch; i < newStr.length; i++) {\n ch = newStr.charCodeAt(i);\n h1 = Math.imul(h1 ^ ch, 2654435761);\n h2 = Math.imul(h2 ^ ch, 1597334677);\n }\n\n h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^ Math.imul(h2 ^ (h2 >>> 13), 3266489909);\n h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^ Math.imul(h1 ^ (h1 >>> 13), 3266489909);\n\n return 4294967296 * (2097151 & h2) + (h1 >>> 0);\n}\n\n/**\n * Inject multiple scripts.\n *\n * @param {Element} el the root node where the scripts will be injected.\n * @param {Array} urls the scripts URL.\n * @return a {Promise<*>}.\n */\nhelpers.injectScripts = function (el, urls) {\n\n let promise = null;\n\n for (let i = 0; i < urls.length; i++) {\n if (promise) {\n promise = promise.then(() => this.injectScript(el, urls[i]));\n } else {\n promise = this.injectScript(el, urls[i]);\n }\n }\n return promise;\n}\n\n/**\n * Inject a single script.\n *\n * @param {Element} el the root node where the script will be injected.\n * @param {string} url the script URL.\n * @return a {Promise<*>}.\n * @preserve The code is extracted from https://gist.github.com/james2doyle/28a59f8692cec6f334773007b31a1523.\n */\nhelpers.injectScript = function (el, url) {\n return el ? new Promise((resolve, reject) => {\n const script = document.createElement('script');\n script.src = url;\n script.async = true;\n script.onerror = function (err) {\n console.log('Script failed : ' + url, err);\n reject(url, script, err);\n }\n script.onload = function () {\n console.log('Script loaded : ' + url);\n resolve(url, script)\n }\n el.appendChild(script);\n }) : Promise.reject('invalid node');\n}\n\n/**\n * Inject multiple stylesheets.\n *\n * @param {Element} el the root node where the scripts will be injected.\n * @param {Array} urls the stylesheets URL.\n * @return a {Promise<*>}.\n */\nhelpers.injectStyles = function (el, urls) {\n\n let promise = null;\n\n for (let i = 0; i < urls.length; i++) {\n if (promise) {\n promise = promise.then(() => this.injectStyle(el, urls[i]));\n } else {\n promise = this.injectStyle(el, urls[i]);\n }\n }\n return promise;\n}\n\n/**\n * Inject a single stylesheet.\n *\n * @param {Element} el the root node where the script will be injected.\n * @param {string} url the stylesheet URL.\n * @return a {Promise<*>}.\n * @preserve The code is extracted from https://gist.github.com/james2doyle/28a59f8692cec6f334773007b31a1523.\n */\nhelpers.injectStyle = function (el, url) {\n return el ? new Promise((resolve, reject) => {\n const link = document.createElement('link');\n link.href = url;\n link.rel = 'stylesheet';\n el.appendChild(link);\n console.log('Stylesheet loaded : ' + url);\n resolve(url, link);\n }) : Promise.reject('invalid node');\n}\n\n/**\n * Chunk a list and gives the UI thread a chance to process any pending UI events between each chunk (keeps the UI active).\n *\n * @param {Array} array the array to chunk and process.\n * @param {function(Object, Object): void} callback the callback to call for each array element.\n * @param {Object} context misc. contextual information (optional).\n * @param {number} maxTimePerChunk the maximum time to spend (guidance) in the callback for each chunk (optional).\n *\n * @preserve The code is extracted from https://stackoverflow.com/a/10344560.\n */\nhelpers.forEach = function (array, callback, context, maxTimePerChunk) {\n\n array = array || [];\n context = context || {};\n callback = callback || function (item, context) {\n };\n maxTimePerChunk = maxTimePerChunk || 200;\n let index = 0;\n\n function now() {\n return new Date().getTime();\n }\n\n function doChunk() {\n\n const startTime = now();\n\n while (index < array.length && (now() - startTime) <= maxTimePerChunk) {\n callback(array[index], context);\n ++index;\n }\n if (index < array.length) {\n setTimeout(doChunk, 1);\n }\n }\n\n doChunk();\n}\n\n/**\n * Delay a javascript function call. Executes only the last call.\n *\n * @param func the function to execute.\n * @param timeout the delay before the function can be called.\n * @returns {function}\n */\nhelpers.debounceLast = function (func, timeout = 300) {\n let timer;\n return (...args) => {\n clearTimeout(timer);\n timer = setTimeout(() => {\n func.apply(this, args);\n }, timeout);\n };\n}\n\n/**\n * Delay a javascript function call. Executes only the first call.\n *\n * @param func the function to execute.\n * @param timeout the delay before the function can be called again.\n * @returns {function}\n */\nhelpers.debounceFirst = function (func, timeout = 300) {\n let timer;\n return (...args) => {\n if (!timer) {\n func.apply(this, args);\n }\n clearTimeout(timer);\n timer = setTimeout(() => {\n timer = undefined;\n }, timeout);\n };\n}\n\n/**\n * Download a JSON object or an array of JSON objects.\n *\n * @param filename the name of the downloaded file.\n * @param data the data to download.\n */\nhelpers.download = function (filename, data) {\n\n const blob = new Blob([JSON.stringify(data)], {type: \"application/json;charset=utf-8\"});\n const isIE = false || !!document.documentMode;\n\n if (isIE) {\n window.navigator.msSaveBlob(blob, filename);\n } else {\n const url = window.URL || window.webkitURL;\n const link = url.createObjectURL(blob);\n const a = document.createElement(\"a\");\n a.download = filename;\n a.href = link;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n }\n}","'use strict'\n\n/**\n * @module platform\n */\nexport const platform = {};\n\n/**\n * The HttpClient type.\n *\n * @memberOf module:platform\n * @constructor\n * @struct\n * @final\n */\nplatform.HttpClient = function () {\n\n let baseUrl_ = '';\n let baseUrlAutodetect_ = false;\n let token_ = '';\n let tokenAutodetect_ = false;\n\n const reset = () => {\n baseUrl_ = '';\n baseUrlAutodetect_ = false;\n token_ = '';\n tokenAutodetect_ = false;\n }\n\n const findTokenFromQueryString = () => {\n const urlParams = new URLSearchParams(window?.location?.search);\n const token = urlParams.get('token');\n return token ? token : '';\n }\n\n const findBaseUrlFromReferrer = () => {\n let origin = '';\n if (window && window.document && window.document.referrer) {\n const url = new URL(window.document.referrer);\n origin = url.origin;\n }\n return origin;\n }\n\n /**\n * Execute a Http request to a given platform endpoint.\n *\n * @param {string} endpoint the platform endpoint.\n * @param {Object} body the request payload.\n * @param {...*} customConfig the Http request configuration.\n * @return {Promise} the platform response.\n */\n const fetch = (endpoint, {body, ...customConfig} = {}) => {\n const headers = {'Content-Type': 'application/json'}\n const config = {\n method: 'GET', ...customConfig, headers: {\n ...headers, ...customConfig.headers,\n },\n }\n if (body) {\n if (config.method === 'GET') {\n endpoint += '?' + new URLSearchParams(body);\n } else {\n config.body = JSON.stringify(body);\n }\n }\n return window.fetch(endpoint, config).then(async response => {\n if (response.ok) {\n return await response.json();\n } else {\n const errorMessage = await response.json();\n return Promise.reject(new Error(errorMessage.error));\n }\n });\n }\n\n /**\n * Returns the API token.\n *\n * @return {string} the API token.\n */\n this.getToken = function () {\n return token_;\n }\n\n /**\n * Set the API token.\n *\n * @param {string} token The API token.\n */\n this.setToken = function (token) {\n tokenAutodetect_ = false;\n token_ = token;\n }\n\n /**\n * Checks if the API token is set.\n *\n * @returns {boolean} returns true iif the API token is set, false otherwise.\n */\n this.hasToken = function () {\n return token_ !== '';\n }\n\n /**\n * Returns the API base URL.\n *\n * @return {string} the API base URL.\n */\n this.getBaseUrl = function () {\n return baseUrl_;\n }\n\n /**\n * Set the API base URL.\n *\n * @param {string} url the API base URL.\n */\n this.setBaseUrl = function (url) {\n baseUrlAutodetect_ = false;\n baseUrl_ = url;\n }\n\n /**\n * Checks if the API base URL is set.\n *\n * @returns {boolean} true iif the API base URL is set, false otherwise.\n */\n this.hasBaseUrl = function () {\n return baseUrl_ !== '';\n }\n\n /**\n * Initializes the Http client.\n *\n * If you omit a parameter, we will try to autodetect it.\n * For `token`, we try to find it on the query string. Ex: `?token=your_api_token`.\n * For `baseUrl`, we try to find it from the referrer.\n *\n * @param {string} baseUrl the base URL eg. https://www.company.computablefacts.com\n * @param {string} token the token.\n */\n this.init = function (baseUrl, token) {\n\n reset();\n\n if (typeof token === 'undefined') {\n token_ = findTokenFromQueryString();\n tokenAutodetect_ = this.hasToken();\n // console.log('init-autodetect-token token=', token, '_tokenAutodetect=', _tokenAutodetect)\n } else {\n this.setToken(token)\n }\n\n if (typeof baseUrl === 'undefined') {\n baseUrl_ = findBaseUrlFromReferrer();\n baseUrlAutodetect_ = this.hasBaseUrl();\n // console.log('init-autodetect-baseUrl baseUrl=', baseUrl, 'baseUrlAutodetect_=', baseUrlAutodetect_)\n } else {\n this.setBaseUrl(baseUrl);\n }\n }\n\n /**\n * Checks if the API token and base URL have been automatically set.\n *\n * @return `true` if the API token and base URL have been automatically set during [[`init`]].\n */\n this.hasAutodetect = function () {\n return tokenAutodetect_ && baseUrlAutodetect_;\n }\n\n /**\n * Returns the user information based on the API token.\n *\n * @return {Promise} the user permissions and authorizations.\n */\n this.whoAmI = function () {\n return fetch(`${baseUrl_}/api/v2/public/whoami`, {\n headers: {\n Authorization: `Bearer ${token_}`\n }\n });\n }\n\n /**\n * Call the platform JSON-RPC endpoint.\n *\n * @param {Object} payload the request payload.\n * @return {Promise} the platform response.\n * @preserve The specification can be found at https://www.jsonrpc.org/specification.\n */\n this.fetch = function (payload) {\n return fetch(`${baseUrl_}/api/v2/public/json-rpc?api_token=${token_}`, {body: payload, method: 'POST'}).then(\n response => {\n if ('error' in response) {\n const error = response['error'];\n const message = '(' + error.code + ') ' + error.message + '\\n' + JSON.stringify(error.data);\n return Promise.reject(new Error(message));\n }\n return response['result'];\n });\n }\n\n /**\n * Call the `execute-problog-query` platform endpoint.\n *\n * @param {Object} params the request payload.\n * @return {Promise} the platform response.\n */\n this.executeProblogQuery = function (params) {\n return this.fetch({\n jsonrpc: '2.0', id: Date.now(), method: 'execute-problog-query', params: params\n });\n }\n\n /**\n * Call the `execute-sql-query` platform endpoint.\n *\n * @param {Object} params the request payload.\n * @return {Promise} the platform response.\n */\n this.executeSqlQuery = function (params) {\n return this.fetch({\n jsonrpc: '2.0', id: Date.now(), method: 'execute-sql-query', params: params\n });\n }\n\n /**\n * Call the `find-objects` platform endpoint.\n *\n * @param params the request payload.\n * @return {Promise} the platform response.\n */\n this.findObjects = function (params) {\n return this.fetch({\n jsonrpc: '2.0', id: Date.now(), method: 'find-objects', params: params\n });\n }\n\n /**\n * Call the `get-objects` platform endpoint.\n *\n * @param params the request payload.\n * @return {Promise>} the platform response.\n */\n this.getObjects = function (params) {\n return this.fetch({\n jsonrpc: '2.0', id: Date.now(), method: 'get-objects', params: params\n });\n }\n\n /**\n * Call the `get-flattened-objects` platform endpoint.\n *\n * @param params the request payload.\n * @return {Promise>} the platform response.\n */\n this.getFlattenedObjects = function (params) {\n return this.fetch({\n jsonrpc: '2.0', id: Date.now(), method: 'get-flattened-objects', params: params\n });\n }\n\n /**\n * Call the `find-terms` platform endpoint.\n *\n * @param params the request payload.\n * @return {Promise} the platform response.\n */\n this.findTerms = function (params) {\n return this.fetch({\n jsonrpc: '2.0', id: Date.now(), method: 'find-terms', params: params\n });\n }\n\n /**\n * Sink a single event.\n *\n * @param {string} type the event type.\n * @param {Array} propNames the event property names.\n * @param {Array} propValues the event property values.\n * @return {Promise} the created fact.\n */\n this.sinkEvent = function (type, propNames, propValues) {\n\n if (propNames.length !== propValues.length) {\n throw \"Mismatch between the number of names and values\"\n }\n\n const typeNormalized = 'event_' + type.replace(/-/g, '_').toLowerCase();\n const startDate = new Date();\n\n return fetch(`${baseUrl_}/api/v2/facts`, {\n body: {\n data: [{\n type: typeNormalized,\n values: propValues.map(prop => '' + prop),\n is_valid: true,\n start_date: startDate.toISOString(),\n }]\n }, method: 'POST', headers: {\n Authorization: `Bearer ${token_}`\n }\n });\n }\n\n /**\n * Source one or more events.\n *\n * @param {string} type the event type.\n * @param {Array} propNames the event property names.\n * @param {Array} propPatterns the list of patterns to match.\n * @param {number} maxNbResults the maximum number of events to return.\n * @return {Promise>} an array of events.\n */\n this.sourceEventsAsObjects = function (type, propNames, propPatterns, maxNbResults) {\n return this.sourceEvents(type, propNames, propPatterns, maxNbResults, 'objects');\n }\n\n /**\n * Source one or more events.\n *\n * @param {string} type the event type.\n * @param {Array} propNames the event property names.\n * @param {Array} propPatterns the list of patterns to match.\n * @param {number} maxNbResults the maximum number of events to return.\n * @return {Promise>>} an array of events.\n */\n this.sourceEventsAsArrays = function (type, propNames, propPatterns, maxNbResults) {\n return this.sourceEvents(type, propNames, propPatterns, maxNbResults, 'arrays_with_header');\n }\n\n /**\n * Source one or more events.\n *\n * @param {string} type the event type.\n * @param {Array} propNames the event property names.\n * @param {Object} propPatterns the list of patterns to match.\n * @param {number} maxNbResults the maximum number of events to return.\n * @param {string} format the returned events format. 'objects' returns an `Array`. Both 'arrays' and 'arrays_with_header' return an `Array>`.\n * @return {Promise|Array>>} an array of events.\n */\n this.sourceEvents = function (type, propNames, propPatterns, maxNbResults, format) {\n\n const newRule = (eventType, eventPropertyNames, patterns) => {\n\n let result = eventType + '(';\n result += eventPropertyNames.map(prop => prop.toUpperCase()).join(', ');\n result += ') :- ';\n result += 'fn_mysql_materialize_facts(\"{{ app_url }}/api/v3/facts/no_namespace/';\n result += eventType;\n result += '?alea=' + Math.random().toString(36).substring(2, 12);\n const filtersQuery = Object.entries(patterns).map(entry => entry[0] + '=' + entry[1]).join('&');\n result += filtersQuery ? '&' + filtersQuery : '';\n result += '\", \"{{ client }}\", \"{{ env }}\", \"{{ sftp_host }}\", \"{{ sftp_username }}\", \"{{ sftp_password }}\", ';\n result += eventPropertyNames.map((prop, i) => '\"value_' + i + '\", _, ' + prop.toUpperCase()).join(', ');\n result += ').';\n\n // console.log('newRule = ', result);\n return result.trim();\n }\n\n const pattern = {};\n\n for (let i = 0; i < propNames.length; i++) {\n if (propPatterns[propNames[i]]) {\n pattern['value_' + i] = propPatterns[propNames[i]];\n }\n }\n\n const typeNormalized = 'event_' + type.replace(/-/g, '_').toLowerCase();\n const rule = newRule(typeNormalized, propNames, pattern);\n const alea = Math.random().toString(36).substring(2, 8);\n\n return this.executeProblogQuery({\n problog_rules: [alea + '_' + rule],\n problog_query: alea + '_' + (rule.substring(0, rule.indexOf(':-')).trim()) + '?',\n format: format ? format : 'objects',\n sample_size: maxNbResults ? maxNbResults : 15,\n });\n }\n}","'use strict'\n\nimport {caches} from \"./caches\";\nimport {helpers} from \"./helpers\";\n\n/**\n * @module promises\n */\nexport const promises = {};\n\n/**\n * An object that has the ability to memoize promises returned by a given user-defined function.\n *\n * @param {number} maxCacheSize the maximum number of distinct calls to cache.\n * @param {Function} fn a user-defined function that returns a promise.\n * @memberOf module:promises\n * @constructor\n * @struct\n * @final\n */\npromises.Memoize = function (maxCacheSize, fn) {\n\n // Stats\n let hit_ = 0;\n let miss_ = 0;\n\n // Cache\n const cache_ = new caches.Cache(maxCacheSize);\n const function_ = fn;\n\n /**\n * Either read the cache or call the user-defined function and get a new promise.\n *\n * @param {...*} args a list of arguments to pass to the user-defined function.\n * @return {Promise} a promise to be resolved at a later stage.\n * @suppress {checkTypes}\n */\n this.promise = function (...args) {\n\n const cacheKey = helpers.goodFastHash(Array.from(args), 123).toString(10);\n\n if (cache_.contains(cacheKey)) {\n hit_++;\n return cache_.get(cacheKey);\n }\n\n cache_.put(cacheKey, function_(...args).catch(err => {\n cache_.remove(cacheKey);\n throw err;\n }));\n\n miss_++;\n return cache_.get(cacheKey);\n }\n\n /**\n * Return the number of cache hits.\n *\n * @return {number} the number of hits.\n */\n this.hits = function () {\n return hit_;\n }\n\n /**\n * Return the number of cache misses.\n *\n * @return {number} the number of misses.\n */\n this.misses = function () {\n return miss_;\n }\n\n /**\n * Return the cache hit rate.\n *\n * @return {number} the hit rate.\n */\n this.hitRate = function () {\n return hit_ / (hit_ + miss_);\n }\n\n /**\n * Return the cache miss rate.\n *\n * @return {number} the miss rate.\n */\n this.missRate = function () {\n return miss_ / (hit_ + miss_);\n }\n}\n","'use strict'\n\nimport {helpers} from \"./helpers\";\n\n/**\n * @module webcomponents\n * @deprecated\n */\nexport const webcomponents = {};\n\n/**\n * A skeleton to ease the creation of web components.\n *\n * @memberOf module:webcomponents\n * @type {webcomponents.WebComponent}\n * @extends {HTMLElement}\n */\nwebcomponents.WebComponent = class extends HTMLElement {\n\n /**\n * @constructor\n */\n constructor() {\n super();\n this.attachShadow({mode: 'open'});\n }\n\n /**\n * Called every time the element is inserted into the DOM.\n *\n * @name connectedCallback\n * @function\n * @protected\n * @override\n */\n connectedCallback() {\n\n const styles = this.externalStyles();\n const scripts = this.externalScripts();\n const template = this.template();\n\n const wrapper = document.createElement('div');\n wrapper.id = 'wcw'; // wcw = Web Component Wrapper\n this.shadowRoot.appendChild(wrapper);\n\n if (styles && styles.length > 0 && scripts && scripts.length > 0) {\n helpers.injectStyles(wrapper, styles).then(() => {\n helpers.injectScripts(wrapper, scripts).then(() => {\n if (template !== '') {\n wrapper.insertAdjacentHTML('beforeend', template);\n }\n this.renderedCallback();\n });\n });\n } else if ((!styles || styles.length === 0) && scripts && scripts.length > 0) {\n helpers.injectScripts(wrapper, scripts).then(() => {\n if (template !== '') {\n wrapper.insertAdjacentHTML('beforeend', template);\n }\n this.renderedCallback();\n });\n } else if (styles && styles.length > 0 && (!scripts || scripts.length === 0)) {\n helpers.injectStyles(wrapper, styles).then(() => {\n if (template !== '') {\n wrapper.insertAdjacentHTML('beforeend', template);\n }\n this.renderedCallback();\n });\n } else {\n if (template !== '') {\n wrapper.insertAdjacentHTML('beforeend', template);\n }\n this.renderedCallback();\n }\n }\n\n /**\n * Called every time the element is removed from the DOM.\n *\n * @name disconnectedCallback\n * @function\n * @protected\n * @override\n */\n disconnectedCallback() {\n }\n\n /**\n * Called after the `template` has been added to the DOM.\n *\n * @name renderedCallback\n * @function\n * @protected\n * @override\n */\n renderedCallback() {\n }\n\n /**\n * A list of stylesheets URL.\n *\n * @return {Array} an array of URL.\n * @name externalStyles\n * @function\n * @protected\n * @override\n */\n externalStyles() {\n return [];\n }\n\n /**\n * A list of scripts URL.\n *\n * @return {Array} an array of URL.\n * @name externalScripts\n * @function\n * @protected\n * @override\n */\n externalScripts() {\n return [];\n }\n\n /**\n * Returns the component HTML template.\n *\n * @return {string} the HTML.\n * @name template\n * @function\n * @protected\n */\n template() {\n return ``;\n }\n\n /**\n * Emit a custom event.\n *\n * @param {string} type the event type.\n * @param {Object|null} data any data structure to pass along with the event.\n * @param {Node|null} elem the element to attach the event to.\n * @return {boolean} returns true if either event's cancelable attribute value is false or its preventDefault() method was not invoked, and false otherwise.\n * @name emit\n * @function\n * @protected\n */\n emit(type, data = {}, elem = document) {\n const event = new CustomEvent(type, {\n bubbles: true, cancelable: true, detail: {\n component: this, data: data\n }\n });\n return (elem ? elem : document).dispatchEvent(event);\n }\n\n /**\n * Returns the component attribute value or a default value if none was found.\n *\n * @param {string} attr the attribute to get.\n * @param {string|null} defaultValue the default value.\n * @return {string|null} the attribute value if any, defaultValue otherwise.\n * @name getAttributeOrDefault\n * @function\n * @protected\n */\n getAttributeOrDefault(attr, defaultValue) {\n return this.hasAttribute(attr) ? this.getAttribute(attr) : defaultValue;\n }\n\n /**\n * Returns the first element with a given identifier or class name.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @return {Element|null} an HTML element.\n * @name getElement\n * @function\n * @protected\n */\n getElement(idOrClassName) {\n return this.shadowRoot.querySelector(idOrClassName);\n }\n\n /**\n * Get the first page element with a given identifier or class name.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @return {Element|null} an HTML element.\n * @name getPageElement\n * @function\n * @protected\n */\n getPageElement(idOrClassName) {\n return document.querySelector(idOrClassName);\n }\n\n /**\n * Add a given class to a given element.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @param {string} className the class name to add.\n * @name addCssClass\n * @function\n * @protected\n */\n addCssClass(idOrClassName, className) {\n const el = this.getElement(idOrClassName);\n if (el) {\n el.classList.add(className);\n }\n }\n\n /**\n * Remove a given class from a given element.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @param {string} className the class name to remove.\n * @name removeCssClass\n * @function\n * @protected\n */\n removeCssClass(idOrClassName, className) {\n const el = this.getElement(idOrClassName);\n if (el) {\n el.classList.remove(className);\n }\n }\n\n /**\n * Add a class if it does not already exist on a given element, remove it otherwise.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @param {string} className the class name to toggle.\n * @name toggleCssClass\n * @function\n * @protected\n */\n toggleCssClass(idOrClassName, className) {\n const el = this.getElement(idOrClassName);\n if (el) {\n el.classList.toggle(className);\n }\n }\n\n /**\n * Check if a given element has a given class.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @param {string} className the class name to search.\n * @return true if the element contains the given class, false otherwise.\n * @name includesCssClass\n * @function\n * @protected\n */\n includesCssClass(idOrClassName, className) {\n const el = this.getElement(idOrClassName);\n if (el) {\n return el.classList.contains(className);\n }\n return false;\n }\n\n /**\n * Get all classes associated to a given element.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @return {Array} the class names.\n * @name getAllCssClasses\n * @function\n * @protected\n */\n getAllCssClasses(idOrClassName) {\n const el = this.getElement(idOrClassName);\n if (el) {\n return el.className.split(' ').map(clazz => clazz.trim());\n }\n return [];\n }\n\n /**\n * Replace all classes associated to a given element.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @param {Array|string} classes the class names.\n * @name replaceAllCssClasses\n * @function\n * @protected\n */\n replaceAllCssClasses(idOrClassName, classes) {\n const el = this.getElement(idOrClassName);\n if (el) {\n if (Array.isArray(classes)) {\n el.className = classes.join(' ');\n } else {\n el.className = classes;\n }\n }\n }\n\n /**\n * Get the style associated to a given element.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @return {CSSStyleDeclaration|null} the element style.\n * @name getStyle\n * @function\n * @protected\n */\n getStyle(idOrClassName) {\n const el = this.getElement(idOrClassName);\n if (el) {\n return el.style;\n }\n return null;\n }\n\n /**\n * Get the actual computed style associated to a given element.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @return {CSSStyleDeclaration|null} the element computed style.\n * @name getComputedStyle\n * @function\n * @protected\n */\n getComputedStyle(idOrClassName) {\n const el = this.getElement(idOrClassName);\n if (el) {\n return window.getComputedStyle(el);\n }\n return null;\n }\n\n /**\n * Set the text associated to a given element.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @param {string} text the text to set.\n * @name setText\n * @function\n * @protected\n */\n setText(idOrClassName, text) {\n const el = this.getElement(idOrClassName);\n if (el) {\n el.textContent = text;\n }\n }\n\n /**\n * Set the HTML associated to a given element.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @param {string} html the html to set.\n * @name setHtml\n * @function\n * @protected\n */\n setHtml(idOrClassName, html) {\n const el = this.getElement(idOrClassName);\n if (el) {\n el.innerHTML = html;\n }\n }\n\n /**\n * Append an element to a given element.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @param {Element} element the element to append.\n * @name replaceContent\n * @function\n * @protected\n */\n replaceContent(idOrClassName, element) {\n const el = this.getElement(idOrClassName);\n if (el) {\n el.innerHTML = '';\n el.appendChild(element);\n }\n }\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"main.js","sources":["../../src/arrays.js","../../src/observers.js","../../src/widgets.js","../../src/strings.js","../../src/blueprintjs.js","../../src/caches.js","../../src/dates.js","../../src/helpers.js","../../src/platform.js","../../src/promises.js","../../src/webcomponents.js"],"sourcesContent":["'use strict'\n\n/**\n * @module arrays\n */\nexport const arrays = {};\n\n/**\n * Removes {@link undefined} elements from an array of strings or numbers and returns distinct values.\n * This function does not preserve the elements order.\n *\n * @param {Array} array an array of strings.\n * @return {Array} an array of distinct strings.\n * @memberOf module:arrays\n */\narrays.distinct = function (array) {\n return array instanceof Array ? Array.from(new Set(array.filter(el => el !== undefined))) : [];\n}\n\n/**\n * Removes {@link undefined} elements from an array of objects and return distinct objects i.e. unique by all properties.\n * This function does not preserve the elements order.\n *\n * @param {Array} array an array of objects.\n * @return {Array} an array of distinct objects.\n * @memberOf module:arrays\n */\narrays.distinctObjects = function (array) {\n return array instanceof Array ? array\n .filter(el => el !== undefined)\n .filter((el1, index, self) => self.findIndex(el2 => (JSON.stringify(el2) === JSON.stringify(el1))) === index) : [];\n}\n\n/**\n * Computes the intersection of two arrays of strings or numbers.\n *\n * @param {Array} array1 the first array.\n * @param {Array} array2 the second array.\n * @return {Array} the intersection of the two arrays.\n * @memberOf module:arrays\n */\narrays.intersect = function (array1, array2) {\n return array1 instanceof Array && array2 instanceof Array ? array1.filter(el => array2.includes(el)) : [];\n}\n\n","'use strict'\n\n/**\n * @module observers\n */\nexport const observers = {};\n\n/**\n * The Subject type.\n *\n * The observer pattern is a software design pattern in which an object, named the subject,\n * maintains a list of its dependents, called observers, and notifies them automatically of\n * any state changes, usually by calling one of their methods.\n *\n * @memberOf module:observers\n * @constructor\n * @struct\n * @final\n */\nobservers.Subject = function () {\n\n const observers = {};\n\n /**\n * Returns the number of observers for a given message type.\n *\n * @param {string} message the observed message.\n * @return {number} the number of observers.\n */\n this.numberOfObservers = function (message) {\n if (message) {\n return observers.hasOwnProperty(message) ? observers[message].length : 0;\n }\n let nbObservers = 0;\n for (const msg in observers) {\n nbObservers += observers[msg].length\n }\n return nbObservers;\n }\n\n /**\n * Register a callback for a given message type.\n *\n * @param {string} message the message to observe.\n * @param {Function} observer the callback to notify.\n */\n this.register = function (message, observer) {\n if (message && typeof message === 'string' && observer && observer instanceof Function) {\n if (!observers.hasOwnProperty(message)) {\n observers[message] = [];\n }\n observers[message].push(observer);\n }\n }\n\n /**\n * Unregister a callback for a given message type.\n *\n * @param {string} message the observed message.\n * @param {Function} observer the notified callback.\n */\n this.unregister = function (message, observer) {\n if (message && typeof message === 'string' && observer && observer instanceof Function && observers.hasOwnProperty(\n message)) {\n observers[message] = observers[message].filter(o => o !== observer);\n }\n }\n\n /**\n * Notify all observers listening to a given message type.\n *\n * @param {string} message the message type.\n * @param {...*} args a list of arguments to pass to each callback.\n */\n this.notify = function (message, ...args) {\n if (message && typeof message === 'string' && args && observers.hasOwnProperty(message)) {\n observers[message].forEach(observer => observer(...args));\n }\n }\n}\n","'use strict'\n\n/**\n * @module widgets\n */\nexport const widgets = {};\n\n/**\n * A skeleton to ease the creation of simple widgets.\n *\n * @memberOf module:widgets\n * @type {widgets.Widget}\n */\nwidgets.Widget = class {\n\n /**\n * @param {Element} container the parent element.\n * @constructor\n */\n constructor(container) {\n this.container_ = container;\n }\n\n /**\n * Returns the widget parent element.\n *\n * @return {Element} the parent element.\n * @name container\n * @function\n * @public\n */\n get container() {\n return this.container_;\n }\n\n /**\n * Sets the widget parent element.\n *\n * @param container\n * @name container\n * @function\n * @public\n */\n set container(container) {\n this.container_ = container;\n this.render();\n }\n\n /**\n * If the current widget creates more widgets, register them using this method.\n * It allows the current widget to properly removes its children from the DOM.\n *\n * @param {Widget} widget the widget to register.\n * @name register\n * @function\n * @protected\n */\n register(widget) {\n if (widget) {\n if (!this.widgets_) {\n this.widgets_ = [];\n }\n this.widgets_.push(widget);\n }\n }\n\n /**\n * In order to avoid a memory leak, properly remove the widget from the DOM.\n *\n * @name destroy\n * @function\n * @public\n */\n destroy() {\n\n if (this.widgets_) {\n\n // Remove registered widgets\n for (let i = 0; i < this.widgets_.length; i++) {\n this.widgets_[i].destroy();\n }\n this.widgets_ = [];\n }\n\n // Empty the container\n while (this.container.firstChild) {\n this.container.removeChild(this.container.firstChild);\n }\n }\n\n /**\n * Renders the widget.\n *\n * @name render\n * @function\n * @public\n */\n render() {\n this.destroy();\n const element = this._newElement();\n if (element) {\n this.container.appendChild(element);\n }\n }\n\n /**\n * Initializes the widget.\n *\n * @return {Element|null}\n * @name _newElement\n * @function\n * @protected\n */\n _newElement() {\n return null;\n }\n}","'use strict'\n\n/**\n * @module strings\n */\nexport const strings = {};\n\n/**\n * Escapes characters with special meaning in {@link RegExp}.\n *\n * @param {string} str the string to escape.\n * @return {string} the escaped string.\n * @memberOf module:strings\n */\nstrings.escapeCharactersWithSpecialMeaningInRegExp = function (str) {\n return str ? ('' + str).replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&' /* the whole matched string */) : '';\n}\n\n/**\n * Converts a string to a {@link RegExp} literal.\n *\n * @param {string} str the string to convert.\n * @param {string} flags the flags of the regular expression.\n * @return {RegExp} a {@link RegExp}.\n * @memberOf module:strings\n */\nstrings.toRegExp = function (str, flags) {\n\n // As of 2020-01-06, the DOT_ALL flag is not available on Firefox\n // If truly needed, use [^]* that reads \"match any character that is not nothing\"\n const newFlags = flags ? flags : 'im';\n const escapedString = strings.escapeCharactersWithSpecialMeaningInRegExp(str).split(/[\\s\\u00a0]+/).join(\n '(\\\\s|\\u00a0)*');\n return new RegExp(escapedString, newFlags);\n}\n\n/**\n * Removes diacritical marks from a string.\n *\n * @param {string} str the string to clean.\n * @param {boolean} preserveStringLength true iif the original string length must be preserved.\n * @return {string} the cleaned text i.e. without diacritical marks.\n * @memberOf module:strings\n * @preserve The code is extracted from https://web.archive.org/web/20121231230126/http://lehelk.com:80/2011/05/06/script-to-remove-diacritics/.\n */\nstrings.removeDiacritics = function (str, preserveStringLength) {\n\n str = str ? '' + str : '';\n\n const diacritics = [{\n base: 'A',\n letters: /[\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F]/g\n }, {\n base: 'B', letters: /[\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181]/g\n }, {\n base: 'C', letters: /[\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E]/g\n }, {\n base: 'D', letters: /[\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779]/g\n }, {\n base: 'E',\n letters: /[\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E]/g\n }, {\n base: 'F', letters: /[\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B]/g\n }, {\n base: 'G', letters: /[\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E]/g\n }, {\n base: 'H', letters: /[\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D]/g\n }, {\n base: 'I',\n letters: /[\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197]/g\n }, {base: 'J', letters: /[\\u004A\\u24BF\\uFF2A\\u0134\\u0248]/g}, {\n base: 'K', letters: /[\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2]/g\n }, {\n base: 'L',\n letters: /[\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780]/g\n }, {\n base: 'M', letters: /[\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C]/g\n }, {\n base: 'N',\n letters: /[\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4]/g\n }, {\n base: 'O',\n letters: /[\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C]/g\n }, {\n base: 'P', letters: /[\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754]/g\n }, {\n base: 'Q', letters: /[\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A]/g\n }, {\n base: 'R',\n letters: /[\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782]/g\n }, {\n base: 'S',\n letters: /[\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784]/g\n }, {\n base: 'T', letters: /[\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786]/g\n }, {\n base: 'U',\n letters: /[\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244]/g\n }, {\n base: 'V', letters: /[\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245]/g\n }, {\n base: 'W', letters: /[\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72]/g\n }, {base: 'X', letters: /[\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C]/g}, {\n base: 'Y', letters: /[\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE]/g\n }, {\n base: 'Z', letters: /[\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762]/g\n }, {\n base: 'a',\n letters: /[\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250]/g\n }, {\n base: 'b', letters: /[\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253]/g\n }, {\n base: 'c', letters: /[\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184]/g\n }, {\n base: 'd', letters: /[\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A]/g\n }, {\n base: 'e',\n letters: /[\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD]/g\n }, {\n base: 'f', letters: /[\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C]/g\n }, {\n base: 'g', letters: /[\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F]/g\n }, {\n base: 'h', letters: /[\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265]/g\n }, {\n base: 'i',\n letters: /[\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131]/g\n }, {\n base: 'j', letters: /[\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249]/g\n }, {\n base: 'k', letters: /[\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3]/g\n }, {\n base: 'l',\n letters: /[\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747]/g\n }, {\n base: 'm', letters: /[\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F]/g\n }, {\n base: 'n',\n letters: /[\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5]/g\n }, {\n base: 'o',\n letters: /[\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275]/g\n }, {\n base: 'p', letters: /[\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755]/g\n }, {\n base: 'q', letters: /[\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759]/g\n }, {\n base: 'r',\n letters: /[\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783]/g\n }, {\n base: 's',\n letters: /[\\u0073\\u24E2\\uFF53\\u00DF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B]/g\n }, {\n base: 't',\n letters: /[\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787]/g\n }, {\n base: 'u',\n letters: /[\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289]/g\n }, {\n base: 'v', letters: /[\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C]/g\n }, {\n base: 'w', letters: /[\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73]/g\n }, {base: 'x', letters: /[\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D]/g}, {\n base: 'y',\n letters: /[\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF]/g\n }, {\n base: 'z', letters: /[\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763]/g\n }];\n\n if (preserveStringLength === undefined || preserveStringLength === true) {\n diacritics.push({base: 'AA', letters: /\\uA732/g}, {base: 'AE', letters: /[\\u00C6\\u01FC\\u01E2]/g},\n {base: 'AO', letters: /\\uA734/g}, {base: 'AU', letters: /\\uA736/g}, {base: 'AV', letters: /[\\uA738\\uA73A]/g},\n {base: 'AY', letters: /\\uA73C/g}, {base: 'DZ', letters: /[\\u01F1\\u01C4]/g},\n {base: 'Dz', letters: /[\\u01F2\\u01C5]/g}, {base: 'LJ', letters: /\\u01C7/g}, {base: 'Lj', letters: /\\u01C8/g},\n {base: 'NJ', letters: /\\u01CA/g}, {base: 'Nj', letters: /\\u01CB/g}, {base: 'OI', letters: /\\u01A2/g},\n {base: 'OO', letters: /\\uA74E/g}, {base: 'OU', letters: /\\u0222/g}, {base: 'TZ', letters: /\\uA728/g},\n {base: 'VY', letters: /\\uA760/g}, {base: 'aa', letters: /\\uA733/g},\n {base: 'ae', letters: /[\\u00E6\\u01FD\\u01E3]/g}, {base: 'ao', letters: /\\uA735/g},\n {base: 'au', letters: /\\uA737/g}, {base: 'av', letters: /[\\uA739\\uA73B]/g}, {base: 'ay', letters: /\\uA73D/g},\n {base: 'dz', letters: /[\\u01F3\\u01C6]/g}, {base: 'hv', letters: /\\u0195/g}, {base: 'lj', letters: /\\u01C9/g},\n {base: 'nj', letters: /\\u01CC/g}, {base: 'oi', letters: /\\u01A3/g}, {base: 'ou', letters: /\\u0223/g},\n {base: 'oo', letters: /\\uA74F/g}, {base: 'tz', letters: /\\uA729/g}, {base: 'vy', letters: /\\uA761/g});\n }\n\n for (let i = 0; i < diacritics.length; i++) {\n str = str.replace(diacritics[i].letters, diacritics[i].base);\n }\n return str;\n}\n\n/**\n * The Pattern type.\n *\n * @param {RegExp} regexp the pattern to match.\n * @param {string} color the highlight color as a hexadecimal string.\n * @memberOf module:strings\n * @constructor\n * @struct\n * @final\n */\nstrings.Pattern = function (regexp, color) {\n this.regexp = regexp;\n this.color = color;\n}\n\n/**\n * The Highlight type.\n *\n * @param {string} matchedText the matched text fragment.\n * @param {number} matchedPage the page number (1-based) from which the snippet was extracted.\n * @param {string} rawSnippet a snippet of text surrounding the matched text fragment (about 300 characters).\n * @param {string} highlightedSnippet a snippet of text surrounding the matched and highlighted text fragment (about 300 characters).\n * @memberOf module:strings\n * @constructor\n * @struct\n * @final\n */\nstrings.Highlight = function (matchedText, matchedPage, rawSnippet, highlightedSnippet) {\n this.matchedText = matchedText;\n this.matchedPage = matchedPage;\n this.rawSnippet = rawSnippet\n this.highlightedSnippet = highlightedSnippet;\n}\n\n/**\n * The HighlightedText type.\n *\n * @param {string} text the whole text, highlighted.\n * @param {Array} snippets the snippet associated with each highlighted text fragment.\n * @memberOf module:strings\n * @constructor\n * @struct\n * @final\n */\nstrings.HighlightedText = function (text, snippets) {\n this.text = text;\n this.snippets = snippets;\n}\n\n/**\n * Highlights all occurrences of a given set of patterns in a string.\n *\n * @param {string} text the text to highlight.\n * @param {Array} patterns a set of patterns to match and highlight.\n * @return {strings.HighlightedText} the highlighted text.\n * @memberOf module:strings\n */\nstrings.highlight = function (text, patterns) {\n\n text = text ? '' + text : '';\n\n if (!patterns || patterns.length <= 0 || strings.isNullOrBlank(text)) {\n return new strings.HighlightedText(text, []);\n }\n\n let highlightedText = text;\n text = strings.removeDiacritics(text, true);\n\n if (text.length !== highlightedText.length) {\n highlightedText = text;\n }\n const highlights = patterns.flatMap(pattern => {\n\n const matcher = pattern.regexp;\n const matches = [];\n let match = null;\n\n while (match = matcher.exec(text)) {\n matches.push({\n start: match.index, end: match.index + match[0].length, color: pattern.color\n });\n }\n return matches;\n }).sort((a, b) => {\n if (a.start < b.start) {\n return 1;\n }\n if (a.start > b.start) {\n return -1;\n }\n return 0;\n }).map(position => {\n\n // TODO : deal with overlaps?\n const prefix = highlightedText.substring(0, position.start);\n const infix = highlightedText.substring(position.start, position.end);\n const suffix = highlightedText.substring(position.end);\n\n highlightedText = `${prefix}${infix}${suffix}`;\n\n const begin = Math.max(0, prefix.length - 50);\n const end = Math.min(150, suffix.length);\n const rawSnippet = `${prefix.substring(begin)}${infix}${suffix.substring(0, end)}`;\n let highlightedSnippet = `${prefix.substring(\n begin)}${infix}${suffix.substring(0, end)}`;\n const pages = prefix.split('\\f' /* page separator */).map((page, index) => index);\n const beginMark = highlightedSnippet.lastIndexOf('');\n\n if (beginMark && (!endMark || beginMark > endMark)) {\n highlightedSnippet = highlightedSnippet.substring(0, beginMark);\n }\n return new strings.Highlight(infix, pages.length, rawSnippet, highlightedSnippet);\n });\n return new strings.HighlightedText(highlightedText, highlights);\n}\n\n/**\n * Returns true iif a string is either null or blank, false otherwise.\n *\n * @param {string} str the string to check.\n * @return {boolean} true if the string is null or blank, false otherwise.\n * @memberOf module:strings\n */\nstrings.isNullOrBlank = function (str) {\n return !(typeof str === 'string' && str.trim() !== '');\n}\n\n/**\n * Prepends '0' to a string or number until a given length is reached.\n *\n * @param {string|number} str a string or number.\n * @param {number} targetLength the string target length.\n * @return {string} a padded string.\n * @memberOf module:strings\n */\nstrings.pad = function (str, targetLength) {\n return (str ? '' + str : '').padStart(targetLength, '0');\n}\n\n/**\n * Removes all '0' from the beginning of a string.\n *\n * @param {string} str a string.\n * @return {string} an un-padded string.\n * @memberOf module:strings\n */\nstrings.unpad = function (str) {\n str = str ? '' + str : '';\n let i = 0;\n for (; i < str.length && str[i] === '0'; i++) {\n }\n return str.substring(i);\n}\n\n/**\n * Checks if a string represents a numeric value.\n *\n * @param {string} str the string to check.\n * @return {boolean} true if the string is a number, false otherwise.\n * @memberOf module:strings\n * @preserve The code is extracted from https://stackoverflow.com/a/175787.\n */\nstrings.isNumeric = function (str) {\n return typeof str === 'string' ? !isNaN(str) && !isNaN(parseFloat(str)) : false;\n}\n\n/**\n * Formats null or blank values.\n *\n * @param {string|number} str the value to format.\n * @param {string} defaultValue the string to return if the value is either null or empty.\n * @return {string} the formatted value.\n */\nstrings.formatNullOrBlank = function (str, defaultValue) {\n str = str ? '' + str : '';\n return strings.isNullOrBlank(str) ? defaultValue : str;\n}\n\n/**\n * Returns true iif a string starts with 'MASKED_', false otherwise.\n *\n * @param {string} str the string to check.\n * @return {boolean} true iif the string starts with 'MASKED_', false otherwise.\n */\nstrings.isMasked = function (str) {\n return typeof str === 'string' ? str.trim().toUpperCase().startsWith('MASKED_') : false;\n}\n\n/**\n * Convert a string from camel case to snake case.\n *\n * @param {string} str the string in camel case.\n * @returns {string} the string in snake case.\n */\nstrings.camelToSnakeCase = function (str) {\n return typeof str === 'string' ? str.replace(/[A-Z]/g,\n (letter, idx) => idx === 0 ? letter.toLowerCase() : `_${letter.toLowerCase()}`) : null;\n}\n\n/**\n * Convert a string from snake case to camel case.\n *\n * @param {string} str the string in snake case.\n * @returns {string} the string in camel case.\n */\nstrings.snakeCaseToCamelCase = function (str) {\n return typeof str === 'string' ? str.replace(/_[a-z]/g,\n (group, idx) => idx === 0 ? group.replace('_', '') : group.toUpperCase().replace('_', '')) : null;\n}","'use strict'\n\nimport {observers} from \"./observers\";\nimport {widgets} from \"./widgets\";\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport {\n Alignment,\n Button,\n Card,\n Checkbox,\n Drawer,\n FileInput,\n Icon,\n InputGroup,\n Intent,\n Menu,\n MenuItem,\n NumericInput,\n Position,\n RadioGroup,\n RangeSlider,\n Slider,\n Spinner,\n SpinnerSize,\n Switch,\n Tab,\n Tabs,\n Toast,\n Toaster\n} from '@blueprintjs/core';\nimport {Cell, Column, ColumnHeaderCell, Table2, TableLoadingOption} from '@blueprintjs/table';\nimport {MultiSelect2, Select2, Suggest2} from '@blueprintjs/select';\nimport {TimePrecision} from '@blueprintjs/datetime';\nimport {DateInput2, DateRangeInput2} from '@blueprintjs/datetime2';\nimport {add, format, parse, sub} from \"date-fns\";\nimport {strings} from \"./strings\";\n\n/**\n * @module blueprintjs\n */\nexport const blueprintjs = {};\n\n/**\n * Base class that deals with injecting the common styles and scripts.\n *\n * @memberOf module:blueprintjs\n * @type {blueprintjs.Blueprintjs}\n */\nblueprintjs.Blueprintjs = class extends widgets.Widget {\n\n /**\n * @param {Element} container the parent element.\n * @constructor\n */\n constructor(container) {\n super(container);\n }\n\n /**\n * Populate a DOM element with Blueprintjs components.\n *\n * @param template the DOM element.\n * @param objs the components.\n */\n static populate(template, objs) {\n objs.forEach(obj => blueprintjs.Blueprintjs.component(template, obj));\n }\n\n /**\n * Create a Blueprintjs component from a JSON object.\n *\n * @param template the DOM element where the component will be added.\n * @param obj the component properties.\n */\n static component(template, obj) {\n\n // {\n // type: '',\n // container: '',\n // el: null,\n // ...\n // }\n const container = template.querySelector(`#${obj.container}`);\n if (!container) {\n return obj;\n }\n switch (obj.type) {\n case 'Table': {\n obj.el = new blueprintjs.MinimalTable(container);\n break;\n }\n case 'Select': {\n const itemToText = obj.item_to_text;\n const itemToLabel = obj.item_to_label;\n const itemPredicate = obj.item_predicate;\n const itemCreate = obj.item_create;\n obj.el = new blueprintjs.MinimalSelect(container, itemToText, itemToLabel, itemPredicate, itemCreate);\n break;\n }\n case 'Slider': {\n const min = obj.min;\n const max = obj.max;\n const increment = obj.increment;\n const displayIncrement = obj.display_increment;\n obj.el = new blueprintjs.MinimalSlider(container, min, max, increment, displayIncrement);\n break;\n }\n case 'RangeSlider': {\n const min = obj.min;\n const max = obj.max;\n const increment = obj.increment;\n const displayIncrement = obj.display_increment;\n const defaultMinValue = obj.default_min_value;\n const defaultMaxValue = obj.default_max_value;\n obj.el = new blueprintjs.MinimalRangeSlider(container, min, max, increment, displayIncrement, defaultMinValue,\n defaultMaxValue);\n break;\n }\n case 'Drawer': {\n const width = obj.width;\n obj.el = new blueprintjs.MinimalDrawer(container, width);\n break;\n }\n case 'Tabs': {\n obj.el = new blueprintjs.MinimalTabs(container);\n break;\n }\n case 'Spinner': {\n const size = obj.size;\n obj.el = new blueprintjs.MinimalSpinner(container, size);\n break;\n }\n case 'Switch': {\n const checked = obj.checked;\n const label = obj.label;\n const labelPosition = obj.label_position;\n const labelChecked = obj.label_checked;\n const labelUnchecked = obj.label_unchecked;\n obj.el = new blueprintjs.MinimalSwitch(container, checked, label, labelPosition, labelChecked, labelUnchecked);\n break;\n }\n case 'Toaster': {\n obj.el = new blueprintjs.MinimalToaster(container);\n break;\n }\n case 'Card': {\n const body = obj.body;\n obj.el = new blueprintjs.MinimalCard(container, body);\n break;\n }\n case 'Icon': {\n const icon = obj.icon;\n const intent = obj.intent;\n obj.el = new blueprintjs.MinimalIcon(container, icon, intent);\n break;\n }\n case 'Checkbox': {\n const checked = obj.checked;\n const label = obj.label;\n const labelPosition = obj.label_position;\n obj.el = new blueprintjs.MinimalCheckbox(container, checked, label, labelPosition);\n break;\n }\n case 'Date': {\n const format = obj.format;\n const minDate = obj.min_date;\n const maxDate = obj.max_date;\n obj.el = new blueprintjs.MinimalDate(container, format, minDate, maxDate);\n break;\n }\n case 'Datetime': {\n const format = obj.format;\n const minDate = obj.min_date;\n const maxDate = obj.max_date;\n const timePrecision = obj.default_precision;\n const defaultTimezone = obj.default_timezone;\n obj.el = new blueprintjs.MinimalDatetime(container, format, minDate, maxDate, timePrecision, defaultTimezone);\n break;\n }\n case 'DateRange': {\n const format = obj.format;\n const minDate = obj.min_date;\n const maxDate = obj.max_date;\n obj.el = new blueprintjs.MinimalDateRange(container, format, minDate, maxDate);\n break;\n }\n case 'MultiSelect': {\n const itemToText = obj.item_to_text;\n const itemToLabel = obj.item_to_label;\n const itemToTag = obj.item_to_tag;\n const itemPredicate = obj.item_predicate;\n const itemCreate = obj.item_create;\n obj.el = new blueprintjs.MinimalMultiSelect(container, itemToText, itemToLabel, itemToTag, itemPredicate,\n itemCreate);\n break;\n }\n case 'Suggest': {\n const itemToText = obj.item_to_text;\n const itemToLabel = obj.item_to_label;\n const itemPredicate = obj.item_predicate;\n obj.el = new blueprintjs.MinimalSuggest(container, itemToText, itemToLabel, itemPredicate);\n break;\n }\n case 'FileInput': {\n const multiple = obj.multiple;\n obj.el = new blueprintjs.MinimalFileInput(container, multiple);\n break;\n }\n case 'RadioGroup': {\n const label = obj.label;\n const inline = obj.inline;\n obj.el = new blueprintjs.MinimalRadioGroup(container, label, inline);\n break;\n }\n case 'TextInput': {\n const defaultValue = obj.default_value;\n const icon = obj.icon;\n const intent = obj.intent;\n obj.el = new blueprintjs.MinimalTextInput(container, defaultValue, icon, intent);\n break;\n }\n case 'NumericInput': {\n const min = obj.min;\n const max = obj.max;\n const increment = obj.increment;\n const defaultValue = obj.default_value;\n const icon = obj.icon;\n const intent = obj.intent;\n obj.el = new blueprintjs.MinimalNumericInput(container, min, max, increment, defaultValue, icon, intent);\n break;\n }\n case 'Button': {\n const label = obj.label;\n const labelPosition = obj.label_position;\n const leftIcon = obj.left_icon;\n const rightIcon = obj.right_icon;\n const intent = obj.intent;\n obj.el = new blueprintjs.MinimalButton(container, label, labelPosition, leftIcon, rightIcon, intent);\n break;\n }\n default:\n obj.el = null;\n break;\n }\n if (obj.el) {\n for (let key in obj) {\n if (key === 'type' || key === 'container' || key === 'el') {\n continue;\n }\n const prop = strings.snakeCaseToCamelCase(key);\n const desc = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(obj.el), prop);\n // console.log(prop, desc);\n if (desc) {\n if (desc.set) { // setter\n obj.el[prop] = obj[key];\n } else if (desc.writable) { // function\n obj.el[prop](obj[key]);\n }\n }\n }\n }\n return obj;\n }\n\n /**\n * In order to avoid a memory leak, properly remove the component from the DOM.\n *\n * @name destroy\n * @function\n * @protected\n */\n destroy() {\n\n if (this.widgets_) {\n\n // Remove registered widgets\n for (let i = 0; i < this.widgets_.length; i++) {\n this.widgets_[i].destroy();\n }\n this.widgets_ = [];\n }\n\n ReactDOM.unmountComponentAtNode(this.container);\n }\n\n /**\n * Renders the component.\n *\n * @name render\n * @function\n * @protected\n */\n render() {\n const element = this._newElement();\n if (element) {\n ReactDOM.render(element, this.container);\n }\n }\n\n /**\n * Initializes the component.\n *\n * @return {ReactElement|null}\n * @name _newElement\n * @function\n * @protected\n */\n _newElement() {\n return null;\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs table component.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalTable}\n */\nblueprintjs.MinimalTable = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {function(number, number, *): ReactElement} cellRenderer a function in charge of rendering a single cell (optional).\n * @constructor\n */\n constructor(container, cellRenderer) {\n super(container);\n this.cellRenderer_ = cellRenderer;\n this.observers_ = new observers.Subject();\n this.columns_ = [];\n this.columnWidths_ = [];\n this.columnTypes_ = [];\n this.rows_ = [];\n this.loadingOptions_ = [];\n this.render();\n }\n\n get columns() {\n return this.columns_;\n }\n\n set columns(value) {\n this.columns_ = value;\n this.render();\n }\n\n get columnTypes() {\n return this.columnTypes_;\n }\n\n set columnTypes(values) {\n this.columnTypes_ = values;\n this.render();\n }\n\n get columnWidths() {\n return this.columnWidths_;\n }\n\n set columnWidths(values) {\n this.columnWidths_ = values;\n this.render();\n }\n\n get rows() {\n return this.rows_;\n }\n\n set rows(values) {\n this.rows_ = values;\n this.render();\n }\n\n get loadingOptions() {\n return this.loadingOptions_;\n }\n\n set loadingOptions(values) {\n this.loadingOptions_ = values;\n this.render();\n }\n\n /**\n * Listen to the `sort` event.\n *\n * @param {function(string, string): void} callback the callback to call when the event is triggered.\n * @name onSortColumn\n * @function\n * @public\n */\n onSortColumn(callback) {\n this.observers_.register('sort', (column, order) => {\n // console.log('Sort ' + order + ' is ' + column);\n if (callback) {\n callback(column, order);\n }\n });\n }\n\n /**\n * Listen to the `fetch-next-rows` event.\n *\n * @param {function(number): void} callback the callback to call when the event is triggered.\n * @name onFetchNextRows\n * @function\n * @public\n */\n onFetchNextRows(callback) {\n this.observers_.register('fetch-next-rows', (nextRow) => {\n // console.log('Next row is ' + nextRow);\n if (callback) {\n callback(nextRow);\n }\n });\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(Array): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (regions) => {\n // console.log('Selected regions are ', regions);\n if (callback) {\n\n const cells = [];\n\n for (let i = 0; i < regions.length; i++) {\n\n if (!regions[i].hasOwnProperty('rows')) {\n continue; // ignore the region if a whole column has been selected\n }\n if (!regions[i].hasOwnProperty('cols')) {\n continue; // ignore the region if a whole row has been selected\n }\n\n const rows = regions[i].rows;\n const columns = regions[i].cols;\n\n for (let j = rows[0]; j <= rows[1]; j++) {\n for (let k = columns[0]; k <= columns[1]; k++) {\n cells.push({row_idx: j, col_idx: k, value: this.rows[j][k]});\n }\n }\n }\n callback(cells);\n }\n });\n }\n\n _newCell(self, rowIdx, colIdx) {\n return self.cellRenderer_ ? self.cellRenderer_(rowIdx, colIdx, self.rows[rowIdx][colIdx]) : React.createElement(\n Cell, {\n rowIndex: rowIdx, columnIndex: colIdx, style: {\n 'text-align': self.columnTypes[colIdx] === 'number' ? 'right' : 'left'\n }, children: React.createElement('div', {}, self.rows[rowIdx][colIdx]),\n });\n }\n\n _newColumnHeader(self, column) {\n return React.createElement(ColumnHeaderCell, {\n name: column, menuRenderer: () => {\n\n // Menu item for sorting the column in ascending order\n const menuItemSortAsc = React.createElement(MenuItem, {\n icon: 'sort-asc', text: 'Sort Asc', onClick: () => self.observers_.notify('sort', column, 'ASC'),\n });\n\n // Menu item for sorting the column in descending order\n const menuItemSortDesc = React.createElement(MenuItem, {\n icon: 'sort-desc', text: 'Sort Desc', onClick: () => self.observers_.notify('sort', column, 'DESC'),\n });\n\n return React.createElement(Menu, {\n children: [menuItemSortAsc, menuItemSortDesc]\n });\n }\n });\n }\n\n _newColumn(self, column) {\n return React.createElement(Column, {\n name: column,\n cellRenderer: (rowIdx, colIdx) => self._newCell(self, rowIdx, colIdx),\n columnHeaderCellRenderer: () => self._newColumnHeader(self, column),\n });\n }\n\n _newElement() {\n return React.createElement(Table2, {\n numRows: this.rows.length,\n children: this.columns.map(column => this._newColumn(this, column)),\n enableColumnReordering: true,\n loadingOptions: this.loadingOptions,\n columnWidths: this.columnWidths.length <= 0 ? null : this.columnWidths,\n onSelection: (regions) => {\n this.observers_.notify('selection-change', regions);\n },\n onVisibleCellsChange: (rowIndex, columnIndex) => {\n if (rowIndex.rowIndexEnd + 1 >= this.rows.length) {\n this.observers_.notify('fetch-next-rows', this.rows.length);\n }\n },\n onColumnsReordered: (oldIndex, newIndex, length) => {\n\n this.loadingOptions = [TableLoadingOption.CELLS];\n\n // First, reorder the rows header\n const oldColumnsOrder = this.columns;\n const newColumnsOrder = [];\n\n const oldColumnTypes = this.columnTypes;\n const newColumnTypes = [];\n\n for (let i = 0; i < oldColumnsOrder.length; i++) {\n if (!(oldIndex <= i && i < oldIndex + length)) {\n newColumnsOrder.push(oldColumnsOrder[i]);\n newColumnTypes.push(oldColumnTypes[i]);\n }\n }\n for (let k = oldIndex; k < oldIndex + length; k++) {\n newColumnsOrder.splice(newIndex + k - oldIndex, 0, oldColumnsOrder[k]);\n newColumnTypes.splice(newIndex + k - oldIndex, 0, oldColumnTypes[k]);\n }\n\n // console.log('Previous column order was [' + oldColumnsOrder.join(', ') + ']');\n // console.log('New column order is [' + newColumnsOrder.join(', ') + ']');\n\n // console.log('Previous column types were [' + oldColumnTypes.join(', ') + ']');\n // console.log('New column types is [' + newColumnTypes.join(', ') + ']');\n\n // Then, reorder the rows data\n const oldColumnsIndex = {};\n const newColumnsIndex = {};\n\n for (let i = 0; i < oldColumnsOrder.length; i++) {\n oldColumnsIndex[oldColumnsOrder[i]] = i;\n }\n for (let i = 0; i < newColumnsOrder.length; i++) {\n newColumnsIndex[i] = newColumnsOrder[i];\n }\n\n const oldRows = this.rows;\n const newRows = [];\n\n for (let i = 0; i < oldRows.length; i++) {\n\n const newRow = [];\n\n for (let j = 0; j < oldRows[i].length; j++) {\n newRow.push(oldRows[i][oldColumnsIndex[newColumnsIndex[j]]]);\n }\n newRows.push(newRow);\n }\n\n // Next, redraw the table\n this.columns = newColumnsOrder;\n this.columnTypes = newColumnTypes;\n this.rows = newRows;\n this.loadingOptions = [];\n },\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs select element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalSelect}\n */\nblueprintjs.MinimalSelect = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {function(*): string} itemToText a function that maps an item to the text to be displayed (optional).\n * @param {function(*): string} itemToLabel a function that maps an item to the label to be displayed (optional).\n * @param {function(string, *): boolean} itemPredicate a function that filters the internal list of items when user enters something in the input (optional).\n * @param {function(string): *} itemCreate a function that creates an item from a string (optional).\n * @constructor\n */\n constructor(container, itemToText, itemToLabel, itemPredicate, itemCreate) {\n super(container);\n this.itemToText_ = itemToText;\n this.itemToLabel_ = itemToLabel;\n this.itemPredicate_ = (query, item) => {\n if (itemPredicate) {\n return itemPredicate(query, item);\n }\n if (query && query !== '') {\n const txt = this.itemToText_ ? this.itemToText_(item) : item;\n return txt.trim().toLowerCase().indexOf(query.trim().toLowerCase()) >= 0;\n }\n return true;\n };\n this.itemCreate_ = itemCreate;\n this.observers_ = new observers.Subject();\n this.selectedItem_ = null;\n this.fillContainer_ = true;\n this.disabled_ = false;\n this.filterable_ = true;\n this.items_ = [];\n this.defaultText_ = 'Sélectionnez un élément...';\n this.noResults_ = 'Il n\\'y a aucun résultat pour cette recherche.';\n this.render();\n }\n\n get fillContainer() {\n return this.fillContainer_;\n }\n\n set fillContainer(value) {\n this.fillContainer_ = value;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get filterable() {\n return this.filterable_;\n }\n\n set filterable(value) {\n this.filterable_ = value;\n this.render();\n }\n\n get items() {\n return this.items_;\n }\n\n set items(values) {\n this.items_ = values;\n this.render();\n }\n\n get selectedItem() {\n return this.selectedItem_;\n }\n\n set selectedItem(value) {\n this.selectedItem_ = value;\n this.render();\n }\n\n get defaultText() {\n return this.defaultText_;\n }\n\n set defaultText(value) {\n this.defaultText_ = value;\n this.render();\n }\n\n get noResults() {\n return this.noResults_;\n }\n\n set noResults(value) {\n this.noResults_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(*): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (item) => {\n // console.log('Selected item is ', item);\n if (callback) {\n callback(item);\n }\n });\n }\n\n /**\n * Listen to the `filter-change` event.\n *\n * @param {function(*): void} callback the callback to call when the event is triggered.\n * @name onFilterChange\n * @function\n * @public\n */\n onFilterChange(callback) {\n this.observers_.register('filter-change', (filter) => {\n // console.log('Filter is ', filter);\n if (callback) {\n callback(filter);\n }\n });\n }\n\n _newButton() {\n return React.createElement(Button, {\n text: this.selectedItem ? this.itemToText_ ? this.itemToText_(this.selectedItem) : this.selectedItem\n : this.defaultText,\n alignText: 'left',\n rightIcon: 'double-caret-vertical',\n fill: this.fillContainer,\n disabled: this.disabled,\n });\n }\n\n _newElement() {\n return React.createElement(Select2, {\n fill: this.fillContainer,\n disabled: this.disabled,\n children: [this._newButton()],\n items: this.items,\n filterable: this.filterable,\n itemPredicate: this.itemPredicate_,\n onItemSelect: (item) => {\n // If the user selects twice the same item, removes the selection\n const selection = item === this.selectedItem ? null : item;\n this.selectedItem_ = selection;\n this.render();\n this.observers_.notify('selection-change', selection);\n },\n onQueryChange: (query) => {\n this.observers_.notify('filter-change', query);\n },\n itemRenderer: (item, props) => {\n if (!props.modifiers.matchesPredicate) {\n return null;\n }\n return React.createElement(MenuItem, {\n key: props.index,\n selected: props.modifiers.active,\n text: this.itemToText_ ? this.itemToText_(item) : item,\n label: this.itemToLabel_ ? this.itemToLabel_(item) : '',\n onFocus: props.handleFocus,\n onClick: props.handleClick,\n });\n },\n noResults: React.createElement(MenuItem, {\n text: this.noResults, disabled: true,\n }),\n popoverProps: {\n matchTargetWidth: true,\n },\n createNewItemFromQuery: this.itemCreate_,\n createNewItemRenderer: (query, active, handleClick) => {\n return React.createElement(MenuItem, {\n icon: 'add', selected: active, text: query, onClick: handleClick,\n });\n },\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs slider element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalSlider}\n */\nblueprintjs.MinimalSlider = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {number} min the minimum value.\n * @param {number} max the maximum value.\n * @param {number} increment the internal increment.\n * @param {number} displayIncrement the display increment.\n * @constructor\n */\n constructor(container, min, max, increment, displayIncrement) {\n super(container);\n this.min_ = min;\n this.max_ = max;\n this.increment_ = increment;\n this.displayIncrement_ = displayIncrement;\n this.value_ = min;\n this.observers_ = new observers.Subject();\n this.disabled_ = false;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get value() {\n return this.value_;\n }\n\n set value(value) {\n this.value_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(number): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (value) => {\n // console.log('Selected value is ', item);\n if (callback) {\n callback(value);\n }\n });\n }\n\n _newElement() {\n return React.createElement(Slider, {\n min: this.min_,\n max: this.max_,\n stepSize: this.increment_,\n labelStepSize: this.displayIncrement_,\n value: this.value,\n disabled: this.disabled,\n onChange: (value) => {\n this.value = value;\n this.observers_.notify('selection-change', value);\n },\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs range slider element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalRangeSlider}\n */\nblueprintjs.MinimalRangeSlider = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {number} min the minimum value.\n * @param {number} max the maximum value.\n * @param {number} increment the internal increment.\n * @param {number} displayIncrement the display increment.\n * @param {number} defaultMinValue the minimum value selected when the component is rendered the first time.\n * @param {number} defaultMaxValue the maximum value selected when the component is rendered the first time.\n * @constructor\n */\n constructor(container, min, max, increment, displayIncrement, defaultMinValue, defaultMaxValue) {\n super(container);\n this.min_ = min;\n this.max_ = max;\n this.increment_ = increment;\n this.displayIncrement_ = displayIncrement;\n this.minValue_ = defaultMinValue;\n this.maxValue_ = defaultMaxValue;\n this.observers_ = new observers.Subject();\n this.disabled_ = false;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get minValue() {\n return this.minValue_;\n }\n\n set minValue(value) {\n this.minValue_ = value;\n this.render();\n }\n\n get maxValue() {\n return this.maxValue_;\n }\n\n set maxValue(value) {\n this.maxValue_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(number, number): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (value) => {\n // console.log('Selected value is ', value);\n if (callback) {\n callback(value[0], value[1]);\n }\n });\n }\n\n _newElement() {\n return React.createElement(RangeSlider, {\n min: this.min_,\n max: this.max_,\n stepSize: this.increment_,\n labelStepSize: this.displayIncrement_,\n value: [this.minValue, this.maxValue],\n disabled: this.disabled,\n onChange: (value) => {\n this.minValue = value[0];\n this.maxValue = value[1];\n this.observers_.notify('selection-change', value);\n },\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs drawer element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalDrawer}\n */\nblueprintjs.MinimalDrawer = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {string} width the drawer width in pixels or percents (optional).\n * @constructor\n */\n constructor(container, width) {\n super(container);\n this.observers_ = new observers.Subject();\n this.show_ = false;\n this.width_ = width ? width : '75%';\n this.render();\n }\n\n get show() {\n return this.show_;\n }\n\n set show(value) {\n this.show_ = value;\n this.render();\n }\n\n /**\n * Listen to the `opening` event.\n *\n * @param {function(Element): void} callback the callback to call when the event is triggered.\n * @name onOpen\n * @function\n * @public\n */\n onOpen(callback) {\n this.observers_.register('opening', (el) => {\n if (callback) {\n callback(el);\n }\n });\n }\n\n /**\n * Listen to the `opened` event.\n *\n * @param {function(Element): void} callback the callback to call when the event is triggered.\n * @name onOpened\n * @function\n * @public\n */\n onOpened(callback) {\n this.observers_.register('opened', (el) => {\n if (callback) {\n callback(el);\n }\n });\n }\n\n /**\n * Listen to the `closing` event.\n *\n * @param {function(Element): void} callback the callback to call when the event is triggered.\n * @name onClose\n * @function\n * @public\n */\n onClose(callback) {\n this.observers_.register('closing', (el) => {\n if (callback) {\n callback(el);\n }\n });\n }\n\n _newElement() {\n return React.createElement(Drawer, {\n isOpen: this.show,\n size: this.width_,\n position: Position.RIGHT,\n onOpening: (el) => this.observers_.notify('opening', el),\n onOpened: (el) => this.observers_.notify('opened', el),\n onClose: () => this.show = false,\n onClosed: (el) => this.observers_.notify('closing', el),\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs tabs element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalTabs}\n */\nblueprintjs.MinimalTabs = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @constructor\n */\n constructor(container) {\n super(container);\n this.observers_ = new observers.Subject();\n this.tabs_ = [];\n this.render();\n }\n\n /**\n * Add a single tab to the nav bar.\n *\n * @param {string} name the tab name.\n * @param {Element} panel the tab content.\n * @name addTab\n * @function\n * @public\n */\n addTab(name, panel) {\n this.tabs_.push({\n name: name, panel: panel, disabled: false, is_selected: false,\n });\n this.render();\n }\n\n /**\n * Remove a single tab from the nav bar.\n *\n * @param {string} name the tab name.\n * @name removeTab\n * @function\n * @public\n */\n removeTab(name) {\n this.tabs_ = this.tabs_.filter(tab => tab.name !== name);\n this.render();\n }\n\n /**\n * Select the tab to display.\n *\n * @param {string} name the tab name.\n * @name selectTab\n * @function\n * @public\n */\n selectTab(name) {\n let selectedTab = null;\n this.tabs_.forEach(tab => {\n if (tab.name !== name) {\n tab.is_selected = false;\n } else {\n tab.is_selected = true;\n selectedTab = tab;\n }\n });\n this.render();\n if (selectedTab) {\n this.observers_.notify('selection-change', selectedTab.name, selectedTab.panel);\n }\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(string, Element): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (tabName, tabBody) => {\n // console.log('Selected tab is ' + tabName);\n if (callback) {\n callback(tabName, tabBody);\n }\n });\n }\n\n _newTab(tab) {\n return React.createElement(Tab, {\n id: tab.name, title: tab.name, panel: null, disabled: tab.disabled,\n });\n }\n\n _newElement() {\n const selectedTab = this.tabs_.find(tab => tab.is_selected);\n return React.createElement(Tabs, {\n id: 'tabs',\n children: this.tabs_.map(tab => this._newTab(tab)),\n selectedTabId: selectedTab ? selectedTab.name : null,\n onChange: (newTabId, oldTabId) => this.selectTab(newTabId)\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs spinner element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalSpinner}\n */\nblueprintjs.MinimalSpinner = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {string} size the spinner size in {'small', 'standard', 'large'}\n * @constructor\n */\n constructor(container, size) {\n super(container);\n this.value_ = null;\n if (size === 'small') {\n this.size_ = SpinnerSize.SMALL;\n } else if (size === 'large') {\n this.size_ = SpinnerSize.LARGE;\n } else {\n this.size_ = SpinnerSize.STANDARD;\n }\n this.render();\n }\n\n /**\n * Represents how far along an operation is.\n *\n * @param {number} value a value between 0 and 1 (inclusive) representing how far along an operation is.\n * @name advance\n * @function\n * @public\n */\n advance(value) {\n this.value_ = value;\n this.render();\n }\n\n _newElement() {\n return React.createElement(Spinner, {\n value: this.value_, size: this.size_,\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs switch element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalSwitch}\n */\nblueprintjs.MinimalSwitch = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {boolean} checked true iif the control should initially be checked, false otherwise (optional).\n * @param {string} label the switch label (optional).\n * @param {string} labelPosition the switch label position (in {left, right}) in respect to the element (optional).\n * @param {string} labelChecked the text to display inside the switch indicator when checked (optional).\n * @param {string} labelUnchecked the text to display inside the switch indicator when unchecked (optional).\n * @constructor\n */\n constructor(container, checked, label, labelPosition, labelChecked, labelUnchecked) {\n super(container);\n this.checked_ = checked;\n this.label_ = label;\n this.switchPosition_ = labelPosition === 'left' ? Alignment.RIGHT : Alignment.LEFT;\n this.labelChecked_ = labelChecked;\n this.labelUnchecked_ = labelUnchecked;\n this.observers_ = new observers.Subject();\n this.disabled_ = false;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get checked() {\n return this.checked_;\n }\n\n set checked(value) {\n this.checked_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(boolean): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (value) => {\n // console.log('Selected option is ' + (value ? 'checked' : 'unchecked'));\n if (callback) {\n callback(value ? 'checked' : 'unchecked');\n }\n });\n }\n\n _newElement() {\n return React.createElement(Switch, {\n disabled: this.disabled_,\n checked: this.checked_,\n label: this.label_,\n alignIndicator: this.switchPosition_,\n innerLabel: this.labelUnchecked_,\n innerLabelChecked: this.labelChecked_,\n onChange: () => {\n this.checked = !this.checked;\n this.observers_.notify('selection-change', this.checked);\n },\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs toast element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalToast}\n */\nblueprintjs.MinimalToast = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {string} message the message to display.\n * @param {string} intent the message intent in {none, primary, success, warning, danger} (optional).\n * @param {number} timeout the number of milliseconds to wait before automatically dismissing the toast (optional).\n * @constructor\n */\n constructor(container, message, intent, timeout) {\n super(container);\n this.timeout_ = timeout;\n this.message_ = message;\n if (intent === 'primary') {\n this.intent_ = Intent.PRIMARY;\n this.icon_ = null;\n } else if (intent === 'success') {\n this.intent_ = Intent.SUCCESS;\n this.icon_ = 'tick';\n } else if (intent === 'warning') {\n this.intent_ = Intent.WARNING;\n this.icon_ = 'warning-sign';\n } else if (intent === 'danger') {\n this.intent_ = Intent.DANGER;\n this.icon_ = 'warning-sign';\n } else {\n this.intent_ = Intent.NONE;\n this.icon_ = null;\n }\n this.observers_ = new observers.Subject();\n this.render();\n }\n\n /**\n * Listen to the `dismiss` event.\n *\n * @param {function(void): void} callback the callback to call when the event is triggered.\n * @name onDismiss\n * @function\n * @public\n */\n onDismiss(callback) {\n this.observers_.register('dismiss', (self) => {\n // console.log('Toast dismissed!');\n if (callback) {\n callback();\n }\n });\n }\n\n _newElement() {\n return React.createElement(Toast, {\n intent: this.intent_,\n icon: this.icon_,\n message: React.createElement('div', {}, this.message_),\n timeout: this.timeout_,\n onDismiss: () => this.observers_.notify('dismiss', this),\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs toaster element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalToaster}\n */\nblueprintjs.MinimalToaster = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @constructor\n */\n constructor(container) {\n super(container);\n this.toasts_ = [];\n this.render();\n }\n\n /**\n * Create and display a new toast.\n *\n * @param {string} message the message to display.\n * @param {string} intent the message intent in {none, primary, success, warning, danger} (optional).\n * @param {number} timeout the number of milliseconds to wait before automatically dismissing the toast (optional).\n * @name toast\n * @function\n * @public\n */\n toast(message, intent, timeout) {\n const toast = new blueprintjs.MinimalToast(this.container, message, intent, timeout);\n toast.el_ = toast._newElement();\n toast.onDismiss(() => {\n this.toasts_ = this.toasts_.filter(t => t !== toast);\n this.render();\n });\n this.toasts_.push(toast);\n this.render();\n }\n\n _newElement() {\n return React.createElement(Toaster, {\n children: this.toasts_.map(toast => toast.el_), position: Position.TOP,\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs card element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalCard}\n */\nblueprintjs.MinimalCard = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {Element} body the card body.\n * @constructor\n */\n constructor(container, body) {\n super(container);\n this.elevation_ = 0;\n this.interactive_ = false;\n this.observers_ = new observers.Subject();\n this.body_ = React.createElement('div', {\n ref: React.createRef(),\n });\n this.render(); // this.body_ must be rendered first!\n this.body_.ref.current.appendChild(body);\n this.render();\n }\n\n get elevation() {\n return this.elevation_;\n }\n\n set elevation(value) {\n this.elevation_ = !value ? 0 : value > 4 ? 4 : value;\n this.render();\n }\n\n get interactive() {\n return this.interactive_;\n }\n\n set interactive(value) {\n this.interactive_ = value;\n this.render();\n }\n\n /**\n * Listen to the `click` event.\n *\n * @param {function(void): void} callback the callback to call when the event is triggered.\n * @name onClick\n * @function\n * @public\n */\n onClick(callback) {\n this.observers_.register('click', (self) => {\n // console.log('Card clicked!');\n if (callback) {\n callback();\n }\n });\n }\n\n _newElement() {\n return React.createElement(Card, {\n children: [this.body_],\n elevation: this.elevation_,\n interactive: this.interactive_,\n onClick: () => this.observers_.notify('click', this),\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs icon element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalIcon}\n */\nblueprintjs.MinimalIcon = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {string} icon the icon name.\n * @param {string} intent the icon intent in {none, primary, success, warning, danger} (optional).\n * @constructor\n */\n constructor(container, icon, intent) {\n super(container);\n this.observers_ = new observers.Subject();\n this.icon_ = icon;\n this.size_ = 20;\n if (intent === 'primary') {\n this.intent_ = Intent.PRIMARY;\n } else if (intent === 'success') {\n this.intent_ = Intent.SUCCESS;\n } else if (intent === 'warning') {\n this.intent_ = Intent.WARNING;\n } else if (intent === 'danger') {\n this.intent_ = Intent.DANGER;\n } else {\n this.intent_ = Intent.NONE;\n }\n this.render();\n }\n\n get icon() {\n return this.icon_;\n }\n\n set icon(value) {\n this.icon_ = value;\n this.render();\n }\n\n get size() {\n return this.size_;\n }\n\n set size(value) {\n this.size_ = value;\n this.render();\n }\n\n get intent() {\n return this.intent_;\n }\n\n set intent(value) {\n this.intent_ = value;\n this.render();\n }\n\n /**\n * Listen to the `click` event.\n *\n * @param {function(void): void} callback the callback to call when the event is triggered.\n * @name onClick\n * @function\n * @public\n */\n onClick(callback) {\n this.observers_.register('click', (self) => {\n // console.log('Icon clicked!');\n if (callback) {\n callback();\n }\n });\n }\n\n _newElement() {\n return React.createElement(Icon, {\n icon: this.icon_, size: this.size_, intent: this.intent_, onClick: () => this.observers_.notify('click', this),\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs checkbox element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalCheckbox}\n */\nblueprintjs.MinimalCheckbox = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {boolean} checked true iif the control should initially be checked, false otherwise (optional).\n * @param {string} label the switch label (optional).\n * @param {string} labelPosition the switch label position (in {left, right}) in respect to the element (optional).\n * @constructor\n */\n constructor(container, checked, label, labelPosition) {\n super(container);\n this.observers_ = new observers.Subject();\n this.checked_ = checked;\n this.label_ = label;\n this.boxPosition_ = labelPosition === 'left' ? Alignment.RIGHT : Alignment.LEFT;\n this.disabled_ = false;\n this.render();\n }\n\n get checked() {\n return this.checked_;\n }\n\n set checked(value) {\n this.checked_ = value;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(string): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (value) => {\n // console.log('Selected option is ' + (value ? 'checked' : 'unchecked'));\n if (callback) {\n callback(value ? 'checked' : 'unchecked');\n }\n });\n }\n\n _newElement() {\n return React.createElement(Checkbox, {\n checked: this.checked_,\n disabled: this.disabled_,\n label: this.label_,\n alignIndicator: this.boxPosition_,\n onChange: () => {\n this.checked = !this.checked;\n this.observers_.notify('selection-change', this.checked);\n },\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs date element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalDate}\n */\nblueprintjs.MinimalDate = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {string} format the date format (optional). Default is 'yyyy-MM-dd'.\n * @param {Date} minDate the earliest date the user can select (optional).\n * @param {Date} maxDate the latest date the user can select (optional).\n * @constructor\n */\n constructor(container, format, minDate, maxDate) {\n super(container);\n this.observers_ = new observers.Subject();\n this.value_ = null;\n this.disabled_ = false;\n this.format_ = format ? format : 'yyyy-MM-dd';\n this.fillContainer_ = true;\n this.shortcuts_ = false;\n this.showActionsBar_ = false;\n this.minDate_ = minDate ? minDate : sub(new Date(), {years: 10});\n this.maxDate_ = maxDate ? maxDate : add(new Date(), {years: 10});\n this.render();\n }\n\n get date() {\n return this.value_;\n }\n\n set date(value) {\n this.value_ = value;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get shortcuts() {\n return this.shortcuts_;\n }\n\n set shortcuts(value) {\n this.shortcuts_ = value;\n this.render();\n }\n\n get showActionsBar() {\n return this.showActionsBar_;\n }\n\n set showActionsBar(value) {\n this.showActionsBar_ = value;\n this.render();\n }\n\n get fillContainer() {\n return this.fillContainer_;\n }\n\n set fillContainer(value) {\n this.fillContainer_ = value;\n this.render();\n }\n\n get minDate() {\n return this.minDate_;\n }\n\n set minDate(value) {\n this.minDate_ = value;\n this.render();\n }\n\n get maxDate() {\n return this.maxDate_;\n }\n\n set maxDate(value) {\n this.maxDate_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(string): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (value) => {\n // console.log('Selected date is ' + value);\n if (callback) {\n callback(value);\n }\n });\n }\n\n _newElement() {\n return React.createElement(DateInput2, {\n formatDate: (date) => format(date, this.format_),\n parseDate: (str) => parse(str, this.format_, new Date()),\n value: this.date,\n disabled: this.disabled,\n placeholder: this.format_,\n fill: this.fillContainer,\n minDate: this.minDate,\n maxDate: this.maxDate,\n shortcuts: this.shortcuts,\n showActionsBar: this.showActionsBar,\n showTimezoneSelect: this._showTimezone(),\n disableTimezoneSelect: this._disableTimezone(),\n timePrecision: this._timePrecision(),\n defaultTimezone: this._defaultTimezone(),\n onChange: (value) => {\n this.date = value;\n this.observers_.notify('selection-change', this.date);\n }\n });\n }\n\n /* Time-specific functions */\n\n _showTimezone() {\n return false;\n }\n\n _timePrecision() {\n return null;\n }\n\n _defaultTimezone() {\n return null;\n }\n\n _disableTimezone() {\n return true;\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs datetime element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalDatetime}\n */\nblueprintjs.MinimalDatetime = class extends blueprintjs.MinimalDate {\n\n /**\n * @param {Element} container the parent element.\n * @param {string} format the date format (optional). Default is 'yyyy-MM-dd HH:mm'.\n * @param {Date} minDate the earliest date the user can select (optional).\n * @param {Date} maxDate the latest date the user can select (optional).\n * @param {string} timePrecision the time precision in {'hours', 'minutes', 'seconds'} (optional). Default is 'minutes'.\n * @param {string} defaultTimezone the default time zone (optional). Default is 'UTC'.\n * @constructor\n */\n constructor(container, format, minDate, maxDate, timePrecision, defaultTimezone) {\n super(container, format ? format : 'yyyy-MM-dd HH:mm', minDate, maxDate);\n this.timePrecision_ = timePrecision === 'hours' ? TimePrecision.HOUR_24 : timePrecision === 'seconds'\n ? TimePrecision.SECOND : TimePrecision.MINUTE;\n this.defaultTimezone_ = defaultTimezone ? defaultTimezone : 'Etc/UTC';\n this.disableTimezone_ = false;\n this.render();\n }\n\n get disableTimezone() {\n return this.disableTimezone_;\n }\n\n set disableTimezone(value) {\n this.disableTimezone_ = value;\n this.render();\n }\n\n _showTimezone() {\n return true;\n }\n\n _timePrecision() {\n return this.timePrecision_;\n }\n\n _defaultTimezone() {\n return this.defaultTimezone_;\n }\n\n _disableTimezone() {\n return this.disableTimezone;\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs date range element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalDateRange}\n */\nblueprintjs.MinimalDateRange = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {string} format the date format (optional). Default is 'yyyy-MM-dd'.\n * @param {Date} minDate the earliest date the user can select (optional).\n * @param {Date} maxDate the latest date the user can select (optional).\n * @constructor\n */\n constructor(container, format, minDate, maxDate) {\n super(container);\n this.observers_ = new observers.Subject();\n this.disabled_ = false;\n this.shortcuts_ = true;\n this.dateMin_ = null;\n this.dateMax_ = null;\n this.format_ = format ? format : 'yyyy-MM-dd';\n this.minDate_ = minDate ? minDate : sub(new Date(), {years: 10});\n this.maxDate_ = maxDate ? maxDate : add(new Date(), {years: 10});\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get shortcuts() {\n return this.shortcuts_;\n }\n\n set shortcuts(value) {\n this.shortcuts_ = value;\n this.render();\n }\n\n get dateMin() {\n return this.dateMin_;\n }\n\n set dateMin(value) {\n this.dateMin_ = value;\n this.render();\n }\n\n get dateMax() {\n return this.dateMax_;\n }\n\n set dateMax(value) {\n this.dateMax_ = value;\n this.render();\n }\n\n get minDate() {\n return this.minDate_;\n }\n\n set minDate(value) {\n this.minDate_ = value;\n this.render();\n }\n\n get maxDate() {\n return this.maxDate_;\n }\n\n set maxDate(value) {\n this.maxDate_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(Date, Date): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (range) => {\n // console.log('Selected range is ' + range);\n if (callback) {\n callback(range[0], range[1]);\n }\n });\n }\n\n _newElement() {\n return React.createElement(DateRangeInput2, {\n formatDate: (date) => format(date, this.format_),\n parseDate: (str) => parse(str, this.format_, new Date()),\n value: [this.dateMin, this.dateMax],\n disabled: this.disabled,\n placeholder: this.format_,\n shortcuts: this.shortcuts,\n minDate: this.minDate,\n maxDate: this.maxDate,\n onChange: (range) => {\n this.dateMin = range[0];\n this.dateMax = range[1];\n this.observers_.notify('selection-change', range);\n }\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs multiselect element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalMultiSelect}\n */\nblueprintjs.MinimalMultiSelect = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {function(*): string} itemToText a function that maps an item to the text to be displayed (optional).\n * @param {function(*): string} itemToLabel a function that maps an item to the label to be displayed (optional).\n * @param {function(*): string} itemToTag a function that maps an item to the tag to be displayed (optional).\n * @param {function(string, *): boolean} itemPredicate a function that filters the internal list of items when user enters something in the input (optional).\n * @param {function(string): *} itemCreate a function that creates an item from a string (optional).\n * @constructor\n */\n constructor(container, itemToText, itemToLabel, itemToTag, itemPredicate, itemCreate) {\n super(container);\n this.itemToText_ = itemToText;\n this.itemToLabel_ = itemToLabel;\n this.itemToTag_ = itemToTag;\n this.itemPredicate_ = (query, item) => {\n if (itemPredicate) {\n return itemPredicate(query, item);\n }\n if (query && query !== '') {\n const txt = this.itemToText_ ? this.itemToText_(item) : item;\n return txt.trim().toLowerCase().indexOf(query.trim().toLowerCase()) >= 0;\n }\n return true;\n };\n this.itemCreate_ = itemCreate;\n this.observers_ = new observers.Subject();\n this.fillContainer_ = true;\n this.disabled_ = false;\n this.items_ = [];\n this.selectedItems_ = [];\n this.defaultText_ = 'Sélectionnez un élément...';\n this.noResults_ = 'Il n\\'y a aucun résultat pour cette recherche.';\n this.render();\n }\n\n get fillContainer() {\n return this.fillContainer_;\n }\n\n set fillContainer(value) {\n this.fillContainer_ = value;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get items() {\n return this.items_;\n }\n\n set items(values) {\n this.items_ = values;\n this.render();\n }\n\n get selectedItems() {\n return this.selectedItems_;\n }\n\n set selectedItems(value) {\n this.selectedItems_ = value ? value : [];\n this.render();\n }\n\n get defaultText() {\n return this.defaultText_;\n }\n\n set defaultText(value) {\n this.defaultText_ = value;\n this.render();\n }\n\n get noResults() {\n return this.noResults_;\n }\n\n set noResults(value) {\n this.noResults_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(*): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (items) => {\n // console.log('Selected items are ', items);\n if (callback) {\n callback(items);\n }\n });\n }\n\n /**\n * Listen to the `filter-change` event.\n *\n * @param {function(*): void} callback the callback to call when the event is triggered.\n * @name onFilterChange\n * @function\n * @public\n */\n onFilterChange(callback) {\n this.observers_.register('filter-change', (query) => {\n // console.log('Query is ', query);\n if (callback) {\n callback(query);\n }\n });\n }\n\n _newElement() {\n return React.createElement(MultiSelect2, {\n fill: this.fillContainer,\n disabled: this.disabled,\n items: this.items,\n selectedItems: this.selectedItems,\n placeholder: this.defaultText,\n onQueryChange: (query) => {\n this.observers_.notify('filter-change', query);\n },\n onClear: () => {\n this.selectedItems_ = [];\n this.render();\n this.observers_.notify('selection-change', this.selectedItems);\n },\n itemPredicate: this.itemPredicate_,\n onItemSelect: (item) => {\n // If the user selects twice the same item, do not add it twice to the selection\n const pos = this.selectedItems.map(i => this.itemToText_ ? this.itemToText_(i) : i).indexOf(\n this.itemToText_ ? this.itemToText_(item) : item);\n if (pos !== 0 && pos <= -1) {\n this.selectedItems_.push(item);\n this.render();\n this.observers_.notify('selection-change', this.selectedItems);\n }\n },\n itemRenderer: (item, props) => {\n if (!props.modifiers.matchesPredicate) {\n return null;\n }\n return React.createElement(MenuItem, {\n key: props.index,\n selected: props.modifiers.active,\n text: this.itemToText_ ? this.itemToText_(item) : item,\n label: this.itemToLabel_ ? this.itemToLabel_(item) : '',\n onFocus: props.handleFocus,\n onClick: props.handleClick,\n });\n },\n tagRenderer: (item) => {\n return this.itemToTag_ ? this.itemToTag_(item) : item;\n },\n onRemove: (tag, index) => {\n this.selectedItems_.splice(index, 1);\n this.render();\n this.observers_.notify('selection-change', this.selectedItems);\n },\n noResults: React.createElement(MenuItem, {\n text: this.noResults, disabled: true,\n }),\n popoverProps: {\n matchTargetWidth: true,\n },\n resetOnSelect: !!this.itemCreate_,\n createNewItemFromQuery: this.itemCreate_,\n createNewItemRenderer: (query, active, handleClick) => {\n return React.createElement(MenuItem, {\n icon: 'add', selected: active, text: query, onClick: handleClick,\n });\n },\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs suggest element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalSuggest}\n */\nblueprintjs.MinimalSuggest = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {function(*): string} itemToText a function that maps an item to the text to be displayed (optional).\n * @param {function(*): string} itemToLabel a function that maps an item to the label to be displayed (optional).\n * @param {function(*): boolean} itemPredicate a function that filters the internal list of items when user enters something in the input (optional).\n * @constructor\n */\n constructor(container, itemToText, itemToLabel, itemPredicate) {\n super(container);\n this.itemToText_ = itemToText;\n this.itemToLabel_ = itemToLabel;\n this.itemPredicate_ = (query, item) => {\n if (itemPredicate) {\n return itemPredicate(query, item);\n }\n if (query && query !== '') {\n const txt = this.itemToText_ ? this.itemToText_(item) : item;\n return txt.trim().toLowerCase().indexOf(query.trim().toLowerCase()) >= 0;\n }\n return true;\n };\n this.observers_ = new observers.Subject();\n this.fillContainer_ = true;\n this.disabled_ = false;\n this.items_ = [];\n this.selectedItem_ = null;\n this.defaultText_ = 'Saisissez un caractère...';\n this.noResults_ = 'Il n\\'y a aucun résultat pour cette recherche.';\n this.render();\n }\n\n get fillContainer() {\n return this.fillContainer_;\n }\n\n set fillContainer(value) {\n this.fillContainer_ = value;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get items() {\n return this.items_;\n }\n\n set items(values) {\n this.items_ = values;\n this.render();\n }\n\n get selectedItem() {\n return this.selectedItem_;\n }\n\n set selectedItem(value) {\n this.selectedItem_ = value ? value : null;\n this.render();\n }\n\n get defaultText() {\n return this.defaultText_;\n }\n\n set defaultText(value) {\n this.defaultText_ = value;\n const input = this.container.querySelector('input');\n if (input) {\n input.placeholder = this.defaultText_;\n }\n }\n\n get noResults() {\n return this.noResults_;\n }\n\n set noResults(value) {\n this.noResults_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(*): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (item) => {\n // console.log('Selected item is ', item);\n if (callback) {\n callback(item);\n }\n });\n }\n\n /**\n * Listen to the `filter-change` event.\n *\n * @param {function(*): void} callback the callback to call when the event is triggered.\n * @name onFilterChange\n * @function\n * @public\n */\n onFilterChange(callback) {\n this.observers_.register('filter-change', (query) => {\n // console.log('Query is ', query);\n if (callback) {\n callback(query);\n }\n });\n }\n\n _newElement() {\n return React.createElement(Suggest2, {\n fill: this.fillContainer,\n disabled: this.disabled,\n items: this.items,\n selectedItem: this.selectedItem,\n onQueryChange: (query) => {\n this.observers_.notify('filter-change', query);\n },\n inputValueRenderer: item => this.itemToText_ ? this.itemToText_(item) : item,\n onItemSelect: (item) => {\n this.selectedItem_ = item;\n this.render();\n this.observers_.notify('selection-change', this.selectedItem);\n },\n itemPredicate: this.itemPredicate_,\n itemRenderer: (item, props) => {\n if (!props.modifiers.matchesPredicate) {\n return null;\n }\n return React.createElement(MenuItem, {\n key: props.index,\n selected: props.modifiers.active,\n text: this.itemToText_ ? this.itemToText_(item) : item,\n label: this.itemToLabel_ ? this.itemToLabel_(item) : '',\n onFocus: props.handleFocus,\n onClick: props.handleClick,\n });\n },\n noResults: React.createElement(MenuItem, {\n text: this.noResults, disabled: true,\n }),\n popoverProps: {\n matchTargetWidth: true,\n }\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs file input element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalFileInput}\n */\nblueprintjs.MinimalFileInput = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {boolean} multiple true iif the user must be able to select one or more files.\n * @constructor\n */\n constructor(container, multiple) {\n super(container);\n this.observers_ = new observers.Subject();\n this.disabled_ = false;\n this.text_ = null;\n this.buttonText_ = null;\n this.fill_ = true;\n this.multiple_ = multiple === true;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get fill() {\n return this.fill_;\n }\n\n set fill(value) {\n this.fill_ = value;\n this.render();\n }\n\n get text() {\n return this.text_;\n }\n\n set text(value) {\n this.text_ = value;\n this.render();\n }\n\n get buttonText() {\n return this.buttonText_;\n }\n\n set buttonText(value) {\n this.buttonText_ = value;\n this.render();\n }\n\n get multiple() {\n return this.multiple_;\n }\n\n set multiple(value) {\n this.multiple_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(*): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (file) => {\n // console.log('Selected file is ', file);\n if (callback) {\n callback(file);\n }\n });\n }\n\n _newElement() {\n const props = {};\n if (this.multiple) {\n props.multiple = 'multiple';\n }\n return React.createElement(FileInput, {\n inputProps: props,\n disabled: this.disabled,\n text: this.text,\n buttonText: this.buttonText,\n fill: this.fill,\n onInputChange: (el) => {\n this.text = el.target.files[0].name;\n this.render();\n this.observers_.notify('selection-change', el.target.files[0]);\n },\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs radio group element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalRadioGroup}\n */\nblueprintjs.MinimalRadioGroup = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {string} label the group label (optional).\n * @param {boolean} inline true iif the radio buttons are to be displayed inline horizontally, false otherwise. (optional).\n * @constructor\n */\n constructor(container, label, inline) {\n super(container);\n this.label_ = label;\n this.inline_ = inline;\n this.observers_ = new observers.Subject();\n this.disabled_ = false;\n this.items_ = [];\n this.selectedItem_ = null;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get items() {\n return this.items_;\n }\n\n set items(values) {\n this.items_ = values;\n this.render();\n }\n\n get selectedItem() {\n return this.selectedItem_;\n }\n\n set selectedItem(value) {\n this.selectedItem_ = value;\n this.render();\n }\n\n /**\n * Listen to the `selection-change` event.\n *\n * @param {function(string): void} callback the callback to call when the event is triggered.\n * @name onSelectionChange\n * @function\n * @public\n */\n onSelectionChange(callback) {\n this.observers_.register('selection-change', (value) => {\n // console.log('Selected option is ', value);\n if (callback) {\n callback(value);\n }\n });\n }\n\n _newElement() {\n return React.createElement(RadioGroup, {\n label: this.label_,\n inline: this.inline_,\n disabled: this.disabled,\n options: this.items,\n selectedValue: this.selectedItem,\n onChange: (event) => {\n const selection = this.items.find(item => item.value === event.currentTarget.value);\n if (selection) {\n this.selectedItem = selection.value;\n this.observers_.notify('selection-change', selection);\n }\n },\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs text input element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalTextInput}\n */\nblueprintjs.MinimalTextInput = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {string} defaultValue the input default value (optional).\n * @param {string} icon the icon name (optional).\n * @param {string} intent the input intent in {none, primary, success, warning, danger} (optional).\n *\n * @constructor\n */\n constructor(container, defaultValue, icon, intent) {\n super(container);\n this.defaultValue_ = defaultValue;\n this.icon_ = icon;\n this.intent_ = intent;\n this.observers_ = new observers.Subject();\n this.id_ = 'i' + Math.random().toString(36).substring(2, 12);\n this.disabled_ = false;\n this.fillContainer_ = true;\n this.placeholder_ = null;\n this.render();\n }\n\n get icon() {\n return this.icon_;\n }\n\n set icon(value) {\n this.icon_ = value;\n this.render();\n }\n\n get intent() {\n return this.intent_;\n }\n\n set intent(value) {\n this.intent_ = value;\n this.render();\n }\n\n get fillContainer() {\n return this.fillContainer_;\n }\n\n set fillContainer(value) {\n this.fillContainer_ = value;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get placeholder() {\n return this.placeholder_;\n }\n\n set placeholder(value) {\n this.placeholder_ = value;\n this.render();\n }\n\n get value() {\n return document.getElementById(this.id_).value;\n }\n\n _newElement() {\n return React.createElement(InputGroup, {\n id: this.id_,\n disabled: this.disabled,\n placeholder: this.placeholder,\n defaultValue: this.defaultValue_,\n fill: this.fillContainer,\n leftIcon: this.icon,\n intent: this.intent,\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs text input element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalNumericInput}\n */\nblueprintjs.MinimalNumericInput = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {number} min the minimum value.\n * @param {number} max the maximum value.\n * @param {number} increment the internal increment.\n * @param {string} defaultValue the input default value (optional).\n * @param {string} icon the icon name (optional).\n * @param {string} intent the input intent in {none, primary, success, warning, danger} (optional).\n *\n * @constructor\n */\n constructor(container, min, max, increment, defaultValue, icon, intent) {\n super(container);\n this.min_ = min;\n this.max_ = max;\n this.increment_ = increment;\n this.defaultValue_ = defaultValue;\n this.icon_ = icon;\n this.intent_ = intent;\n this.id_ = 'i' + Math.random().toString(36).substring(2, 12);\n this.observers_ = new observers.Subject();\n this.disabled_ = false;\n this.fillContainer_ = true;\n this.placeholder_ = null;\n this.render();\n }\n\n get icon() {\n return this.icon_;\n }\n\n set icon(value) {\n this.icon_ = value;\n this.render();\n }\n\n get intent() {\n return this.intent_;\n }\n\n set intent(value) {\n this.intent_ = value;\n this.render();\n }\n\n get fillContainer() {\n return this.fillContainer_;\n }\n\n set fillContainer(value) {\n this.fillContainer_ = value;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get placeholder() {\n return this.placeholder_;\n }\n\n set placeholder(value) {\n this.placeholder_ = value;\n this.render();\n }\n\n get value() {\n return document.getElementById(this.id_).value;\n }\n\n /**\n * Listen to the `value-change` event.\n *\n * @param {function(number): void} callback the callback to call when the event is triggered.\n * @name onValueChange\n * @function\n * @public\n */\n onValueChange(callback) {\n this.observers_.register('value-change', (value) => {\n // console.log('Selected value is ' + value);\n if (callback) {\n callback(value);\n }\n });\n }\n\n _newElement() {\n return React.createElement(NumericInput, {\n id: this.id_,\n min: this.min_,\n max: this.max_,\n stepSize: this.increment_,\n disabled: this.disabled,\n placeholder: this.placeholder,\n defaultValue: this.defaultValue_,\n fill: this.fillContainer,\n leftIcon: this.icon,\n intent: this.intent,\n onValueChange: (value) => {\n this.observers_.notify('value-change', value);\n }\n });\n }\n}\n\n/**\n * A skeleton to ease the creation of a minimal Blueprintjs button element.\n *\n * @memberOf module:blueprintjs\n * @extends {blueprintjs.Blueprintjs}\n * @type {blueprintjs.MinimalButton}\n */\nblueprintjs.MinimalButton = class extends blueprintjs.Blueprintjs {\n\n /**\n * @param {Element} container the parent element.\n * @param {string} label the switch label.\n * @param {string} labelPosition the switch label position (in {left, center, right}) in respect to the element (optional).\n * @param {string} leftIcon the left icon name (optional).\n * @param {string} rightIcon the right icon name (optional).\n * @param {string} intent the input intent in {none, primary, success, warning, danger} (optional).\n *\n * @constructor\n */\n constructor(container, label, labelPosition, leftIcon, rightIcon, intent) {\n super(container);\n this.label_ = label;\n this.labelPosition_ = labelPosition === 'left' ? Alignment.LEFT : labelPosition === 'right' ? Alignment.RIGHT\n : Alignment.CENTER;\n this.leftIcon_ = leftIcon;\n this.rightIcon_ = rightIcon;\n this.intent_ = intent;\n this.observers_ = new observers.Subject();\n this.disabled_ = false;\n this.loading_ = false;\n this.fillContainer_ = true;\n this.render();\n }\n\n get leftIcon() {\n return this.leftIcon_;\n }\n\n set leftIcon(value) {\n this.leftIcon_ = value;\n this.render();\n }\n\n get rightIcon() {\n return this.rightIcon_;\n }\n\n set rightIcon(value) {\n this.rightIcon_ = value;\n this.render();\n }\n\n get intent() {\n return this.intent_;\n }\n\n set intent(value) {\n this.intent_ = value;\n this.render();\n }\n\n get fillContainer() {\n return this.fillContainer_;\n }\n\n set fillContainer(value) {\n this.fillContainer_ = value;\n this.render();\n }\n\n get disabled() {\n return this.disabled_;\n }\n\n set disabled(value) {\n this.disabled_ = value;\n this.render();\n }\n\n get loading() {\n return this.loading_;\n }\n\n set loading(value) {\n this.loading_ = value;\n this.render();\n }\n\n /**\n * Listen to the `click` event.\n *\n * @param {function(void): void} callback the callback to call when the event is triggered.\n * @name onClick\n * @function\n * @public\n */\n onClick(callback) {\n this.observers_.register('click', () => {\n // console.log('Clicked!');\n if (callback) {\n callback();\n }\n });\n }\n\n _newElement() {\n return React.createElement(Button, {\n text: this.label_,\n alignText: this.labelPosition_,\n disabled: this.disabled,\n fill: this.fillContainer,\n loading: this.loading,\n icon: this.leftIcon,\n rightIcon: this.rightIcon,\n intent: this.intent,\n onClick: () => {\n this.observers_.notify('click');\n }\n });\n }\n}\n","'use strict'\n\n/**\n * @module caches\n */\nexport const caches = {};\n\n/**\n * A very minimal cache. When the maximum size is reached, the oldest entry is removed from the cache.\n *\n * @param {number} maxSize the maximum number of entries to keep.\n * @memberOf module:caches\n * @constructor\n * @struct\n * @final\n */\ncaches.Cache = function (maxSize) {\n\n const maxSize_ = maxSize ? maxSize : 100;\n let queue_ = [];\n let map_ = {};\n\n /**\n * Returns the number of cached objects.\n *\n * @return {number} the number of cached objects.\n */\n this.size = function () {\n return Object.keys(map_).length;\n }\n\n /**\n * Check if a key has already been added to the cache.\n *\n * @param {string} key the key to check.\n * @return {boolean} true iif the key already exists, false otherwise.\n */\n this.contains = function (key) {\n return map_.hasOwnProperty(key);\n }\n\n /**\n * Adds a single cache entry.\n *\n * @param {string} key the entry key.\n * @param {*} value the entry value.\n * @return {*|null} the values previously associated with the given key.\n */\n this.put = function (key, value) {\n const prev = this.get(key);\n if (queue_.length >= maxSize_) {\n this.remove(queue_[0].key);\n }\n map_[key] = value;\n queue_.push({key: key, value: value});\n return prev;\n }\n\n /**\n * Returns a single cache entry.\n *\n * @param {string} key the key to get.\n * @return {*|null} the value associated with the given key.\n */\n this.get = function (key) {\n return this.contains(key) ? map_[key] : null;\n }\n\n /**\n * Returns a single cache entry or a default value if the cache key does not belong to the cache.\n *\n * @param {string} key the key to get.\n * @param {*|null} defaultValue the default value to return.\n */\n this.getOrDefault = function (key, defaultValue) {\n return this.contains(key) ? this.get(key) : defaultValue;\n }\n\n /**\n * Returns a single cache entry or add a new one if the cache key does not belong to the cache.\n *\n * @param key the key to get.\n * @param defaultValue the default to add to the cache.\n * @return {*|null}\n */\n this.getOrPut = function (key, defaultValue) {\n if (!this.contains(key)) {\n this.put(key, defaultValue);\n }\n return this.get(key);\n }\n\n /**\n * Removes a single cache entry.\n *\n * @param {string} key the key to evict.\n * @return {*|null} the value previously associated with the given key.\n */\n this.remove = function (key) {\n if (this.contains(key)) {\n const prev = this.get(key);\n queue_ = queue_.filter(entry => entry.key !== key);\n delete map_[key];\n return prev;\n }\n return null;\n }\n\n /**\n * Removes all cache entries.\n */\n this.invalidate = function () {\n map_ = {};\n queue_ = [];\n }\n}","'use strict'\n\n/**\n * @module dates\n */\nexport const dates = {};\n\n/**\n * Initializes a javascript {@link Date} from a string or number formatted as YYYYMMDD.\n *\n * @param {string|number} str a string or number formatted as YYYYMMDD.\n * @return {?Date} a javascript {@link Date}.\n * @memberOf module:dates\n */\ndates.yyyyMmDdToDate = function (str) {\n str = str ? ('' + str).trim() : '';\n if (str.length === 8) {\n const year = parseInt(str.substring(0, 4), 10);\n const month = parseInt(str.substring(4, 6), 10);\n const day = parseInt(str.substring(6, 8), 10);\n return new Date(year, month - 1, day);\n }\n return null;\n}\n\n/**\n * Initializes a javascript {@link Date} from a string or number formatted as DDMMYYYY.\n *\n * @param {string|number} str a string or number formatted as DDMMYYYY.\n * @return {?Date} a javascript {@link Date}.\n * @memberOf module:dates\n */\ndates.ddMmYyyyToDate = function (str) {\n str = str ? ('' + str).trim() : '';\n if (str.length === 8) {\n const day = parseInt(str.substring(0, 2), 10);\n const month = parseInt(str.substring(2, 4), 10);\n const year = parseInt(str.substring(4, 8), 10);\n return new Date(year, month - 1, day);\n }\n return null;\n}\n\n/**\n * Formats a javascript {@link Date} to a string formatted as YYYY-MM-DD.\n *\n * @param {Date} date a javascript {@link Date}.\n * @param {?string} separator a separator that will be inserted between the date parts.\n * @return {?string} a string formatted as YYYY-MM-DD.\n * @memberOf module:dates\n */\ndates.dateToYyyyMmDd = function (date, separator) {\n separator = separator || separator === '' ? separator : '-';\n return date instanceof Date ? date.getFullYear() + separator + (date.getMonth() < 9 ? '0' : '') + (date.getMonth()\n + 1) + separator + (date.getDate() < 10 ? '0' : '') + date.getDate() : null;\n}\n\n/**\n * Formats a javascript {@link Date} to a string formatted as DD-MM-YYYY.\n *\n * @param {Date} date a javascript {@link Date}.\n * @param {?string} separator a separator that will be inserted between the date parts.\n * @return {?string} a string formatted as DD-MM-YYYY.\n * @memberOf module:dates\n */\ndates.dateToDdMmYyyy = function (date, separator) {\n separator = separator || separator === '' ? separator : '-';\n return date instanceof Date ? (date.getDate() < 10 ? '0' : '') + date.getDate() + separator + (date.getMonth() < 9\n ? '0' : '') + (date.getMonth() + 1) + separator + date.getFullYear() : null;\n}","'use strict'\n\n/**\n * @module helpers\n */\nexport const helpers = {};\n\n/**\n * Converts a Javascript value to a base-64 encoded string.\n *\n * @param {*} obj a Javascript value, usually an object or array, to be converted.\n * @return {string} a base-64 encoded string.\n * @memberOf module:helpers\n */\nhelpers.toBase64 = function (obj) {\n return btoa(JSON.stringify(obj));\n}\n\n/**\n * Converts a base-64 encoded string to a Javascript value.\n *\n * @param {string} str a base-64 encoded string.\n * @return {*} a Javascript value.\n * @memberOf module:helpers\n */\nhelpers.fromBase64 = function (str) {\n return JSON.parse(atob(str));\n}\n\n/**\n * A version of {@link JSON.stringify} that returns a canonical JSON format.\n *\n * 'Canonical JSON' means that the same object should always be stringified to the exact same string.\n * JavaScripts native {@link JSON.stringify} does not guarantee any order for object keys when serializing.\n *\n * @param value the value to stringify.\n * @returns {string} the stringified value.\n * @memberOf module:helpers\n * @preserve The code is extracted from https://github.com/mirkokiefer/canonical-json.\n */\nhelpers.stringify = function (value) {\n\n function isObject(object) {\n return Object.prototype.toString.call(object) === '[object Object]'\n }\n\n function copyObjectWithSortedKeys(object) {\n if (isObject(object)) {\n const newObj = {}\n const keysSorted = Object.keys(object).sort()\n let key\n for (let i = 0, len = keysSorted.length; i < len; i++) {\n key = keysSorted[i]\n newObj[key] = copyObjectWithSortedKeys(object[key])\n }\n return newObj\n } else if (Array.isArray(object)) {\n return object.map(copyObjectWithSortedKeys)\n } else {\n return object\n }\n }\n\n return JSON.stringify(copyObjectWithSortedKeys(value))\n}\n\n/**\n * A simple 53-bits hashing algorithm with good enough distribution.\n *\n * @param {*} obj the value to hash.\n * @param {number} seed a seed.\n * @return {number} the hashed value.\n * @memberOf module:helpers\n * @preserve The code is extracted from https://stackoverflow.com/a/52171480.\n */\nhelpers.goodFastHash = function (obj, seed) {\n\n const newStr = obj ? helpers.stringify(obj) : '';\n const newSeed = seed ? seed : 0;\n let h1 = 0xdeadbeef ^ newSeed;\n let h2 = 0x41c6ce57 ^ newSeed;\n\n for (let i = 0, ch; i < newStr.length; i++) {\n ch = newStr.charCodeAt(i);\n h1 = Math.imul(h1 ^ ch, 2654435761);\n h2 = Math.imul(h2 ^ ch, 1597334677);\n }\n\n h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^ Math.imul(h2 ^ (h2 >>> 13), 3266489909);\n h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^ Math.imul(h1 ^ (h1 >>> 13), 3266489909);\n\n return 4294967296 * (2097151 & h2) + (h1 >>> 0);\n}\n\n/**\n * Inject multiple scripts.\n *\n * @param {Element} el the root node where the scripts will be injected.\n * @param {Array} urls the scripts URL.\n * @return a {Promise<*>}.\n */\nhelpers.injectScripts = function (el, urls) {\n\n let promise = null;\n\n for (let i = 0; i < urls.length; i++) {\n if (promise) {\n promise = promise.then(() => this.injectScript(el, urls[i]));\n } else {\n promise = this.injectScript(el, urls[i]);\n }\n }\n return promise;\n}\n\n/**\n * Inject a single script.\n *\n * @param {Element} el the root node where the script will be injected.\n * @param {string} url the script URL.\n * @return a {Promise<*>}.\n * @preserve The code is extracted from https://gist.github.com/james2doyle/28a59f8692cec6f334773007b31a1523.\n */\nhelpers.injectScript = function (el, url) {\n return el ? new Promise((resolve, reject) => {\n const script = document.createElement('script');\n script.src = url;\n script.async = true;\n script.onerror = function (err) {\n console.log('Script failed : ' + url, err);\n reject(url, script, err);\n }\n script.onload = function () {\n console.log('Script loaded : ' + url);\n resolve(url, script)\n }\n el.appendChild(script);\n }) : Promise.reject('invalid node');\n}\n\n/**\n * Inject multiple stylesheets.\n *\n * @param {Element} el the root node where the scripts will be injected.\n * @param {Array} urls the stylesheets URL.\n * @return a {Promise<*>}.\n */\nhelpers.injectStyles = function (el, urls) {\n\n let promise = null;\n\n for (let i = 0; i < urls.length; i++) {\n if (promise) {\n promise = promise.then(() => this.injectStyle(el, urls[i]));\n } else {\n promise = this.injectStyle(el, urls[i]);\n }\n }\n return promise;\n}\n\n/**\n * Inject a single stylesheet.\n *\n * @param {Element} el the root node where the script will be injected.\n * @param {string} url the stylesheet URL.\n * @return a {Promise<*>}.\n * @preserve The code is extracted from https://gist.github.com/james2doyle/28a59f8692cec6f334773007b31a1523.\n */\nhelpers.injectStyle = function (el, url) {\n return el ? new Promise((resolve, reject) => {\n const link = document.createElement('link');\n link.href = url;\n link.rel = 'stylesheet';\n el.appendChild(link);\n console.log('Stylesheet loaded : ' + url);\n resolve(url, link);\n }) : Promise.reject('invalid node');\n}\n\n/**\n * Chunk a list and gives the UI thread a chance to process any pending UI events between each chunk (keeps the UI active).\n *\n * @param {Array} array the array to chunk and process.\n * @param {function(Object, Object): void} callback the callback to call for each array element.\n * @param {Object} context misc. contextual information (optional).\n * @param {number} maxTimePerChunk the maximum time to spend (guidance) in the callback for each chunk (optional).\n *\n * @preserve The code is extracted from https://stackoverflow.com/a/10344560.\n */\nhelpers.forEach = function (array, callback, context, maxTimePerChunk) {\n\n array = array || [];\n context = context || {};\n callback = callback || function (item, context) {\n };\n maxTimePerChunk = maxTimePerChunk || 200;\n let index = 0;\n\n function now() {\n return new Date().getTime();\n }\n\n function doChunk() {\n\n const startTime = now();\n\n while (index < array.length && (now() - startTime) <= maxTimePerChunk) {\n callback(array[index], context);\n ++index;\n }\n if (index < array.length) {\n setTimeout(doChunk, 1);\n }\n }\n\n doChunk();\n}\n\n/**\n * Delay a javascript function call. Executes only the last call.\n *\n * @param func the function to execute.\n * @param timeout the delay before the function can be called.\n * @returns {function}\n */\nhelpers.debounceLast = function (func, timeout = 300) {\n let timer;\n return (...args) => {\n clearTimeout(timer);\n timer = setTimeout(() => {\n func.apply(this, args);\n }, timeout);\n };\n}\n\n/**\n * Delay a javascript function call. Executes only the first call.\n *\n * @param func the function to execute.\n * @param timeout the delay before the function can be called again.\n * @returns {function}\n */\nhelpers.debounceFirst = function (func, timeout = 300) {\n let timer;\n return (...args) => {\n if (!timer) {\n func.apply(this, args);\n }\n clearTimeout(timer);\n timer = setTimeout(() => {\n timer = undefined;\n }, timeout);\n };\n}\n\n/**\n * Download a JSON object or an array of JSON objects.\n *\n * @param filename the name of the downloaded file.\n * @param data the data to download.\n */\nhelpers.download = function (filename, data) {\n\n const blob = new Blob([JSON.stringify(data)], {type: \"application/json;charset=utf-8\"});\n const isIE = false || !!document.documentMode;\n\n if (isIE) {\n window.navigator.msSaveBlob(blob, filename);\n } else {\n const url = window.URL || window.webkitURL;\n const link = url.createObjectURL(blob);\n const a = document.createElement(\"a\");\n a.download = filename;\n a.href = link;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n }\n}","'use strict'\n\n/**\n * @module platform\n */\nexport const platform = {};\n\n/**\n * The HttpClient type.\n *\n * @memberOf module:platform\n * @constructor\n * @struct\n * @final\n */\nplatform.HttpClient = function () {\n\n let baseUrl_ = '';\n let baseUrlAutodetect_ = false;\n let token_ = '';\n let tokenAutodetect_ = false;\n\n const reset = () => {\n baseUrl_ = '';\n baseUrlAutodetect_ = false;\n token_ = '';\n tokenAutodetect_ = false;\n }\n\n const findTokenFromQueryString = () => {\n const urlParams = new URLSearchParams(window?.location?.search);\n const token = urlParams.get('token');\n return token ? token : '';\n }\n\n const findBaseUrlFromReferrer = () => {\n let origin = '';\n if (window && window.document && window.document.referrer) {\n const url = new URL(window.document.referrer);\n origin = url.origin;\n }\n return origin;\n }\n\n /**\n * Execute a Http request to a given platform endpoint.\n *\n * @param {string} endpoint the platform endpoint.\n * @param {Object} body the request payload.\n * @param {...*} customConfig the Http request configuration.\n * @return {Promise} the platform response.\n */\n const fetch = (endpoint, {body, ...customConfig} = {}) => {\n const headers = {'Content-Type': 'application/json'}\n const config = {\n method: 'GET', ...customConfig, headers: {\n ...headers, ...customConfig.headers,\n },\n }\n if (body) {\n if (config.method === 'GET') {\n endpoint += '?' + new URLSearchParams(body);\n } else {\n config.body = JSON.stringify(body);\n }\n }\n return window.fetch(endpoint, config).then(async response => {\n if (response.ok) {\n return await response.json();\n } else {\n const errorMessage = await response.json();\n return Promise.reject(new Error(errorMessage.error));\n }\n });\n }\n\n /**\n * Returns the API token.\n *\n * @return {string} the API token.\n */\n this.getToken = function () {\n return token_;\n }\n\n /**\n * Set the API token.\n *\n * @param {string} token The API token.\n */\n this.setToken = function (token) {\n tokenAutodetect_ = false;\n token_ = token;\n }\n\n /**\n * Checks if the API token is set.\n *\n * @returns {boolean} returns true iif the API token is set, false otherwise.\n */\n this.hasToken = function () {\n return token_ !== '';\n }\n\n /**\n * Returns the API base URL.\n *\n * @return {string} the API base URL.\n */\n this.getBaseUrl = function () {\n return baseUrl_;\n }\n\n /**\n * Set the API base URL.\n *\n * @param {string} url the API base URL.\n */\n this.setBaseUrl = function (url) {\n baseUrlAutodetect_ = false;\n baseUrl_ = url;\n }\n\n /**\n * Checks if the API base URL is set.\n *\n * @returns {boolean} true iif the API base URL is set, false otherwise.\n */\n this.hasBaseUrl = function () {\n return baseUrl_ !== '';\n }\n\n /**\n * Initializes the Http client.\n *\n * If you omit a parameter, we will try to autodetect it.\n * For `token`, we try to find it on the query string. Ex: `?token=your_api_token`.\n * For `baseUrl`, we try to find it from the referrer.\n *\n * @param {string} baseUrl the base URL eg. https://www.company.computablefacts.com\n * @param {string} token the token.\n */\n this.init = function (baseUrl, token) {\n\n reset();\n\n if (typeof token === 'undefined') {\n token_ = findTokenFromQueryString();\n tokenAutodetect_ = this.hasToken();\n // console.log('init-autodetect-token token=', token, '_tokenAutodetect=', _tokenAutodetect)\n } else {\n this.setToken(token)\n }\n\n if (typeof baseUrl === 'undefined') {\n baseUrl_ = findBaseUrlFromReferrer();\n baseUrlAutodetect_ = this.hasBaseUrl();\n // console.log('init-autodetect-baseUrl baseUrl=', baseUrl, 'baseUrlAutodetect_=', baseUrlAutodetect_)\n } else {\n this.setBaseUrl(baseUrl);\n }\n }\n\n /**\n * Checks if the API token and base URL have been automatically set.\n *\n * @return `true` if the API token and base URL have been automatically set during [[`init`]].\n */\n this.hasAutodetect = function () {\n return tokenAutodetect_ && baseUrlAutodetect_;\n }\n\n /**\n * Returns the user information based on the API token.\n *\n * @return {Promise} the user permissions and authorizations.\n */\n this.whoAmI = function () {\n return fetch(`${baseUrl_}/api/v2/public/whoami`, {\n headers: {\n Authorization: `Bearer ${token_}`\n }\n });\n }\n\n /**\n * Call the platform JSON-RPC endpoint.\n *\n * @param {Object} payload the request payload.\n * @return {Promise} the platform response.\n * @preserve The specification can be found at https://www.jsonrpc.org/specification.\n */\n this.fetch = function (payload) {\n return fetch(`${baseUrl_}/api/v2/public/json-rpc?api_token=${token_}`, {body: payload, method: 'POST'}).then(\n response => {\n if ('error' in response) {\n const error = response['error'];\n const message = '(' + error.code + ') ' + error.message + '\\n' + JSON.stringify(error.data);\n return Promise.reject(new Error(message));\n }\n return response['result'];\n });\n }\n\n /**\n * Call the `execute-problog-query` platform endpoint.\n *\n * @param {Object} params the request payload.\n * @return {Promise} the platform response.\n */\n this.executeProblogQuery = function (params) {\n return this.fetch({\n jsonrpc: '2.0', id: Date.now(), method: 'execute-problog-query', params: params\n });\n }\n\n /**\n * Call the `execute-sql-query` platform endpoint.\n *\n * @param {Object} params the request payload.\n * @return {Promise} the platform response.\n */\n this.executeSqlQuery = function (params) {\n return this.fetch({\n jsonrpc: '2.0', id: Date.now(), method: 'execute-sql-query', params: params\n });\n }\n\n /**\n * Call the `find-objects` platform endpoint.\n *\n * @param params the request payload.\n * @return {Promise} the platform response.\n */\n this.findObjects = function (params) {\n return this.fetch({\n jsonrpc: '2.0', id: Date.now(), method: 'find-objects', params: params\n });\n }\n\n /**\n * Call the `get-objects` platform endpoint.\n *\n * @param params the request payload.\n * @return {Promise>} the platform response.\n */\n this.getObjects = function (params) {\n return this.fetch({\n jsonrpc: '2.0', id: Date.now(), method: 'get-objects', params: params\n });\n }\n\n /**\n * Call the `get-flattened-objects` platform endpoint.\n *\n * @param params the request payload.\n * @return {Promise>} the platform response.\n */\n this.getFlattenedObjects = function (params) {\n return this.fetch({\n jsonrpc: '2.0', id: Date.now(), method: 'get-flattened-objects', params: params\n });\n }\n\n /**\n * Call the `find-terms` platform endpoint.\n *\n * @param params the request payload.\n * @return {Promise} the platform response.\n */\n this.findTerms = function (params) {\n return this.fetch({\n jsonrpc: '2.0', id: Date.now(), method: 'find-terms', params: params\n });\n }\n\n /**\n * Sink a single event.\n *\n * @param {string} type the event type.\n * @param {Array} propNames the event property names.\n * @param {Array} propValues the event property values.\n * @return {Promise} the created fact.\n */\n this.sinkEvent = function (type, propNames, propValues) {\n\n if (propNames.length !== propValues.length) {\n throw \"Mismatch between the number of names and values\"\n }\n\n const typeNormalized = 'event_' + type.replace(/-/g, '_').toLowerCase();\n const startDate = new Date();\n\n return fetch(`${baseUrl_}/api/v2/facts`, {\n body: {\n data: [{\n type: typeNormalized,\n values: propValues.map(prop => '' + prop),\n is_valid: true,\n start_date: startDate.toISOString(),\n }]\n }, method: 'POST', headers: {\n Authorization: `Bearer ${token_}`\n }\n });\n }\n\n /**\n * Source one or more events.\n *\n * @param {string} type the event type.\n * @param {Array} propNames the event property names.\n * @param {Array} propPatterns the list of patterns to match.\n * @param {number} maxNbResults the maximum number of events to return.\n * @return {Promise>} an array of events.\n */\n this.sourceEventsAsObjects = function (type, propNames, propPatterns, maxNbResults) {\n return this.sourceEvents(type, propNames, propPatterns, maxNbResults, 'objects');\n }\n\n /**\n * Source one or more events.\n *\n * @param {string} type the event type.\n * @param {Array} propNames the event property names.\n * @param {Array} propPatterns the list of patterns to match.\n * @param {number} maxNbResults the maximum number of events to return.\n * @return {Promise>>} an array of events.\n */\n this.sourceEventsAsArrays = function (type, propNames, propPatterns, maxNbResults) {\n return this.sourceEvents(type, propNames, propPatterns, maxNbResults, 'arrays_with_header');\n }\n\n /**\n * Source one or more events.\n *\n * @param {string} type the event type.\n * @param {Array} propNames the event property names.\n * @param {Object} propPatterns the list of patterns to match.\n * @param {number} maxNbResults the maximum number of events to return.\n * @param {string} format the returned events format. 'objects' returns an `Array`. Both 'arrays' and 'arrays_with_header' return an `Array>`.\n * @return {Promise|Array>>} an array of events.\n */\n this.sourceEvents = function (type, propNames, propPatterns, maxNbResults, format) {\n\n const newRule = (eventType, eventPropertyNames, patterns) => {\n\n let result = eventType + '(';\n result += eventPropertyNames.map(prop => prop.toUpperCase()).join(', ');\n result += ') :- ';\n result += 'fn_mysql_materialize_facts(\"{{ app_url }}/api/v3/facts/no_namespace/';\n result += eventType;\n result += '?alea=' + Math.random().toString(36).substring(2, 12);\n const filtersQuery = Object.entries(patterns).map(entry => entry[0] + '=' + entry[1]).join('&');\n result += filtersQuery ? '&' + filtersQuery : '';\n result += '\", \"{{ client }}\", \"{{ env }}\", \"{{ sftp_host }}\", \"{{ sftp_username }}\", \"{{ sftp_password }}\", ';\n result += eventPropertyNames.map((prop, i) => '\"value_' + i + '\", _, ' + prop.toUpperCase()).join(', ');\n result += ').';\n\n // console.log('newRule = ', result);\n return result.trim();\n }\n\n const pattern = {};\n\n for (let i = 0; i < propNames.length; i++) {\n if (propPatterns[propNames[i]]) {\n pattern['value_' + i] = propPatterns[propNames[i]];\n }\n }\n\n const typeNormalized = 'event_' + type.replace(/-/g, '_').toLowerCase();\n const rule = newRule(typeNormalized, propNames, pattern);\n const alea = Math.random().toString(36).substring(2, 8);\n\n return this.executeProblogQuery({\n problog_rules: [alea + '_' + rule],\n problog_query: alea + '_' + (rule.substring(0, rule.indexOf(':-')).trim()) + '?',\n format: format ? format : 'objects',\n sample_size: maxNbResults ? maxNbResults : 15,\n });\n }\n}","'use strict'\n\nimport {caches} from \"./caches\";\nimport {helpers} from \"./helpers\";\n\n/**\n * @module promises\n */\nexport const promises = {};\n\n/**\n * An object that has the ability to memoize promises returned by a given user-defined function.\n *\n * @param {number} maxCacheSize the maximum number of distinct calls to cache.\n * @param {Function} fn a user-defined function that returns a promise.\n * @memberOf module:promises\n * @constructor\n * @struct\n * @final\n */\npromises.Memoize = function (maxCacheSize, fn) {\n\n // Stats\n let hit_ = 0;\n let miss_ = 0;\n\n // Cache\n const cache_ = new caches.Cache(maxCacheSize);\n const function_ = fn;\n\n /**\n * Either read the cache or call the user-defined function and get a new promise.\n *\n * @param {...*} args a list of arguments to pass to the user-defined function.\n * @return {Promise} a promise to be resolved at a later stage.\n * @suppress {checkTypes}\n */\n this.promise = function (...args) {\n\n const cacheKey = helpers.goodFastHash(Array.from(args), 123).toString(10);\n\n if (cache_.contains(cacheKey)) {\n hit_++;\n return cache_.get(cacheKey);\n }\n\n cache_.put(cacheKey, function_(...args).catch(err => {\n cache_.remove(cacheKey);\n throw err;\n }));\n\n miss_++;\n return cache_.get(cacheKey);\n }\n\n /**\n * Return the number of cache hits.\n *\n * @return {number} the number of hits.\n */\n this.hits = function () {\n return hit_;\n }\n\n /**\n * Return the number of cache misses.\n *\n * @return {number} the number of misses.\n */\n this.misses = function () {\n return miss_;\n }\n\n /**\n * Return the cache hit rate.\n *\n * @return {number} the hit rate.\n */\n this.hitRate = function () {\n return hit_ / (hit_ + miss_);\n }\n\n /**\n * Return the cache miss rate.\n *\n * @return {number} the miss rate.\n */\n this.missRate = function () {\n return miss_ / (hit_ + miss_);\n }\n}\n","'use strict'\n\nimport {helpers} from \"./helpers\";\n\n/**\n * @module webcomponents\n * @deprecated\n */\nexport const webcomponents = {};\n\n/**\n * A skeleton to ease the creation of web components.\n *\n * @memberOf module:webcomponents\n * @type {webcomponents.WebComponent}\n * @extends {HTMLElement}\n */\nwebcomponents.WebComponent = class extends HTMLElement {\n\n /**\n * @constructor\n */\n constructor() {\n super();\n this.attachShadow({mode: 'open'});\n }\n\n /**\n * Called every time the element is inserted into the DOM.\n *\n * @name connectedCallback\n * @function\n * @protected\n * @override\n */\n connectedCallback() {\n\n const styles = this.externalStyles();\n const scripts = this.externalScripts();\n const template = this.template();\n\n const wrapper = document.createElement('div');\n wrapper.id = 'wcw'; // wcw = Web Component Wrapper\n this.shadowRoot.appendChild(wrapper);\n\n if (styles && styles.length > 0 && scripts && scripts.length > 0) {\n helpers.injectStyles(wrapper, styles).then(() => {\n helpers.injectScripts(wrapper, scripts).then(() => {\n if (template !== '') {\n wrapper.insertAdjacentHTML('beforeend', template);\n }\n this.renderedCallback();\n });\n });\n } else if ((!styles || styles.length === 0) && scripts && scripts.length > 0) {\n helpers.injectScripts(wrapper, scripts).then(() => {\n if (template !== '') {\n wrapper.insertAdjacentHTML('beforeend', template);\n }\n this.renderedCallback();\n });\n } else if (styles && styles.length > 0 && (!scripts || scripts.length === 0)) {\n helpers.injectStyles(wrapper, styles).then(() => {\n if (template !== '') {\n wrapper.insertAdjacentHTML('beforeend', template);\n }\n this.renderedCallback();\n });\n } else {\n if (template !== '') {\n wrapper.insertAdjacentHTML('beforeend', template);\n }\n this.renderedCallback();\n }\n }\n\n /**\n * Called every time the element is removed from the DOM.\n *\n * @name disconnectedCallback\n * @function\n * @protected\n * @override\n */\n disconnectedCallback() {\n }\n\n /**\n * Called after the `template` has been added to the DOM.\n *\n * @name renderedCallback\n * @function\n * @protected\n * @override\n */\n renderedCallback() {\n }\n\n /**\n * A list of stylesheets URL.\n *\n * @return {Array} an array of URL.\n * @name externalStyles\n * @function\n * @protected\n * @override\n */\n externalStyles() {\n return [];\n }\n\n /**\n * A list of scripts URL.\n *\n * @return {Array} an array of URL.\n * @name externalScripts\n * @function\n * @protected\n * @override\n */\n externalScripts() {\n return [];\n }\n\n /**\n * Returns the component HTML template.\n *\n * @return {string} the HTML.\n * @name template\n * @function\n * @protected\n */\n template() {\n return ``;\n }\n\n /**\n * Emit a custom event.\n *\n * @param {string} type the event type.\n * @param {Object|null} data any data structure to pass along with the event.\n * @param {Node|null} elem the element to attach the event to.\n * @return {boolean} returns true if either event's cancelable attribute value is false or its preventDefault() method was not invoked, and false otherwise.\n * @name emit\n * @function\n * @protected\n */\n emit(type, data = {}, elem = document) {\n const event = new CustomEvent(type, {\n bubbles: true, cancelable: true, detail: {\n component: this, data: data\n }\n });\n return (elem ? elem : document).dispatchEvent(event);\n }\n\n /**\n * Returns the component attribute value or a default value if none was found.\n *\n * @param {string} attr the attribute to get.\n * @param {string|null} defaultValue the default value.\n * @return {string|null} the attribute value if any, defaultValue otherwise.\n * @name getAttributeOrDefault\n * @function\n * @protected\n */\n getAttributeOrDefault(attr, defaultValue) {\n return this.hasAttribute(attr) ? this.getAttribute(attr) : defaultValue;\n }\n\n /**\n * Returns the first element with a given identifier or class name.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @return {Element|null} an HTML element.\n * @name getElement\n * @function\n * @protected\n */\n getElement(idOrClassName) {\n return this.shadowRoot.querySelector(idOrClassName);\n }\n\n /**\n * Get the first page element with a given identifier or class name.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @return {Element|null} an HTML element.\n * @name getPageElement\n * @function\n * @protected\n */\n getPageElement(idOrClassName) {\n return document.querySelector(idOrClassName);\n }\n\n /**\n * Add a given class to a given element.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @param {string} className the class name to add.\n * @name addCssClass\n * @function\n * @protected\n */\n addCssClass(idOrClassName, className) {\n const el = this.getElement(idOrClassName);\n if (el) {\n el.classList.add(className);\n }\n }\n\n /**\n * Remove a given class from a given element.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @param {string} className the class name to remove.\n * @name removeCssClass\n * @function\n * @protected\n */\n removeCssClass(idOrClassName, className) {\n const el = this.getElement(idOrClassName);\n if (el) {\n el.classList.remove(className);\n }\n }\n\n /**\n * Add a class if it does not already exist on a given element, remove it otherwise.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @param {string} className the class name to toggle.\n * @name toggleCssClass\n * @function\n * @protected\n */\n toggleCssClass(idOrClassName, className) {\n const el = this.getElement(idOrClassName);\n if (el) {\n el.classList.toggle(className);\n }\n }\n\n /**\n * Check if a given element has a given class.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @param {string} className the class name to search.\n * @return true if the element contains the given class, false otherwise.\n * @name includesCssClass\n * @function\n * @protected\n */\n includesCssClass(idOrClassName, className) {\n const el = this.getElement(idOrClassName);\n if (el) {\n return el.classList.contains(className);\n }\n return false;\n }\n\n /**\n * Get all classes associated to a given element.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @return {Array} the class names.\n * @name getAllCssClasses\n * @function\n * @protected\n */\n getAllCssClasses(idOrClassName) {\n const el = this.getElement(idOrClassName);\n if (el) {\n return el.className.split(' ').map(clazz => clazz.trim());\n }\n return [];\n }\n\n /**\n * Replace all classes associated to a given element.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @param {Array|string} classes the class names.\n * @name replaceAllCssClasses\n * @function\n * @protected\n */\n replaceAllCssClasses(idOrClassName, classes) {\n const el = this.getElement(idOrClassName);\n if (el) {\n if (Array.isArray(classes)) {\n el.className = classes.join(' ');\n } else {\n el.className = classes;\n }\n }\n }\n\n /**\n * Get the style associated to a given element.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @return {CSSStyleDeclaration|null} the element style.\n * @name getStyle\n * @function\n * @protected\n */\n getStyle(idOrClassName) {\n const el = this.getElement(idOrClassName);\n if (el) {\n return el.style;\n }\n return null;\n }\n\n /**\n * Get the actual computed style associated to a given element.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @return {CSSStyleDeclaration|null} the element computed style.\n * @name getComputedStyle\n * @function\n * @protected\n */\n getComputedStyle(idOrClassName) {\n const el = this.getElement(idOrClassName);\n if (el) {\n return window.getComputedStyle(el);\n }\n return null;\n }\n\n /**\n * Set the text associated to a given element.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @param {string} text the text to set.\n * @name setText\n * @function\n * @protected\n */\n setText(idOrClassName, text) {\n const el = this.getElement(idOrClassName);\n if (el) {\n el.textContent = text;\n }\n }\n\n /**\n * Set the HTML associated to a given element.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @param {string} html the html to set.\n * @name setHtml\n * @function\n * @protected\n */\n setHtml(idOrClassName, html) {\n const el = this.getElement(idOrClassName);\n if (el) {\n el.innerHTML = html;\n }\n }\n\n /**\n * Append an element to a given element.\n *\n * @param {string} idOrClassName the identifier or class name to match.\n * @param {Element} element the element to append.\n * @name replaceContent\n * @function\n * @protected\n */\n replaceContent(idOrClassName, element) {\n const el = this.getElement(idOrClassName);\n if (el) {\n el.innerHTML = '';\n el.appendChild(element);\n }\n }\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/index.html b/dist/index.html index db69fe7..fd6c792 100644 --- a/dist/index.html +++ b/dist/index.html @@ -73,8 +73,8 @@