@nebula.js/sn-distributionplot 0.37.2 → 0.38.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/api-specifications/properties.json +1 -1
- package/dist/sn-distplot.js +15 -13
- package/dist/sn-distplot.js.map +1 -1
- package/dist/sn-distplot.systemjs.js +14 -12
- package/dist/sn-distplot.systemjs.js.map +1 -1
- package/package.json +9 -8
- package/core/esm/index.js +0 -12
- package/core/esm/index.js.map +0 -1
package/core/esm/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../chart-modules/common/picasso/plugins/event-area.js","../../../../chart-modules/common/picasso/disclaimer/disclaimer-component.jsx","../../../../chart-modules/common/nebula/lasso-icon.js","../../../../node_modules/qlik-chart-modules/dist/qlik-chart-modules.esm.js","../../../../chart-modules/common/extra/class.js","../../../../chart-modules/common/extra/backend-api/rect.js","../../../../chart-modules/common/extra/backend-api/cube-slicer.js","../../../../chart-modules/common/extra/backend-api/pivot-cube-slicer.js","../../../../chart-modules/common/extra/backend-api/snapshot-api.js","../../src/object-properties.js","../../src/distributionplot-data.js","../../../../node_modules/qlik-object-conversion/dist/conversion.js","../../src/distributionplot-color-by.js","../../src/distributionplot-import-export.js","../../src/distributionplot-qae.js","../../../../chart-modules/common/picasso/expression-generator/expression-wrapper.js","../../../../chart-modules/common/picasso/expression-generator/expression-replacer.js","../../../../chart-modules/common/picasso/expression-generator/expression-generator.js","../../../../chart-modules/common/picasso/hypercube-def-generator/hypercube-def-generator.js","../../../../chart-modules/common/extra/sort-order/convert-functions.js","../../../../chart-modules/common/extra/sort-order/sort-order.js","../../src/distributionplot-constants.js","../../src/distributionplot-utils.js","../../../../chart-modules/common/extra/attribute-expression-util.js","../../../../chart-modules/common/extra/property-logic-helper.js","../../../../chart-modules/common/extra/number-format-util.js","../../../../chart-modules/common/picasso/advanced-colorer.js","../../src/distributionplot-properties-logic.js","../../../../chart-modules/common/picasso/sorting/base-derived/Sorter.js","../../../../chart-modules/common/picasso/sorting/base-derived/sorter-factory.js","../../../../chart-modules/common/picasso/sorting/base-derived/sorter-facade.js","../../../../chart-modules/common/picasso/sorting/base-derived/sorter-base-sorting-settings.js","../../src/sorting/distributionplot-sorting-settings.js","../../src/sorting/distributionplot-sorting-settings-retriever.js","../../src/sorting/distributionplot-sorting-elements-retriever.js","../../src/sorting/distributionplot-sorter.js","../../src/sorting/distributionplot-expression-sort-orderer.js","../../src/styling-panel-definition.js","../../src/distributionplot-properties.js","../../../../chart-modules/common/picasso/sorting/base-derived/explore-properties-sorting-definition-builder.js","../../src/distributionplot-explore-properties.js","../../src/ext.js","../../../../chart-modules/common/extra/generate-id.js","../../../../chart-modules/common/picasso/scroll/scroll-actions.js","../../../../chart-modules/common/picasso/chart-builder/components/util/axis-dock-util.js","../../../../chart-modules/common/extra/rtl-util.js","../../../../chart-modules/common/picasso/chart-builder/components/util/ref-line-util.js","../../../../chart-modules/common/picasso/chart-builder/presets/dimension-measure-chart/constants.js","../../../../chart-modules/common/picasso/chart-builder/presets/dimension-measure-chart/layout-settings.js","../../../../chart-modules/common/picasso/chart-builder/presets/dimension-measure-chart/dimension-measure-chart.js","../../../../chart-modules/common/picasso/chart-builder/scale.js","../../../../chart-modules/common/picasso/chart-builder/components/axis.js","../../../../chart-modules/common/picasso/chart-builder/components/text.js","../../../../chart-modules/common/picasso/chart-builder/components/util/range-util.js","../../../../chart-modules/common/picasso/chart-builder/layout-modes.js","../../../../chart-modules/common/picasso/chart-builder/components/labels.js","../../../../chart-modules/common/picasso/chart-builder/components/categorical-legend.js","../../../../chart-modules/common/picasso/chart-builder/chart-builder.js","../../../../chart-modules/common/picasso/chart-builder/components/box-marker.js","../../../../chart-modules/common/picasso/chart-builder/components/point-marker.js","../../../../chart-modules/common/picasso/chart-builder/components/scrollbar.js","../../../../chart-modules/common/picasso/chart-builder/components/lasso.js","../../../../chart-modules/common/picasso/chart-builder/components/range.js","../../../../chart-modules/common/picasso/chart-builder/components/range-area.js","../../../../chart-modules/common/picasso/chart-builder/components/sequential-legend.js","../../../../chart-modules/common/picasso/chart-builder/components/grid-line.js","../../../../chart-modules/common/picasso/chart-builder/components/interaction.js","../../../../chart-modules/common/picasso/chart-builder/components/ref-line.js","../../../../chart-modules/common/picasso/chart-builder/components/event-area.js","../../../../chart-modules/common/picasso/chart-builder/chart-presets.js","../../../../chart-modules/common/picasso/disclaimer/disclaimers-config.js","../../../../chart-modules/common/picasso/disclaimer/disclaimer-attributes-util.js","../../../../chart-modules/common/picasso/disclaimer/disclaimer-component-helper.js","../../../../chart-modules/common/picasso/disclaimer/disclaimer.js","../../../../chart-modules/common/picasso/chart-view.js","../../../../chart-modules/common/extra/hash-from-string.js","../../../../chart-modules/common/picasso/derived-properties/hash/hash.js","../../../../chart-modules/common/picasso/derived-properties/hash/hash-builder.js","../../../../chart-modules/common/extra/json-patch.js","../../../../chart-modules/common/extra/soft-property-handler.js","../../../../chart-modules/common/extra/hard-properties-checker.js","../../../../chart-modules/common/picasso/derived-properties/save/save.js","../../../../chart-modules/common/picasso/derived-properties/input-validator/input-validator.js","../../../../chart-modules/common/picasso/derived-properties/derived-properties.js","../../../../node_modules/picasso-plugin-q/node_modules/extend/index.js","../../../../node_modules/picasso-plugin-q/src/data/extractor-s.js","../../../../node_modules/picasso-plugin-q/node_modules/d3-hierarchy/src/hierarchy/count.js","../../../../node_modules/picasso-plugin-q/node_modules/d3-hierarchy/src/hierarchy/each.js","../../../../node_modules/picasso-plugin-q/node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","../../../../node_modules/picasso-plugin-q/node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","../../../../node_modules/picasso-plugin-q/node_modules/d3-hierarchy/src/hierarchy/sum.js","../../../../node_modules/picasso-plugin-q/node_modules/d3-hierarchy/src/hierarchy/sort.js","../../../../node_modules/picasso-plugin-q/node_modules/d3-hierarchy/src/hierarchy/path.js","../../../../node_modules/picasso-plugin-q/node_modules/d3-hierarchy/src/hierarchy/ancestors.js","../../../../node_modules/picasso-plugin-q/node_modules/d3-hierarchy/src/hierarchy/descendants.js","../../../../node_modules/picasso-plugin-q/node_modules/d3-hierarchy/src/hierarchy/leaves.js","../../../../node_modules/picasso-plugin-q/node_modules/d3-hierarchy/src/hierarchy/links.js","../../../../node_modules/picasso-plugin-q/node_modules/d3-hierarchy/src/hierarchy/index.js","../../../../node_modules/picasso-plugin-q/node_modules/d3-hierarchy/src/accessors.js","../../../../node_modules/picasso-plugin-q/node_modules/d3-hierarchy/src/stratify.js","../../../../node_modules/picasso-plugin-q/src/json-path-resolver.js","../../../../node_modules/picasso-plugin-q/src/data/util.js","../../../../node_modules/picasso-plugin-q/src/data/extractor-t.js","../../../../node_modules/picasso-plugin-q/node_modules/number-format.js/lib/format.min.js","../../../../node_modules/picasso-plugin-q/src/formatter/parts/qs-number-formatter.js","../../../../node_modules/picasso-plugin-q/src/formatter/memoize.js","../../../../node_modules/picasso-plugin-q/src/formatter/numberFormat.js","../../../../node_modules/picasso-plugin-q/src/formatter/constants.js","../../../../node_modules/picasso-plugin-q/src/formatter/parts/qs-date-formatter.js","../../../../node_modules/picasso-plugin-q/src/formatter/timeFormat.js","../../../../node_modules/picasso-plugin-q/src/formatter/index.js","../../../../node_modules/picasso-plugin-q/src/data/field.js","../../../../node_modules/picasso-plugin-q/src/data/dataset.js","../../../../node_modules/picasso-plugin-q/src/brush/q-brush.js","../../../../node_modules/picasso-plugin-q/src/index.js","../../../../chart-modules/common/picasso/selections/selection-utils.js","../../../../chart-modules/common/picasso/selections/selections-handler.js","../../../../chart-modules/common/picasso/selections/selection-actions.js","../../../../chart-modules/common/picasso/selections/gestures/on-component-checker.js","../../../../chart-modules/common/picasso/selections/gestures/lasso-gesture.js","../../../../chart-modules/common/picasso/selections/gestures/measure-range-gesture.js","../../../../chart-modules/common/picasso/selections/gestures/area-range-gesture.js","../../../../chart-modules/common/picasso/selections/gestures/dimension-range-gesture.js","../../../../chart-modules/common/picasso/selections/gestures/drag-gesture.js","../../../../chart-modules/common/picasso/selections/gestures/navigational-button-gesture.js","../../../../chart-modules/common/picasso/selections/dependent-interactions.js","../../../../chart-modules/common/picasso/tooltip/tooltip-actions.js","../../../../chart-modules/common/picasso/formatting.js","../../../../chart-modules/common/picasso/tooltip/tooltip-content.js","../../../../chart-modules/common/picasso/tooltip/tooltips-component.js","../../../../chart-modules/common/picasso/tooltip/tooltip-renderer.jsx","../../../../chart-modules/common/picasso/tooltip/tooltips-handler.js","../../../../chart-modules/common/picasso/scroll/scroll-handler.js","../../../../chart-modules/common/extra/string-util.js","../../../../chart-modules/common/extra/css-colors.js","../../../../chart-modules/common/extra/color.js","../../../../chart-modules/common/extra/chart-style-utils.js","../../../../chart-modules/common/extra/hypercube-util.js","../../src/jitter.js","../../src/distributionplot-column-order-adapter.js","../../src/distributionplot-cube-generator.js","../../src/create-color-service.js","../../src/distributionplot-view.js","../../../../chart-modules/common/extra/backend-api/engine-throttle.js","../../../../chart-modules/common/extra/backend-api/stacked-cube-slicer.js","../../../../chart-modules/common/extra/backend-api/cache-cube.js","../../src/backend-api.js","../../src/index.js","../../../../chart-modules/common/locale/index.js","../../../../chart-modules/common/picasso/picasso-setup.js","../../../../chart-modules/common/nebula/use-environment.js","../../../../chart-modules/common/nebula/use-lasso.js","../../../../chart-modules/common/nebula/snapshot.js","../../../../chart-modules/common/nebula/resize.js"],"sourcesContent":["export default function init(Picasso) {\n // Transparent component, placed on top of the data area and used to register event on\n Picasso.component('event-area', {\n mounted(element) {\n element.classList.add('event-area');\n element.style.pointerEvents = 'auto';\n element.style.zIndex = 1;\n },\n render() {\n const nodes = [];\n return nodes;\n },\n });\n}\n","/** @jsx h */\n\nfunction getStyle(dock, rect) {\n const style = {\n pointerEvents: 'auto',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n color: '#7b7a78',\n fontStyle: 'italic',\n fontSize: '13px',\n };\n\n switch (dock) {\n case 'left':\n style.width = `${rect.height}px`;\n style.transform = `rotate(-90deg) translate(-${rect.height}px, 0)`;\n style.transformOrigin = 'top left';\n break;\n\n case 'right':\n style.width = `${rect.height}px`;\n style.transform = `rotate(90deg) translate(0, -${rect.width}px)`;\n style.transformOrigin = 'top left';\n break;\n\n case 'center':\n style.width = `${rect.width}px`;\n style.height = `${rect.height}px`;\n style.color = '#595959';\n style.fontStyle = 'normal';\n style.fontSize = '1.2em';\n style.textAlign = 'center';\n break;\n\n default:\n case 'top':\n case 'bottom':\n style.justifyContent = 'flex-start';\n style.alignItems = 'flex-start';\n break;\n }\n return style;\n}\n\nexport default {\n renderer: 'dom',\n disableTriggers: true,\n preferredSize: function preferredSize() {\n return 22;\n },\n render(h) {\n const {\n settings: { label, rtl },\n layout: { dock },\n } = this.settings;\n const dir = (dock === 'top' || dock === 'bottom') && rtl ? 'rtl' : 'ltr';\n const style = getStyle(dock, this.rect);\n\n const modifiedLabel = dock === 'center' ? label : `* ${label}`;\n\n const spanStyle = dock !== 'center' ? { overflow: 'hidden', whiteSpace: 'nowrap', textOverflow: 'ellipsis' } : {};\n\n return (\n <div style={style} dir={dir}>\n <span ref={this.alignToRef} style={spanStyle} title={modifiedLabel}>\n {modifiedLabel}\n </span>\n </div>\n );\n },\n};\n","const lassoIcon = {\n shapes: [\n {\n type: 'path',\n attrs: {\n d: 'M15.9488039,5.20769129 C16.0487326,6.70662306 15.3492311,8.30548361 14.050157,9.30477145 C12.651154,10.5039169 10.8524359,10.8037032 8.85386017,10.4039881 L7.3549284,10.0042729 L5.75606786,9.70448659 C5.75606786,9.90434416 5.65613907,10.0042729 5.4562815,10.2041305 C5.05656637,10.6038456 4.55692244,10.8037032 4.05727852,10.8037032 C3.75749217,10.8037032 3.45770582,10.7037744 3.15791946,10.6038456 C3.05799068,10.903632 3.15791946,11.2034184 3.45770582,11.7030623 C5.05656637,14.0014243 3.85742095,15.9000712 3.75749217,16 L2.2585604,15.3004985 C2.2585604,15.2005697 2.95806189,14.0014243 1.95877405,12.6024213 C1.6589877,12.0028486 1.15934378,11.0035608 1.55905891,10.0042729 C1.6589877,9.80441537 1.75891648,9.6045578 1.95877405,9.40470024 C1.6589877,8.90505631 1.55905891,8.30548361 1.85884527,7.7059109 C1.55905891,7.40612455 1.25927256,7.1063382 1.15934378,6.70662306 C0.859557424,5.90719279 0.959486209,4.5081898 1.6589877,3.30904439 C1.95877405,2.6095429 2.55834676,2.0099702 3.15791946,1.51032628 C3.95734974,0.91075357 4.95663758,0.610967217 6.15578299,0.311180864 C9.05371774,-0.388320626 11.9516525,0.111323295 13.9502282,1.61025506 C15.1493736,2.50961412 15.8488751,3.80868831 15.9488039,5.20769129 Z M13.0508691,8.10562604 C13.8502994,7.40612455 14.3499433,6.40683671 14.3499433,5.30762008 C14.2500145,4.20840345 13.550513,3.40897318 12.9509403,2.90932926 C12.1515101,2.40968533 11.252151,2.0099702 10.1529344,1.81011263 C8.95378895,1.61025506 7.75464354,1.71018384 6.45556935,1.91004141 C4.75678001,2.30975655 3.65756338,3.00925804 3.05799068,4.10847467 C2.55834676,5.00783373 2.65827554,5.90719279 2.75820433,6.20697914 C2.75820433,6.30690792 2.85813311,6.40683671 3.05799068,6.40683671 C3.15791946,6.40683671 3.25784825,6.40683671 3.35777703,6.40683671 C3.45770582,6.40683671 3.45770582,6.40683671 3.45770582,6.40683671 L3.5576346,6.40683671 L3.65756338,6.40683671 C4.65685123,6.40683671 5.4562815,6.90648063 5.85599664,7.80583969 L5.85599664,8.00569726 C6.35564056,8.10562604 7.05514205,8.30548361 7.75464354,8.50534118 L9.25357531,8.90505631 C10.0530056,9.0049851 10.7525071,9.0049851 11.4520086,8.80512753 C12.0515813,8.70519875 12.5512252,8.40541239 13.0508691,8.10562604 Z',\n },\n },\n ],\n};\n\nexport default lassoIcon;\n","/*\n* qlik-chart-modules v0.44.0\n* Copyright (c) 2022 QlikTech International AB\n* Released under the MIT license.\n*/\n\nfunction e(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function t(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?e(Object(r),!0).forEach((function(e){a(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):e(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function n(){n=function(){return e};var e={},t=Object.prototype,r=t.hasOwnProperty,o=\"function\"==typeof Symbol?Symbol:{},i=o.iterator||\"@@iterator\",a=o.asyncIterator||\"@@asyncIterator\",u=o.toStringTag||\"@@toStringTag\";function l(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},\"\")}catch(e){l=function(e,t,n){return e[t]=n}}function c(e,t,n,r){var o=t&&t.prototype instanceof d?t:d,i=Object.create(o.prototype),a=new k(r||[]);return i._invoke=function(e,t,n){var r=\"suspendedStart\";return function(o,i){if(\"executing\"===r)throw new Error(\"Generator is already running\");if(\"completed\"===r){if(\"throw\"===o)throw i;return S()}for(n.method=o,n.arg=i;;){var a=n.delegate;if(a){var u=q(a,n);if(u){if(u===f)continue;return u}}if(\"next\"===n.method)n.sent=n._sent=n.arg;else if(\"throw\"===n.method){if(\"suspendedStart\"===r)throw r=\"completed\",n.arg;n.dispatchException(n.arg)}else\"return\"===n.method&&n.abrupt(\"return\",n.arg);r=\"executing\";var l=s(e,t,n);if(\"normal\"===l.type){if(r=n.done?\"completed\":\"suspendedYield\",l.arg===f)continue;return{value:l.arg,done:n.done}}\"throw\"===l.type&&(r=\"completed\",n.method=\"throw\",n.arg=l.arg)}}}(e,n,a),i}function s(e,t,n){try{return{type:\"normal\",arg:e.call(t,n)}}catch(e){return{type:\"throw\",arg:e}}}e.wrap=c;var f={};function d(){}function p(){}function v(){}var h={};l(h,i,(function(){return this}));var m=Object.getPrototypeOf,y=m&&m(m(C([])));y&&y!==t&&r.call(y,i)&&(h=y);var g=v.prototype=d.prototype=Object.create(h);function b(e){[\"next\",\"throw\",\"return\"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function x(e,t){function n(o,i,a,u){var l=s(e[o],e,i);if(\"throw\"!==l.type){var c=l.arg,f=c.value;return f&&\"object\"==typeof f&&r.call(f,\"__await\")?t.resolve(f.__await).then((function(e){n(\"next\",e,a,u)}),(function(e){n(\"throw\",e,a,u)})):t.resolve(f).then((function(e){c.value=e,a(c)}),(function(e){return n(\"throw\",e,a,u)}))}u(l.arg)}var o;this._invoke=function(e,r){function i(){return new t((function(t,o){n(e,r,t,o)}))}return o=o?o.then(i,i):i()}}function q(e,t){var n=e.iterator[t.method];if(void 0===n){if(t.delegate=null,\"throw\"===t.method){if(e.iterator.return&&(t.method=\"return\",t.arg=void 0,q(e,t),\"throw\"===t.method))return f;t.method=\"throw\",t.arg=new TypeError(\"The iterator does not provide a 'throw' method\")}return f}var r=s(n,e.iterator,t.arg);if(\"throw\"===r.type)return t.method=\"throw\",t.arg=r.arg,t.delegate=null,f;var o=r.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,\"return\"!==t.method&&(t.method=\"next\",t.arg=void 0),t.delegate=null,f):o:(t.method=\"throw\",t.arg=new TypeError(\"iterator result is not an object\"),t.delegate=null,f)}function w(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function M(e){var t=e.completion||{};t.type=\"normal\",delete t.arg,e.completion=t}function k(e){this.tryEntries=[{tryLoc:\"root\"}],e.forEach(w,this),this.reset(!0)}function C(e){if(e){var t=e[i];if(t)return t.call(e);if(\"function\"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,o=function t(){for(;++n<e.length;)if(r.call(e,n))return t.value=e[n],t.done=!1,t;return t.value=void 0,t.done=!0,t};return o.next=o}}return{next:S}}function S(){return{value:void 0,done:!0}}return p.prototype=v,l(g,\"constructor\",v),l(v,\"constructor\",p),p.displayName=l(v,u,\"GeneratorFunction\"),e.isGeneratorFunction=function(e){var t=\"function\"==typeof e&&e.constructor;return!!t&&(t===p||\"GeneratorFunction\"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,v):(e.__proto__=v,l(e,u,\"GeneratorFunction\")),e.prototype=Object.create(g),e},e.awrap=function(e){return{__await:e}},b(x.prototype),l(x.prototype,a,(function(){return this})),e.AsyncIterator=x,e.async=function(t,n,r,o,i){void 0===i&&(i=Promise);var a=new x(c(t,n,r,o),i);return e.isGeneratorFunction(n)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},b(g),l(g,u,\"Generator\"),l(g,i,(function(){return this})),l(g,\"toString\",(function(){return\"[object Generator]\"})),e.keys=function(e){var t=[];for(var n in e)t.push(n);return t.reverse(),function n(){for(;t.length;){var r=t.pop();if(r in e)return n.value=r,n.done=!1,n}return n.done=!0,n}},e.values=C,k.prototype={constructor:k,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method=\"next\",this.arg=void 0,this.tryEntries.forEach(M),!e)for(var t in this)\"t\"===t.charAt(0)&&r.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if(\"throw\"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function n(n,r){return a.type=\"throw\",a.arg=e,t.next=n,r&&(t.method=\"next\",t.arg=void 0),!!r}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if(\"root\"===i.tryLoc)return n(\"end\");if(i.tryLoc<=this.prev){var u=r.call(i,\"catchLoc\"),l=r.call(i,\"finallyLoc\");if(u&&l){if(this.prev<i.catchLoc)return n(i.catchLoc,!0);if(this.prev<i.finallyLoc)return n(i.finallyLoc)}else if(u){if(this.prev<i.catchLoc)return n(i.catchLoc,!0)}else{if(!l)throw new Error(\"try statement without catch or finally\");if(this.prev<i.finallyLoc)return n(i.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,\"finallyLoc\")&&this.prev<o.finallyLoc){var i=o;break}}i&&(\"break\"===e||\"continue\"===e)&&i.tryLoc<=t&&t<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=e,a.arg=t,i?(this.method=\"next\",this.next=i.finallyLoc,f):this.complete(a)},complete:function(e,t){if(\"throw\"===e.type)throw e.arg;return\"break\"===e.type||\"continue\"===e.type?this.next=e.arg:\"return\"===e.type?(this.rval=this.arg=e.arg,this.method=\"return\",this.next=\"end\"):\"normal\"===e.type&&t&&(this.next=t),f},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),M(n),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if(\"throw\"===r.type){var o=r.arg;M(n)}return o}}throw new Error(\"illegal catch attempt\")},delegateYield:function(e,t,n){return this.delegate={iterator:C(e),resultName:t,nextLoc:n},\"next\"===this.method&&(this.arg=void 0),f}},e}function r(e){return r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},r(e)}function o(e,t,n,r,o,i,a){try{var u=e[i](a),l=u.value}catch(e){return void n(e)}u.done?t(l):Promise.resolve(l).then(r,o)}function i(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function u(e){o(a,r,i,u,l,\"next\",e)}function l(e){o(a,r,i,u,l,\"throw\",e)}u(void 0)}))}}function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function u(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(null==n)return;var r,o,i=[],a=!0,u=!1;try{for(n=n.call(e);!(a=(r=n.next()).done)&&(i.push(r.value),!t||i.length!==t);a=!0);}catch(e){u=!0,o=e}finally{try{a||null==n.return||n.return()}finally{if(u)throw o}}return i}(e,t)||s(e,t)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function c(e){return function(e){if(Array.isArray(e))return f(e)}(e)||function(e){if(\"undefined\"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e[\"@@iterator\"])return Array.from(e)}(e)||s(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function s(e,t){if(e){if(\"string\"==typeof e)return f(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return\"Object\"===n&&e.constructor&&(n=e.constructor.name),\"Map\"===n||\"Set\"===n?Array.from(e):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?f(e,t):void 0}}function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var d=Object.prototype.hasOwnProperty,p=Object.prototype.toString,v=Object.defineProperty,h=Object.getOwnPropertyDescriptor,m=function(e){return\"function\"==typeof Array.isArray?Array.isArray(e):\"[object Array]\"===p.call(e)},y=function(e){if(!e||\"[object Object]\"!==p.call(e))return!1;var t,n=d.call(e,\"constructor\"),r=e.constructor&&e.constructor.prototype&&d.call(e.constructor.prototype,\"isPrototypeOf\");if(e.constructor&&!n&&!r)return!1;for(t in e);return void 0===t||d.call(e,t)},g=function(e,t){v&&\"__proto__\"===t.name?v(e,t.name,{enumerable:!0,configurable:!0,value:t.newValue,writable:!0}):e[t.name]=t.newValue},b=function(e,t){if(\"__proto__\"===t){if(!d.call(e,t))return;if(h)return h(e,t).value}return e[t]},x=function e(){var t,n,r,o,i,a,u=arguments[0],l=1,c=arguments.length,s=!1;for(\"boolean\"==typeof u&&(s=u,u=arguments[1]||{},l=2),(null==u||\"object\"!=typeof u&&\"function\"!=typeof u)&&(u={});l<c;++l)if(null!=(t=arguments[l]))for(n in t)r=b(u,n),u!==(o=b(t,n))&&(s&&o&&(y(o)||(i=m(o)))?(i?(i=!1,a=r&&m(r)?r:[]):a=r&&y(r)?r:{},g(u,{name:n,newValue:e(s,a,o)})):void 0!==o&&g(u,{name:n,newValue:o}));return u};function q(e,t){return{range:function(e){var n=e.resources,r=e.data,o=n.theme.palette(\"categorical\",0===t?r.items.length:t);return r.items.map((function(e){return o[e.value%o.length]}))},valueAccessor:e.value}}function w(e,t){return{range:function(e){var n=e.resources,r=e.data,o=n.theme.palette(\"categorical\",0===t?r.items.length:t);return r.items.map((function(e){return o[e.row.value%o.length]}))},valueAccessor:e.value}}function M(e,t,n,r,o){var i,a=o.byRow,u=o.byElemNo;if(r&&(t.input.persistent||e.hc.qDimensionInfo.length>1||void 0===n.activeDimensionIndex&&e.hc.qSize.qcy>((null===(i=e.hc.qDataPages[0])||void 0===i?void 0:i.qArea.qHeight)||0)))return u(r,r.raw().qCardinal);if(r){var l=t.pic.extract({field:r.key(),trackBy:r.value}).length;return a(r,l)}return{}}function k(e,t){var n=e.hc.qDimensionInfo,r=t.input.byDimDef||{activeDimensionIndex:n.length-1};if(r.activeDimensionIndex>=0){var o=n[r.activeDimensionIndex];r=o.coloring&&o.coloring.colorMapRef?{type:\"libraryItem\",key:o.coloring.colorMapRef,activeDimensionIndex:r.activeDimensionIndex}:{activeDimensionIndex:r.activeDimensionIndex}}return r}function C(e,t){var n;return t.activeDimensionIndex>=0?n=e.pic.fields().filter((function(e){return\"dimension\"===e.type()}))[t.activeDimensionIndex]:\"libraryItem\"===t.type?!1===(n=t.key?e.pic.field((function(e){return e.raw().colorMapRef===t.key})):void 0)&&(n=e.pic.field((function(e){return\"colorByAlternative\"===e.raw().id}))):\"expression\"===t.type&&(n=e.pic.field((function(e){return\"colorByAlternative\"===e.raw().id}))),n}function S(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function D(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function I(){}var E=1/.7,O=\"\\\\s*([+-]?\\\\d+)\\\\s*\",A=\"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",N=\"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",P=/^#([0-9a-f]{3,8})$/,L=new RegExp(\"^rgb\\\\(\"+[O,O,O]+\"\\\\)$\"),T=new RegExp(\"^rgb\\\\(\"+[N,N,N]+\"\\\\)$\"),j=new RegExp(\"^rgba\\\\(\"+[O,O,O,A]+\"\\\\)$\"),F=new RegExp(\"^rgba\\\\(\"+[N,N,N,A]+\"\\\\)$\"),R=new RegExp(\"^hsl\\\\(\"+[A,N,N]+\"\\\\)$\"),H=new RegExp(\"^hsla\\\\(\"+[A,N,N,A]+\"\\\\)$\"),V={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function z(){return this.rgb().formatHex()}function _(){return this.rgb().formatRgb()}function B(e){var t,n;return e=(e+\"\").trim().toLowerCase(),(t=P.exec(e))?(n=t[1].length,t=parseInt(t[1],16),6===n?Y(t):3===n?new W(t>>8&15|t>>4&240,t>>4&15|240&t,(15&t)<<4|15&t,1):8===n?U(t>>24&255,t>>16&255,t>>8&255,(255&t)/255):4===n?U(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|240&t,((15&t)<<4|15&t)/255):null):(t=L.exec(e))?new W(t[1],t[2],t[3],1):(t=T.exec(e))?new W(255*t[1]/100,255*t[2]/100,255*t[3]/100,1):(t=j.exec(e))?U(t[1],t[2],t[3],t[4]):(t=F.exec(e))?U(255*t[1]/100,255*t[2]/100,255*t[3]/100,t[4]):(t=R.exec(e))?Z(t[1],t[2]/100,t[3]/100,1):(t=H.exec(e))?Z(t[1],t[2]/100,t[3]/100,t[4]):V.hasOwnProperty(e)?Y(V[e]):\"transparent\"===e?new W(NaN,NaN,NaN,0):null}function Y(e){return new W(e>>16&255,e>>8&255,255&e,1)}function U(e,t,n,r){return r<=0&&(e=t=n=NaN),new W(e,t,n,r)}function K(e){return e instanceof I||(e=B(e)),e?new W((e=e.rgb()).r,e.g,e.b,e.opacity):new W}function G(e,t,n,r){return 1===arguments.length?K(e):new W(e,t,n,null==r?1:r)}function W(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}function $(){return\"#\"+J(this.r)+J(this.g)+J(this.b)}function X(){var e=this.opacity;return(1===(e=isNaN(e)?1:Math.max(0,Math.min(1,e)))?\"rgb(\":\"rgba(\")+Math.max(0,Math.min(255,Math.round(this.r)||0))+\", \"+Math.max(0,Math.min(255,Math.round(this.g)||0))+\", \"+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===e?\")\":\", \"+e+\")\")}function J(e){return((e=Math.max(0,Math.min(255,Math.round(e)||0)))<16?\"0\":\"\")+e.toString(16)}function Z(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new ee(e,t,n,r)}function Q(e){if(e instanceof ee)return new ee(e.h,e.s,e.l,e.opacity);if(e instanceof I||(e=B(e)),!e)return new ee;if(e instanceof ee)return e;var t=(e=e.rgb()).r/255,n=e.g/255,r=e.b/255,o=Math.min(t,n,r),i=Math.max(t,n,r),a=NaN,u=i-o,l=(i+o)/2;return u?(a=t===i?(n-r)/u+6*(n<r):n===i?(r-t)/u+2:(t-n)/u+4,u/=l<.5?i+o:2-i-o,a*=60):u=l>0&&l<1?0:a,new ee(a,u,l,e.opacity)}function ee(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}function te(e,t,n){return 255*(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)}S(I,B,{copy:function(e){return Object.assign(new this.constructor,this,e)},displayable:function(){return this.rgb().displayable()},hex:z,formatHex:z,formatHsl:function(){return Q(this).formatHsl()},formatRgb:_,toString:_}),S(W,G,D(I,{brighter:function(e){return e=null==e?E:Math.pow(E,e),new W(this.r*e,this.g*e,this.b*e,this.opacity)},darker:function(e){return e=null==e?.7:Math.pow(.7,e),new W(this.r*e,this.g*e,this.b*e,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:$,formatHex:$,formatRgb:X,toString:X})),S(ee,(function(e,t,n,r){return 1===arguments.length?Q(e):new ee(e,t,n,null==r?1:r)}),D(I,{brighter:function(e){return e=null==e?E:Math.pow(E,e),new ee(this.h,this.s,this.l*e,this.opacity)},darker:function(e){return e=null==e?.7:Math.pow(.7,e),new ee(this.h,this.s,this.l*e,this.opacity)},rgb:function(){var e=this.h%360+360*(this.h<0),t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,o=2*n-r;return new W(te(e>=240?e-240:e+120,o,r),te(e,o,r),te(e<120?e+240:e-120,o,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var e=this.opacity;return(1===(e=isNaN(e)?1:Math.max(0,Math.min(1,e)))?\"hsl(\":\"hsla(\")+(this.h||0)+\", \"+100*(this.s||0)+\"%, \"+100*(this.l||0)+\"%\"+(1===e?\")\":\", \"+e+\")\")}}));var ne=Math.PI/180,re=180/Math.PI,oe=4/29,ie=6/29,ae=3*ie*ie;function ue(e){if(e instanceof le)return new le(e.l,e.a,e.b,e.opacity);if(e instanceof he)return me(e);e instanceof W||(e=K(e));var t,n,r=de(e.r),o=de(e.g),i=de(e.b),a=ce((.2225045*r+.7168786*o+.0606169*i)/1);return r===o&&o===i?t=n=a:(t=ce((.4360747*r+.3850649*o+.1430804*i)/.96422),n=ce((.0139322*r+.0971045*o+.7141733*i)/.82521)),new le(116*a-16,500*(t-a),200*(a-n),e.opacity)}function le(e,t,n,r){this.l=+e,this.a=+t,this.b=+n,this.opacity=+r}function ce(e){return e>.008856451679035631?Math.pow(e,1/3):e/ae+oe}function se(e){return e>ie?e*e*e:ae*(e-oe)}function fe(e){return 255*(e<=.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055)}function de(e){return(e/=255)<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function pe(e){if(e instanceof he)return new he(e.h,e.c,e.l,e.opacity);if(e instanceof le||(e=ue(e)),0===e.a&&0===e.b)return new he(NaN,0<e.l&&e.l<100?0:NaN,e.l,e.opacity);var t=Math.atan2(e.b,e.a)*re;return new he(t<0?t+360:t,Math.sqrt(e.a*e.a+e.b*e.b),e.l,e.opacity)}function ve(e,t,n,r){return 1===arguments.length?pe(e):new he(e,t,n,null==r?1:r)}function he(e,t,n,r){this.h=+e,this.c=+t,this.l=+n,this.opacity=+r}function me(e){if(isNaN(e.h))return new le(e.l,0,0,e.opacity);var t=e.h*ne;return new le(e.l,Math.cos(t)*e.c,Math.sin(t)*e.c,e.opacity)}function ye(e){return function(){return e}}function ge(e){return 1==(e=+e)?be:function(t,n){return n-t?function(e,t,n){return e=Math.pow(e,n),t=Math.pow(t,n)-e,n=1/n,function(r){return Math.pow(e+r*t,n)}}(t,n,e):ye(isNaN(t)?n:t)}}function be(e,t){var n=t-e;return n?function(e,t){return function(n){return e+n*t}}(e,n):ye(isNaN(e)?t:e)}S(le,(function(e,t,n,r){return 1===arguments.length?ue(e):new le(e,t,n,null==r?1:r)}),D(I,{brighter:function(e){return new le(this.l+18*(null==e?1:e),this.a,this.b,this.opacity)},darker:function(e){return new le(this.l-18*(null==e?1:e),this.a,this.b,this.opacity)},rgb:function(){var e=(this.l+16)/116,t=isNaN(this.a)?e:e+this.a/500,n=isNaN(this.b)?e:e-this.b/200;return new W(fe(3.1338561*(t=.96422*se(t))-1.6168667*(e=1*se(e))-.4906146*(n=.82521*se(n))),fe(-.9787684*t+1.9161415*e+.033454*n),fe(.0719453*t-.2289914*e+1.4052427*n),this.opacity)}})),S(he,ve,D(I,{brighter:function(e){return new he(this.h,this.c,this.l+18*(null==e?1:e),this.opacity)},darker:function(e){return new he(this.h,this.c,this.l-18*(null==e?1:e),this.opacity)},rgb:function(){return me(this).rgb()}}));var xe=function e(t){var n=ge(t);function r(e,t){var r=n((e=G(e)).r,(t=G(t)).r),o=n(e.g,t.g),i=n(e.b,t.b),a=be(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=o(t),e.b=i(t),e.opacity=a(t),e+\"\"}}return r.gamma=e,r}(1),qe=/^class(-pyramid)?/,we=function(e,t,n,r){var o=void 0!==n.min?n.min:r.min(),i=void 0!==n.max?n.max:r.max(),a=o,u=i,l=t.limits,s={},f=\"percent\"===t.limitType?l.map((function(e){return o+(i-o)*e})):l,d=t.colors.map((function(t){return e.resolveUIColor(t)}));if(o=Math.min.apply(Math,[o].concat(c(f))),i=Math.max.apply(Math,[i].concat(c(f))),s.min=o,s.max=i,t.breakTypes&&-1===t.breakTypes.indexOf(!0))s.type=\"categorical\",Object.assign(s,function(e){var t=e.min,n=e.max,r=e.limits,o=e.range,i=[],a=[];if(r.length)if(r[r.length-1]<t)a.push(t,n),i.push(o[o.length-1],o[o.length-1],o[o.length-1]);else if(r[0]>n)a.push(t,n),i.push(o[0],o[0],o[0]);else{if(r[0]>t)a.push(t),i.push(o[0]);else{a.push(t);for(var u=0;u<r.length;u++)if(t<r[u]){i.push(o[u]);break}}for(var l=0;l<r.length;l++)t<r[l]&&r[l]<n&&(a.push(r[l]),i.push(o[l]));if(r[r.length-1]<n)a.push(n),i.push(o[r.length]),i.push(o[r.length]);else{a.push(n);for(var c=0;c<r.length;c++)if(r[c]>n){i.push(o[c]),i.push(o[c]);break}}}else i.push(o[0]);return{min:t,max:n,range:i,domain:a}}({min:\"percent\"===t.limitType?o:a,max:\"percent\"===t.limitType?i:u,range:d,limits:\"percent\"===t.limitType?f:l}));else if(t.breakTypes){var p=t.breakTypes;s.type=\"continuous\",s.domain=[o],s.range=[d[0]];for(var v=0;v<f.length;v+=1)if(p[v]){var h=d[v],m=d[v+1],y=xe(h,m)(.5);s.range.push(y),s.domain.push(f[v]),v<f.length-1&&p[v+1]&&(s.range.push(d[v+1]),s.domain.push((f[v]+f[v+1])/2))}else s.range.push(d[v]),s.range.push(d[v+1]),s.domain.push(f[v]),s.domain.push(f[v]+Math.min(1e-6,(i-o)/1e6));s.range.push(d[d.length-1]),s.domain.push(i)}else s.domain=f,s.range=d;return s};function Me(e,t,n,r,o){var i,a,u,l=0,c=[],s=(e-t)/(r+1);if(0===s)return 1;for(i=0;i<n.length;i+=1)a=.99*(n[i]-t),u=n[i]>e?Math.floor(e/s):n[i]<t?0:Math.floor(a/s),Number.isNaN(u)||(c[u]?c[u]+=1:c[u]=1);for(i=0;i<c.length;i+=1)c[i]&&(l+=1);return l<=r||l>=o?Math.max(l,r):Me(e,t,n,r+1,o)}var ke=function(e,t,n,r){var o,i,a=t.theme,u=t.hc,l=r.f,s={mode:\"field\",fieldType:\"measure\",field:l?l.key():void 0,reverse:n.input.reverseScheme||!1,type:\"continuous\",range:function(e){return e.resources.theme.palette(\"quant\")}},f=[],d=!0;if(l){if(Number.isNaN(+l.min())||Number.isNaN(+l.max()))return{invalid:!0};(d=!(\"S\"===(o=n.pic.raw()).qMode&&(o.qDataPages[0]&&o.qSize.qcy>o.qDataPages[0].qArea.qHeight||!o.qDataPages.length&&o.qSize.qcy>0)||\"K\"===o.qMode&&o.qStackedDataPages[0]&&o.qSize.qcy>o.qStackedDataPages[0].qArea.qHeight||\"T\"===o.qMode&&o.qSize.qcy>o.qTreeDataPages[0].qGroupSize))&&(f=n.pic.extract({field:0,props:{num:{field:l.key()},exclude:{fields:u.qDimensionInfo.map((function(e,t){return{field:\"qDimensionInfo/\".concat(t)}})),value:function(e){return Math.min.apply(Math,c(e))<0}}}}).filter((function(e){return e.value>=0&&!e.exclude.value})).map((function(e){return e.num.value})).filter((function(e){return\"number\"==typeof e})))}if(!1===n.input.autoMinMax){if(s.min=n.input.measureMin,s.max=n.input.measureMax,s.max<s.min)return{invalid:!0}}else if(l&&!d)s.min=l.min(),s.max=l.max();else if(l){if(!f.length)return{invalid:!0};s.min=Math.min.apply(Math,c(f)),s.max=Math.max.apply(Math,c(f))}if(n.input.measureScheme&&(s.palettes={quant:n.input.measureScheme}),a){var p=a.getDataColorScales().filter((function(e){return e.key===n.input.measureScheme}))[0];s.type=p&&qe.test(p.type)?\"categorical\":\"continuous\",\"categorical\"===s.type&&(i=p.colors.some((function(e){return Array.isArray(e)}))?Math.max.apply(Math,c(p.colors.map((function(e){return e?e.length:0})))):p.colors.length)}if(\"categorical\"===s.type){for(var v=d?Me(s.max,s.min,f,1,i):i,h=(s.max-s.min)/v,m=[],y=0;y<v+1;y+=1)m.push(s.min+h*y);s.domain=m,s.range=function(e){for(var t=e.resources.theme.palette(\"quant\",v),n=Math.max(1,Math.floor(t.length/v)),r=[],o=0;o<v;o+=1)r.push(t[o*n]);return[r[0]].concat(r,[r[r.length-1]])}}return s};function Ce(e,t){var n;return t.activeMeasureIndex>=0?n=e.pic.fields().filter((function(e){return\"measure\"===e.type()}))[t.activeMeasureIndex]:\"libraryItem\"===t.type?n=e.pic.field((function(e){return e.raw().colorMapRef===t.key&&void 0!==t.key})):\"expression\"===t.type&&(n=e.pic.field((function(e){return\"colorByAlternative\"===e.raw().id}))),n||(n=e.pic.field((function(e){return void 0!==e.raw().matchMeasure})))&&(n=e.pic.fields().filter((function(e){return\"measure\"===e.type()}))[n.raw().matchMeasure]),n}function Se(e){var n,r=e.cm,o=e.defaults,i=e.index,a=e.input,u=e.pic;if(!a||!a.on)return null;var l=null!==(n=a.mode)&&void 0!==n?n:\"primary\";return\"primary\"===l?function(e,n,r){var o=r.primary;return void 0!==n.paletteColor&&n.paletteColor&&(o=e.resolveUIColor(n.paletteColor)),t(t({},r),{},{mode:\"constant\",type:\"constant\",primary:o})}(r,a,o):\"byExpression\"===l?function(e,n,r){var o=\"qMeasureInfo/\".concat(e,\"/\"),i=n.field((function(e){return e.id().startsWith(o)&&\"colorByMeasureExpression\"===e.raw().id})),a=i;return t(t({},r),{},a?{mode:\"field\",fieldType:\"expression\",field:i?i.key():void 0,type:\"color\"}:{mode:\"constant\",type:\"constant\",primary:r.nil})}(i,u,o):null}function De(e){e.measureOverrides.every((function(e){return!e}))&&(e.measureOverrides=null)}function Ie(e,t){for(var n=(null==t?void 0:t.domain)||[],r=(null==t?void 0:t.range)||[],o=[],i=0;i<e.length;++i){var a=e[i];if(\"constant\"===(null==a?void 0:a.mode)){var u=n.indexOf(i);-1===u?(n.push(i),r.push(a.primary)):r[u]=a.primary,e[i]=null}else if(a){o.push(i);var l=n.indexOf(i);-1!==l&&(n.splice(l,1),r.splice(l,1))}}return{domain:n,range:r,exclude:o}}function Ee(e,t,n,r){if(t.input&&!t.input.auto){if(\"byMeasure\"===t.input.mode)return function(e,t,n){var r=t.theme,o=t.hc,i=(arguments.length>3&&void 0!==arguments[3]?arguments[3]:{}).getCField,a=void 0===i?Ce:i,u=n.input.byMeasureDef||{activeMeasureIndex:0},l=a(n,u),c=ke(0,{theme:r,hc:o},n,{f:l});if(c.invalid)return c;(\"expression\"===u.type||u.activeMeasureIndex<0)&&(c.label=u.label,l&&\"color.altLabel\"===l.raw().labelExpRef&&(c.label=n.input.altLabel)),!c.label&&l&&(c.label=l.title());var s=u.activeMeasureIndex>=0?l:null;if(!s&&l&&void 0!==l.raw().matchMeasure&&l.raw().matchMeasure>-1&&(s=n.pic.fields().filter((function(e){return\"measure\"===e.type()}))[l.raw().matchMeasure]),n.input.useMeasureGradient&&\"libraryItem\"===u.type)if(s){var f=s.raw().coloring;f&&f.gradient&&x(c,we(e,f.gradient,c,s))}else c.auxiliary=u;return c}(e,n,t);if(\"byDimension\"===t.input.mode)return function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=r.getCDef,i=void 0===o?k:o,a=r.getCByField,u=void 0===a?C:a,l=r.getPersistence,c=void 0===l?M:l,s=i(t,n),f=u(n,s),d=f?f.raw():{},p=n&&n.pic?n.pic.raw():{};if(d.qError||d.qSize&&0===d.qSize.qcy&&!p.qHasOtherValues)return{invalid:!0};var v={mode:\"field\",fieldType:\"dimension\",type:\"categorical\",field:f?f.key():void 0,isFieldLocked:d.qLocked};return(\"expression\"===s.type||s.activeDimensionIndex<0)&&(v.label=s.label,\"color.altLabel\"===d.labelExpRef&&(v.label=n.input.altLabel)),!v.label&&f&&(v.label=f.title()),n.input.dimensionScheme&&(v.palettes={categorical:n.input.dimensionScheme}),n.input.useDimColVal&&\"libraryItem\"===s.type&&(v.auxiliary=s),x(v,c(t,n,s,f,{byRow:w,byElemNo:q})),v}(e,n,t);if(\"byExpression\"===t.input.mode)return function(e,t,n,r){var o=t.hc,i=t.theme,a=t.translator,u=n.pic.field((function(e){return\"colorByExpression\"===e.raw().id}));if(!u||!u.raw().qFallbackTitle&&!n.input.colorExpression||!(Number.isFinite(u.raw().qMin)&&Number.isFinite(u.raw().qMax)||n.input.expressionIsColor))return{mode:\"constant\",type:\"constant\",primary:r.nil};if(n.input.expressionIsColor)return{mode:\"field\",fieldType:\"expression\",field:u?u.key():void 0,type:\"color\"};var l=ke(0,{hc:o,theme:i},n,{f:u});return l.invalid||(l.label=n.input.expressionLabel||a.get(\"Object.ChartTooltip.ColorExpression\")),l}(0,n,t,r);if(\"byMultiple\"===t.input.mode||\"primary\"===t.input.mode)return function(e,t,n,r){var o=t.hc,i=t.theme,a=t.translator,u=n.input.useBaseColors;if((\"byMultiple\"===n.input.mode||\"primary\"===n.input.mode&&\"measure\"===n.input.useBaseColors)&&o.qMeasureInfo.length>1&&(u=\"measure\"),\"measure\"===u){var l=[],c=[];\"measure\"===n.input.useBaseColors&&o.qMeasureInfo.forEach((function(t,n){if(t.baseColor||t.coloring&&t.coloring.baseColor){l.push(n);var o=e.resolveUIColor(t.baseColor||t.coloring.baseColor);\"none\"===o?c.push(r.primary):c.push(o)}}));var s=n.input.dimensionScheme?{categorical:n.input.dimensionScheme}:void 0,f=i?i.getDataColorPalettes()[0]:void 0;return\"measure\"===n.input.useBaseColors&&f&&(s={categorical:f.key}),{mode:\"measure\",type:\"categorical\",palettes:s,label:a?a.get(\"Common.Measures\"):void 0,explicit:l.length?{domain:l,range:c}:void 0}}if(\"dimension\"===u){var d=[],p=[];return o.qDimensionInfo.forEach((function(t,n){if(t.baseColor||t.coloring&&t.coloring.baseColor){d.push(n);var o=e.resolveUIColor(t.baseColor||t.coloring.baseColor);\"none\"===o?p.push(r.primary):p.push(o)}})),{mode:\"dimension\",type:\"categorical\",field:d.length?d[0]:void 0,explicit:d.length?{domain:d,range:p}:void 0}}var v=r.primary;if(void 0!==n.input.paletteColor)n.input.paletteColor&&(v=e.resolveUIColor(n.input.paletteColor));else{var h=n.input.singleColor;\"number\"!=typeof h||Number.isNaN(h)||(v=[\"#b0afae\",\"#7b7a78\",\"#545352\",\"#4477aa\",\"#7db8da\",\"#b6d7ea\",\"#46c646\",\"#f93f17\",\"#ffcf02\",\"#276e27\",\"#ffffff\",\"#000000\"][h])}return{mode:\"constant\",type:\"constant\",primary:v}}(e,n,t,r)}return{}}function Oe(e,t,n,r){var o,i=Ee(e,t,n,r);return null!==(o=t.input)&&void 0!==o&&o.measureOverrides?(i.measureOverrides=t.input.measureOverrides.map((function(n,o){return Se({cm:e,input:n,defaults:r,index:o,pic:t.pic})})),function(e,t){var n,r,o,i=t.translator;if(De(e),1===(null===(n=e.measureOverrides)||void 0===n?void 0:n.length))return e.measureOverrides[0];if(\"measure\"===e.mode&&e.measureOverrides&&(e.explicit=Ie(e.measureOverrides,e.explicit),De(e)),null!==(r=e.measureOverrides)&&void 0!==r&&r.every((function(e){return\"constant\"===(null==e?void 0:e.mode)}))){var a={mode:\"measure\",type:\"categorical\",label:null==i?void 0:i.get(\"Common.Measures\")};return a.explicit=Ie(e.measureOverrides),a}return null!==(o=e.measureOverrides)&&void 0!==o&&o.every((function(e){return e}))?{invalid:!0,measureOverrides:e.measureOverrides}:e}(i,n)):i}function Ae(e){var n=t({hc:null,colorProps:null,layout:null,theme:null},e),r={},o={auto:function(){return{mode:\"primary\"}},getDimensionColorMap:function(){return Promise.reject()},getMeasure:function(){return Promise.reject()},getAttributeDimension:function(){return Promise.reject()}},i={auto:function(e){return e?(o.auto=e,i):o.auto},getDimensionColorMap:function(e){return e?(o.getDimensionColorMap=e,i):o.getDimensionColorMap},getAttributeDimension:function(e){return e?(o.getAttributeDimension=e,i):o.getAttributeDimension},getMeasure:function(e){return e?(o.getMeasure=e,i):o.getMeasure},set:function(e){var t;if(!e.colorProps)throw new Error('Missing \"colorProps\"');if(x(n,e),(r={pic:n.picasso.data(\"q\")({data:n.hc,config:{localeInfo:n.localeInfo}}),input:n.colorProps}).input.auto){var i=o.auto(e.layout);r.input=x(!0,{},r.input,i,{auto:!1});var a=n.theme?n.theme.getDataColorPalettes():[];a[0]&&(r.input.dimensionScheme=a[0].key);var u=0;r.input.byDimDef&&+r.input.byDimDef.activeDimensionIndex>=0&&(u=+r.input.byDimDef.activeDimensionIndex),n.hc&&n.hc.qDimensionInfo[u]&&n.hc.qDimensionInfo[u].coloring&&n.hc.qDimensionInfo[u].coloring.colorMapRef&&r.input.byDimDef&&(r.input.byDimDef.type=\"libraryItem\",r.input.byDimDef.key=n.hc.qDimensionInfo[u].coloring.colorMapRef)}null!==(t=r.input.measureOverrides)&&void 0!==t&&t.every((function(e){return!e||!e.on}))&&(r.input=x(!1,{},r.input,{measureOverrides:null}))},palettes:function(){if(!r.palettes){var e=n.theme,t=[];(e&&e.getDataColorPickerPalettes()||[]).forEach((function(e){t.push({key:\"ui\",colors:e.colors})})),r.palettes=t}return r.palettes},getAuxiliaryData:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"/qHyperCubeDef\";if(!e.auxiliary&&!/qAttrDimInfo/.test(e.field))return Promise.resolve();var r=e.auxiliary||{},i=r.key;if(\"measure\"===e.fieldType)return o.getMeasure(i,n).catch((function(){}));if(\"dimension\"===e.fieldType){var a=\"\".concat(t,\"/\").concat(e.field).replace(\"qDimensionInfo\",\"qDimensions\").replace(\"qAttrDimInfo\",\"qAttributeDimensions\");return Promise.all([/qAttrDimInfo/.test(e.field)?o.getAttributeDimension(a,n).catch((function(){})):Promise.resolve(),i?o.getDimensionColorMap(i,n).catch((function(){})):Promise.resolve()])}return Promise.resolve()},getAuxiliarySettings:function(e,o){var i=this;return e.auxiliary||/qAttrDimInfo/.test(e.field)?(this.palettes(),this.getAuxiliaryData(e,o).then((function(o){if(!o)return{};if(\"measure\"===e.fieldType){if(o.coloring&&o.coloring.gradient){var a=r.pic.field(e.field);return we(i,o.coloring.gradient,e,a)}return{}}if(\"dimension\"===e.fieldType){var u={nil:e.nil,others:e.others},l=o[0],c=o[1]?o[1].colorMap:null;if(l){var s=n.picasso.data(\"q\")({data:{qDimensionInfo:[r.pic.field(e.field).raw(),r.pic.field(e.field).raw()],qMeasureInfo:[],qDataPages:l,qInterColumnSortOrder:[0,1],qMode:\"S\"}});u.legendDataset=s}return c?function(e,n,r,o){var i=o.external,a=o.field,u=t({},e);x(u,q(a,a.raw().qCardinal));var l=i.theme?i.theme.getDataColorPalettes()[0]:null;return n.nul&&(u.nil=r.resolveUIColor(n.nul)),n.oth&&(u.others=r.resolveUIColor(n.oth)),n.usePal?(u.palettes={categorical:n.pal},l&&!n.pal&&(u.palettes.categorical=l.key,x(u,q(a)))):!1===n.autoFill&&n.single?u.range=[r.resolveUIColor(n.single)]:n.autoFill&&(l&&(u.palettes={categorical:l.key}),x(u,q(a))),n.colors&&n.colors.length&&(u.explicit=function(e,t,n){for(var r={},o=0;o<e.length;o+=1)r[e[o].value]=e[o].baseColor;var i=[];return{domain:function(e){var o=e.data,a=[];i=[];for(var u=0;u<o.items.length;u++){var l=o.items[u],c=(l.text||l).label;r[c]&&-1===a.indexOf(l.value)&&(a.push(l.value),i.push(t.resolveUIColor(r[c])))}return a.push(-3,-2),i.push(n.others),i.push(n.nil),a},range:function(){return i}}}(n.colors,r,u)),u}(u,c,i,{external:n,field:r.pic.field(e.field)}):u}return{}}))):Promise.resolve()},resolveUIColor:function(e){if(e.index<0||void 0===e.index)return e.color;if(void 0===r.uiPalette&&(r.uiPalette=this.palettes().filter((function(e){return\"ui\"===e.key}))[0]||!1),!r.uiPalette)return e.color;var t=\"none\"===r.uiPalette.colors[0]?e.index:e.index-1;return void 0===r.uiPalette.colors[t]?e.color:r.uiPalette.colors[t]},settings:function(){if(this.palettes(),!r.settings){var e={primary:\"steelblue\",others:\"#aaa\",nil:\"#ddd\"},o=n.theme;o&&(e=t(t({},e),o.getDataColorSpecials())),r.settings=x(e,Oe(this,r,n,e))}return r.settings}};return i}var Ne=function(e,t){var n=e.fieldType,r={};if(t)if(\"measure\"===n){var o=t.coloring;o&&(r.measureGradient=o.gradient)}else if(\"dimension\"===n){var i=t[0],a=t[1];i&&(r.legendDataPage=i),a&&(r.dimValsData=a.colorMap)}return r},Pe=function(e){throw e.isHandled=!0,e},Le=function(e,t){var n=t.layout,r=t.app;return n&&n.snapshotData?n.snapshotData.content&&n.snapshotData.content.chartData&&n.snapshotData.content.chartData.dimValsData?Promise.resolve({colorMap:n.snapshotData.content.chartData.dimValsData}):Promise.reject():r&&r.getObject?r.getObject(\"ColorMapModel_\".concat(e)).then((function(e){return e.getLayout()})):Promise.reject()},Te=function(e,t){var n=t.layout,r=t.app;return n&&n.snapshotData?n.snapshotData.content&&n.snapshotData.content.chartData&&n.snapshotData.content.chartData.measureGradient?Promise.resolve({coloring:{gradient:n.snapshotData.content.chartData.measureGradient}}):Promise.reject():r&&r.getMeasure?r.getMeasure(e).then((function(e){return e.getMeasure()})):Promise.reject()},je=function(e,t){var n=t.layout,r=t.model,o=t.app;if(n&&n.snapshotData)return n.snapshotData.content&&n.snapshotData.content.chartData&&n.snapshotData.content.chartData.legendDataPage?Promise.resolve(n.snapshotData.content.chartData.legendDataPage):Promise.reject();if(r&&r.session&&o){return r.getHyperCubeData(e,[{qHeight:100,qLeft:0,qTop:0,qWidth:2}]).catch(Pe)}return Promise.reject()};function Fe(e){var t=e.hc,n=e.source,r=e.coloring,o={data:{extract:[{source:\"dummy\",field:0,filter:function(){return o.expando=t.qDataPages[0]?t.qDataPages[0].qArea.qTop:0,!1}},{source:n,field:r.field,trackBy:r.valueAccessor,reduce:\"first\",props:{row:{reduce:function(){return o.expando++}},text:{value:function(e){return e.qText},reduce:\"first\"}}}]},expando:0};return o}function Re(e){return function(t){return\"object\"===r(t.datum[e])?t.datum[e].value:void 0}}function He(e){return\"object\"===r(e.datum.isNull)?e.datum.isNull.value:-2===e.datum.value}function Ve(e){return-3===e.datum.value}var ze=function(e,t,n){var r=e&&e.dock||void 0;if(\"auto\"!==r)return r||\"right\";if(t){var o=t.element.getBoundingClientRect();if(o.height>o.width)return\"bottom\"}return n?\"left\":\"right\"},_e=function(e,t,n){return!(n.invalid||\"color\"===n.type||\"measure\"===n.mode&&t.qMeasureInfo.length<=1||\"dimension\"===n.mode)&&(\"function\"==typeof e.show?e.show():!1!==e.show)};function Be(e,t){var n=e.styleReference,r=e.chart,o=e.rtl,i=t.legendProps,a=t.coloring,u=t.theme,l=t.hc;return{layout:{minimumLayoutMode:\"MEDIUM\",dock:ze(i,r,o)},show:\"function\"==typeof i.show?function(){return _e(i,l,a)}:_e(i,l,a),renderer:\"svg\",mounted:function(e){e.childNodes[0].style.pointerEvents=\"none\",e.style.overflow=\"hidden\"},settings:{title:{show:!1!==i.showTitle,wordBreak:\"break-word\",maxLines:2,lineHeight:1.2,text:a.label||\"\",fill:u?u.getStyle(n,\"legend.title\",\"color\"):void 0,fontSize:u?u.getStyle(n,\"legend.title\",\"fontSize\"):\"16px\",fontFamily:u?u.getStyle(n,\"legend.title\",\"fontFamily\"):\"'Source Sans Pro', 'Arial', 'sans-serif'\"}}}}function Ye(e,n,r){return\"categorical\"===n.coloring.type?function(e,n,r){var o=Be(e,n);if(!o.show)return!1;var i,a=e.key,u=e.styleReference,l=e.viewState,c=e.rtl,s=e.settings,f=e.style,d=n.scaleKey,p=n.theme,v=n.scales,h=o.layout.dock,m=\"left\"===h||\"right\"===h?{maxLines:3,wordBreak:\"break-word\"}:{},y={up:\"M13.6,11 L2.4,11 C2.28954305,11 2.2,10.9104569 2.2,10.8 C2.2,10.756726 2.21403557,10.7146192 2.24,10.68 L7.84,3.21333333 C7.90627417,3.12496777 8.03163444,3.10705916 8.12,3.17333333 C8.13516113,3.18470418 8.14862915,3.1981722 8.16,3.21333333 L13.76,10.68 C13.8262742,10.7683656 13.8083656,10.8937258 13.72,10.96 C13.6853808,10.9859644 13.643274,11 13.6,11 Z\",down:\"M2.4,4 L13.6,4 C13.7104569,4 13.8,4.08954305 13.8,4.2 C13.8,4.24327404 13.7859644,4.28538077 13.76,4.32 L8.16,11.7866667 C8.09372583,11.8750322 7.96836556,11.8929408 7.88,11.8266667 C7.86483887,11.8152958 7.85137085,11.8018278 7.84,11.7866667 L2.24,4.32 C2.17372583,4.23163444 2.19163444,4.10627417 2.28,4.04 C2.31461923,4.01403557 2.35672596,4 2.4,4 Z\",left:\"M11,2.4 L11,13.6 C11,13.7104569 10.9104569,13.8 10.8,13.8 C10.756726,13.8 10.7146192,13.7859644 10.68,13.76 L3.21333333,8.16 C3.12496777,8.09372583 3.10705916,7.96836556 3.17333333,7.88 C3.18470418,7.86483887 3.1981722,7.85137085 3.21333333,7.84 L10.68,2.24 C10.7683656,2.17372583 10.8937258,2.19163444 10.96,2.28 C10.9859644,2.31461923 11,2.35672596 11,2.4 Z\",right:\"M4,13.6 L4,2.4 C4,2.28954305 4.08954305,2.2 4.2,2.2 C4.24327404,2.2 4.28538077,2.21403557 4.32,2.24 L11.7866667,7.84 C11.8750322,7.90627417 11.8929408,8.03163444 11.8266667,8.12 C11.8152958,8.13516113 11.8018278,8.14862915 11.7866667,8.16 L4.32,13.76 C4.23163444,13.8262742 4.10627417,13.8083656 4.04,13.72 C4.01403557,13.6853808 4,13.643274 4,13.6 Z\"};\"dimension\"===n.coloring.fieldType&&(i=function(e){return e.datum.value>=0||-3===e.datum.value});var g=\"\".concat(d,\"Legend\");return x(!0,o,{type:\"legend-cat\",key:\"\".concat(a,\"-cat\"),scale:g in v?g:d,settings:{layout:{scrollOffset:function(){return l?l.get(\"legendScrollOffset\"):void 0},size:-1!==[\"top\",\"bottom\"].indexOf(o.layout.dock)?2:1,direction:c?\"rtl\":\"ltr\",horizontal:20},item:{show:i,label:t({fill:p?p.getStyle(u,\"legend.label\",\"color\"):void 0,fontSize:p?p.getStyle(u,\"legend.label\",\"fontSize\"):void 0,fontFamily:p?p.getStyle(u,\"legend.label\",\"fontFamily\"):\"'Source Sans Pro', 'Arial', 'sans-serif'\"},m)},navigation:{disabled:r,button:{content:function(e,t){var n=t.direction;return e(\"i\",{style:{\"pointer-events\":\"none\",fontSize:\"12px\",display:\"inline-block\",fontStyle:\"normal\",lineHeight:\"0\",textAlign:\"center\",textTransform:\"none\",verticalAlign:\"-0.125em\",textRendering:\"optimizelegibility\",margin:\"0px\"}},[e(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"1em\",height:\"1em\",viewBox:\"0 0 16 16\",fill:\"currentColor\"},[e(\"path\",{d:y[n]})])])}}}},brush:{consume:[{context:\"selection\",data:[\"\",a],style:{inactive:{opacity:.3}}}]}},{settings:s,style:f})}(e,n,r):\"continuous\"===n.coloring.type&&function(e,t){var n=e.key,r=e.styleReference,o=e.rtl,i=e.settings,a=e.style,u=t.scaleKey,l=t.theme,c=Be(e,t);return!!c.show&&x(!0,c,{type:\"legend-seq\",key:\"\".concat(n,\"-seq\"),settings:{fill:u,major:\"\".concat(u,\"Range\"),length:1,tick:{fill:l?l.getStyle(r,\"legend.label\",\"color\"):void 0,fontSize:l?l.getStyle(r,\"legend.label\",\"fontSize\"):void 0,fontFamily:l?l.getStyle(r,\"legend.label\",\"fontFamily\"):\"'Source Sans Pro', 'Arial', 'sans-serif'\"},title:{anchor:!o||\"top\"!==c.layout.dock&&\"bottom\"!==c.layout.dock?void 0:\"right\",padding:parseFloat(c.settings.title.fontSize)||16}}},{settings:i,style:a})}(e,n)}function Ue(e,t,n){var r=[],o=[],i=Ye(e,t,n&&n.navigationDisabled);return r.push(i),i&&\"legend-cat\"===i.type&&(o.push(function(e){var t=e.key,n=e.requireFailure,r=e.recognizeWith,o=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).actions;return{key:\"event:tap-\".concat(t),type:\"Tap\",requireFailure:n,recognizeWith:r,options:{event:\"legendtap\",interval:10,pointers:1,enable:function(e,n){var r;if(!n)return!0;if(null!=o&&null!==(r=o.interact)&&void 0!==r&&r.enabled&&!o.interact.enabled())return!1;if(!this.chart.componentsFromPoint({x:n.center.x,y:n.center.y}).some((function(e){return e.key===\"\".concat(t,\"-cat\")})))return!1;var i=n.srcEvent.target;return!!(i&&i.hasAttribute(\"data-action\")&&i.hasAttribute(\"data-component-key\"))||!(!i||!i.childNodes[0]||\"BUTTON\"!==i.childNodes[0].nodeName)}},events:{legendtap:function(e){e.preventDefault();var t=e.srcEvent.target;t&&t.hasAttribute(\"data-action\")&&t.hasAttribute(\"data-component-key\")&&this.chart.component(t.getAttribute(\"data-component-key\")).emit(t.getAttribute(\"data-action\"))}}}}(e,n)),o.push(function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.eventName,r=t.key,o=t.requireFailure,i=t.recognizeWith,u=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).actions;return{key:\"event:pan-\".concat(r),type:\"Pan\",requireFailure:o,recognizeWith:i,options:{event:n,pointers:1,threshold:10,enable:function(e,t){var o;return this.started===n||!t||!(null!=u&&null!==(o=u.interact)&&void 0!==o&&o.enabled&&!u.interact.enabled())&&this.chart.componentsFromPoint({x:t.center.x,y:t.center.y}).some((function(e){return e.key===\"\".concat(r,\"-cat\")}))}},events:(e={},a(e,\"\".concat(n,\"start\"),(function(e){e.preventDefault(),this.started!==n&&(this.started=n,this.chart.component(\"\".concat(r,\"-cat\")).emit(\"panstart\",e))})),a(e,\"\".concat(n,\"move\"),(function(e){e.preventDefault(),this.chart.component(\"\".concat(r,\"-cat\")).emit(\"panmove\",e)})),a(e,\"\".concat(n,\"end\"),(function(e){e.preventDefault(),this.chart.component(\"\".concat(r,\"-cat\")).emit(\"panend\",e),this.started=!1})),e)}}(e,n))),{interactions:o,components:r}}var Ke=function(e){return\"rgba(\".concat([(16711680&e)>>16,(65280&e)>>8,255&e,((4278190080&e)>>>24)/255].join(\",\"),\")\")};function Ge(e){var n=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.auto,n=Ae(e.resources).auto(t||function(){return{mode:\"byDimension\",persistent:!1,useDimColVal:!0,byDimDef:{activeDimensionIndex:0,type:\"expression\",label:\"\"}}}).getDimensionColorMap((function(e,t){var n=t.layout,r=t.app;return Le(e,{layout:n,app:r})})).getMeasure((function(e,t){var n=t.layout,r=t.app;return Te(e,{layout:n,app:r})})).getAttributeDimension((function(e,t){var n=t.layout,r=t.model,o=t.app;return je(e,{layout:n,model:r,app:o})}));return n.getSnapshotData=Ne,n}({resources:e}),r={},o={},i=function(e){return o.settings||(e||console.warn(\"settings() called before auxiliarySettings()\"),o.settings=n.settings()),o.settings},u={config:function(i){if(r=t({},i),o={},!r.key)throw new Error(\"Missing key\");n.set(t(t({},e),r))},auto:function(e){return e?(n.auto(e),u):n.auto()},getAuxiliarySettings:function(e){return o.auxiliarySettings?Promise.resolve(o.auxiliarySettings):n.getAuxiliarySettings(i(!0),e).then((function(e){return o.auxiliarySettings=e||{},o.settings=t(t({},o.settings),o.auxiliarySettings),o.scales=void 0,o.color=void 0,o.auxiliarySettings}))},getAuxiliaryData:function(){return n.getAuxiliaryData(i())},getSnapshotData:function(e){var t=i();return n.getAuxiliaryData(t,e).then((function(e){return n.getSnapshotData(t,e)}))},resolveUIColor:function(e){return n.resolveUIColor(e)},settings:function(){var e=i();return{mode:e.mode,type:e.type,label:e.label,field:e.field,fieldType:e.fieldType,nil:e.nil,others:e.others,primary:e.primary}},settingsForMeasure:function(e){var t,n=null===(t=i().measureOverrides)||void 0===t?void 0:t[e];return n||this.settings()},isSelectionLocked:function(e){var t=e.isMeasureSelectionLocked;return function(e,t){var n=t.isMeasureSelectionLocked;return\"field\"!==e.mode||(\"dimension\"===e.fieldType?e.isFieldLocked:\"measure\"!==e.fieldType||n)}(i(),{isMeasureSelectionLocked:t})},palettes:function(){return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.colorProps,n=e.coloring,r=e.theme,o=[];if(n&&n.palettes&&r){var i=n.palettes.categorical||t.dimensionScheme,a=r.getDataColorPalettes().filter((function(e){return e.key===i}))[0]||r.getDataColorPalettes()[0];i&&a&&o.push({key:\"categorical\",colors:a.colors});var u=n.palettes.metric||t.measureScheme,l=r.getDataColorScales().filter((function(e){return e.key===u}))[0];if(l){var s=l.colors[0]?l.colors:[[]].concat(c(l.colors.slice(1)));s=Array.isArray(s[0])?s.map((function(e){return e.slice().reverse()})):s.slice().reverse(),o.push({key:\"quant\",colors:s})}}return o}({coloring:i(),colorProps:r.colorProps,theme:r.theme})},scales:function(){return o.scales=o.scales||function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.hc,r=e.coloring,o=e.rtl,i=e.key,a=e.source,u=e.picasso,l={},s=i;if(r){var f={override:!0,domain:r.explicit&&\"function\"==typeof r.explicit.domain?r.explicit.domain:[].concat(c((r.explicit||{}).domain||[]),[-3,-2]),range:r.explicit&&\"function\"==typeof r.explicit.range?r.explicit.range:[].concat(c((r.explicit||{}).range||[]),[r.others,r.nil])};if(\"field\"===r.mode){if(\"dimension\"===r.fieldType){var d,p=Fe({hc:n,source:a,coloring:r}).data;if(r.legendDataset){var v=0,h={};u.data(\"q\")({data:n}).extract({field:r.field,trackBy:r.valueAccessor,reduce:function(e){var t=e[0];return h[t]=v++,e[0]}}),d={source:\"attrDim\",extract:{field:\"qDimensionInfo/0\",filter:function(e){return e.qElemNumber>=0},props:{row:{value:function(e){return h[e.qElemNumber]}}}}}}var m={data:p,range:r.range,domain:r.domain,explicit:f,type:\"categorical-color\",label:function(e){return e.datum.text&&e.datum.text.value?e.datum.text.value:e.datum.label}};l[s]=m,d&&(l[\"\".concat(s,\"Legend\")]=t(t({},m),{},{data:d})),n&&n.qHasOtherValues&&d&&((d||m.data).amend=[{label:n.qDimensionInfo[0].othersLabel,source:{key:\"qHyperCube\",field:\"qDimensionInfo/0\"},row:{value:-3},value:-3}])}else if(\"measure\"===r.fieldType){var y={data:{field:r.field},min:r.min,max:r.max};l[s]=x({},y,{type:\"categorical\"===r.type?\"threshold-color\":\"sequential-color\",range:r.range,domain:r.domain,invert:r.reverse}),\"sequential-color\"===l[s].type&&(l[\"\".concat(s,\"Range\")]=x({},y,{invert:!!o}))}else if(\"color\"!==r.type)throw new Error(\"UNUSED FIELD\")}else if(\"dimension\"===r.mode){var g={data:n.qDimensionInfo.map((function(e,t){return t})),label:function(e){return n.qDimensionInfo[e.datum.value].qFallbackTitle},explicit:f,type:\"categorical-color\"};l[s]=g}else if(\"measure\"===r.mode){var b={data:n.qMeasureInfo.map((function(e,t){return t})).filter((function(e){var t,n;return!(null!==(t=r.explicit)&&void 0!==t&&null!==(n=t.exclude)&&void 0!==n&&n.includes(e))})),label:function(e){return n.qMeasureInfo[e.datum.value].qFallbackTitle},explicit:f,type:\"categorical-color\"};l[s]=b}}return l}({hc:r.hc,coloring:i(),key:r.key,source:r.source,picasso:e.picasso}),o.scales},color:function(){return o.color=o.color||function(e){var t=e.coloring,n=e.scales,r=e.key,o=Re(r),i=Re(\"\".concat(r,\"IsAnOther\")),a=function(e,t){var r=e.fieldType,a=e.invalid,u=e.mode,l=e.nil,c=e.others,s=e.primary,f=e.type;return a?function(e){return Ve(e)||i(e)?c:l}:n[t]?function(e){return Ve(e)?c:He(e)||-2===o(e)&&\"dimension\"===r||\"NaN\"===o(e)?l:i(e)?c:e.resources.scale(t)(o(e))||c}:\"constant\"===u?function(e){return Ve(e)||i(e)?c:He(e)?l:s}:\"color\"===f?function(e){return Ve(e)||i(e)?c:He(e)?l:o(e)||c}:null},u=a(t,r);if(t.measureOverrides){var l=Re(\"\".concat(r,\"MeasureIdx\")),c=t.measureOverrides.map((function(e){return e&&a(e)}));return function(e){var t=l(e);return c[t]?c[t](e):u(e)}}return u}({coloring:i(),scales:this.scales(),key:r.key}),o.color},datumProps:function(e){return function(e){var t,n,r=e.hc,o=e.coloring,i=e.scales,u=e.key,l=e.addMeasureIx,c=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,s=u,f=o.nil;\"field\"===o.mode&&o.field?t=o.field:i[u]&&\"field\"===o.mode&&(t=i[u].data.field||o.field),t?(n={field:t,reduce:\"first\"},\"color\"===o.type&&(n.value=function(e){return\"NaN\"!==e.qNum?Ke(e.qNum):e.qText&&B(e.qText)?e.qText:f})):\"dimension\"===o.mode?n=void 0!==o.field?o.field:r.qDimensionInfo.length-1:\"measure\"===o.mode&&(n=c);var d=a({},s,n);return r.qDimensionInfo.length>1&&(d[\"\".concat(s,\"IsAnOther\")]={fields:r.qDimensionInfo.map((function(e,t){return{field:\"qDimensionInfo/\".concat(t)}})),value:function(e){return-1!==e.indexOf(-3)}}),l&&(d[\"\".concat(s,\"MeasureIdx\")]=c),d}({coloring:this.settingsForMeasure(e),scales:this.scales(),key:r.key,hc:r.hc,addMeasureIx:i().measureOverrides},e)},data:function(){var e=i(),t={key:\"dummy\",data:[[\"field\"],[\"a\"]]};return e.legendDataset?[t,{type:\"q\",key:\"attrDim\",data:e.legendDataset.raw(),config:{localeInfo:r.localeInfo}}]:[t]},legend:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.eventName,n=e.key,o=e.viewState,a=e.chart,u=e.rtl,l=e.styleReference,c=void 0===l?\"object.legend\":l,s=e.settings,f=void 0===s?{}:s,d=e.style,p=void 0===d?{}:d,v=arguments.length>1?arguments[1]:void 0;return Ue({eventName:t,key:n,rtl:u,viewState:o,chart:a,styleReference:c,settings:f,style:p},{legendProps:r.legendProps,scaleKey:r.key,coloring:i(),theme:r.theme,hc:r.hc,scales:this.scales()},v)}};return u}var We=function(e){return e.baseColor||e.coloring&&e.coloring.baseColor};function $e(e){var t=e.qHyperCube,n=t.qDimensionInfo,r=t.qMeasureInfo,o=n.some(We),i=r.some(We),a=e.color.useBaseColors;return\"measure\"===a&&!i||\"dimension\"===a&&!o?\"off\":a}function Xe(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t(t(t({},e),n),{},{colorProps:t(t({},e.colorProps),n.colorProps||{})});return r}var Je=function(e){return e.baseColor||e.coloring&&e.coloring.baseColor};function Ze(e){var t,n=e.qHyperCube.qDimensionInfo.some(Je),r=e.qHyperCube.qMeasureInfo.some(Je),o=n?\"dimension\":void 0;return{mode:\"primary\",useBaseColors:null!==(t=null!=o?o:r?\"measure\":void 0)&&void 0!==t?t:\"off\",paletteColor:null}}var Qe=function(){};function et(e){var n,r,o,i,a=e.picasso,u=e.model,l=e.app,c=e.translator,s=e.layoutService,f=void 0===s?void 0:s,d=e.createConfig,p=void 0===d?Qe:d,v=e.config,h=void 0===v?{}:v,m=e.custom,y=void 0===m?{}:m,g=h.localeInfo,b=h.key,x=h.theme,q=void 0===x?void 0:x,w=h.auto,M=void 0===w?void 0:w,k=h.definitionPath,C=null==f||null===(n=f.getLayout)||void 0===n?void 0:n.call(f),S={theme:q,key:b,localeInfo:g,layout:C,hc:null==f||null===(r=f.getHyperCube)||void 0===r?void 0:r.call(f),legendProps:null==f||null===(o=f.getLayoutValue)||void 0===o?void 0:o.call(f,\"legend\"),colorProps:t(t({},null==f||null===(i=f.getLayoutValue)||void 0===i?void 0:i.call(f,\"color\")),{},{useBaseColors:C?$e(C):void 0})},D=Ge({picasso:a,model:u,app:l,translator:c,auto:M});!1!==M&&D.auto((function(e){return M?M({layout:e,defaultAuto:Ze}):Ze(e)}));var I=!1,E={getColor:function(){return D.color()},getPaletteColor:function(e){var t=e.index,n=e.color;return D.resolveUIColor({index:t,color:n})},getData:function(){return D.data()},getDatumProps:function(e){return D.datumProps(e)},getSnapshotData:function(){return D.getSnapshotData(k)},getSettingsForMeasure:function(e){return D.settingsForMeasure(e)},getSettings:function(){return D.settings()},getLegend:function(e,t){return D.legend(e,t)},getScales:function(){return D.scales()},getPalettes:function(){return D.palettes()},isSelectionLocked:function(e){var t=e.isMeasureSelectionLocked;return D.isSelectionLocked({isMeasureSelectionLocked:t})},isInitialized:function(){return I},custom:t({},y),initialize:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.createConfig,n=void 0===t?p:t,r=n({getUseBaseColors:$e}),o=Xe(S,r);D.config(o);var i=D.getAuxiliarySettings(k).then((function(){I=!0}));return i}};return E}function tt(e){var t=e.chart,n=e.logicalSize;if(n)return n;var r=t?t.element.getBoundingClientRect():{};return{width:r.width,height:r.height}}var nt=[{key:\"FULL\",size:{width:550,height:450}},{key:\"MEDIUM\",size:{width:400,height:220}},{key:\"SMALL\",size:{width:300,height:150}},{key:\"XSMALL\",size:{width:150,height:75}}];function rt(e){var t=e.width,n=e.height,r=nt.filter((function(e){return t>=e.size.width&&n>=e.size.height})).shift();return r?r.key:\"SPARK\"}var ot={left:\"right\",right:\"left\",top:\"bottom\",bottom:\"top\",near:\"far\",far:\"near\"};function it(e){var t=e.orientation,n=e.dock,r=e.btt,o=e.rtl,i=\"horizontal\"===t?function(e){return\"bottom\"===e||\"near\"===e?\"bottom\":\"top\"}(n):function(e,t){var n=\"left\"===e||\"near\"===e?\"left\":\"right\";return t?ot[n]:n}(n,o),a=function(e,t,n){return\"vertical\"===e?t?\"bottom\":\"top\":n?\"right\":\"left\"}(t,r,o);return{current:i,opposite:ot[i],start:a,end:ot[a]}}function at(e){var n=e.chart,r=e.layoutService,o=e.config,i=void 0===o?{}:o,a=i.logicalSize,u=void 0!==a&&a,l=i.rtl,c=void 0!==l&&l,s={chart:{size:void 0,mode:void 0},x:{dock:void 0,opposite:void 0,size:void 0},y:{dock:void 0,opposite:void 0,size:void 0}},f={type:\"x-y\",config:t({},i),meta:s,update:function(e){s.chart.size={width:e.width,height:e.height},s.chart.mode=rt(e);var t=it({orientation:\"horizontal\",dock:r.getLayoutValue(\"xAxis.dock\"),btt:!1,rtl:c}),n=t.current,o=t.opposite;s.x.dock=n,s.x.opposite=o,s.x.size=e.width;var i=it({orientation:\"vertical\",dock:r.getLayoutValue(\"yAxis.dock\"),btt:!0,rtl:c}),a=i.current,u=i.opposite;s.y.dock=a,s.y.opposite=u,s.y.size=e.height}};return f.update(tt({chart:n,logicalSize:u})),f}var ut=\"vertical\",lt=\"horizontal\";function ct(e){var n=e.chart,r=e.layoutService,o=e.config,i=void 0===o?{}:o,a=e.typeConfig,u=void 0===a?{}:a,l=i.logicalSize,c=void 0!==l&&l,s=i.rtl,f=void 0!==s&&s,d=u.fallback===ut?ut:lt,p=!!u.invert,v=u.measureAxes||[{ref:\"measureAxis\",name:\"minor\"}],h={chart:{orientation:void 0,size:void 0,mode:void 0},major:{orientation:void 0,dock:void 0,opposite:void 0,size:void 0}},m={type:\"major-minor\",config:t({},i),meta:h,update:function(e){h.chart.orientation=r.getLayoutValue(\"orientation\",d),h.chart.size={width:e.width,height:e.height},h.chart.mode=rt(e),h.major.orientation=function(e){var t=e.layoutService,n=e.chartOrientation,r=e.invert;return t.meta.isContinuous?lt:r?n===ut?lt:ut:n}({layoutService:r,chartOrientation:h.chart.orientation,invert:p});var t=it({orientation:h.major.orientation,dock:r.getLayoutValue(\"dimensionAxis.dock\"),btt:!1,rtl:f}),n=t.current,o=t.opposite;h.major.dock=n,h.major.opposite=o,h.major.size=h.major.orientation===ut?e.height:e.width,v.forEach((function(t){var n={};n.orientation=h.major.orientation===ut?lt:ut;var o=it({orientation:n.orientation,dock:r.getLayoutValue(\"\".concat(t.ref,\".dock\")),btt:!0,rtl:f}),i=o.current,a=o.opposite,u=o.start,l=o.end;n.dock=i,n.opposite=a,n.start=u,n.end=l,n.size=n.orientation===ut?e.height:e.width,h[t.name]=n}))}};return m.update(tt({chart:n,logicalSize:c})),m}function st(e){var t=e.chart,n=e.layoutService,r=e.config,o=void 0===r?{}:r,i=e.typeConfig,a=void 0===i?{}:i;return(\"x-y\"===a.type?at:ct)({chart:t,layoutService:n,config:o,typeConfig:a})}function ft(e,t,n){if(void 0===e||void 0===t)return n;for(var r=t.split(\".\"),o=e,i=0;i<r.length;++i){var a=r[i];if(void 0===o[a])return n;o=o[a]}return o}function dt(e,t,n){if(void 0!==e&&void 0!==t){for(var r=t.split(\".\"),o=r[r.length-1],i=e,a=0;a<r.length-1;++a){var u=r[a];void 0===i[u]&&(i[u]=Number.isNaN(+r[a+1])?{}:[]),i=i[u]}void 0!==n?i[o]=n:delete i[o]}}function pt(){var e={};return{get:function(t){return e[t]},set:function(t,n){return e[t]=n,n},has:function(t){return t in e},remove:function(t){delete e[t]},empty:function(){e={}}}}function vt(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(e){return e},n=pt();return function(r){var o=t(r);return n.has(o)?n.get(o):n.set(o,e(r))}}function ht(e){var n=t({},e),r={},o={},i=!1,a={get:function(e){return n[e]},set:function(e,t){var a=n[e];!i&&r[e]?n[e]=r[e](t,a):n[e]=t,!i&&o[e]&&o[e](n[e],a)},preventSet:function(e,t){i=!0,a.set(e,t),i=!1},intercept:function(e,t){r[e]=t},onChanged:function(e,t){o[e]=t}};return a}function mt(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:50;return function(){for(var r=this,o=arguments.length,i=new Array(o),a=0;a<o;a++)i[a]=arguments[a];var u=function(){return e.apply(r,i)};clearTimeout(t),t=setTimeout(u,n)}}function yt(e){var t,n,r,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:50,i=0;return function(){t=this;for(var a=arguments.length,u=new Array(a),l=0;l<a;l++)u[l]=arguments[l];n=u;var c=Date.now()-i,s=function(){i=Date.now(),r=0,e.apply(t,n)};r||(c>=o?s():r=setTimeout(s,o-c))}}var gt={ERROR_CODES:[7005],DIMENSION:\"qDimensionInfo\",MEASURE:\"qMeasureInfo\"},bt=function(e,t){return e[t].reduce((function(e,t,n){var r;return(r=t,gt.ERROR_CODES.some((function(e){var t;return e===(null===(t=r.qError)||void 0===t?void 0:t.qErrorCode)})))?e.filtered.push(n):e.reduced.push(t),e}),{reduced:[],filtered:[]})};function xt(e){var t;return((null==e||null===(t=e.qHyperCube)||void 0===t?void 0:t.qDimensionInfo)||[]).map((function(e){var t,n=null===(t=e.qCardinalities)||void 0===t?void 0:t.qHypercubeCardinal;if(n)return n;var r=e.qStateCounts||{},o=r.qLocked,i=void 0===o?0:o,a=r.qOption,u=void 0===a?0:a,l=r.qSelected;return i+u+(void 0===l?0:l)}))}function qt(e){switch(e.qHyperCube.qMode){case\"S\":return function(e){var t=e.qHyperCube.qSize;return{refs:{dataPages:\"qHyperCube.qDataPages\"},size:{x:t.qcx,y:t.qcy,dimensions:xt(e)}}}(e);case\"K\":return function(e){var t=xt(e);return{refs:{dataPages:\"qHyperCube.qStackedDataPages\"},size:{x:e.qHyperCube.qSize.qcx,y:t[0],dimensions:t}}}(e);case\"T\":return function(e){var t=xt(e);return{refs:{dataPages:\"qHyperCube.qTreeDataPages\"},size:{x:e.qHyperCube.qSize.qcx,y:t[0],dimensions:t}}}(e);default:throw new Error(\"Mode not supported\")}}function wt(e){var n=e.source,r=e.metaAdditionsFn,o=e.experimental,i=void 0===o?{filter:!1}:o,a=x(!0,{},n),u=i.filter?function(e){var t=e.qHyperCube,n=bt(t,gt.DIMENSION),r=n.reduced,o=n.filtered;t[gt.DIMENSION]=r;var i=bt(t,gt.MEASURE),a=i.reduced,u=i.filtered;return t[gt.MEASURE]=a,{dimensions:o,measures:u}}(a):{dimensions:[],measures:[]},l=qt(a),c=function(){var e=function(e){var n=e.layout,r=e.additionsFn,o=void 0===r?function(){return{}}:r,i=e.additionsProps,a=void 0===i?{}:i,u=n.qHyperCube,l=u.qDimensionInfo,c=u.qMeasureInfo,s=u.qMode,f=l.length,d=c.length,p=t({mode:{S:\"S\"===s,P:\"P\"===s,K:\"K\"===s,T:\"T\"===s},dimensionCount:f,measureCount:d,hasMultipleDimensions:f>1,hasMultipleMeasures:d>1,isOneDimensional:1===f,isTwoDimensional:2===f},a);return t(t({},p),o({layout:n,meta:p}))}({layout:a,additionsFn:r,additionsProps:{size:l.size}});return e.filteredFields=u,e},s={refs:t({},l.refs),meta:c(),getLayout:function(){return a},getLayoutValue:function(e,t){return ft(a,e,t)},setLayoutValue:function(e,t){dt(a,e,t),l=qt(a),s.meta=c()},getHyperCube:function(){return a.qHyperCube},getHyperCubeValue:function(e,t){return ft(a.qHyperCube,e,t)},setHyperCubeValue:function(e,t){dt(a.qHyperCube,e,t),l=qt(a),s.meta=c()},getDataPages:function(){return ft(a,l.refs.dataPages)},setDataPages:function(e){dt(a,l.refs.dataPages,e),s.meta=c()}};return s}function Mt(e){var t=e.originalArray,n=e.newArray,r=e.matchKey;return Array.isArray(t)&&t.length?(n.forEach((function(e){var n=-1;t.some((function(t,o){return t[r]&&t[r]===e[r]&&(n=o),n})),n>-1?t[n]=e:t.push(e)})),t):n}function kt(e){var o=e.picassoInstance,a=e.plugins,u=e.pluginArgs,s=void 0===u?{}:u,f={initialized:!1,definitions:[]};return{initialize:function(){return i(n().mark((function e(){var u,l,d,p;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!f.initialized){e.next=2;break}return e.abrupt(\"return\");case 2:return l=Promise.all(a.filter((function(e){return\"custom-component\"===e.info.type})).map(function(){var e=i(n().mark((function e(i){var a;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i.info.componentName){e.next=2;break}throw new Error(\"plugin-service: Custom component is missing componentName\");case 2:return e.next=4,i.fn(t({},s));case 4:if(\"object\"===r(a=e.sent)){e.next=7;break}throw new Error(\"plugin-service: Custom component needs to be an object\");case 7:o.component(i.info.componentName,a);case 8:case\"end\":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}())),d=Promise.all(a.filter((function(e){return\"component-definition\"===e.info.type})).map((function(e){return e.fn(t({},s))}))),e.next=6,Promise.all([l,d]);case 6:p=e.sent,f.initialized=!0,(u=f.definitions).push.apply(u,c(p[1]));case 9:case\"end\":return e.stop()}}),e)})))()},extendComponents:function(e){return f.initialized?(f.definitions.filter(Boolean).forEach((function(t){var n=l(e.filter((function(e){return e.key&&e.key===t.key})),1)[0];if(n){var o=x(!0,{},n.brush);x(!0,n,t),t.brush&&(n.brush=function(e,t){return\"object\"===r(e)&&Object.keys(e).length?(Array.isArray(t.consume)&&(e.consume=Mt({originalArray:e.consume,newArray:t.consume,matchKey:\"context\"})),Array.isArray(t.trigger)&&(e.trigger=Mt({originalArray:e.trigger,newArray:t.trigger,matchKey:\"on\"})),e):t}(o,t.brush))}else e.push(t)})),e):e}}}function Ct(e){return Ct=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},Ct(e)}function St(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function Dt(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function It(e,t,n){return t&&Dt(e.prototype,t),n&&Dt(e,n),e}function Et(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ot(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function At(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ot(Object(n),!0).forEach((function(t){Et(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ot(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Nt(e,t){return Nt=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},Nt(e,t)}function Pt(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function Lt(e,t,n){return Lt=Pt()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var o=new(Function.bind.apply(e,r));return n&&Nt(o,n.prototype),o},Lt.apply(null,arguments)}function Tt(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if(\"undefined\"==typeof Symbol||!(Symbol.iterator in Object(e)))return;var n=[],r=!0,o=!1,i=void 0;try{for(var a,u=e[Symbol.iterator]();!(r=(a=u.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{r||null==u.return||u.return()}finally{if(o)throw i}}return n}(e,t)||Ft(e,t)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function jt(e){return function(e){if(Array.isArray(e))return Rt(e)}(e)||function(e){if(\"undefined\"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||Ft(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function Ft(e,t){if(e){if(\"string\"==typeof e)return Rt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return\"Object\"===n&&e.constructor&&(n=e.constructor.name),\"Map\"===n||\"Set\"===n?Array.from(e):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Rt(e,t):void 0}}function Rt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var Ht=Object.prototype.hasOwnProperty,Vt=Object.prototype.toString,zt=Object.defineProperty,_t=Object.getOwnPropertyDescriptor,Bt=function(e){return\"function\"==typeof Array.isArray?Array.isArray(e):\"[object Array]\"===Vt.call(e)},Yt=function(e){if(!e||\"[object Object]\"!==Vt.call(e))return!1;var t,n=Ht.call(e,\"constructor\"),r=e.constructor&&e.constructor.prototype&&Ht.call(e.constructor.prototype,\"isPrototypeOf\");if(e.constructor&&!n&&!r)return!1;for(t in e);return void 0===t||Ht.call(e,t)},Ut=function(e,t){zt&&\"__proto__\"===t.name?zt(e,t.name,{enumerable:!0,configurable:!0,value:t.newValue,writable:!0}):e[t.name]=t.newValue},Kt=function(e,t){if(\"__proto__\"===t){if(!Ht.call(e,t))return;if(_t)return _t(e,t).value}return e[t]},Gt=function e(){var t,n,r,o,i,a,u=arguments[0],l=1,c=arguments.length,s=!1;for(\"boolean\"==typeof u&&(s=u,u=arguments[1]||{},l=2),(null==u||\"object\"!=typeof u&&\"function\"!=typeof u)&&(u={});l<c;++l)if(null!=(t=arguments[l]))for(n in t)r=Kt(u,n),u!==(o=Kt(t,n))&&(s&&o&&(Yt(o)||(i=Bt(o)))?(i?(i=!1,a=r&&Bt(r)?r:[]):a=r&&Yt(r)?r:{},Ut(u,{name:n,newValue:e(s,a,o)})):void 0!==o&&Ut(u,{name:n,newValue:o}));return u};function Wt(e,t,n){if(!e)return-1;var r=n.cache,o=e.origin?e.origin():null;o&&(e=o);var i=r.fields.indexOf(e),a=-1,u=-1;if(-1===i)for(var l=0;l<r.wrappedFields.length;l++)if(u=r.wrappedFields[l].attrDims.map((function(e){return e.instance})).indexOf(e),a=r.wrappedFields[l].attrExps.map((function(e){return e.instance})).indexOf(e),-1!==u||-1!==a){i=l;break}return(i-=t.qArea.qLeft)<0||i>=t.qArea.qWidth?-1:u>=0?function(e){return e[i].qAttrDims.qValues[u]}:a>=0?function(e){return e[i].qAttrExps.qValues[a]}:function(e){return e[i]}}function $t(e,t,n){var r=n.key,o={value:\"function\"==typeof e.value?e.value(t):void 0!==e.value?e.value:t};return o.label=\"function\"==typeof e.label?e.label(t):void 0!==e.label?String(e.label):String(o.value),e.field&&(o.source={key:r,field:e.field.key()}),o}function Xt(e){var t=e.cache,n=e.f,r=e.mainCell,o=e.p;e.prop;var i=e.page,a=e.rowIdx,u=e.row,l=e.sourceKey,c=e.target,s=e.targetProp,f=r;if(o.field&&o.field!==n){var d=Wt(o.field,i,{cache:t});if(-1===d)return;f=Gt({qRow:a},d(u))}c[s]=$t(o,f,{key:l})}function Jt(e,t,n,r){for(var o=Array.isArray(e)?e:[e],i=[],a=0;a<o.length;a++)if(void 0!==o[a].field){for(var u=t.raw(),l=t.key(),c=\"object\"===Ct(o[a].field)?o[a].field:t.field(o[a].field),s=r.normalizeConfig(o[a],t),f=s.props,d=s.main,p=Object.keys(f),v=!!o[a].trackBy,h=Ct(o[a].trackBy),m={},y=[],g=[],b=0;b<u.qDataPages.length;b++){var x=Wt(c,u.qDataPages[b],{cache:n});if(-1!==x)for(var q=0;q<u.qDataPages[b].qMatrix.length;q++){var w=u.qDataPages[b].qArea.qTop+q,M=Gt({qRow:w},x(u.qDataPages[b].qMatrix[q])),k=$t(d,M,{key:l});if(!(d.filter&&!d.filter(M))){for(var C=0;C<p.length;C++){var S=f[p[C]],D=S.fields||[S];S.fields&&(k[p[C]]=[]);for(var I=0;I<D.length;I++)Xt({cache:n,f:c,mainCell:M,p:D[I],prop:p[C],props:f,page:u.qDataPages[b],rowIdx:w,row:u.qDataPages[b].qMatrix[q],sourceKey:l,target:S.fields?k[p[C]]:k,targetProp:S.fields?I:p[C]});if(S.fields){var E=k[p[C]].map((function(e){return e.value})),O=k[p[C]].map((function(e){return e.label}));k[p[C]]={value:\"function\"==typeof S.value?S.value(E):void 0!==S.value?S.value:E,label:\"function\"==typeof S.label?S.label(O):void 0!==S.label?String(S.label):String(k[p[C]].value)}}}v&&r.track({cfg:o[a],itemData:M,obj:k,target:y,tracker:m,trackType:h}),g.push(k)}}}v?i.push.apply(i,jt(r.collect(y,{main:d,propsArr:p,props:f}))):i.push.apply(i,g)}return i}function Zt(e){var t=0,n=e.children,r=n&&n.length;if(r)for(;--r>=0;)t+=n[r].value;else t=1;e.value=t}function Qt(e,t){var n,r,o,i,a,u=new rn(e),l=+e.value&&(u.value=e.value),c=[u];for(null==t&&(t=en);n=c.pop();)if(l&&(n.value=+n.data.value),(o=t(n.data))&&(a=o.length))for(n.children=new Array(a),i=a-1;i>=0;--i)c.push(r=n.children[i]=new rn(o[i])),r.parent=n,r.depth=n.depth+1;return u.eachBefore(nn)}function en(e){return e.children}function tn(e){e.data=e.data.data}function nn(e){var t=0;do{e.height=t}while((e=e.parent)&&e.height<++t)}function rn(e){this.data=e,this.depth=this.height=0,this.parent=null}function on(e){if(\"function\"!=typeof e)throw new Error;return e}rn.prototype=Qt.prototype={constructor:rn,count:function(){return this.eachAfter(Zt)},each:function(e){var t,n,r,o,i=this,a=[i];do{for(t=a.reverse(),a=[];i=t.pop();)if(e(i),n=i.children)for(r=0,o=n.length;r<o;++r)a.push(n[r])}while(a.length);return this},eachAfter:function(e){for(var t,n,r,o=this,i=[o],a=[];o=i.pop();)if(a.push(o),t=o.children)for(n=0,r=t.length;n<r;++n)i.push(t[n]);for(;o=a.pop();)e(o);return this},eachBefore:function(e){for(var t,n,r=this,o=[r];r=o.pop();)if(e(r),t=r.children)for(n=t.length-1;n>=0;--n)o.push(t[n]);return this},sum:function(e){return this.eachAfter((function(t){for(var n=+e(t.data)||0,r=t.children,o=r&&r.length;--o>=0;)n+=r[o].value;t.value=n}))},sort:function(e){return this.eachBefore((function(t){t.children&&t.children.sort(e)}))},path:function(e){for(var t=this,n=function(e,t){if(e===t)return e;var n=e.ancestors(),r=t.ancestors(),o=null;e=n.pop(),t=r.pop();for(;e===t;)o=e,e=n.pop(),t=r.pop();return o}(t,e),r=[t];t!==n;)t=t.parent,r.push(t);for(var o=r.length;e!==n;)r.splice(o,0,e),e=e.parent;return r},ancestors:function(){for(var e=this,t=[e];e=e.parent;)t.push(e);return t},descendants:function(){var e=[];return this.each((function(t){e.push(t)})),e},leaves:function(){var e=[];return this.eachBefore((function(t){t.children||e.push(t)})),e},links:function(){var e=this,t=[];return e.each((function(n){n!==e&&t.push({source:n.parent,target:n})})),t},copy:function(){return Qt(this).eachBefore(tn)}};var an={depth:-1},un={};function ln(e){return e.id}function cn(e){return e.parentId}function sn(e,t){\"/\"===e.charAt(0)&&(e=e.substring(1));for(var n,r=e.split(\"/\"),o=t,i=0;i<r.length;i++){if(\"*\"===r[i]&&Array.isArray(o)){var a=[];n=r.slice(i+1).join(\"/\");for(var u=0;u<o.length;u++){var l=sn(n,o[u]);Array.isArray(l)?a.push.apply(a,jt(l)):a.push(l)}return a}if(!r[i]&&Array.isArray(o)){var c=new Array(o.length);n=r.slice(i+1).join(\"/\");for(var s=0;s<o.length;s++)c[s]=sn(n,o[s]);return c}r[i]in o&&(o=o[r[i]])}return o}function fn(e,t,n){var r=[];if(!e||!e.length)return r;if(t<=0){var o=n>=0?[e[n]]:e;r.push.apply(r,jt(o))}else for(var i=0;i<e.length;i++)e[i].children&&e[i].children.length&&r.push.apply(r,jt(fn(e[i].children,t-1,n)));return r}function dn(e,t,n){if(e===t)return function(e){return e};if(e>t){var r=Math.max(0,Math.min(100,e-t)),o=jt(Array(r)).map(String.prototype.valueOf,\"parent\").join(\".\");return Function(\"node\",\"return node.\".concat(o,\";\"))}if(t>e){var i=Math.max(0,Math.min(100,t-e));return function(e){return fn(e.children,i-1,n)}}return!1}function pn(e,t){var n=t.cache;if(\"number\"==typeof e)return n.fields[e];var r=n.allFields;if(\"function\"==typeof e){for(var o=0;o<r.length;o++)if(e(r[o]))return r[o];return!1}if(\"string\"==typeof e){for(var i=0;i<r.length;i++)if(r[i].key()===e||r[i].title()===e)return r[i]}else if(e&&-1!==r.indexOf(e))return e;throw Error(\"Field not found: \".concat(e))}var vn=/^qDimensionInfo(?:\\/(\\d+))?/,hn=/^\\/?qMeasureInfo\\/(\\d+)/,mn=/\\/qAttrExprInfo\\/(\\d+)/,yn=/\\/qAttrDimInfo\\/(\\d+)/;function gn(e){return(e.qColumnOrder&&e.qColumnOrder.length?e.qColumnOrder:e.qDimensionInfo.map((function(e,t){return t}))).filter((function(t){return t<e.qDimensionInfo.length}))}function bn(e,t){var n=t.cube;if(!e)return-1;var r=e.origin&&e.origin()?e.origin().key():e.key(),o=!1,i=-1,a=-1,u=-1,l=-1,c=-1,s=r,f=n.qEffectiveInterColumnSortOrder,d=gn(n);return vn.test(s)&&(o=!0,i=+vn.exec(s)[1],s=r.replace(vn,\"\")),hn.test(s)&&(\"K\"===n.qMode?l=+hn.exec(s)[1]:f&&-1!==f.indexOf(-1)?(l=+hn.exec(s)[1],c=0):c=+hn.exec(s)[1],s=s.replace(hn,\"\")),s&&(yn.exec(s)?u=+yn.exec(s)[1]:mn.exec(s)&&(a=+mn.exec(s)[1])),{fieldDepth:(o?\"S\"===n.qMode?d[i]:f?f.indexOf(i):i:f&&-1!==f.indexOf(-1)?f.indexOf(-1):n.qDimensionInfo.length-(\"K\"===n.qMode?0:1))+1,pseudoMeasureIndex:l,measureIdx:c,attrDimIdx:u,attrIdx:a}}function xn(e,t){var n,r,o=dn(e.fieldDepth,t.fieldDepth,t.pseudoMeasureIndex);return n=t.measureIdx>=0?function(e){return e.data.qValues[t.measureIdx]}:function(e){return e.data},t.attrDimIdx>=0?r=function(e){var n;return null==e||null===(n=e.qAttrDims)||void 0===n?void 0:n.qValues[t.attrDimIdx]}:t.attrIdx>=0&&(r=function(e){var n;return null==e||null===(n=e.qAttrExps)||void 0===n?void 0:n.qValues[t.attrIdx]}),{nodeFn:o,attrFn:r,valueFn:n}}function qn(e,t,n){var r=n.key,o={value:\"function\"==typeof e.value?e.value(t):void 0!==e.value?e.value:t};return o.label=\"function\"==typeof e.label?e.label(t):void 0!==e.label?String(e.label):String(o.value),e.field&&(o.source={key:r,field:e.field.key()}),o}function wn(e){for(var t=e.propsArr,n=e.props,r=e.item,o=e.itemData,i=e.ret,a=e.sourceKey,u=0;u<t.length;u++){var l=n[t[u]],c=l.fields||[l],s=void 0,f=void 0;l.fields&&(s=[],f=[]);for(var d=function(e){var n=c[e],d=void 0,p=void 0,v=void 0,h=void 0,m=void 0,y=void 0;if(\"primitive\"===n.type?(v=n.value,y=String(n.value)):(\"function\"==typeof n.value&&(d=function(e){return n.value(e,r)}),\"function\"==typeof n.label&&(p=function(e){return n.label(e,r)}),n.accessor?(h=n.accessor(r),Array.isArray(h)?(m=h.map(n.valueAccessor),n.attrAccessor&&(m=m.map(n.attrAccessor)),d&&(v=m.map(d),d=null),p&&(y=m.map(p),p=null),v=n.reduce?n.reduce(v):v,y=n.reduceLabel?n.reduceLabel(y,v):String(v)):y=v=n.attrAccessor?n.attrAccessor(n.valueAccessor(h)):n.valueAccessor(h)):(v=o,y=o)),l.fields){var g=d?d(v):v;s.push(g),f.push(p&&null!=y?p(y):null!=y?y:String(g))}else{var b=d?d(v):v;i[t[u]]={value:b,label:p?p(y):null!=y?y:String(b)},n.field&&(i[t[u]].source={field:n.field.key(),key:a})}},p=0;p<c.length;p++)d(p);s&&(i[t[u]]={value:\"function\"==typeof l.value?l.value(s,r):s,label:\"function\"==typeof l.label?l.label(f,r):f})}}var Mn=function(e,t,n){var r=\"K\"===e.qMode?\"/qStackedDataPages/*/qData\":\"/qTreeDataPages/*\",o=\"K\"===e.qMode?\"qSubNodes\":\"qNodes\",i=sn(r,e);return i&&i[0]?(t.tree=Qt(i[0],n.children||function(e){return e[o]}),t.tree):null};function kn(e){for(var t=e.raw().qDataPages.length?e.raw().qDataPages[0].qMatrix:[],n=function(e){var t=e.raw().qColumnOrder,n=e.fields();return t&&t.length===n.length?t:n.map((function(e,t){return t}))}(e),r=e.fields(),o=e.fields().filter((function(e){return\"dimension\"===e.type()})).map((function(e){return n.indexOf(r.indexOf(e))})),i=e.fields().filter((function(e){return\"measure\"===e.type()})).map((function(e){return n.indexOf(r.indexOf(e))})),a={__root:{__id:\"__root\",qValues:[]}},u=0;u<t.length;u++){for(var l=t[u],c=\"__root\",s=!1,f=0;f<o.length;f++){var d=l[o[f]],p=\"\".concat(c,\"__\").concat(d.qText);a[p]||(a[p]=At({__id:p,__parent:c,qValues:[]},d),s=!0),c=p}if(s)for(var v=0;v<i.length;v++){var h=l[i[v]];a[c].qValues.push(h)}}var m=Object.keys(a).map((function(e){return a[e]})),y=function(){var e=ln,t=cn;function n(n){var r,o,i,a,u,l,c,s=n.length,f=new Array(s),d={};for(o=0;o<s;++o)r=n[o],u=f[o]=new rn(r),null!=(l=e(r,o,n))&&(l+=\"\")&&(d[c=\"$\"+(u.id=l)]=c in d?un:u);for(o=0;o<s;++o)if(u=f[o],null!=(l=t(n[o],o,n))&&(l+=\"\")){if(!(a=d[\"$\"+l]))throw new Error(\"missing: \"+l);if(a===un)throw new Error(\"ambiguous: \"+l);a.children?a.children.push(u):a.children=[u],u.parent=a}else{if(i)throw new Error(\"multiple roots\");i=u}if(!i)throw new Error(\"no root\");if(i.parent=an,i.eachBefore((function(e){e.depth=e.parent.depth+1,--s})).eachBefore(nn),i.parent=null,s>0)throw new Error(\"cycle\");return i}return n.id=function(t){return arguments.length?(e=on(t),n):e},n.parentId=function(e){return arguments.length?(t=on(e),n):t},n}().id((function(e){return e.__id})).parentId((function(e){return e.__parent}))(m);return y}var Cn=function(e){for(var t=e.propsArr,n=e.props,r=e.cube,o=e.cache,i=e.itemDepthObject,a=e.f,u=0;u<t.length;u++)for(var l=n[t[u]],c=l.fields?l.fields:[l],s=0;s<c.length;s++){var f=c[s];if(f.field!==a){var d=xn(i,bn(f.field,{cube:r,cache:o}));f.accessor=d.nodeFn,f.valueAccessor=d.valueFn,f.attrAccessor=d.attrFn}}};function Sn(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=arguments.length>2?arguments[2]:void 0,r=arguments.length>3?arguments[3]:void 0,o=t.raw(),i=t.key(),a=\"S\"===o.qMode?kn(t):Mn(o,n,e);if(!a)return null;for(var u=a.height,l=[],c=0;c<=u;c++){var s=null;if(c>0)if(\"S\"===o.qMode){var f=gn(o),d=f[c-1];s=n.fields[d]}else{var p=o.qEffectiveInterColumnSortOrder[c-1];c>o.qEffectiveInterColumnSortOrder.length&&(p=o.qDimensionInfo.length),s=n.fields[p]}var v=r.normalizeConfig(At(At({},e),{},{field:s?s.key():void 0}),t),h=v.props,m=v.main,y=Object.keys(h);l[c]={propsArr:y,props:h,main:m};var g=s?bn(s,{cube:o,cache:n}):{fieldDepth:0};Cn({propsArr:y,props:h,cube:o,cache:n,itemDepthObject:g,f:s})}for(var b=a.copy(),x=b.descendants(),q=a.descendants(),w=0;w<q.length;w++){var M=l[q[w].depth].propsArr,k=l[q[w].depth].props,C=l[q[w].depth].main,S=x[w],D=S.data,I=qn(C,D,{key:i});wn({propsArr:M,props:k,item:S,itemData:D,ret:I,sourceKey:i,isTree:!0}),q[w].data=I}return a}function Dn(e,t,n,r){for(var o=Array.isArray(e)?e:[e],i=[],a=0;a<o.length;a++)if(void 0!==o[a].field){var u=t.raw(),l=t.key();if(!Mn(u,n,e))continue;var c=\"object\"===Ct(o[a].field)?o[a].field:t.field(o[a].field),s=r.normalizeConfig(o[a],t),f=s.props,d=s.main,p=Object.keys(f),v=bn(c,{cube:u,cache:n}),h=xn({fieldDepth:0},v),m=h.nodeFn,y=h.attrFn,g=h.valueFn;Cn({propsArr:p,props:f,cube:u,cache:n,itemDepthObject:v,f:c});for(var b=!!o[a].trackBy,x=Ct(o[a].trackBy),q={},w=[],M=m(n.tree),k=[],C=0;C<M.length;C++){var S=M[C],D=y?y(g(S)):g(S);if(!(d.filter&&!d.filter(D))){var I=qn(d,D,{key:l});wn({propsArr:p,props:f,item:S,itemData:D,ret:I,sourceKey:l}),b&&r.track({cfg:o[a],itemData:D,obj:I,target:w,tracker:q,trackType:x}),k.push(I)}}b?i.push.apply(i,jt(r.collect(w,{main:d,propsArr:p,props:f}))):i.push.apply(i,k)}return i}\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self&&self;var In,En,On=(In=function(e){\n/*! javascript-number-formatter - v1.1.11 - http://mottie.github.com/javascript-number-formatter/ * © ecava */\ne.exports=function(e,t){if(!e||isNaN(+t))return t;var n,r,o,i,a,u,l,c,s,f,d=e.length,p=e.search(/[0-9\\-\\+#]/),v=p>0?e.substring(0,p):\"\",h=e.split(\"\").reverse().join(\"\"),m=h.search(/[0-9\\-\\+#]/),y=d-m,g=e.substring(y,y+1),b=y+(\".\"===g||\",\"===g?1:0),x=m>0?e.substring(b,d):\"\";if(n=(t=\"-\"===(e=e.substring(p,b)).charAt(0)?-t:+t)<0?t=-t:0,o=(r=e.match(/[^\\d\\-\\+#]/g))&&r[r.length-1]||\".\",i=r&&r[1]&&r[0]||\",\",e=e.split(o),t=+(t=t.toFixed(e[1]&&e[1].length))+\"\",u=e[1]&&e[1].lastIndexOf(\"0\"),(!(c=t.split(\".\"))[1]||c[1]&&c[1].length<=u)&&(t=(+t).toFixed(u+1)),s=e[0].split(i),e[0]=s.join(\"\"),(a=e[0]&&e[0].indexOf(\"0\"))>-1)for(;c[0].length<e[0].length-a;)c[0]=\"0\"+c[0];else 0==+c[0]&&(c[0]=\"\");if((t=t.split(\".\"))[0]=c[0],l=s[1]&&s[s.length-1].length){for(h=\"\",y=(f=t[0]).length%l,d=f.length,b=0;b<d;b++)h+=f.charAt(b),!((b-y+1)%l)&&b<d-l&&(h+=i);t[0]=h}return t[1]=e[1]&&t[1]?o+t[1]:\"\",\"0\"!==(r=t.join(\"\"))&&\"\"!==r||(n=!1),v+(n?\"-\":\"\")+r+x}},In(En={exports:{}},En.exports),En.exports);function An(e){return e.replace(/[-[\\]/{}()*+?.\\\\^$|]/g,\"\\\\$&\")}var Nn={3:\"k\",6:\"M\",9:\"G\",12:\"T\",15:\"P\",18:\"E\",21:\"Z\",24:\"Y\",\"-3\":\"m\",\"-6\":\"μ\",\"-9\":\"n\",\"-12\":\"p\",\"-15\":\"f\",\"-18\":\"a\",\"-21\":\"z\",\"-24\":\"y\"},Pn=/%$/,Ln=/^\\(r(0[2-9]|[12]\\d|3[0-6])\\)/i,Tn=/^\\(oct\\)/i,jn=/^\\(dec\\)/i,Fn=/^\\(hex\\)/i,Rn=/^\\(bin\\)/i,Hn=/^\\(rom\\)/i,Vn=/^(\\(rom\\)|\\(bin\\)|\\(hex\\)|\\(dec\\)|\\(oct\\)|\\(r(0[2-9]|[12]\\d|3[0-6])\\))/i,zn=/#|0/g;function _n(e,t,n,r){return e=e.toString(t),n[1]===n[1].toUpperCase()&&(e=e.toUpperCase()),e.length-e.indexOf(\".\")>10&&(e=e.slice(0,e.indexOf(\".\")+11)),e.replace(\".\",r||\".\")}function Bn(e,t,n){var r;return Ln.test(t)?e=_n(e,Number(/\\d{2}/.exec(t)[0]),t,n):Tn.test(t)?e=_n(e,8,t,n):jn.test(t)?e=_n(e,10,t,n):Fn.test(t)?e=_n(e,16,t,n):Rn.test(t)?e=_n(e,2,t,n):Hn.test(t)&&(r=\"\",e<0&&(r=\"-\",e=-e),0===(e=Math.floor(e))?e=\"0\":e<=5e5?(e=function(e,t){for(var n,r=\"\",o=Number(String(e).slice(-3)),i=(e-o)/1e3,a=[0,1,4,5,9,10,40,50,90,100,400,500,900].reverse(),u=[\"0\",\"I\",\"IV\",\"V\",\"IX\",\"X\",\"XL\",\"L\",\"XC\",\"C\",\"CD\",\"D\",\"CM\"].reverse();o>0;)for(n=0;n<a.length;n++)if(a[n]<=o){r+=u[n],o-=a[n];break}for(n=0;n<i;n++)r=\"M\".concat(r);return t[1]!==t[1].toUpperCase()&&(r=r.toLowerCase()),r}(e,t),e=r+e):e=t+r+e.toExponential(0)),e}function Yn(e,t,n){var r=An(e);return n?r:new RegExp(r||\"\",t)}function Un(e,t,n){var r,o,i,a,u,l,c,s,f,d,p,v=e.pattern;v.indexOf(\"A\")>=0&&(v=v.replace(\"A\",\"\"),e.abbreviate=!0),d=t,(p=n)&&(p=An(p)),d&&(d=An(d)),f=new RegExp(\"(?:[#0]+\".concat(d,\")?[#0]+(?:\").concat(p,\"[#0]+)?\")),a=(i=(i=v.match(f))?i[0]:\"\")?v.substr(0,v.indexOf(i)):v,u=i?v.substring(v.indexOf(i)+i.length):\"\",i||(i=v?\"#\":\"##########\"),t&&t===n&&(o=(r=i.split(n)).pop(),i=r.join(\"\")+n+o,t=\"\"),l=t,t=/,/.test(n)?\"¤\":\",\",l&&(i=i.replace(Yn(l,\"g\"),t)),c=n,n=\".\",c&&(i=i.replace(Yn(c,\"g\"),n)),s=(s=i.match(/#/g))?s.length:0;var h,m=v.split(c);m[1]&&(h=m[1].match(zn)),e.prefix=a||\"\",e.postfix=u||\"\",e.pattern=v,e.maxPrecision=h?h.length:2,e.percentage=Pn.test(v),e.numericPattern=i||\"\",e.numericRegex=new RegExp(\"\".concat(Yn(t,null,!0),\"|\").concat(Yn(n,null,!0)),\"g\"),e.groupTemp=l,e.decTemp=c,e.t=t,e.d=n,e.temp=s}var Kn=function(){function e(t,n,r,o,i){St(this,e),this.localeInfo=t,this.pattern=n,this.thousandDelimiter=r||\",\",this.decimalDelimiter=o||\".\",this.type=i||\"numeric\",this.patternSeparator=\";\",this.abbreviations=function(e,t){if(!e||!e.qNumericalAbbreviation)return Nn;var n={};return e.qNumericalAbbreviation.split(t).forEach((function(e){var t=e.split(\":\");2===t.length&&(n[t[0]]=t[1])})),n}(t,this.patternSeparator),this.prepare()}return It(e,[{key:\"clone\",value:function(){var t=new e(this.localeInfo,this.pattern,this.thousandDelimiter,this.decimalDelimiter,this.type);return t.subtype=this.subtype,t}},{key:\"format\",value:function(e,t,n,r){return this.prepare(t,n,r),this.formatValue(e)}},{key:\"prepare\",value:function(e,t,n){var r;void 0===e&&(e=this.pattern),void 0===t&&(t=this.thousandDelimiter),void 0===n&&(n=this.decimalDelimiter),e?(this._prepared={positive:{d:n,t:t,abbreviate:!1,isFunctional:!1,prefix:\"\",postfix:\"\"},negative:{d:n,t:t,abbreviate:!1,isFunctional:!1,prefix:\"\",postfix:\"\"},zero:{d:n,t:t,abbreviate:!1,isFunctional:!1,prefix:\"\",postfix:\"\"}},r=this._prepared,e=e.split(this.patternSeparator),r.positive.pattern=e[0],r.negative.pattern=e[1],r.zero.pattern=e[2],Vn.test(e[0])&&(r.positive.isFunctional=!0),e[1]?Vn.test(e[1])&&(r.negative.isFunctional=!0):r.negative=!1,e[2]?Vn.test(e[2])&&(r.zero.isFunctional=!0):r.zero=!1,r.positive.isFunctional||Un(r.positive,t,n),r.negative&&!r.negative.isFunctional&&Un(r.negative,t,n),r.zero&&!r.zero.isFunctional&&Un(r.zero,t,n)):this._prepared={pattern:!1}}},{key:\"formatValue\",value:function(e){var t,n,r,o,i,a,u,l,c,s=this._prepared,f=\"\",d=\"\",p=e;if(isNaN(e))return\"\".concat(p);if(e=+e,!1===s.pattern)return e.toString();if(0===e&&s.zero)return(s=s.zero).pattern;if(e<0&&s.negative?(s=s.negative,e=-e):s=s.positive,i=s.d,a=s.t,s.isFunctional)e=Bn(e,s.pattern,i);else{if(s.percentage&&(e*=100),s.abbreviate){var v,h,m=Object.keys(this.abbreviations).map((function(e){return parseInt(e,10)})).sort((function(e,t){return e-t})),y=m[0];for(u=0,n=Number(Number(e).toExponential().split(\"e\")[1]);y<=n&&u<m.length;)y=m[++u];u>0&&(v=m[u-1]),v&&n>0&&v>0?h=v:(n<0&&v<0||!v)&&(y<0&&y-n<=s.maxPrecision?h=y:v<=n&&!(y>0&&-n<=s.maxPrecision)&&(h=v)),h&&(f=this.abbreviations[h],e/=Math.pow(10,h))}if(r=Math.abs(e),t=s.temp,c=(l=s.numericPattern).split(i)[1],\"I\"===this.type&&(e=Math.round(e)),o=e,c||\"#\"!==l.slice(-1)[0])if(r>=1e15||r>0&&r<=1e-14)e=r?r.toExponential(15).replace(/\\.?0+(?=e)/,\"\"):\"0\";else{var g=Number(e.toFixed(Math.min(20,c?c.length:0)).split(\".\")[0]),b=l.split(i)[0];if(e=On(b+=i,g)||\"0\",c){var x=Math.max(0,Math.min(14,c.length)),q=c.replace(/#+$/,\"\").length,w=(\"I\"===this.type?0:r%1).toFixed(x).slice(2).replace(/0+$/,\"\");for(u=w.length;u<q;u++)w+=\"0\";w&&(e+=i+w)}else 0===g&&(o=0)}else if(r>=Math.pow(10,t)||r<1||r<1e-4)0===e?e=\"0\":r<1e-4||r>=1e20?(e=(e=o.toExponential(Math.max(1,Math.min(14,t))-1)).replace(/\\.?0+(?=e)/,\"\"),d=\"\"):(e=e.toPrecision(Math.max(1,Math.min(14,t)))).indexOf(\".\")>=0&&(e=(e=e.replace(e.indexOf(\"e\")<0?/0+$/:/\\.?0+(?=e)/,\"\")).replace(\".\",i));else{for(l+=i,t=Math.max(0,Math.min(20,t-Math.ceil(Math.log(r)/Math.log(10)))),u=0;u<t;u++)l+=\"#\";e=On(l,e)}e=e.replace(s.numericRegex,(function(e){return e===a?s.groupTemp:e===i?s.decTemp:\"\"})),o<0&&!/^-/.test(e)&&(e=\"-\".concat(e))}return s.prefix+e+d+f+s.postfix}}],[{key:\"getStaticFormatter\",value:function(){return{prepare:function(){},formatValue:function(e){return\"\".concat(e)}}}}]),e}();function Gn(e){var t,n,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=r.size,i=void 0===o?5e3:o,a=r.multipleArguments,u=void 0!==a&&a,l=r.toKey,c=void 0===l?function(e){return e}:l,s=Object.create(null),f=Object.create(null),d=0,p=0;return t=u?function(){return n=c.apply(void 0,arguments),t.has(n)?t.get(n):t.set(n,e.apply(void 0,arguments))}:function(r){return n=c(r),t.has(n)?t.get(n):t.set(n,e(r))},t.set=function(e,t){return d>=i&&(delete s[f[p]],delete f[p],d--,p++),s[e]=t,f[d]=e,d++,t},t.get=function(e){return s[e]},t.has=function(e){return e in s},t.clear=function(){s=Object.create(null),f=Object.create(null),d=0,p=0},t.size=function(){return d},t}function Wn(e,t,n,r,o){var i=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return Lt(Kn,t)}(o,e,t,n,r),a=Gn(i.formatValue.bind(i),{toKey:function(e){return isNaN(e)?e:+e}});function u(e){return a(e)}return u.format=function(e,t,n,r){return a.clear(),i.format(t,e,n,r)},u.pattern=function(e){return e&&(a.clear(),i.pattern=e,i.prepare()),i.pattern},u}var $n=\"D\",Xn=\"T\",Jn=\"TS\",Zn=\"IV\",Qn=[\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\",\"Sunday\"],er=[\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\",\"Sun\"],tr=[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],nr=[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"];function rr(e,t){for(var n=e.length;n<t;n++)e=\"0\".concat(e);return e}function or(e){var t=e.toString().split(\".\");return t[1]?t=Number(\"0.\".concat(t[1])):0}function ir(e,t){var n,r=function(e){var t=e,n=24*or(t),r=60*or(n),o=60*or(r),i=1e3*or(o);return{d:Math.floor(t),h:Math.floor(n),m:Math.floor(r),s:Math.floor(o),f:Math.round(i)}}(e),o=r.d,i=r.h,a=r.m,u=r.s,l=r.f,c=0;/w+|t+/gi.test(t)&&(n=new Date(Date.UTC(1899,11,30+Math.floor(e),0,0,Math.round(86400*(e-Math.floor(e))))),isNaN(n.getTime())&&(n=null)),/D+/gi.test(t)||(i+=24*o),/h+/gi.test(t)||(a+=60*i),/m+/gi.test(t)||(u+=60*a),/w+/gi.test(t)&&(c=n?n.getDay()-1:0)<0&&(c=6);var s=\"\";return n&&(s=n.getUTCHours()>=12?\"pm\":\"am\"),{year:0,month:0,day:c,date:o,h:i,m:a,s:u,f:l,t:s}}var ar=function(){function e(t,n,r){St(this,e);var o,i=t||{};(i.qCalendarStrings||(i.qCalendarStrings={qLongDayNames:Qn,qDayNames:er,qLongMonthNames:tr,qMonthNames:nr}),this.localeInfo=i,this.locale_days=i.qCalendarStrings.qLongDayNames.slice(),this.locale_days_abbr=i.qCalendarStrings.qDayNames.slice(),this.locale_months=i.qCalendarStrings.qLongMonthNames.slice(),this.locale_months_abbr=i.qCalendarStrings.qMonthNames.slice(),n)||(n=(Et(o={},Xn,i.qTimeFmt||\"hh:mm:ss\"),Et(o,$n,i.qDateFmt||\"YYYY-MM-DD\"),Et(o,Jn,i.qTimestampFmt||\"YYYY-MM-DD hh:mm:ss\"),o)[r]);this.pattern=n}return It(e,[{key:\"clone\",value:function(){var t=new e(this.localeInfo,this.pattern);return t.subtype=this.subtype,t}},{key:\"format\",value:function(e,t){t||(t=this.pattern?this.pattern:\"YYYY-MM-DD hh:mm:ss\"),t=t.replace(/\\[.+]|\\[|]/g,\"\");var n,r,o,i,a,u=/t+/gi.test(t);e instanceof Date?(o=u,i=(r=e).getUTCHours(),a=r.getUTCDay()-1,o&&((i%=12)||(i=12)),a<0&&(a=6),n={year:r.getUTCFullYear(),month:r.getUTCMonth(),day:a,date:r.getUTCDate(),h:i,m:r.getUTCMinutes(),s:r.getUTCSeconds(),f:r.getUTCMilliseconds(),t:r.getUTCHours()>=12?\"pm\":\"am\"}):(e<0&&(e=-e,t=\"-\".concat(t)),n=ir(e,t));var l=function(e,t){return{\"Y+|y+\":{Y:\"\".concat(Number(\"\".concat(t.year).slice(-2))),YY:rr(\"\".concat(t.year).slice(-2),2),YYY:rr(\"\".concat(t.year).slice(-3),3),def:function(e){return rr(\"\".concat(t.year),e.length)}},\"M+\":{M:t.month+1,MM:rr(\"\".concat(t.month+1),2),MMM:e.locale_months_abbr[t.month],def:e.locale_months[t.month]},\"W+|w+\":{W:t.day,WW:rr(\"\".concat(t.day),2),WWW:e.locale_days_abbr[t.day],def:e.locale_days[t.day]},\"D+|d+\":{D:t.date,def:function(e){return rr(\"\".concat(t.date),e.length)}},\"h+|H+\":{h:t.h,def:function(e){return rr(\"\".concat(t.h),e.length)}},\"m+\":{m:t.m,def:function(e){return rr(\"\".concat(t.m),e.length)}},\"s+|S+\":{s:t.s,def:function(e){return rr(\"\".concat(t.s),e.length)}},\"f+|F+\":{def:function(e){var n=\"\".concat(t.f),r=e.length-n.length;if(r>0)for(var o=0;o<r;o++)n+=\"0\";else r<0&&(n=n.slice(0,e.length));return n}},\"t{1,2}|T{1,2}\":{def:function(e){var n=t.t;return e[0].toUpperCase()===e[0]&&(n=n.toUpperCase()),n.slice(0,e.length)}}}}(this,n),c=[];for(var s in l)Object.prototype.hasOwnProperty.call(l,s)&&c.push(s);var f=new RegExp(c.join(\"|\"),\"g\"),d=t.replace(f,(function(e){var t,n,r;for(n in l)if(Object.prototype.hasOwnProperty.call(l,n)&&(t=new RegExp(n)).test(e))break;if(!t)return\"\";for(var o in l[n])if(o===e||o.toLowerCase()===e){void 0===(r=l[n][o])&&(r=l[n][o.toLowerCase()]);break}return void 0===r&&(r=l[n].def),\"function\"==typeof r&&(r=r(e)),r}));return d}}]),e}();function ur(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return Lt(ar,t)}function lr(e){return new Date(Date.UTC(1899,11,30+Math.floor(e),0,0,0,Math.round(864e5*(e-Math.floor(e)))))}function cr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"TS\",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=ur(n,e,t),o=Gn(r.format.bind(r),{toKey:function(e){return\"object\"===Ct(e)&&\"function\"==typeof e.getTime?e.getTime():e}});function i(e){return t!==Zn?lr(e):e}function a(e){return e=i(e),o(e)}return a.format=function(e,t){return o.clear(),t=i(t),r.format(t,e)},a.locale=function(n){return r=ur(n,e,t),o=Gn(r.format.bind(r),{toKey:function(e){return\"object\"===Ct(e)?e.getTime():e}}),this},a.qtype=function(e){return void 0!==e&&(t=e,o.clear()),t},a}function sr(e,t){if(e&&e.qNumFormat&&-1!==[\"D\",\"T\",\"TS\",\"IV\"].indexOf(e.qNumFormat.qType))return cr(e.qNumFormat.qFmt,e.qNumFormat.qType,t);var n=\"#\",r=t&&void 0!==t.qThousandSep?t.qThousandSep:\",\",o=t&&void 0!==t.qDecimalSep?t.qDecimalSep:\".\",i=\"U\",a=e&&!!e.qIsAutoFormat;return e&&e.qNumFormat?(n=e.qNumFormat.qFmt||n,r=e.qNumFormat.qThou||r,o=e.qNumFormat.qDec||o,i=e.qNumFormat.qType||i,a=a&&-1===[\"M\"].indexOf(e.qNumFormat.qType)):a=!0,(a||\"U\"===i)&&(n=\"#\".concat(o,\"##A\"),i=\"U\"),Wn(n,r,o,i,t)}function fr(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.meta,r=t.id,o=t.key,i=t.localeInfo,a=t.fieldExtractor,u=t.value,l=t.type,c=t.sourceField,s=u||(\"dimension\"===l?function(e){return e.qElemNo}:function(e){return e.qValue}),f=function(e){return e.qText||\"\"},d=\"dimension\"===l?\"first\":\"avg\",p=sr(n,i),v=\"dimension\"===l?\"first\":function(e,t){return p(t)},h={id:function(){return r},key:function(){return o},raw:function(){return n},title:function(){return n.qFallbackTitle||n.label},type:function(){return l},origin:function(){return c},items:function(){return e||(e=a(h)),e},min:function(){return n.qMin},max:function(){return n.qMax},value:s,label:f,reduce:d,reduceLabel:v,formatter:function(){return p},tags:function(){return n.qTags}};return h}function dr(e,t,n,r,o){return(t[e]||[]).map((function(t,i){var a=\"\".concat(r?\"\".concat(r,\"/\"):\"\").concat(e,\"/\").concat(i),u={instance:fr(Gt({id:\"\".concat(n?\"\".concat(n,\"/\"):\"\").concat(a),key:a,meta:t},o))};return u.attrDims=dr(\"qAttrDimInfo\",t,n,a,Gt({},o,{value:function(e){return e.qElemNo},type:\"dimension\"})),u.attrExps=dr(\"qAttrExprInfo\",t,n,a,Gt({},o,{value:function(e){return e.qNum},type:\"measure\"})),u.measures=dr(\"qMeasureInfo\",t,n,a,Gt({},o,{value:function(e){return e.qValue},type:\"measure\"})),u}))}function pr(){var e,t,n,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=r.key,i=r.data,a=r.config,u=void 0===a?{}:a,l={fields:[],wrappedFields:[],allFields:[],virtualFields:[]},c=i;if(!c)throw new Error('Missing \"data\" input');if(!c.qDimensionInfo)throw new Error('The \"data\" input is not recognized as a hypercube');var s=pr.util,f={cache:l,cube:c,localeInfo:u.localeInfo,fieldExtractor:null,pages:null,hierarchy:function(){return null},virtualFields:u.virtualFields},d={key:function(){return o},raw:function(){return c},field:function(e){return pn(e,f)},fields:function(){return l.fields.slice()},extract:function(e){return f.extractor(e,d,l,s)},hierarchy:function(e){return f.hierarchy(e,d,l,s)},_cache:function(){return l}};\"K\"===c.qMode||\"T\"===c.qMode||!c.qMode&&c.qNodesOnDim?(f.extractor=Dn,f.hierarchy=Sn,f.pages=\"K\"===c.qMode?c.qStackedDataPages:c.qTreeDataPages):\"S\"===c.qMode?(f.extractor=Jt,f.pages=c.qDataPages,f.hierarchy=Sn):f.extractor=function(){return[]},f.fieldExtractor=function(e){return f.extractor({field:e},d,l,s)};var p=\"S\"===c.qMode?function(e){return e.qElemNumber}:void 0,v=\"S\"===c.qMode?function(e){return e.qNum}:void 0;(e=l.wrappedFields).push.apply(e,jt(dr(\"qDimensionInfo\",c,o,\"\",Gt({},f,{value:p,type:\"dimension\"})))),(t=l.wrappedFields).push.apply(t,jt(dr(\"qMeasureInfo\",c,o,\"\",Gt({},f,{value:v,type:\"measure\"})))),l.fields=l.wrappedFields.map((function(e){return e.instance}));var h=function e(t){t.forEach((function(t){l.allFields.push(t.instance),e(t.measures),e(t.attrDims),e(t.attrExps)}))};return h(l.wrappedFields),(u.virtualFields||[]).forEach((function(e){var t=d.field(e.from),n=fr(At({meta:t.raw(),id:\"\".concat(o,\"/\").concat(e.key),sourceField:t,fieldExtractor:function(e){return f.extractor({field:e},d,l,s)},key:e.key,type:t.type(),localeInfo:f.localeInfo,value:t.value},e.override||{}));l.virtualFields.push(n)})),(n=l.allFields).push.apply(n,jt(l.virtualFields)),d}var vr=[[\"qHyperCube\",\"qHyperCubeDef\"],[\"qTreeData\",\"qTreeDataDef\"],[\"qDimensionInfo\",\"qDimensions\"],[\"qMeasureInfo\",\"qMeasures\"],[\"qAttrDimInfo\",\"qAttributeDimensions\"],[\"qAttrExprInfo\",\"qAttributeExpressions\"]],hr=/\\/qDimensionInfo(?:\\/(\\d+))?/,mr=/\\/qMeasureInfo\\/(\\d+)/,yr=/\\/qAttrDimInfo\\/(\\d+)(?:\\/(\\d+))?/,gr=/\\/qAttrExprInfo\\/(\\d+)/,br=/\\/?qHyperCube/,xr=/\\/?qTreeData/,qr=function(e){return\"\".concat(e.substr(0,e.indexOf(\"/qHyperCubeDef\")+14))},wr=function(e){return\"\".concat(e.substr(0,e.indexOf(\"/qTreeDataDef\")+13))};function Mr(e,t){var n=e,r=-1,o=-1,i=\"\",a=function(e){return e};br.test(e)?(i=\"\".concat(n.substr(0,n.indexOf(\"qHyperCube\")+10)),a=qr):xr.test(e)&&(i=\"\".concat(n.substr(0,n.indexOf(\"qTreeData\")+9)),a=wr);var u=!0;if(hr.test(e)&&(r=+hr.exec(e)[1]),mr.test(e)&&(o=+mr.exec(e)[1]),yr.test(e)){o=-1,r=0;var l=+yr.exec(n)[2];isNaN(l)||(r=l,n=n.replace(/\\/\\d+$/,\"\")),u=!1}if(gr.test(e)){var c=o;if(t){o=0;var s=sn(i,t);o+=(s.qMeasureInfo||[]).length,r>-1?(o=s.qDimensionInfo.slice(0,r).reduce((function(e,t){return e+t.qAttrExprInfo.length}),o),r=-1):(o=s.qDimensionInfo.reduce((function(e,t){return e+t.qAttrExprInfo.length}),o),o=s.qMeasureInfo.slice(0,c).reduce((function(e,t){return e+t.qAttrExprInfo.length}),o)),o+=+gr.exec(n)[1]}else r>-1?(r=-1,o=+gr.exec(n)[1]):o+=+gr.exec(n)[1]+1}return vr.forEach((function(e){var t=Tt(e,2),r=t[0],o=t[1];n=n.replace(r,o)})),u&&(n=a(n)),n&&\"/\"!==n[0]&&(n=\"/\".concat(n)),{measureIdx:o,dimensionIdx:r,path:n}}function kr(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2?arguments[2]:void 0,o=n.byCells,i=n.primarySource,a=[],u={},l=e.isActive(),c=!1;if(e.brushes().forEach((function(e){var t=Mr(e.id,r);if(\"range\"===e.type&&t.measureIdx>-1&&t.dimensionIdx>-1){var n=e.brush.ranges();n.length&&(c=!0,u.multiRangeSelectTreeDataValues||(u.multiRangeSelectTreeDataValues={path:t.path,ranges:[]}),n.forEach((function(e){return u.multiRangeSelectTreeDataValues.ranges.push({qMeasureIx:t.measureIdx,qDimensionIx:t.dimensionIdx,qRange:{qMin:e.min,qMax:e.max,qMinInclEq:!0,qMaxInclEq:!0}})})))}else{if(\"range\"===e.type&&t.measureIdx>-1){var l=e.brush.ranges();l.length&&(c=!0,u.rangeSelectHyperCubeValues||(u.rangeSelectHyperCubeValues={path:t.path,ranges:[]}),l.forEach((function(e){return u.rangeSelectHyperCubeValues.ranges.push({qMeasureIx:t.measureIdx,qRange:{qMin:e.min,qMax:e.max,qMinInclEq:!0,qMaxInclEq:!0}})})))}if(\"range\"===e.type&&t.dimensionIdx>-1){var s=e.brush.ranges();s.length&&(c=!0,u.selectHyperCubeContinuousRange||(u.selectHyperCubeContinuousRange={path:t.path,ranges:[]}),s.forEach((function(e){return u.selectHyperCubeContinuousRange.ranges.push({qDimIx:t.dimensionIdx,qRange:{qMin:e.min,qMax:e.max,qMinInclEq:!0,qMaxInclEq:!1}})})))}if(\"value\"===e.type&&t.dimensionIdx>-1)if(o)if(r&&r.qHyperCube&&(\"P\"===r.qHyperCube.qMode||\"T\"===r.qHyperCube.qMode||\"K\"===r.qHyperCube.qMode)){var f=r.qHyperCube,d=f.qNoOfLeftDims,p=f.qEffectiveInterColumnSortOrder.indexOf(t.dimensionIdx);if(u.selectPivotCells||(u.selectPivotCells={path:t.path,cells:[]}),e.id===i||!i){var v=e.brush.values().map((function(e){return+e})).filter((function(e){return!isNaN(e)}));(0===d||p>=d)&&d>-1?v.forEach((function(e){u.selectPivotCells.cells.push({qType:\"T\",qCol:e,qRow:p-d})})):v.forEach((function(e){u.selectPivotCells.cells.push({qType:\"L\",qCol:t.dimensionIdx,qRow:e})})),c=!!u.selectPivotCells.cells.length}}else u.selectHyperCubeCells||(u.selectHyperCubeCells={path:t.path,cols:[]}),u.selectHyperCubeCells.cols.push(t.dimensionIdx),e.id!==i&&(i||u.selectHyperCubeCells.values)||(u.selectHyperCubeCells.values=e.brush.values().map((function(e){return+e})).filter((function(e){return!isNaN(e)})),c=!!u.selectHyperCubeCells.values.length);else{var h=e.brush.values().map((function(e){return+e})).filter((function(e){return!isNaN(e)}));c=!!h.length,a.push({params:[t.path,t.dimensionIdx,h,!1],method:\"selectHyperCubeValues\"})}}})),!c&&l)return[{method:\"resetMadeSelections\",params:[]}];u.rangeSelectHyperCubeValues&&a.push({method:\"rangeSelectHyperCubeValues\",params:[u.rangeSelectHyperCubeValues.path,u.rangeSelectHyperCubeValues.ranges,[],null===(t=n.orMode)||void 0===t||t]});return u.selectHyperCubeContinuousRange&&a.push({method:\"selectHyperCubeContinuousRange\",params:[u.selectHyperCubeContinuousRange.path,u.selectHyperCubeContinuousRange.ranges]}),u.selectHyperCubeCells&&a.push({method:\"selectHyperCubeCells\",params:[u.selectHyperCubeCells.path,u.selectHyperCubeCells.values,u.selectHyperCubeCells.cols]}),u.selectPivotCells&&a.push({method:\"selectPivotCells\",params:[u.selectPivotCells.path,u.selectPivotCells.cells]}),u.multiRangeSelectTreeDataValues&&a.push({method:\"multiRangeSelectTreeDataValues\",params:[u.multiRangeSelectTreeDataValues.path,u.multiRangeSelectTreeDataValues.ranges]}),a}function Cr(e){pr.util=e.data(\"matrix\").util,e.data(\"q\",pr),e.formatter(\"q-number\",Wn),e.formatter(\"q-time\",cr)}function Sr(e){var t=ft(e.layout||{},e.path.split(\"/\").join(\".\"));if(!t)return!1;var n=t.qIsOneAndOnlyOne;return void 0!==n&&n}function Dr(e){var t,n,r,o=e.selections,i=e.picassoSelections,a=e.layout,u={lockedDimensions:[],singleSelectDimensions:[]};null!=o&&null!==(t=o.isModal)&&void 0!==t&&t.call(o)&&o.confirm(),i.layout(a);var l=(null!==(n=null==a?void 0:a.qHyperCube)&&void 0!==n?n:{}).qDimensionInfo,c=void 0===l?[]:l;return u.lockedDimensions=c.map((function(e){return!!e.qLocked})),u.singleSelectDimensions=c.map((function(e,t){return Sr({layout:a,path:\"qHyperCube/qDimensionInfo/\".concat(t)})})),u.singleSelectIndex=function(e){var t,n=((null==e?void 0:e.qHyperCube)||{}).qDimensionInfo,r=void 0===n?[]:n;return null!==(t=r.map((function(e,t){var n;return!(e.qLocked||(null===(n=e.qCardinalities)||void 0===n?void 0:n.qHypercubeCardinal)<=1)&&t})).filter((function(e){return\"number\"==typeof e}))[0])&&void 0!==t?t:Math.max(r.length-1,0)}(a),u.canSelect=0===c.length||c.some((function(e){return!e.qLocked})),u.dimensionLocked=!(null===(r=c[0])||void 0===r||!r.qLocked),u}function Ir(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(null==e||!e.length)return!1;var t=e.filter((function(e){return\"object\"===r(e.data)&&Array.isArray(e.data.fields)})).every((function(e){return e.data.fields.every((function(e){var t=e.raw();return!(!t.qLocked&&t.qCardinal)}))}));return t}function Er(e){var t=e.brush,n=e.colorField,r=e.legendAlias,o=e.useLegendCube,i=void 0!==o&&o;!n||/qAttrDimInfo/.test(n)?(t.removeKeyAlias(\"attrDim/qDimensionInfo/0\"),r&&t.removeKeyAlias(r),t.addKeyAlias(\"attrDim/qDimensionInfo/0\",\"qHyperCube/\".concat(n))):i&&t.addKeyAlias(r,\"qHyperCube/\".concat(n))}Cr.qBrushHelper=kr,Cr.selections=kr;var Or=\"Enter\",Ar=\"Escape\",Nr=\"Esc\",Pr=\"Shift\";function Lr(e){var t=e.brush,n=e.getConfig;return{interceptor:function(e){var r=t.brushes(),o=n(),i=o.allowSimultaneous,a=o.layout,u=void 0===a?{}:a;r.forEach((function(n){var r,o,a;(\"range\"===n.type||null!==(r=e[0])&&void 0!==r&&r.key&&(null===(o=e[0])||void 0===o?void 0:o.key)!==n.id&&0!==i.indexOf(null===(a=e[0])||void 0===a?void 0:a.key))&&t.clear([])}));var l=e.filter((function(e){return-2!==e.value}));if(l.length>1){var s=function(e){var t=e.layout,n=void 0===t?{}:t,r=e.values,o=void 0===r?[]:r;if(null==o||!o.length)return[];var i=Array.from(new Set(o.map((function(e){return e.key})))),a=[];return i.forEach((function(e){var t=Sr({layout:n,path:e}),r=o.filter((function(t){return t.key===e})),i=t?[r.pop()]:r;a.push.apply(a,c(i))})),a.filter(Boolean)}({layout:u,values:l});return s}return l},rangeInterceptor:function(e){var r=t.brushes(),o=n().allowSimultaneous;return r.filter((function(e){return\"value\"===e.type})).length?(t.clear([]),e):(r.forEach((function(n){var r=n.id===e[0].key||o.includes(n.id)&&o.includes(e[0].key);\"range\"!==n.type||r||t.clear([])})),e)}}}var Tr=function e(t,n){return n[t]?e(t+1,n):t},jr=function(e,t){var n=t.reduce((function(e,t){return e[t]=!0,e}),{});return e.reduce((function(e,t,r){var o=Tr(r,n);return n[o]=!0,e[r]=o,e}),{})};function Fr(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.layout,n=e.filtered,r=void 0===n?{}:n,o=(null==t?void 0:t.qHyperCube)||{},i=o.qDimensionInfo,a=void 0===i?[]:i,u=o.qMeasureInfo,l=void 0===u?[]:u;return{dimensions:jr(a,r.dimensions||[]),measures:jr(l,r.measures||[])}}var Rr=\"selectHyperCubeValues\",Hr=\"rangeSelectHyperCubeValues\",Vr=\"selectHyperCubeContinuousRange\";function zr(e){var t=e.selection,n=e.fieldMap,r=t.method,o=t.params;if(r===Rr){var i=n.dimensions[o[1]];void 0!==i&&(o[1]=i)}r===Hr&&o[1].forEach((function(e){var t=n.measures[e.qMeasureIx];void 0!==t&&(e.qMeasureIx=t)}));r===Vr&&o[1].forEach((function(e){var t=n.dimensions[e.qDimIx];void 0!==t&&(e.qDimIx=t)}));return t}var _r=[],Br=0,Yr=function(e){var t=_r.filter((function(e){var t;return null===(t=e.selections)||void 0===t?void 0:t.isActive()}));t.length&&(e.key===Or?t.forEach((function(e){return e.selections.confirm()})):e.key!==Ar&&e.key!==Nr||t.forEach((function(e){return e.selections.cancel()})))},Ur=function(){document.addEventListener(\"keyup\",Yr)},Kr=function(){document.removeEventListener(\"keyup\",Yr)},Gr=function(e,t){Object.keys(t).forEach((function(n){e.on(n,t[n])}))},Wr=function(e,t){Object.keys(t).forEach((function(n){e.removeListener(n,t[n])}))};function $r(e,t,n){if(t&&void 0!==n&&\"selectHyperCubeContinuousRange\"===e.method){var r=e.params;if(r&&r[1]&&r[1][0]){var o=r[1][0],i=o.qDimIx,a=o.qRange;\"undefined\"!==i&&a&&!1===a.qMaxInclEq&&a.qMax>=n&&(a.qMaxInclEq=!0)}}}function Xr(e){var t=e.chart,n=e.document,r=e.selectionInfo,o=e.eventName,i=e.componentName,a=e.brushName,u=void 0===a?\"selection\":a,l=e.emit,c=void 0===l?\"rangeClear\":l,s=r.event===o,f=n.querySelector(\"[data-key='\".concat(i,\"-edge-0']\"));if(s||!f)return!1;var d=t.component(i);return!!d&&(d.emit(c),\"string\"==typeof u&&t.brush(u).clear(),d)}function Jr(e){var t=e.selectionInfo,n=e.chart,r=e.document,o=e.eventName,i=void 0===o?\"discreteRange\":o,a=e.componentName,u=void 0===a?\"discrete-range-brush\":a,l=e.cleared;return Xr({selectionInfo:t,chart:n,document:r,eventName:void 0!==l&&l?void 0:i,componentName:u,emit:\"areaClear\",brushName:e.brushName})}function Zr(e){var t=e.selectionInfo,n=e.chart,r=e.document,o=e.eventName,i=void 0===o?\"continuousRange\":o,a=e.componentName,u=void 0===a?\"continuous-range-brush\":a,l=e.cleared;return Xr({selectionInfo:t,chart:n,document:r,eventName:void 0!==l&&l?void 0:i,componentName:u,brushName:e.brushName})}function Qr(e){var t=e.selectionInfo,n=e.chart,r=e.document,o=e.componentName,i=void 0===o?\"minor-range-brush\":o,a=e.eventName,u=void 0===a?\"minorRange\":a,l=e.cleared,c=void 0!==l&&l,s=e.brushName,f=Xr({selectionInfo:t,chart:n,document:r,eventName:c?void 0:u,componentName:i,brushName:void 0!==s&&s});if(f){var d=f.settings.settings,p=d.scale,v=d.brush,h=n.scale(p).data().fields.map((function(e){return e.id()})),m=n.brush(v),y=m.brushes().filter((function(e){return\"range\"===e.type&&h.some((function(t){return t===e.id}))}));m&&y.length&&y.forEach((function(e){m.removeRanges(e.brush.ranges().map((function(t){return{key:e.id,range:t}})))}))}}function eo(e){var t=e.selectionInfo,n=e.chart,r=e.document,o=e.selections,i=e.eventName,a=void 0===i?\"xAxis\":i,u=e.cleared;Xr({selectionInfo:t,chart:n,document:r,eventName:void 0!==u&&u?void 0:a,componentName:\"\".concat(a,\"-range-brush\"),emit:\"areaClear\",brushName:!1})&&o.clear()}function to(e){var t=e.chart,n=e.selectionInfo,r=e.selections,o=e.events,i=void 0===o?[\"tap\"]:o,a=e.brushNames,u=void 0===a?[]:a;if(n&&i.includes(n.event)){var l=n.currentComponent;n.previousComponent!==l&&(r.clear(),u.forEach((function(e){return t.brush(e).end()})))}}function no(e){var t=e.selectionInfo,n=e.chart,r=e.document,o=e.selections,i=e.eventName,a=void 0===i?\"legendRange\":i,u=e.componentName,l=void 0===u?\"legend-range-brush\":u,c=e.cleared,s=void 0!==c&&c,f=e.brushName;Xr({selectionInfo:t,chart:n,document:r,eventName:s?void 0:a,componentName:l,brushName:void 0!==f&&f})&&o.clear()}var ro=[\"chart\",\"document\",\"selections\",\"selectionInfo\"],oo=function(e){e.chart,e.document,e.selections,e.selectionInfo;var t=u(e,ro);t.clearDiscrete(),t.clearContinuous(),t.clearMinor(),t.clearRange(),t.clearTap(),t.clearLegend()};function io(e){var n=e.selectionEvents,r=e.selections,o=e.selectionInfo,i=e.clear,a=e.chart,u=e.document,l=n.start,c={selections:r,selectionInfo:o,chart:a,document:u},s=function(e){return Object.assign(o,e||{})},f=function(e){var n=e.event,r=e.components;return function(){return function(e){var n=e.selectionInfo,r=void 0===n?{}:n,o=e.setSelectionInfo,i=e.clear,a=e.event,u=e.components,l=void 0===u?[]:u;o(t(t({},r),{},{event:a,components:l.map((function(e){return e.key})).filter(Boolean)})),i()}({event:n,components:r,clear:i,chart:a,selectionInfo:o,setSelectionInfo:s})}};return\"function\"==typeof l?function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];l(t(t({defaultFunc:f({event:e,components:n}),setSelectionInfo:s,clear:i},c),{},{event:e,components:n}))}:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];f({event:e,components:t})()}}function ao(e){var t,n=e.lasso;null!=n&&null!==(t=n.active)&&void 0!==t&&t.call(n)&&(null==n||n.action(!1))}function uo(e){var n,r=e.chart,o=e.selectionInfo,i=e.selectionActions,a=e.actions,u=void 0===a?{}:a,c=e.selections,s=e.selectionEvents;if(!1===i||!1===s)return function(){};var f=(u||{}).lasso,d=void 0!==f&&f,p=i.reset,v=void 0===p?ao:p,h=i.clear,m=!1!==h&&function(e){var n=e.clear,r=void 0===n?oo:n,o=e.selections,i=e.selectionInfo,a=e.chart;return function(){var e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).cleared,n={selections:o,selectionInfo:i,chart:a,document:document,cleared:e};return r(t({clearDiscrete:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Jr(t(t({},n),e))},clearContinuous:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Zr(t(t({},n),e))},clearMinor:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Qr(t(t({},n),e))},clearRange:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return eo(t(t({},n),e))},clearTap:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return to(t(t({},n),e))},clearLegend:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return no(t(t({},n),e))}},n))}}({clear:h,selections:c,selectionInfo:o,chart:r}),y=function(e){var t=e.chart,n=e.lasso,r=e.reset,o=e.clear,i=!1,a={deactivated:function(e){r({e:e,lasso:n})},canceled:function(e){r({e:e,lasso:n}),o({e:e,chart:t,document:document})},cleared:function(e){i||(i=!0,o({e:e,chart:t,document:document,cleared:!0}),i=!1)}};return!1===r&&delete a.deactivated,!1===o&&delete a.cleared,!1===r&&!1===o&&delete a.canceled,a}({chart:r,clear:m,reset:v,lasso:d}),g={};Object.entries(y).forEach((function(e){var t=l(e,2),n=t[0],r=t[1];g[n]=function(e,t){return t?function(n){return t({event:n,defaultFunc:e})}:e}(r,s[n])}));var b=io({selectionEvents:s,selections:c,selectionInfo:o,clear:m,chart:r,document:document});return null==u||null===(n=u.select)||void 0===n||n.on(\"start\",b),Object.entries(g).forEach((function(e){var t=l(e,2),n=t[0],r=t[1];null==c||c.on(n,r)})),function(){var e;null==u||null===(e=u.select)||void 0===e||e.removeListener(\"start\",b),Object.entries(g).forEach((function(e){var t=l(e,2),n=t[0],r=t[1];null==c||c.removeListener(n,r)}))}}function lo(e){var t=e.chart,n=e.selectionActions,r=e.brush,o=e.actions,i=e.selectionInfo,a=e.selections,u=e.selectionEvents,c=function(e){var t=e.brush,n=e.chart,r=e.selectionInfo,o=e.brushEvents,i=void 0===o?{}:o,a=Object.entries(i).map((function(e){var o=l(e,2),i=o[0],a=o[1],u=function(){return a({chart:n,selectionInfo:r})};return t.on(i,u),[i,u]}));return function(){a.forEach((function(e){var n=l(e,2),r=n[0],o=n[1];t.removeListener(r,o)}))}}({brush:r,chart:t,selectionInfo:i,brushEvents:e.brushEvents}),s=uo({chart:t,selectionInfo:i,selectionActions:n,actions:o,selections:a,selectionEvents:u}),f=function(e){var t=e.actions;if(null==t||!t.lasso)return function(){};var n=!1,r=function(e){n||e.key!==Pr||(t.lasso.action(!0),n=!0)},o=function(e){e.key===Pr&&(t.lasso.action(!1),n=!1)};return document.addEventListener(\"keydown\",r),document.addEventListener(\"keyup\",o),function(){document.removeEventListener(\"keydown\",r),document.removeEventListener(\"keyup\",o)}}({actions:o});return function(){c(),s(),f()}}var co=[{key:\"qHyperCube/qDimensionInfo/0:numeric\",includeMax:!1}];function so(e){var t=e.chart,n=e.actions,r=e.selections,o=e.picassoQ,i=e.config,a=i.allowSimultaneous,u=void 0!==a&&a,s=i.majorScale,f=void 0===s?void 0:s,d=i.selectionActions,p=(d=void 0===d?{}:d).clear,v=d.reset,h=i.selectionEvents,m=void 0===h?{deactivated:void 0,canceled:void 0,cleared:void 0,start:void 0}:h,y=i.brushEvents,g=void 0===y?{}:y,b=i.brushName,x=void 0===b?\"selection\":b,q=i.brushMaxListeners,w=void 0===q?20:q,M=i.brushRanges,k=void 0!==M&&M,C=i.interceptors,S=void 0===C?{}:C,D=i.selectionsFn,I=void 0===D?o.selections:D,E=t.brush(x);if(\"number\"==typeof w&&E.setMaxListeners(w),k){var O=!0===k?co:k;E.configure({ranges:O})}var A={canSelect:!0,getIsSelectionLocked:!1,isInnerDimensionLocked:!1,lockedDimensions:[],singleSelectIndex:0,selectionInfo:{colorField:void 0,components:[],event:void 0,currentComponent:void 0,previousComponent:void 0}},N=function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.selections,r=t.brush,o=t.majorScale,i=t.actions,a=t.selectionsFn,u=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).path,l=void 0===u?\"/qHyperCubeDef\":u;if(!n)return{layout:function(){},filteredFields:function(){},allowSimultaneous:function(){},release:function(){}};var c=++Br,s=null,f={dimensions:[],measures:[]},d=[],p={};n.on=n.on.bind(n),n.isActive=n.isActive.bind(n),n.addListener=n.addListener.bind(n),n.removeListener=n.removeListener.bind(n);var v=Lr({brush:r,getConfig:function(){return{layout:s,allowSimultaneous:d}}}),h=v.rangeInterceptor,m=v.interceptor;r.intercept(\"set-ranges\",h),r.intercept(\"toggle-ranges\",h),r.intercept(\"toggle-values\",m),r.intercept(\"set-values\",m),r.intercept(\"add-values\",m),r.on(\"start\",(function(){return n.begin(l)}));var y={activate:function(){},deactivated:function(){return r.end()},cleared:function(){return r.clear()},canceled:function(){return r.end()}};Gr(n,y);var g=null==o||null===(e=o.max)||void 0===e?void 0:e.call(o);return null!=i&&i.select?(i.select.on(\"start\",(function(){var e;r.start(),\"function\"==typeof i.select.getBrushOptions&&(p=(e=i.select).getBrushOptions.apply(e,arguments))})),i.select.on(\"end\",(function(){var e=a(r,p,s),t=Fr({layout:s,filtered:f});e.forEach((function(e){var r=zr({selection:e,fieldMap:t});$r(r,i.select.brushSelectionIncludeMax,g),n.select(r)}))}))):r.on(\"update\",(function(){var e=a(r,p,s),t=Fr({layout:s,filtered:f});e.forEach((function(e){n.select(zr({selection:e,fieldMap:t}))}))})),0===_r.length&&Ur(),_r.push({key:c,selections:n}),{layout:function(e){s=e},filteredFields:function(e){f=e},allowSimultaneous:function(e){d=e},release:function(){s=null;var e=_r.indexOf(_r.filter((function(e){return e.key===c}))[0]);-1!==e&&_r.splice(e,1),_r.length||Kr(),Wr(n,y)}}}({brush:E,majorScale:f,actions:n,selections:r,picassoQ:o,selectionsFn:I});!function(e){var t=e.brush,n=e.interceptors,r=void 0===n?{}:n;Object.entries(r).forEach((function(e){var n=l(e,2),r=n[0],o=n[1];(Array.isArray(o)?o:[o]).forEach((function(e){t.intercept(r,e)}))}))}({brush:E,interceptors:S});var P=lo({chart:t,brush:E,actions:n,selections:r,selectionInfo:A.selectionInfo,selectionActions:{clear:p,reset:v},selectionEvents:m,brushEvents:g});if(u){var L=!0===u?c(Array(15)).map((function(e,t){return\"qHyperCube/qMeasureInfo/\".concat(t)})):u;N.allowSimultaneous(L)}return{unbindEvents:P,state:A,picassoSelections:N,brush:E}}var fo=[\"colorField\",\"useLegendCube\"];function po(e){var n=e.chart,r=e.selections,o=e.actions,i=void 0!==o&&o,a=e.config,l=void 0===a?{}:a,c=so({chart:n,actions:i,selections:r,picassoQ:Cr,config:l}),s=c.unbindEvents,f=c.state,d=c.picassoSelections,p=c.brush,v=l.custom,h=void 0===v?{}:v,m=l.legendAlias,y=void 0===m?void 0:m,g=l.setBrushAliases,b=void 0===g?Er:g;return{getIsDimensionLocked:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return f.lockedDimensions[e]},getIsSelectionLocked:function(){var e,t,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return null!==(e=null==r||null===(t=r.isLocked)||void 0===t?void 0:t.call(r))&&void 0!==e?e:Ir(n)},getIsSingleSelect:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:f.singleSelectIndex;return f.singleSelectDimensions[e]},getCanSelect:function(){return f.canSelect},getSelectionInfo:function(){return f.selectionInfo},setLayout:function(e){var t=Dr({selections:r,picassoSelections:d,layout:e});Object.assign(f,t)},setFilteredFields:function(e){d.filteredFields(e)},setBrushAliases:function(e){var n=e.colorField,r=e.useLegendCube,o=void 0!==r&&r,i=u(e,fo),a=t({useLegendCube:o,colorField:n,brush:p,legendAlias:y},i);b(t(t({},a),{},{defaultFunc:function(){return Er(a)}}))},destroy:function(){s(),d.release()},custom:t({},h)}}var vo=\"'Source Sans Pro', 'Arial', 'sans-serif'\",ho=\"#333333\",mo=\"#595959\",yo=\"#737373\",go=\"#cccccc\",bo=\"#e6e6e6\";function xo(e){var t={};return[].concat(c(e),c([[\"\",\"\",\"color\"],[\"object\",\"\",\"fontFamily\"],[\"object\",\"axis.label.name\",\"color\",mo],[\"object\",\"axis.label.name\",\"fontFamily\",vo],[\"object\",\"axis.label.name\",\"fontSize\",\"12px\"],[\"object\",\"axis.line.major\",\"color\",go],[\"object\",\"axis.line.minor\",\"color\",bo],[\"object\",\"axis.title\",\"color\"],[\"object\",\"axis.title\",\"fontFamily\",vo],[\"object\",\"axis.title\",\"fontSize\",\"13px\"],[\"object\",\"grid.line.highContrast\",\"color\",bo],[\"object\",\"grid.line.major\",\"color\",go],[\"object\",\"grid.line.minor\",\"color\",bo],[\"object\",\"label.value\",\"color\",mo],[\"object\",\"label.value\",\"fontFamily\",vo],[\"object\",\"label.value\",\"fontSize\",\"12px\"],[!1,\"label.value\",\"darkColor\",mo],[!1,\"label.value\",\"lightColor\",bo],[\"object\",\"outOfRange\",\"color\",\"#999\"],[\"object\",\"referenceLine.label.name\",\"color\",ho],[\"object\",\"referenceLine.label.name\",\"fontFamily\",vo],[\"object\",\"referenceLine.label.name\",\"fontSize\",\"12px\"],[\"object\",\"referenceLine.outOfBounds\",\"color\",bo],[\"object\",\"referenceLine.outOfBounds\",\"fontFamily\",vo],[\"object\",\"referenceLine.outOfBounds\",\"fontSize\",\"12px\"],[\"object\",\"referenceLine.outOfBounds\",\"backgroundColor\",yo,function(e){return\"transparent\"===e?yo:e}]])).reduce((function(e,n){var r=\"\".concat(n[0],\"-\").concat(n[1],\"-\").concat(n[2],\"}\");return t[r]||(t[r]=!0,e.push(n)),e}),[]).sort((function(e,t){return(e[0].split?e[0].split(\".\").length:0)-(t[0].split?t[0].split(\".\").length:0)}))}var qo=function(e){return e};function wo(e){var t=e.theme,n=e.id,r=e.transform,o=e.extend,i=e.matrix,a={},u=r.reduce((function(e,t){var n=l(t,2),r=n[0],o=n[1];return e[r]=o,e}),{});return i.forEach((function(e){var r=l(e,5),o=r[0],i=r[1],c=r[2],s=r[3],f=r[4],d=void 0===f?function(e){return e}:f,p=function(e){var t=e.theme,n=e.base,r=e.path,o=e.attribute,i=e.defaultValue,a=void 0===i?void 0:i;if(!t||!1===n)return a;var u=t.getStyle(n,r,o);return void 0===u?a:u}({theme:t,base:\"object\"===o&&n?\"\".concat(\"object\",\".\").concat(n):o,path:i,attribute:c,defaultValue:s}),v=(u[\"\".concat(i,\".\").concat(c)]||qo)(d(p));dt(a,[i,c].filter(Boolean).join(\".\"),v)})),o.forEach((function(e){var t=l(e,2),n=t[0],r=t[1];dt(a,n,r)})),a}function Mo(e){var t=e.theme,n=e.config,r=void 0===n?{}:n,o=r.id,i=r.resolve,a=void 0===i?[]:i,u=r.transform,l=void 0===u?[]:u,c=r.extend,s=void 0===c?[]:c,f={theme:t,matrix:xo(a),styles:void 0};return f.styles=wo({theme:t,id:o,transform:l,extend:s,matrix:f.matrix}),{getStyles:function(){return f.styles},getTheme:function(){return f.theme},setTheme:function(e){f.theme=e,f.styles=wo({theme:e,id:o,transform:l,extend:s,matrix:f.matrix})}}}var ko={NOOP:function(){},FALSE:function(){return!1},ARRAY:function(){return[]},OBJECT:function(){return{}}};var Co=\"chart-modules-tooltip\",So=\"#\".concat(Co);function Do(){if(!document.querySelector(So)){var e=document.createElement(\"div\");e.id=Co,e.style.overflow=\"hidden\",e.style.position=\"fixed\",e.style.pointerEvents=\"none\",e.style.left=\"0px\",e.style.top=\"0px\",e.style.width=\"100%\",e.style.height=\"100%\",e.style.zIndex=1020,document.body.appendChild(e)}}function Io(e){return{show:!0,key:e.key,type:\"tooltip\",layout:{displayOrder:3},beforeMount:function(){Do()},beforeUpdate:function(){Do()},destroyed:function(){var e;null!=(e=document.querySelector(So))&&e.parentElement&&e.childElementCount<1&&e.parentElement.removeChild(e)},settings:{appendTo:function(){return document.querySelector(So)},direction:e.rtl?\"rtl\":\"ltr\",duration:e.duration},style:{arrow:{color:\"#404040\"},content:{display:\"table\",\"border-spacing\":\"4px\",background:\"rgba(64, 64, 64, 0.9)\",opacity:\"1\",fontSize:\"13px\",fontFamily:\"'Source Sans Pro', 'Arial', 'sans-serif'\",\"empty-cells\":\"show\"},cell:{\"max-width\":\"180px\",\"word-break\":\"break-word\",\"word-wrap\":\"break-word\",\"overflow-wrap\":\"break-word\",hyphens:\"auto\"}}}}var Eo=\"position\";var Oo={bar:\"rect\",diamond:\"path\",point:\"circle\",square:\"rect\",triangle:\"path\",\"n-polygon\":\"path\",slice:\"path\"},Ao=function(e){return e.data.value},No=function(e){var t,n=e.data;return null==n||null===(t=n.major)||void 0===t?void 0:t.value};function Po(e){var t=e.chart,n=e.expando,r=e.nodes,o=e.collectConfig,i=e.collectibles,a=e.meta,u=o.from,s={chart:t,expando:n,nodes:r,collectConfig:o,collectibles:i,meta:a};switch(\"function\"==typeof u?\"custom\":u){case\"single\":return function(e){var t=l(e.nodes,1)[0];return[\"container\"===t.type&&t.children[0]||t]}(s);case\"position\":return function(e){var t=e.chart,n=e.collectibles,r=e.meta;return t.shapesAt(r.position.absolute,{components:n.map((function(e){return{key:e.key}}))})}(s);case\"dimension\":return function(e){var t=e.chart,n=e.nodes,r=e.collectConfig,o=e.collectibles,i=l(n,1)[0],a=r.filter,u=\"function\"==typeof a?a:function(){return!0},s=r.by,f=void 0===s?Ao:s;return o.reduce((function(e,n){var r=n.major,o=void 0===r?No:r,a=Oo[n.type]||n.type;return e.push.apply(e,c(t.findShapes(a).filter((function(e){return e.key===n.key&&e.data&&o({data:e.data})===f({data:i.data})})))),e}),[]).filter(u)}(s);case\"radius\":return function(e){var t=e.chart,n=e.nodes,r=e.collectConfig,o=e.collectibles,i=e.meta,a=l(n,1)[0].localBounds,u=r.distance,c=r.filter,s=\"function\"==typeof c?c:function(){return!0},f=o.map((function(e){return e.key}));return t.shapesAt({cx:i.position.absolute.x,cy:i.position.absolute.y,r:u||Math.max(a.width,a.height)},{components:f.map((function(e){return{key:e}}))}).filter(s)}(s);case\"custom\":return function(e){var t=e.chart,n=e.expando,r=e.nodes,o=e.collectConfig,i=e.meta;return o.from({chart:t,expando:n,nodes:r,meta:i})}(s);default:return[]}}var Lo=Number.MAX_VALUE;function To(e){var t=e.nodes.reduce((function(e,t){var n=t.bounds;return e.xMin=Math.min(e.xMin,n.x,n.x+n.width),e.yMin=Math.min(e.yMin,n.y,n.y+n.height),e.xMax=Math.max(e.xMax,n.x,n.x+n.width),e.yMax=Math.max(e.yMax,n.y,n.y+n.height),e}),{xMin:Lo,xMax:-Lo,yMin:Lo,yMax:-Lo}),n=t.xMin,r=t.xMax,o=t.yMin;return{x:n,y:o,width:r-n,height:t.yMax-o}}function jo(e){var t=e.chart,n=e.config,r=e.expando,o=e.placementConfig,i=e.hovered,a=e.collected,u=e.meta,s=function(e){for(var t=e.chart,n=e.config,r=e.expando,o=e.placementConfig,i=e.hovered,a=e.collected,u=e.meta,s=l(i,1)[0],f=Array.isArray(o)?o:[o],d={bounds:s.bounds,key:s.key},p=To({nodes:a}),v=0;v<f.length;v++){var h=f[v];if(\"function\"==typeof h){var m=h({chart:t,expando:r,hovered:i,collected:c(a),meta:u,collectedBounds:p,combineBounds:To});if(m)return m}if(\"trigger\"===h)return d;if(\"collectible\"===h){var y=n.main.placements.collectible;return{bounds:\"function\"==typeof y?y({collected:c(a)}):p,key:a[0].key}}}return d}({chart:t,config:n,expando:r,placementConfig:o,hovered:i,collected:a,meta:u}),f=s.bounds,d=s.key,p=l(a,1)[0].desc;return[{bounds:f,nodes:a,data:a.map((function(e){return e.data})),key:d,meta:u,desc:p}]}function Fo(e){var t=e.chart,n=e.config,r=e.expando,o=e.internal,i=e.nodes;if(!i.length)return[];var a=l(i,1)[0].key,u=n.main.collectibles;if(!u.length)return[];var c=n.main.triggers.find((function(e){return-1!==e.keys.indexOf(a)}))||{},s=c.collect,f=c.placement;if(!s||!s.from||!f)return[];var d={triggerer:a,position:o.get(Eo)},p=(Po({chart:t,expando:r,nodes:i,collectConfig:s,collectibles:u,meta:d})||[]).map((function(e){return e.children.length?e.children[0]:e}));return p.length?jo({chart:t,config:n,expando:r,placementConfig:f,hovered:i,collected:p,meta:d}):[]}var Ro=\"[־׀׃׆א-״߀-ߪߴ-ߵߺ-ࠕࠚࠤࠨ࠰-ࡘ࡞יִײַ-ﬨשׁ-ﭏ]\",Ho=\"[؈؋؍؛-ي٭-ٯٱ-ەۥ-ۦۮ-ۯۺ-܍ܐܒ-ܯݍ-ޥޱﭐ-ﴽﵐ-﷼ﹰ-ﻼ]\",Vo=new RegExp(\"[A-Za-zªµºÀ-ÖØ-öø-ʸʻ-ˁː-ˑˠ-ˤˮͰ-ͳͶ-ͽΆΈ-ϵϷ-҂Ҋ-։ः-हऻऽ-ीॉ-ौॎ-ॐक़-ॡ।-ॿং-হঽ-ীে-ৌৎ-ৡ০-ৱ৴-৺ਃ-ਹਾ-ੀਖ਼-੯ੲ-ੴઃ-હઽ-ીૉ-ૌૐ-ૡ૦-૯ଂ-ହଽ-ାୀେ-ୌୗ-ୡ୦-୷ஃ-ிு-ௌௐ-௲ఁ-ఽు-ౄౘ-ౡ౦-౯౿-ಹಽ-ೋೕ-ೡ೦-ീെ-ൌൎ-ൡ൦-ෆා-ෑෘ-ะา-ำเ-ๆ๏-ະາ-ຳຽ-ໆ໐-༗༚-༴༶༸༾-ཬཿ྅ྈ-ྌ྾-࿅࿇-ာေးျ-ြဿ-ၗၚ-ၝၡ-ၰၵ-ႁႃ-ႄႇ-ႌႎ-ႜ႞-ፚ፠-ᎏᎠ-Ᏼᐁ-ᙿᚁ-ᚚᚠ-ᜑᜠ-ᜱ᜵-ᝑᝠ-ᝰក-ាើ-ៅះ-ៈ។-៚ៜ០-៩᠐-ᢨᢪ-ᤜᤣ-ᤦᤩ-ᤱᤳ-ᤸ᥆-᧚ᨀ-ᨖᨙ-ᩕᩗᩡᩣ-ᩤᩭ-ᩲ᪀-᪭ᬄ-ᬳᬵᬻᬽ-ᭁᭃ-᭪᭴-᭼ᮂ-ᮡᮦ-ᮧ᮪-ᯥᯧᯪ-ᯬᯮ᯲-ᰫᰴ-ᰵ᰻-᱿᳓᳡ᳩ-ᳬᳮ-ᶿḀ-ᾼιῂ-ῌῐ-Ίῠ-Ῥῲ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎ-⅏Ⅰ-ↈ⌶-⍺⎕⒜-ⓩ⚬⠀-⣿Ⰰ-ⳤⳫ-ⳮⴀ-⵰ⶀ-ⷞ々-〇〡-〩〱-〵〸-〼ぁ-ゖゝ-ゟァ-ヺー-ㆺㇰ-㈜㈠-㉏㉠-㉻㉿-㊰㋀-㋋㋐-㍶㍻-㏝㏠-㏾㐀-䶵一-ꒌꓐ-ꘌꘐ-ꙮꚀ-ꛯ꛲-꛷Ꜣ-ꞇ꞉-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠤꠧ꠰-꠷ꡀ-ꡳꢀ-ꣃ꣎-꣙ꣲ-ꤥ꤮-ꥆꥒ-ꥼꦃ-ꦲꦴ-ꦵꦺ-ꦻꦽ-ꨨꨯ-ꨰꨳ-ꨴꩀ-ꩂꩄ-ꩋꩍ-ꪯꪱꪵ-ꪶꪹ-ꪽꫀꫂ-ꯤꯦ-ꯧꯩ-꯬꯰-ﬗA-Za-zヲ-ᅵ]\"),zo=new RegExp(Ro),_o=new RegExp(Ho),Bo=function(e){return Vo.test(e)},Yo=function(e){return zo.test(e)||_o.test(e)};function Uo(e){for(var t=e?e.length:0,n=0;n<t;n++){var r=e[n];if(Bo(r))return\"ltr\";if(Yo(r))return\"rtl\"}return\"ltr\"}function Ko(e){var n=e.visibility;return{type:\"divider\",content:[{content:\"\",style:{\"background-image\":\"linear-gradient(transparent 8px, rgba(255, 255, 255, 0.4) 8px, rgba(255, 255, 255, 0.4) 9.2px, transparent 9.2px)\",height:\"17px\"},colspan:2}],visibility:t(t({},{count:!1}),n)}}function Go(e){var n=e.config,r=e.h,o=e.context,i=e.nodes,a=e.property,u=e.filter,c=e.visibility,s=n.rtl,f={type:\"color\",label:void 0,value:void 0,content:[],filter:u,visibility:t(t({},{count:!0}),c)},d=n.getColorSettings();if(\"color\"===d.type||!d.fieldType)return f;var p=l(i,1)[0];if(f.value=function(e){var t=e.config,n=e.context,r=e.property,o=e.node,i=o.data[r];if(i){if(-3===o.data.value)return o.data.label;var a=n.resources.dataset(i.source.key).field(i.source.field).formatter(),u=i.value,l=i.label,c=t.getColorSettings();if(a&&\"measure\"===c.fieldType)return Number.isNaN(+u)?\"-\":a(i.value);var s=l||u;return void 0===s||Number.isNaN(s)||\"NaN\"===s?\"-\":s}}({config:n,context:o,property:a,node:p}),void 0===f.value)return f;f.label=function(e){var t=e.config,n=e.context,r=e.property,o=e.node,i=t.getColorSettings();if(i.label)return i.label;var a=o.data[r];if(a&&\"color\"!==i.type){var u=n.resources.dataset,l=a.source,c=l.key,s=l.field;return u(c).field(s).title()}}({config:n,context:o,property:a,node:p});var v=function(e){var t=e.node.attrs;return(null==t?void 0:t.fill)||\"#ddd\"}({node:p}),h=r(\"div\",{style:{display:\"inline-block\",width:10,height:10,\"background-color\":v,margin:\"0 8px\"}});return f.content.push({content:s?[\":\",f.label]:[f.label,\":\"],style:{\"text-align\":s?\"right\":\"left\",direction:Uo(f.label)}},{content:s?[f.value,h]:[h,f.value],style:{\"text-align\":s?\"left\":\"right\",\"vertical-align\":\"middle\",direction:Uo(f.value)}}),f}function Wo(e){var n=e.config,r=e.h,o=e.context,i={section:function(e){return function(e){return{type:\"section\",content:e.content}}({content:e.content})},text:function(e){var r=e.value,o=e.style,i=e.visibility;return function(e){var n=e.config,r=e.value,o=e.style,i=(o=void 0===o?{}:o).bold,a=void 0!==i&&i,u=o.italic,l=void 0!==u&&u,c=e.visibility;return{type:\"text\",content:[{content:r,style:{\"font-weight\":a?\"bold\":\"normal\",\"font-style\":l?\"italic\":\"normal\",\"text-align\":n.rtl?\"right\":\"left\",direction:Uo(r)},colspan:2}],visibility:t(t({},{count:!0}),c)}}({config:n,value:r,style:o,visibility:i})},measure:function(e){var o=e.label,i=e.value,a=e.color,u=e.style,l=e.survive,c=e.visibility;return function(e){var n,r,o,i,a=e.config,u=e.h,l=e.label,c=e.value,s=e.color,f=e.style,d=e.survive,p=e.visibility,v=a.rtl,h=u(\"div\",{style:{display:\"inline-block\",width:10,height:10,\"background-color\":s,margin:\"0 8px\"}});return{type:\"measure\",label:l,value:c,content:[{content:v?[\":\",l]:[l,\":\"],style:{\"text-align\":v?\"right\":\"left\",\"font-weight\":null!=f&&null!==(n=f.label)&&void 0!==n&&n.bold?\"bold\":\"normal\",\"font-style\":null!=f&&null!==(r=f.label)&&void 0!==r&&r.italic?\"italic\":\"normal\",direction:Uo(l)}},{content:s?v?[c,h]:[h,c]:c,style:{\"text-align\":v?\"left\":\"right\",\"vertical-align\":\"middle\",\"font-weight\":null!=f&&null!==(o=f.value)&&void 0!==o&&o.bold?\"bold\":\"normal\",\"font-style\":null!=f&&null!==(i=f.value)&&void 0!==i&&i.italic?\"italic\":\"normal\",direction:Uo(c)}}],survive:t(t({},{color:!1,duplicate:!1}),d),visibility:t(t({},{count:!0}),p)}}({config:n,h:r,label:o,value:i,color:a,style:u,survive:l,visibility:c})},divider:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.visibility;return Ko({visibility:t})},row:function(e){return function(e){var n=e.content,r=e.style,o=e.colspan,i=e.visibility;return{type:\"row\",content:[{content:n,style:r,colspan:o}],visibility:t(t({},{count:!0}),i)}}({content:e.content,style:e.style,colspan:e.colspan,visibility:e.visibility})},raw:function(e){return function(e){var n=e.value,r=e.visibility;return{type:\"raw\",content:n,visibility:t(t({},{count:!0}),r)}}({value:e.value,visibility:e.visibility})},color:function(e){var t=e.nodes,i=e.property,a=e.filter,u=void 0===a||a,l=e.visibility;return Go({config:n,h:r,context:o,nodes:t,property:i,filter:u,visibility:l})}};return i}function $o(e){var t=e.translator,n=e.config,r=e.context,o=e.templates,i=n.main.layout,a=i.rows,u=i.grouping,l=i.single,c=function(e){var t=e.limit,n=e.grouping,r=e.single,o={count:0,overflow:0,index:{started:void 0,group:void 0}};return{process:function(e){var i=e.visibility,a=e.index;if(r&&0!==a)return n?(o.index.started!==a&&o.index.group!==a&&(o.overflow++,o.index.group=a),!1):(o.overflow++,!1);if(o.count>=t){if(!n)return o.overflow++,!1;if(o.index.started!==a)return o.index.group!==a&&(o.overflow++,o.index.group=a),!1}return i.count&&o.count++,n&&(o.index.started=a),!0},overflow:function(){return o.overflow}}}({limit:a,grouping:u,single:\"function\"==typeof l?l({meta:r.node.meta,sections:o}):l}),s=o.reduce((function(e,t,n){var r=t.type,i=t.content;\"section\"===r&&(void 0===i?[]:i).forEach((function(t){c.process({visibility:t.visibility,index:n})&&e.push(t.content)}));var a=n===o.length-1;return\"divider\"!==r||a||c.process({visibility:t.visibility,index:n})&&e.push(t.content),e}),[]).filter((function(e){return e.length})),f=c.overflow();return f&&s.push(function(e){var t=e.translator,n=e.config,r=e.count,o=t?t.get(\"Object.ChartTooltip.NMore\",r):\"+\".concat(r,\" more\"),i=Uo(o);return[{content:o,style:{\"font-weight\":\"bold\",\"text-align\":n.rtl?\"right\":\"left\",direction:i},colspan:2}]}({translator:t,config:n,count:f})),s}function Xo(e){var n=e.chart,r=e.translator,o=e.config,i=e.expando,a=e.h,u=e.data,s=e.style,f=l(u,1)[0],d=function(e){var t=e.config,n=e.nodes.reduce((function(e,n){var r=t.main.getGroupByValue({data:n.data});return e[r]||(e[r]={sorting:Object.keys(e).length,items:[]}),e[r].items.push(n),e}),{});return Object.keys(n).map((function(e){return n[e]})).sort((function(e,t){return e.sorting-t.sorting})).map((function(e){return e.items}))}({config:o,nodes:f.node.nodes}),p=function(e){var t=e.chart,n=e.config,r=e.expando,o=e.h,i=e.context,a=e.groups,u=i.node.meta,l=i.resources,s=l.dataset,f=l.formatter,d=Wo({config:n,h:o,context:i}),p=function(e){var t=e.dataset;return{dataset:{title:function(e,n){return t(e).field(n).title()}}}}({dataset:s}),v=a.map((function(e){var t=d.section({content:c((n.main.section({expando:r,h:o,nodes:e,dataset:s,formatter:f,meta:u,create:d,util:p})||[]).filter((function(e){var t;return null===(t=e.content)||void 0===t?void 0:t.length}))).filter(Boolean)});return t.content=function(e){var t=e.config,n=e.content,r=n.find((function(e){return\"color\"===e.type&&e.filter})),o=r?n.filter((function(e){return\"measure\"!==e.type||e.survive.color||e.label!==r.label||e.value!==r.value})):n;return t.main.showDuplicateMeasures?o:o.reduce((function(e,t){var n=t.type,r=t.survive;if(\"measure\"!==n||r.duplicate)return e.filtered.push(t),e;var o=\"\".concat(t.label,\"-\").concat(t.value);return e.memory[o]||(e.memory[o]=!0,e.filtered.push(t)),e}),{memory:{},filtered:[]}).filtered}({config:n,content:t.content}),t}));return n.main.sections({chart:t,expando:r,h:o,nodes:i.node.nodes,dataset:s,formatter:f,meta:u,create:d,util:p,sections:v}),v.filter(Boolean)}({chart:n,config:o,expando:i,h:a,context:f,groups:d}),v=$o({translator:r,config:o,h:a,context:f,templates:p});return v.length?function(e){var n=e.h,r=e.style;return e.rows.map((function(e){return n(\"tr\",{},e.map((function(e){var o={style:t(t({},r.cell||{}),e.style||{}),class:e.class};return e.colspan&&(o.colspan=e.colspan),n(\"td\",o,e.content)})))}))}({h:a,style:s,rows:v}):function(e){var t=e.h;return t(\"tr\",{},t(\"td\",{style:{fontStyle:\"italic\",opacity:.75}},\"Empty\"))}({h:a})}function Jo(e){var t=e.chart,n=e.translator,r=e.config,o=e.expando,i=e.internal;if(!r.main.key)return!1;var a=pt(),u=Io({key:r.main.key,rtl:r.rtl,duration:r.duration}),l=r.main.events.tooltip,c=l.afterShow,s=l.afterHide,f=function(){var e=a.get(\"collected\");return{expando:o,nodes:e.nodes,meta:e.meta}};return x(!0,u,{settings:{filter:function(e){return Fo({chart:t,config:r,expando:o,internal:i,nodes:e})},extract:function(e){return a.set(\"collected\",e.node),e},content:function(e){var i=e.h,a=e.data,u=e.style;return Xo({chart:t,translator:n,config:r,expando:o,h:i,data:a,style:u})},placement:function(e){var t=e.nodes;return r.main.placement({meta:t[0].meta})},afterShow:function(){return c(f())},afterHide:function(){return s(f())}},style:{arrow:{color:r.style.background},content:r.style}})}function Zo(e){var n=e.config,r=n.legend.keys;if(!r.tooltip||!r.component)return!1;if(\"categorical\"!==n.getColorSettings().type)return!1;var o=Io({key:r.tooltip,rtl:n.rtl,duration:n.duration});return x(!0,o,{settings:{filter:function(e){return e.filter((function(e){return e.data&&e.key===r.component}))},extract:function(e){return e},content:function(e){var n=e.h,r=e.data;return[n(\"tr\",{},[n(\"td\",{style:t(t({},e.style.cell||{}),{\"font-weight\":\"bold\",\"text-align\":\"left\"}),colspan:2},r[0].node.data.label)])]},placement:\"pointer\"},style:{arrow:{color:n.style.background},content:n.style}})}function Qo(e){var t=e.config.main.triggers.reduce((function(e,t){return t.keys.forEach((function(n){var r=t.distance||0;e.distance[n]=r,e.distances.includes(r)||e.distances.push(r),e.key[n]=!0,e.keys[r]||(e.keys[r]=[]),e.keys[r].push(n)})),e}),{distance:{},distances:[],key:{},keys:{}});return function(e){return e.components.filter((function(e){return t.key[e.key]})).reduce((function(e,n){e.any=!0,e.components.push(n.key);var r=t.distance[n.key];return 0===r?e.position.push(n.key):(e.distances.includes(r)||(e.distances.push(r),e.distanceKeys[r]=[]),e.distanceKeys[r].push(n.key)),e}),{any:!1,components:[],position:[],distances:[],distanceKeys:{}})}}var ei=function(){return!0};function ti(e){var t=e.config.main.triggers.reduce((function(e,t){var n=t.filter;return t.keys.forEach((function(t){e[t]=\"function\"==typeof n?n:ei})),e}),{});return function(e){var n=t[e.key];return!n||n(e)}}function ni(e){var t=e.chart,n=e.event,r=e.component,o={absolute:{x:0,y:0},relative:{x:0,y:0}},i=t.element.getBoundingClientRect(),a=i.left,u=i.top;o.absolute.x=(void 0===n.clientX?Math.floor(n.srcEvent.clientX):n.clientX)-a,o.absolute.y=(void 0===n.clientY?Math.floor(n.srcEvent.clientY):n.clientY)-u;var l=t.component(r);if(l){var c=l.rect.computedInner;o.relative.x=o.absolute.x-c.x,o.relative.y=o.absolute.y-c.y}return o}function ri(e){var t=e.chart,n=e.filter,r=e.hits,o=e.position,i=[];if(r.position.length&&i.push.apply(i,c(t.shapesAt(o.absolute,{components:r.position.map((function(e){return{key:e}}))}).filter(n))),!i.length&&r.distances.length){var a=[];r.distances.forEach((function(e){a.push.apply(a,c(t.shapesAt({cx:o.absolute.x,cy:o.absolute.y,r:e},{components:r.distanceKeys[e].map((function(e){return{key:e}}))}).filter(n)))})),a.length&&i.push(function(e){var t=e.nodes,n=e.origin,r=t.find((function(e){return\"path\"===e.type}));if(r)return r;var o=function(e){var t=Math.abs(n.x-(e.localBounds.x+e.localBounds.width/2)),r=Math.abs(n.y-(e.localBounds.y+e.localBounds.height/2));return Math.sqrt(t*t+r*r)};return t.slice(1).reduce((function(e,t){var n=o(t);return n<e.distance&&(e.distance=n,e.node=t),e}),{node:t[0],distance:o(t[0])}).node}({nodes:a,origin:o.relative}))}return i}function oi(e){var t=e.chart,n=e.config,r=e.expando,o=e.internal,i=e.facade,u=n.delay.tap,s=Qo({config:n}),f=ti({config:n}),d=n.main.triggers.reduce((function(e,t){return e.push.apply(e,c(t.keys)),e}),[]);return{key:\"event:\".concat(\"tooltipTap\"),type:\"Tap\",options:{event:\"tooltipTap\",enable:function(e,r){return!r||!!n.enable({event:r})&&t.componentsFromPoint({x:r.center.x,y:r.center.y}).filter((function(e){return-1!==d.indexOf(e.key)})).length>0}},recognizeWith:\"tap\",events:a({},\"tooltipTap\",(function(e){if(e.preventDefault(),\"mouse\"!==e.pointerType&&!n.main.suppress({event:e})){var a=t.component(n.main.key);if(a&&a.show){var c=t.componentsFromPoint({x:e.center.x,y:e.center.y}),d=s({components:c});if(d.any){var p=l(d.components,1)[0],v=ni({chart:t,event:e,component:p});o.set(Eo,v);var h=ri({chart:t,filter:f,hits:d,position:v});if(h.length){var m=h[0].key;n.main.events.tooltip.beforeShow({expando:r,event:e,collectNodes:function(){return i.collectNodes({nodes:h})},meta:{triggerer:m,position:v}}).then((function(){a.emit(\"show\",e,{nodes:h,delay:u})})).catch((function(){}))}else a.emit(\"hide\")}else a.emit(\"hide\")}}}))}}function ii(e){var t=e.config,n=e.expando,r=e.internal,o=e.facade,i=t.main.events.tooltip.beforeShow,a=t.delay.hover,u={ongoing:{},latest:void 0};return function(e){var t=e.event,l=e.tooltip,c=e.nodes,s=function(e){var t=e.nodes;return JSON.stringify(t.map((function(e){var t;return{key:e.key,bounds:e.bounds,value:null===(t=e.data)||void 0===t?void 0:t.value}})))}({nodes:c});if(!u.ongoing[s]){u.ongoing[s]=!0,u.latest=s;var f=c[0].key;i({expando:n,event:t,collectNodes:function(){return o.collectNodes({nodes:c})},meta:{triggerer:f,position:r.get(Eo)}}).then((function(){s===u.latest&&l.emit(\"show\",t,{nodes:c,delay:a})})).catch((function(){l.emit(\"show\")})).finally((function(){delete u.ongoing[s],s===u.latest&&(u.latest=void 0)}))}}}function ai(e){var t=e.chart,n=e.config,r=e.expando,o=e.internal,i=e.facade,a=Qo({config:n}),u=ti({config:n}),c=ii({config:n,expando:r,internal:o,facade:i}),s=[n.main.key,n.legend.keys.tooltip].filter(Boolean),f=function(){s.forEach((function(e){var n=t.component(e);null!=n&&n.show&&n.emit(\"hide\")}))};return{type:\"native\",events:{mousemove:function(e){if(n.enable({event:e})&&!n.main.suppress({event:e})){var r=t.componentsFromPoint({x:e.clientX,y:e.clientY}),i=t.component(n.main.key);if(i&&i.show){var s=a({components:r});if(s.any){var f=l(s.components,1)[0],d=ni({chart:t,event:e,component:f});o.set(Eo,d);var p=ri({chart:t,filter:u,hits:s,position:d});if(!p.length)return void i.emit(\"hide\");c({event:e,tooltip:i,nodes:p})}else i.emit(\"hide\")}var v=n.legend;if(v.keys.tooltip&&v.keys.component){var h=t.component(v.keys.tooltip);h&&h.show&&(r.some((function(e){return e.key===v.keys.component}))?h.emit(\"show\",e):h.emit(\"hide\"))}}},mouseup:function(e){2===e.button&&f()},mouseleave:function(){n.main.events.interaction.mouseleave({expando:r}),f()},wheel:function(){f()}}}}function ui(e){var t=e.chart,n=e.config,r=e.expando,o=e.internal,i=function(e){var t=e.chart,n=e.config,r=e.expando,o=e.internal;return{collectNodes:function(e){var i=e.nodes,a=l(Fo({chart:t,config:n,expando:r,internal:o,nodes:i}),1)[0];return(a=void 0===a?{nodes:[]}:a).nodes}}}({chart:t,config:n,expando:r,internal:o});return{gestures:[oi({chart:t,config:n,expando:r,internal:o,facade:i})],native:ai({chart:t,config:n,expando:r,internal:o,facade:i})}}function li(e){var t=e.chart,n=e.translator,r=function(e){var t=e.config;return x(!0,{},{rtl:!1,enable:ko.FALSE,getColorSettings:ko.OBJECT,style:{fontSize:void 0,fontFamily:void 0,color:void 0,background:void 0},delay:{hover:500,tap:0},duration:8e3,main:{key:void 0,suppress:ko.FALSE,getGroupByValue:ko.NOOP,collectibles:[],triggers:[],placement:function(){return{type:\"bounds\"}},placements:{collectible:\"combine\"},showDuplicateMeasures:!1,layout:{rows:7,grouping:!1,single:!1},section:ko.ARRAY,sections:ko.NOOP,events:{tooltip:{beforeShow:function(){return Promise.resolve()},afterShow:ko.NOOP,afterHide:ko.NOOP},interaction:{mouseleave:ko.NOOP}}},legend:{keys:{tooltip:void 0,component:void 0}}},void 0===t?{}:t)}({config:e.config}),o=pt(),i=pt(),a={components:void 0,interactions:void 0};return{getComponents:function(){return a.components||(a.components=function(e){var t=e.chart,n=e.translator,r=e.config;return[Jo({chart:t,translator:n,config:r,expando:e.expando,internal:e.internal}),Zo({config:r})].filter(Boolean)}({chart:t,translator:n,config:r,expando:o,internal:i})),a.components},getInteractions:function(){return a.interactions||(a.interactions=ui({chart:t,config:r,expando:o,internal:i})),a.interactions},expando:o}}var ci=\"AVERAGE\",si=\"LINEAR\",fi=\"POLYNOMIAL2\",di=\"POLYNOMIAL3\",pi=\"POLYNOMIAL4\",vi=\"EXPONENTIAL\",hi=\"LOG\",mi=\"POWER\";function yi(e){var t=e.dimValue,n=e.value,r=e.qTrendLine,o=r.qType,i=r.qCoeff,a={x:t,y:i[2]*Math.pow(n,2)+i[1]*n+i[0]};switch(o){default:case fi:return a;case di:return a.y+=i[3]*Math.pow(n,3),a;case pi:return a.y+=i[4]*Math.pow(n,4)+i[3]*Math.pow(n,3),a}}var gi={average:function(e){return{x:e.dimValue,y:e.qTrendLine.qCoeff[0]}},linear:function(e){var t=e.dimValue,n=e.value,r=e.qTrendLine;return{x:t,y:r.qCoeff[1]*n+r.qCoeff[0]}},polynomial2:yi,polynomial3:yi,polynomial4:yi,exponential:function(e){var t=e.dimValue,n=e.value,r=e.qTrendLine;return{x:t,y:Math.exp(r.qCoeff[0]+n*r.qCoeff[1])}},log:function(e){var t=e.dimValue,n=e.value,r=e.qTrendLine;return{x:t,y:r.qCoeff[1]+r.qCoeff[0]*Math.log(n)}},power:function(e){var t=e.dimValue,n=e.value,r=e.qTrendLine;return{x:t,y:Math.pow(10,r.qCoeff[0]+r.qCoeff[1]*Math.log(n)*Math.LOG10E)}}};function bi(e,t){for(var n=gi[t.qType.toLowerCase()],r=Math.max(1,e/500),o=1/0,i=-1/0,a=0;a<e;a+=r){var u=n({dimValue:null,value:a+1,qTrendLine:t}).y;o=Math.min(u,o),i=Math.max(u,i)}return{min:o,max:i}}function xi(e){return gi[e.qType.toLowerCase()]}function qi(e,t){return e.meta.isContinuous?function(e,t){return{generate:function(e,n,r){var o=[],i=xi(e),a=t({qTrendLine:e,measureIndex:r}),u=a.min,l=a.max,c=(l-u)/100;if(c>0){for(var s=function(t){var a=i({dimValue:t,value:t,qTrendLine:e});if(a.layerId=n,a.measureIndex=r,a.dimValue=t,e.flipXY){var u=a.x;a.x=a.y,a.y=u,a.dimValue=a.x}o.push(a)},f=u,d=u;d<=l;d+=c)s(d),f=d;f!==l&&s(l)}return o},calculate:function(e,t){return xi(e)({dimValue:t,value:t,qTrendLine:e})},findMinMax:function(e,t){var n=this.generate(t).map((function(e){return e.y}));return{min:Math.min.apply(Math,c(n)),max:Math.max.apply(Math,c(n))}}}}(0,t):e.meta.mode.K?function(e){return{generate:function(t,n,r){for(var o=[],i=e.getDataPages()[0],a=i.qData[0].qSubNodes,u=i.qArea.qTop,l=gi[t.qType.toLowerCase()],c=0;c<a.length;c++){var s=a[c],f=l({dimValue:s.qElemNo,value:c+u+1,qTrendLine:t});f.layerId=n,f.measureIndex=r,f.dimValue=s.qText,o.push(f)}return o},findMinMax:bi}}(e):function(e){return{generate:function(t,n,r){for(var o=[],i=e.getDataPages()[0],a=i.qMatrix,u=i.qArea.qTop,l=gi[t.qType.toLowerCase()],c=0;c<a.length;c++){var s=a[c][0],f=c+u+1,d=l({dimValue:s.qElemNumber,value:f,qTrendLine:t});d.layerId=n,d.measureIndex=r,d.dimValue=s.qText,o.push(d)}return o},calculate:function(e,t,n){return(0,gi[e.qType.toLowerCase()])({dimValue:n,value:t,qTrendLine:e})},findMinMax:bi}}(e)}var wi={TYPES:{AVERAGE:\"properties.trendlines.types.average\",LINEAR:\"properties.trendlines.types.linear\",POLYNOMIAL2:\"properties.trendlines.types.polynomial2\",POLYNOMIAL3:\"properties.trendlines.types.polynomial3\",POLYNOMIAL4:\"properties.trendlines.types.polynomial4\",EXPONENTIAL:\"properties.trendlines.types.exponential\",LOG:\"properties.trendlines.types.logarithmic\",POWER:\"properties.trendlines.types.power\"},STYLE:{DASHED:\"properties.trendlines.style.dashed\"},TYPE:\"properties.trendlines.type\",HEADER:\"properties.trendlines\",ADD_BUTTON:\"properties.trendlines.button.add\"},Mi={color:\"#f93f17\",index:9},ki={x:NaN,y:NaN,dimValue:NaN,layerId:NaN,measureIndex:NaN},Ci=function(e){var t=e.layoutService,n=e.getMinMax,r=e.colorModel,o=e.chart,i=e.translator,a=e.keys.colorScale,u=e.isEnabled,l=void 0===u?function(){return!0}:u,s=[ki],f=[],d=[],p=qi(t,n);t.getLayoutValue(\"qHyperCube.qMeasureInfo\",[]).forEach((function(e,t){Array.isArray(e.qTrendLines)&&(f.push.apply(f,c(e.qTrendLines)),d.push.apply(d,c(e.qTrendLines.map((function(){return t})))))}));var v=vt((function(e){var t=(f[e]||{}).style,n=r.settings();if(t.autoColor){if(\"measure\"===n.mode){var i=d[e],u=o.scale(a)(i);return function(e){return ve(e).l<70}(u)?function(e){var t=ve(e);return t.l<30?t.l+=15:t.l<50?t.l+=10:t.l+=5,t.toString()}(u):function(e){var t=ve(e);return t.l-=5,t.toString()}(u)}return r.resolveUIColor(Mi)}return t.paletteColor?r.resolveUIColor(t.paletteColor):\"none\"}));return{query:{hasTrendLines:function(){return!!f.length&&l()},getData:function(){return s},getStroke:v,getLineDash:function(e){return(f[e]||{}).style.lineDash},getLabel:function(e){return(f[e]||{}).label},getExpression:function(e){var t=(f[e]||{}).qExpression;return f[e].flipXY&&(t=t.replace(/[xy]/g,(function(e){return\"x\"===e?\"y\":\"x\"}))),t},isFlipped:function(e){return f[e].flipXY},getType:function(e){var t=(f[e]||{}).qType;return i.get(wi.TYPES[t])},getMinMax:function(){var e=1/0,n=-1/0;return f.forEach((function(r){var o=p.findMinMax(t.meta.size.y,r);e=Math.min(o.min,e),n=Math.max(o.max,n)})),{min:e,max:n}},getCalculatedValue:function(e,t,n){var r=f[e];return p.calculate(r,t,n)}},command:{update:function(){s.length=0,f.forEach((function(e,t){var n=p.generate(e,t,d[t]);s.push.apply(s,c(n))}))}}}},Si={source:\"trend\",extract:{field:\"x\",props:{minor:{field:\"y\"},layer:{field:\"layerId\"},measureIndex:{field:\"measureIndex\"},dimValue:{field:\"dimValue\"}}}},Di=function(e){var t=e.meta;return t.isContinuous?function(e){return(0,e.scale)(e.datum.value)}:t.isGroupedByMeasure?function(e){var t=e.scale,n=e.datum;return t([n.value,n.measureIndex.value])+t.bandwidth()/2}:function(e){var t=e.scale;return t(e.datum.value)+t.bandwidth()/2}},Ii=function(e,t){var n=t.animations,r=t.layoutService,o=t.trendLineModel,i=t.orientation;if(!o.query.hasTrendLines())return[];var a=function(e,t){var n=e.trendlines,r=e.majorScale,o=e.minorScale,i=t.animations,a=t.trendLineModel,u=t.layoutService,l=t.orientation,c=Di(u);return{key:n,type:\"line\",layout:{dock:\"center\"},data:Si,animations:i,settings:{connect:!0,orientation:l,coordinates:{major:{scale:r,fn:c},minor:{scale:o},layerId:{ref:\"layer\"}},layers:{curve:\"monotone\",line:{strokeWidth:2,stroke:function(e){var t=e.datum;return a.query.getStroke(t.layer.value)},strokeDasharray:function(e){var t=e.datum;return a.query.getLineDash(t.layer.value)}}}}}}(e,{animations:n,trendLineModel:o,layoutService:r,orientation:i}),u=[a];if(e.tooltipOverlay){var l=function(e,t){var n=e.majorScale,r=e.minorScale,o=e.tooltipOverlay,i=t.layoutService,a=\"horizontal\"===t.orientation,u={scale:n,fn:Di(i)},l={scale:r,ref:\"minor\"};return{key:o,type:\"point\",layout:{dock:\"center\"},data:Si,settings:{x:a?u:l,y:a?l:u,opacity:0,size:1,sizeLimits:{maxPx:8,minPx:8}}}}(e,{layoutService:r,orientation:i});u.push(l)}return u},Ei=function(e){e.style.dashed?e.style.lineDash=\"8, 4\":e.style.lineDash=\"\"},Oi=function(e){Ei(e),e.qMultiDimMode=\"Sum\",e.qXColIx=0};function Ai(e,t){return{x:e.x-t.x,y:e.y-t.y}}function Ni(e){return Math.pow(e.x,2)+Math.pow(e.y,2)}function Pi(e,t,n){var r=Ai(n,e),o=Ai(t,e),i=Ni(o);if(0===i)return e;var a,u,l,c,s=(u=o,((a=r).x*u.x+a.y*u.y)/i);return s<=0?e:s>=1?t:function(e,t){return{x:e.x+t.x,y:e.y+t.y}}(e,(c=s,{x:(l=o).x*c,y:l.y*c}))}function Li(e){var t,n,r=e.keys,o=e.model,i=e.chart,a=e.pos,u=e.lineNode,l=o,c=i.component(r.trendlines),s=i.scale(r.majorScale),f=i.scale(r.minorScale),d=u.data.layer.value,p=function(e,t){var n=1/0,r=null;if(1===e.length)return e[0];for(var o=0;o<e.length-1;++o){var i=Pi(e[o],e[o+1],t),a=Ni(Ai(i,t));a<n&&(n=a,r=i)}return r}(u.data.points.map((function(e){return{x:s(e.dimValue.value)*c.rect.computed.width,y:f(e.minor.value)*c.rect.computed.height}})),a);return l.query.isFlipped(d)?(n=f.invert(p.y/c.rect.computed.height),t=l.query.getCalculatedValue(d,n).y,p.x=s(t)*c.rect.computed.width):(t=s.invert(p.x/c.rect.computed.width),n=l.query.getCalculatedValue(d,t).y,p.y=f(n)*c.rect.computed.height),{key:u.key,children:[],data:{layer:d,x:t,y:n},bounds:{x:p.x,y:p.y,width:0,height:0}}}function Ti(e){var t=e.animations,n=e.chart,r=e.colorService,o=e.isEnabled,i=e.keys,a=void 0===i?{}:i,u=e.layoutService,l=e.orientation,c=e.translator,s=e.getMinMax;a.trendlines||(a.trendlines=\"trend-lines\");var f=Ci({layoutService:u,getMinMax:s,colorModel:{settings:function(){return r.getSettings()},resolveUIColor:function(e){return r.getPaletteColor(e)}},chart:n,translator:c,keys:a,isEnabled:o});return{getComponents:function(){return Ii(a,{animations:t,layoutService:u,trendLineModel:f,orientation:l})},getData:function(){return f.query.hasTrendLines()?[{key:\"trend\",data:f.query.getData()}]:[]},collectNodes:function(e){var t=e.nodes,r=e.meta;return function(e){var t=e.keys,n=e.model,r=e.chart,o=e.nodes,i=e.meta;return o.length?[Li({keys:t,model:n,chart:r,pos:i.position.relative,lineNode:o[0]})]:[]}({keys:a,model:f,chart:n,nodes:t,meta:r})},getModel:function(){return f},update:function(){return f.command.update()}}}Ti.propertyPanelProperties=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.translator,n=function(e){var n=r(e.label);return\"string\"===n&&e.label?e.label:\"object\"===n?e.label.qStringExpression?e.label.qStringExpression.qExpr:e.label.qValueExpression.qExpr:t.get(wi.TYPES[e.qType])};return{type:\"array\",ref:\"qTrendLines\",titleTranslation:wi.HEADER,itemTitleRef:n,max:8,allowAdd:!0,allowRemove:!0,allowMove:!1,addTranslation:wi.ADD_BUTTON,add:Oi,items:{label:{ref:\"label\",type:\"string\",expression:\"optional\",translation:\"Common.Label\",defaultValue:\"\"},type:{ref:\"qType\",type:\"string\",component:\"dropdown\",translation:wi.TYPE,options:[{value:ci,translation:wi.TYPES.AVERAGE},{value:si,translation:wi.TYPES.LINEAR},{value:fi,translation:wi.TYPES.POLYNOMIAL2},{value:di,translation:wi.TYPES.POLYNOMIAL3},{value:pi,translation:wi.TYPES.POLYNOMIAL4},{value:vi,translation:wi.TYPES.EXPONENTIAL},{value:hi,translation:wi.TYPES.LOG},{value:mi,translation:wi.TYPES.POWER}],defaultValue:ci},autoColor:{ref:\"style.autoColor\",type:\"boolean\",translation:\"properties.colors\",component:\"switch\",defaultValue:!0,options:[{value:!0,translation:\"Common.Auto\"},{value:!1,translation:\"Common.Custom\"}]},paletteColor:{ref:\"style.paletteColor\",translation:\"properties.color\",type:\"object\",component:\"color-picker\",dualOutput:!0,defaultValue:Mi,show:function(e){return!e.style.autoColor}},dashed:{ref:\"style.dashed\",translation:wi.STYLE.DASHED,type:\"boolean\",defaultValue:!0,change:Ei}}}};export{pt as cache,et as colorService,mt as debouncer,st as dockService,ft as getValue,wt as layoutService,vt as memoize,kt as pluginService,po as selectionService,dt as setValue,ht as storage,Mo as themeService,yt as throttler,li as tooltipService,Ti as trendlinesService};\n","/* eslint-disable prefer-rest-params */\n/* eslint-disable guard-for-in */\n/* eslint-disable no-restricted-syntax */\n\n/* Simple JavaScript Inheritance\n * By John Resig http://ejohn.org/\n * MIT Licensed.\n * Modified by Qliktech\n */\n// Inspired by base2 and Prototype\n\n/* eslint no-new-func:0,no-unused-vars:0 */\n\nconst fnTest = /xyz/.test(() => {\n let xyz;\n})\n ? /\\b_super\\b/\n : /.*/;\n\n/**\n * Helper module for creating subclasses (or rather prototypal inheritance) of superclasses.\n *\n * @class\n *\n * @example\n * var Animal = Class.extend( \"Animal\", {\n * init: function ( name ) {\n * this.name = name || \"Unnamed\";\n * },\n * say: function ( sound ) {\n * console.log( this.name + \" says \" + sound );\n * }\n * } );\n *\n * var Cat = Animal.extend( \"Cat\", {\n * say: function () {\n * this._super( \"Meouw\" );\n * }\n * } );\n *\n * var cat = new Cat( \"Gustaf\" );\n * cat.say(); => \"Gustaf says Meouw\"\n *\n * @example\n * var MyClass = Class.extend();\n *\n * var a = new MyClass();\n * console.log( a instanceof MyClass ) // => true\n * console.log( a.constructor.name ) // => Class\n *\n * @example\n * var MyClass = Class.extend( \"MyClass\" );\n *\n * var a = new MyClass();\n * console.log( a instanceof MyClass ) // => true\n * console.log( a.constructor.name ) // => MyClass\n *\n */\nconst Class = function () {};\n\n/**\n * This method is available inside each function defined on the prototype when using {@link module:assets/core/utils/class~Class.extend}.\n *\n * It will invoke the super class' method with the same name, but it's up to programmer to invoke it with the arguments needed.\n * @method module:assets/core/utils/class~Class#_super\n */\n\n/**\n * Create a new Class that inherits from this class\n * @param {String} [className=\"Class\"] The name of the new class constructor.\n * @param {Object} proto The prototype for the new class.\n */\nClass.extend = function extend(className, proto) {\n const _super = this.prototype;\n\n if (typeof className !== 'string') {\n proto = className;\n className = 'Class';\n }\n\n // Instantiate a base class (but only create the instance,\n // don't run the init constructor)\n const prototype = Object.create(this.prototype);\n\n // Copy the properties over onto the new prototype\n for (const name in proto) {\n // Check if we're overwriting an existing function\n prototype[name] =\n typeof proto[name] === 'function' && typeof _super[name] === 'function' && fnTest.test(proto[name])\n ? (function (name, fn) {\n return function () {\n const tmp = this._super;\n\n // Add a new ._super() method that is the same method\n // but on the super-class\n this._super = _super[name];\n\n // The method only need to be bound temporarily, so we\n // remove it when we're done executing\n const ret = fn.apply(this, arguments);\n this._super = tmp;\n\n return ret;\n };\n })(name, proto[name])\n : proto[name];\n }\n\n if (!/^[_a-z][_a-z\\d]*$/i.test(className)) {\n throw new Error('Invalid subclass name. Alphanumericals only.');\n }\n\n // The dummy class constructor\n const ctor = new Function(\n `return (function ${className}(){ typeof this.init === 'function' && this.init.apply(this, [].slice.call(arguments)) });`\n )();\n\n // Populate our constructed prototype object\n ctor.prototype = prototype;\n\n // Enforce the constructor to be what we expect\n ctor.prototype.constructor = ctor;\n\n // And make this class extendable\n ctor.extend = extend;\n\n return ctor;\n};\n\nexport default Class;\n","function Rect(x, y, width, height) {\n if (arguments.length === 0) {\n this.set(0, 0, 0, 0);\n } else {\n this.set(x, y, width, height);\n }\n}\n\nRect.prototype = {\n toString() {\n return `${this.x} ${this.y} ${this.width} ${this.height}`;\n },\n clone() {\n return new Rect(this.x, this.y, this.width, this.height);\n },\n set(x, y, width, height) {\n if (width >= 0) {\n this.x = x;\n this.width = width;\n } else {\n this.x = x + width;\n this.width = -width;\n }\n if (height >= 0) {\n this.y = y;\n this.height = height;\n } else {\n this.y = y + height;\n this.height = -height;\n }\n },\n setLTRB(l, t, r, b) {\n if (l <= r) {\n this.x = l;\n this.width = r - l;\n } else {\n this.x = r;\n this.width = l - r;\n }\n if (t <= b) {\n this.y = t;\n this.height = b - t;\n } else {\n this.y = b;\n this.height = t - b;\n }\n },\n equal(rect) {\n return rect && this.x === rect.x && this.y === rect.y && this.width === rect.width && this.height === rect.height;\n },\n combineWith(rect) {\n const r = Math.max(rect.getRight(), this.getRight());\n const b = Math.max(rect.getBottom(), this.getBottom());\n\n // bounding box\n const x = Math.min(rect.x, this.x);\n const y = Math.min(rect.y, this.y);\n const w = Math.max(0, r - x);\n const h = Math.max(0, b - y);\n\n return new Rect(x, y, w, h);\n },\n intersectsWith(rect) {\n if (!rect) {\n return false;\n }\n if (\n this.x <= rect.getRight() &&\n rect.x <= this.getRight() &&\n this.y <= rect.getBottom() &&\n rect.y <= this.getBottom()\n ) {\n return true;\n }\n return false;\n },\n // This method is used for all shapes (rectangle, polygon, etc.) to check if there is intersection with a rectangle\n intersectsRect(rect) {\n return this.intersectsWith(rect);\n },\n intersection(rect, strict) {\n if (this.intersectsWith(rect)) {\n const x = Math.max(this.x, rect.x);\n const y = Math.max(this.y, rect.y);\n const r = Math.min(this.getRight(), rect.getRight());\n const b = Math.min(this.getBottom(), rect.getBottom());\n return new Rect(x, y, r - x, b - y);\n }\n if (strict) {\n return null;\n } // This is for combination of range selection\n return new Rect(this.x, this.y, this.width, this.height);\n },\n union(rect) {\n const x = Math.min(this.x, rect.x);\n const y = Math.min(this.y, rect.y);\n const r = Math.max(this.getRight(), rect.getRight());\n const b = Math.max(this.getBottom(), rect.getBottom());\n return new Rect(x, y, r - x, b - y);\n },\n pointInside(x, y) {\n return x >= this.x && x <= this.getRight() && y >= this.y && y <= this.getBottom();\n },\n rectInside(rect) {\n const points = rect.getPoints();\n let i;\n for (i = 0; i < 4; i++) {\n if (!this.pointInside(points[i].x, points[i].y)) {\n return false;\n }\n }\n return true;\n },\n getPoints() {\n const points = [];\n points.push({ x: this.x, y: this.y });\n points.push({ x: this.getRight(), y: this.y });\n points.push({ x: this.getRight(), y: this.getBottom() });\n points.push({ x: this.x, y: this.getBottom() });\n return points;\n },\n getRight() {\n return this.x + this.width;\n },\n getBottom() {\n return this.y + this.height;\n },\n getCenterPoint() {\n return {\n x: this.x + this.width / 2,\n y: this.y + this.height / 2,\n };\n },\n getBoundingRect() {\n return this;\n },\n scale(s) {\n const d = s - 1;\n const dw = (d * this.width) / 2;\n const dh = (d * this.height) / 2;\n this.x -= dw;\n this.y -= dh;\n this.width *= s;\n this.height *= s;\n },\n hasNaN() {\n return Number.isNaN(+this.x) || Number.isNaN(+this.y) || Number.isNaN(+this.width) || Number.isNaN(+this.height);\n },\n};\nexport default Rect;\n","import Class from '../class';\nimport Rect from './rect';\n\nconst areaRect = new Rect(0, 0, 0, 0);\nconst pageRect = new Rect(0, 0, 0, 0);\n\nconst CubeSlicer = Class.extend('CubeSlicer', {\n init() {\n this.pages = [];\n },\n get(areas) {\n return areas.map((area) => this.getPage(area));\n },\n getPage(area) {\n let storage;\n let i;\n const coverage = [];\n let cover;\n // try to extract the entire requested set\n for (i = 0; i < this.pages.length; i++) {\n storage = this.pages[i].qArea;\n\n areaRect.set(area.qLeft, area.qTop, area.qWidth, area.qHeight);\n pageRect.set(storage.qLeft, storage.qTop, storage.qWidth, storage.qHeight);\n cover = pageRect.intersection(areaRect, true);\n coverage.push({ coverage: cover ? cover.clone() : new Rect(0, 0, 0, 0), idx: i });\n\n if (\n storage.qLeft <= area.qLeft &&\n storage.qLeft + storage.qWidth >= area.qLeft + area.qWidth &&\n storage.qTop <= area.qTop &&\n storage.qTop + storage.qHeight >= area.qTop + area.qHeight\n ) {\n return this._extract(area, this.pages[i]);\n }\n }\n\n // find the page containing the largest amount of requested data\n coverage.sort((a, b) => b.coverage.width * b.coverage.height - a.coverage.width * a.coverage.height);\n\n if (coverage[0].coverage.height > 0 && coverage[0].coverage.width > 0) {\n return this._extract(area, this.pages[coverage[0].idx]);\n }\n\n return {\n qArea: {\n qTop: area.qTop,\n qLeft: area.qLeft,\n qWidth: 0,\n qHeight: 0,\n },\n qMatrix: [],\n };\n },\n destroy() {\n this.clear();\n },\n isEmpty() {\n return !this.pages || !this.pages[0] || !this.pages[0].qArea.qHeight || !this.pages[0].qArea.qWidth;\n },\n clear() {\n this.pages = [];\n },\n store(pages) {\n this.pages = pages;\n },\n containsArea(area) {\n let a;\n for (let i = 0; i < this.pages.length; i++) {\n a = this.pages[i].qArea;\n if (\n a.qLeft <= area.qLeft &&\n a.qLeft + a.qWidth >= area.qLeft + area.qWidth &&\n a.qTop <= area.qTop &&\n a.qTop + a.qHeight >= area.qTop + area.qHeight\n ) {\n return true;\n }\n }\n\n return false;\n },\n contains(areas) {\n if (!this.pages || !this.pages.length) {\n return false;\n }\n\n return areas.filter((a) => !this.containsArea(a)).length === 0;\n },\n _extract(area, fromPage) {\n areaRect.set(area.qLeft, area.qTop, area.qWidth, area.qHeight);\n pageRect.set(fromPage.qArea.qLeft, fromPage.qArea.qTop, fromPage.qArea.qWidth, fromPage.qArea.qHeight);\n\n const intersection = areaRect.intersection(pageRect, true);\n\n if (!intersection) {\n return {\n qArea: {\n qTop: area.qTop,\n qLeft: area.qLeft,\n qWidth: 0,\n qHeight: 0,\n },\n qMatrix: [],\n };\n }\n\n const y = Math.max(0, area.qTop - fromPage.qArea.qTop);\n const x = Math.max(0, area.qLeft - fromPage.qArea.qLeft);\n\n const matrix = fromPage.qMatrix\n .slice(y, y + intersection.height)\n .map((row) => row.slice(x, x + intersection.width));\n\n return {\n qArea: {\n qTop: intersection.y,\n qLeft: intersection.x,\n qWidth: intersection.width,\n qHeight: intersection.height,\n },\n qMatrix: matrix,\n };\n },\n});\n\nexport default CubeSlicer;\n","import CubeSlicer from './cube-slicer';\nimport Rect from './rect';\n\nlet deepCount;\n\nfunction addNode(node, slicedTrunk) {\n let key;\n const newNode = {};\n // eslint-disable-next-line no-restricted-syntax\n for (key in node) {\n // eslint-disable-next-line no-prototype-builtins\n if (key !== 'qSubNodes' && node.hasOwnProperty(key)) {\n newNode[key] = node[key];\n }\n }\n slicedTrunk.push(newNode);\n return newNode;\n}\n\nfunction getSlicedTreeRecursive(offset, length, subNodes) {\n // find start in tree structure\n let i;\n\n let qixNode;\n let node;\n const slicedTrunk = [];\n let subSlicedTree = [];\n let up = 0;\n let down = 0;\n\n if (subNodes.length) {\n up = subNodes[0].qUp || 0;\n down = subNodes[subNodes.length - 1].qDown || 0;\n }\n\n for (i = 0; i < subNodes.length; ++i) {\n qixNode = subNodes[i];\n // deep first\n if (qixNode.qSubNodes.length > 0) {\n subSlicedTree = getSlicedTreeRecursive(offset, length, qixNode.qSubNodes);\n }\n node = null;\n // add leaf node if within paging area or if parent and subSlicedTree contains children\n if (\n (qixNode.qSubNodes.length === 0 && deepCount >= offset && deepCount <= offset + length) ||\n subSlicedTree.length > 0\n ) {\n node = addNode(qixNode, slicedTrunk);\n // first node added in slicedtrunk? change up\n if (node.qUp !== undefined && slicedTrunk.length === 1) {\n node.qUp = up + i;\n }\n node.qSubNodes = subSlicedTree;\n }\n\n // add deepCount if leaf node was passed\n if (qixNode.qSubNodes.length === 0) {\n deepCount++;\n }\n\n // break if we have passed the paging area\n if (deepCount === offset + length) {\n if (node && node.qDown !== undefined) {\n node.qDown = down + (subNodes.length - 1 - i);\n }\n break;\n }\n }\n return slicedTrunk;\n}\n\nfunction getSlicedTree(offset, length, subNodes) {\n // find start in tree structure\n deepCount = 0;\n return getSlicedTreeRecursive(offset, length, subNodes);\n}\n\nconst areaRect = new Rect(0, 0, 0, 0);\nconst pageRect = new Rect(0, 0, 0, 0);\n\nconst PivotCubeSlicer = CubeSlicer.extend('PivotCubeSlicer', {\n init() {\n this._super();\n this.requestedAreas = [];\n },\n getPage(area) {\n let storage;\n let i;\n const coverage = [];\n let cover;\n // try to extract the entire requested set\n for (i = 0; i < this.pages.length; i++) {\n storage = this.pages[i].qArea;\n\n areaRect.set(area.qLeft, area.qTop, area.qWidth, area.qHeight);\n pageRect.set(storage.qLeft, storage.qTop, storage.qWidth, storage.qHeight);\n cover = pageRect.intersection(areaRect, true);\n coverage.push({ coverage: cover ? cover.clone() : new Rect(0, 0, 0, 0), idx: i });\n\n if (\n storage.qLeft <= area.qLeft &&\n storage.qLeft + storage.qWidth >= area.qLeft + area.qWidth &&\n storage.qTop <= area.qTop &&\n storage.qTop + storage.qHeight >= area.qTop + area.qHeight\n ) {\n return this._extract(area, this.pages[i]);\n }\n }\n\n // find the page containing the largest amount of requested data\n coverage.sort((a, b) => b.coverage.width * b.coverage.height - a.coverage.width * a.coverage.height);\n\n if (coverage[0].coverage.height > 0 && coverage[0].coverage.width > 0) {\n return this._extract(area, this.pages[coverage[0].idx]);\n }\n\n return {\n qLeft: [],\n qTop: [],\n qData: [],\n qArea: {\n qTop: area.qTop,\n qLeft: area.qLeft,\n qWidth: 0,\n qHeight: 0,\n },\n };\n },\n _extract(area, fromPage) {\n areaRect.set(area.qLeft, area.qTop, area.qWidth, area.qHeight);\n pageRect.set(fromPage.qArea.qLeft, fromPage.qArea.qTop, fromPage.qArea.qWidth, fromPage.qArea.qHeight);\n\n const intersection = areaRect.intersection(pageRect, true);\n\n if (!intersection) {\n return {\n qLeft: [],\n qTop: [],\n qData: [],\n qArea: {\n qTop: area.qTop,\n qLeft: area.qLeft,\n qWidth: 0,\n qHeight: 0,\n },\n };\n }\n\n const y = Math.max(0, area.qTop - fromPage.qArea.qTop);\n const x = Math.max(0, area.qLeft - fromPage.qArea.qLeft);\n\n const matrix = fromPage.qData.slice(y, y + intersection.height).map((row) => row.slice(x, x + intersection.width));\n\n const leftTree = getSlicedTree(y, intersection.height, fromPage.qLeft);\n const topTree = getSlicedTree(x, intersection.width, fromPage.qTop);\n\n return {\n qLeft: leftTree,\n qTop: topTree,\n qData: matrix,\n qArea: {\n qTop: intersection.y,\n qLeft: intersection.x,\n qWidth: intersection.width,\n qHeight: intersection.height,\n },\n };\n },\n});\n\nexport default PivotCubeSlicer;\n","/* eslint-disable class-methods-use-this */\nimport { getValue } from 'qlik-chart-modules';\nimport CubeSlicer from './cube-slicer';\nimport PivotCubeSlicer from './pivot-cube-slicer';\n\nfunction sliceDataPages(slicer, layout, rects, responseProperty) {\n if (!slicer) {\n return;\n }\n\n // 1. Save original dataPages (needed when resizing the snapshot) - only once of course!\n if (!layout.snapshotData.object.origDataPages) {\n layout.snapshotData.object.origDataPages = layout.qHyperCube[responseProperty];\n }\n\n // 2. Clone and slice from original dataPages and place in qHyperCube[responseProperty]\n for (let i = 0; i < rects.length; i++) {\n rects[i].qHeight = Math.min(layout.qHyperCube.qSize.qcy, rects[i].qHeight); // never try to slice more rows than what's persisted in snapshot\n rects[i].qTop = layout.snapshotData.object.origDataPages[i].qArea.qTop; // This is necessary for dataPages with area \"window\" not starting at top\n }\n layout.qHyperCube[responseProperty] = slicer.get(rects);\n}\n\nfunction prepareCubeSlicer(layout) {\n if (layout.visualization === 'pivot-table') {\n this.responseProperty = 'qPivotDataPages';\n this.slicer = new PivotCubeSlicer();\n } else if (layout.visualization === 'table') {\n this.slicer = new CubeSlicer();\n } else {\n return;\n }\n\n let pages = layout.snapshotData.object.origDataPages;\n if (!pages) {\n pages = layout.qHyperCube[this.responseProperty];\n }\n\n this.slicer.store(pages.filter((page) => page));\n}\n\nexport default class SnapshotApi {\n constructor(layout, dataPath, responseProperty) {\n this.layout = layout;\n this.dataPath = dataPath;\n this.responseProperty = responseProperty;\n\n prepareCubeSlicer.call(this, layout);\n }\n\n getData(rects) {\n sliceDataPages(this.slicer, this.layout, rects, this.responseProperty);\n const prop = getValue(this.layout, `${this.dataPath}.${this.responseProperty}`);\n return Promise.resolve(prop);\n }\n\n setCacheOptions() {}\n\n updateCache() {}\n}\n","/**\n * Color information structure. Holds the actual color and index in palette.\n * @typedef {object} paletteColor\n * @property {string} color - Color as hex string (mandatory if index: -1)\n * @property {number} index - Index in palette\n */\n\n/**\n * Styling settings for reference line\n * @typedef {object} refLineStyle\n * @property {number} [lineThickness=2] Set the thickness for this reference line.\n * @property {string} [lineType=''] Set the dash type for this reference line.\n */\n\n/**\n * @typedef {object} refLine\n * @property {boolean|ValueExpression} show=true Set to true to display this reference line.\n * @property {string} label Reference line label.\n * @property {boolean} [showLabel=true] Set to true to show the label of this reference line.\n * @property {boolean} [showValue=true] Set to true to show the value of this reference line.\n * @property {paletteColor} paletteColor\n * @property {refLineStyle} [style] - Styling settings for reference line\n * @property {boolean} [coloredBackground=false] Set to true to fill the label and/or value of this reference line with this color\n */\n\n/**\n * @namespace properties\n * @entry\n */\nconst properties = {\n /**\n * Current version of this generic object definition.\n * @type {string}\n * @default\n */\n version: process.env.PACKAGE_VERSION,\n /**\n * Extends `HyperCubeDef`, see Engine API: `HyperCubeDef`.\n * @extends {HyperCubeDef}\n */\n qHyperCubeDef: {\n qDimensions: [],\n qMeasures: [],\n qMode: 'K',\n qAlwaysFullyExpanded: true,\n qSuppressZero: false,\n qSuppressMissing: true,\n },\n /**\n * Color settings.\n * Most color options for visualizations are set in the color object in the options. You activate custom coloring by setting `\"auto\": false` which turns off auto-coloring.\n * If `\"auto\": true`, no other properties need to be defined in the color object.\n * Note: Some of the color properties are depending on which theme is currently being used.\n * @type {object}\n */\n color: {\n /**\n * @type {object}\n */\n box: {\n /**\n * The paletteColor object is used to define the box color when you color by single color `(\"mode\": \"primary\")`.\n * @type {paletteColor}\n * @default { index: -1, color: '#e6e6e6' }\n */\n paletteColor: {\n index: -1,\n color: '#e6e6e6',\n },\n },\n /**\n * Label to be defined on tool tips when using a coloring expression.\n * Only used if `'expressionIsColor': false`.\n * @type {string}\n * @default\n */\n expressionLabel: '',\n /**\n * @type {object}\n */\n point: {\n /**\n * Set to use automatic coloring.\n * When `\"auto\": true`, color settings are based on the visualization used and the number of dimensions\n * and measures, that is, the settings are not fixed, but are dependent on the data input.\n * @type {boolean}\n * @default\n */\n auto: true,\n /**\n * Sets the coloring mode for the visualization when auto-coloring has been switched off (`\"auto\": false`). Can be one of:\n * * `primary`: a single color (by default blue) is used for all items in the chart. In visualizations that do not benefit from multiple colors (bar charts with one dimension and scatter plots), single color is the default setting.\n * * `byExpression`: coloring is based on an expression, which in most cases is a color code. Details are set in the `\"expressionIsColor\"`, `\"expressionLabel`\" and `\"colorExpression\"` properties.\n * * `byMultiple`: can be used when more than one measure is used. By default, 12 colors are used for the dimensions. The colors are reused when there are more than 12 dimension values.\n * @type {'primary'|'byExpression'|'byMultiple'}\n * @default \"primary\"\n */\n mode: 'primary',\n /**\n * Use colors encoded in master items.\n * Only applicable when `\"mode\": \"primary\"` has been defined.\n * @type {'off'|'dimension'|'measure'}\n * @default \"off\"\n */\n useBaseColors: 'off',\n /**\n * Should be true\n * @type {true}\n * @default\n */\n expressionIsColor: true,\n },\n },\n dataPoint: {\n /**\n * Size parameter for points (20 - 100), step is 5.\n * @type {number}\n * @default\n */\n bubbleScales: 100, // This means 100% to make bubbles having full size as they are now\n /**\n * Property for controlling displacement of data points\n * @type {'none'|'jitter'}\n * @default \"none\"\n */\n displacement: 'none',\n },\n /**\n * Dimension axis settings.\n * @type {object}\n */\n dimensionAxis: {\n /**\n * Axis docking position\n * @type {'near'|'far'}\n * @default \"near\"\n */\n dock: 'near',\n /**\n * Label orientation\n * @type {'auto'}\n * @default\n */\n label: 'auto',\n /**\n * Labels and title\n * @type {'all'|'labels'|'title'|'none'}\n */\n show: 'all',\n },\n /**\n * Measure axis settings.\n * @type {object}\n */\n measureAxis: {\n /**\n * Automatic max/min\n * @type {boolean}\n * @default\n */\n autoMinMax: true,\n /**\n * Axis docking position\n * @type {'near'|'far'}\n * @default \"near\"\n */\n dock: 'near',\n /**\n * Axis max value. `\"autoMinMax\"` must be set to false and `\"minMax\"`\n * must be set to `\"max\"` or `\"minMax\"` to use this property\n * @type {number|ValueExpression}\n * @default\n */\n max: 10,\n /**\n * Axis min value. `\"autoMinMax\"` must be set to false and `\"minMax\"`\n * must be set to `\"min\"` or `\"minMax\"` to use this property\n * @type {number|ValueExpression}\n * @default\n */\n min: 0,\n /**\n * Set custom max/min\n * @type {'min'|'max'|'minMax'}\n * @default \"min\"\n */\n minMax: 'min',\n /**\n * Labels and title\n * @type {'all'|'labels'|'title'|'none'}\n * @default \"all\"\n */\n show: 'all',\n /**\n * Axis scale\n * @type {number}\n * @default\n */\n spacing: 1,\n },\n /**\n * Grid lines settings.\n * @type {object}\n */\n gridlines: {\n /**\n * Automatic grid line spacing.\n * @type {boolean}\n * @default\n */\n auto: true,\n /**\n * Grid line spacing. Used only when auto is set to false.\n * @type {0|2|3}\n * @default\n */\n spacing: 2,\n },\n /**\n * Orientation setting.\n * If vertical, the dimension axis can only be docked on bottom or top and measure axis on left or right.\n * @type {'vertical'|'horizontal'}\n * @default \"horizontal\"\n */\n orientation: 'horizontal',\n /**\n * Presentation settings for the distributionplot\n * @type {object}\n */\n presentation: {\n /**\n * Visible components of the distributionplot\n * @type {'points_box'|'points'|'box'}\n * @default \"points_box\"\n */\n visibleComponents: 'points_box',\n },\n /**\n * Reference lines settings\n * @type {object}\n */\n refLine: {\n /**\n * Array of measure based reference line definitions\n * @type {refLine[]}\n */\n refLines: [],\n },\n /**\n * Wrapper for sorting properties which will be set on the outer dimension.\n * @type {object}\n * @property {boolean} autoSort=true Sort automatically\n * @property {'distplot-exp-min'|'distplot-exp-max'} elementId='distplot-exp-min' Sorting preset\n * @property {ValueExpression} expression Expression for the sorting. Requires sortByExpression to be -1 or 1.\n * @property {number} sortCriteria.sortByAscii=0 Sort by alphabetic\n * @property {number} sortCriteria.sortByExpression=0 Sort by expression\n * @property {number} sortCriteria.sortByNumeric=0 Sort by numeric\n * @property {number} sortCriteria.sortByLoadOrder=0 Sort by load order\n */\n sorting: {\n autoSort: true,\n },\n /**\n * Show title for the visualization.\n * @type {boolean=}\n * @default\n */\n showTitles: true,\n /**\n * Visualization subtitle.\n * @type {(string|StringExpression)=}\n * @default\n */\n subtitle: '',\n /**\n * Visualization title.\n * @type {(string|StringExpression)=}\n * @default\n */\n title: '',\n /**\n * Visualization footnote.\n * @type {(string|StringExpression)=}\n * @default\n */\n footnote: '',\n};\n\nexport default properties;\n","function fixInterColumnSortOrder(data) {\n if (data.qHyperCubeDef.qInterColumnSortOrder.length === 2) {\n // makes sure we always sort by the outer dimension (second)\n data.qHyperCubeDef.qInterColumnSortOrder = [1, 0];\n } else if (data.qHyperCubeDef.qInterColumnSortOrder.length === 3) {\n data.qHyperCubeDef.qInterColumnSortOrder = [1, 2, 0];\n }\n}\n\nfunction setColorVars(data) {\n const dims = data.qHyperCubeDef.qDimensions;\n if (dims.length > 1 && data.color) {\n data.color.point.persistent = true;\n }\n}\n\nexport default function (env) {\n const { translator } = env;\n\n const dimensions = {\n min: 1,\n max: 2,\n description(properties, index) {\n let translationProperty;\n if (index === 0) {\n translationProperty = 'Visualizations.Descriptions.Point';\n } else {\n translationProperty = properties.orientation === 'horizontal' ? 'properties.yAxis' : 'properties.xAxis';\n }\n return translator.get(translationProperty);\n },\n added(dimension, data) {\n fixInterColumnSortOrder(data);\n setColorVars(data);\n },\n moved(dimension, data) {\n fixInterColumnSortOrder(data);\n setColorVars(data);\n },\n removed(dimension, data) {\n fixInterColumnSortOrder(data);\n setColorVars(data);\n },\n };\n\n const measures = {\n min: 1,\n max: 1,\n description(properties) {\n const translationProperty = properties.orientation === 'horizontal' ? 'properties.xAxis' : 'properties.yAxis';\n return translator.get(translationProperty);\n },\n };\n\n return {\n path: '/qHyperCubeDef',\n dimensions,\n measures,\n };\n}\n","!function(e,r){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=r():\"function\"==typeof define&&define.amd?define([],r):\"object\"==typeof exports?exports.conversion=r():e.conversion=r()}(window,(function(){return function(e){var r={};function n(t){if(r[t])return r[t].exports;var o=r[t]={i:t,l:!1,exports:{}};return e[t].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=r,n.d=function(e,r,t){n.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,r){if(1&r&&(e=n(e)),8&r)return e;if(4&r&&\"object\"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(n.r(t),Object.defineProperty(t,\"default\",{enumerable:!0,value:e}),2&r&&\"string\"!=typeof e)for(var o in e)n.d(t,o,function(r){return e[r]}.bind(null,o));return t},n.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(r,\"a\",r),r},n.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},n.p=\"/conversion/\",n(n.s=2)}([function(e,r,n){\"use strict\";var t=Object.prototype.hasOwnProperty,o=Object.prototype.toString,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,s=function(e){return\"function\"==typeof Array.isArray?Array.isArray(e):\"[object Array]\"===o.call(e)},u=function(e){if(!e||\"[object Object]\"!==o.call(e))return!1;var r,n=t.call(e,\"constructor\"),i=e.constructor&&e.constructor.prototype&&t.call(e.constructor.prototype,\"isPrototypeOf\");if(e.constructor&&!n&&!i)return!1;for(r in e);return void 0===r||t.call(e,r)},l=function(e,r){i&&\"__proto__\"===r.name?i(e,r.name,{enumerable:!0,configurable:!0,value:r.newValue,writable:!0}):e[r.name]=r.newValue},c=function(e,r){if(\"__proto__\"===r){if(!t.call(e,r))return;if(a)return a(e,r).value}return e[r]};e.exports=function e(){var r,n,t,o,i,a,p=arguments[0],f=1,m=arguments.length,d=!1;for(\"boolean\"==typeof p&&(d=p,p=arguments[1]||{},f=2),(null==p||\"object\"!=typeof p&&\"function\"!=typeof p)&&(p={});f<m;++f)if(null!=(r=arguments[f]))for(n in r)t=c(p,n),p!==(o=c(r,n))&&(d&&o&&(u(o)||(i=s(o)))?(i?(i=!1,a=t&&s(t)?t:[]):a=t&&u(t)?t:{},l(p,{name:n,newValue:e(d,a,o)})):void 0!==o&&l(p,{name:n,newValue:o}));return p}},function(e,r,n){window,e.exports=function(e){var r={};function n(t){if(r[t])return r[t].exports;var o=r[t]={i:t,l:!1,exports:{}};return e[t].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=r,n.d=function(e,r,t){n.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,r){if(1&r&&(e=n(e)),8&r)return e;if(4&r&&\"object\"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(n.r(t),Object.defineProperty(t,\"default\",{enumerable:!0,value:e}),2&r&&\"string\"!=typeof e)for(var o in e)n.d(t,o,function(r){return e[r]}.bind(null,o));return t},n.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(r,\"a\",r),r},n.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},n.p=\"/qlik-modifiers/\",n(n.s=1)}([function(e,r,n){\"use strict\";var t=Object.prototype.hasOwnProperty,o=Object.prototype.toString,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,s=function(e){return\"function\"==typeof Array.isArray?Array.isArray(e):\"[object Array]\"===o.call(e)},u=function(e){if(!e||\"[object Object]\"!==o.call(e))return!1;var r,n=t.call(e,\"constructor\"),i=e.constructor&&e.constructor.prototype&&t.call(e.constructor.prototype,\"isPrototypeOf\");if(e.constructor&&!n&&!i)return!1;for(r in e);return void 0===r||t.call(e,r)},l=function(e,r){i&&\"__proto__\"===r.name?i(e,r.name,{enumerable:!0,configurable:!0,value:r.newValue,writable:!0}):e[r.name]=r.newValue},c=function(e,r){if(\"__proto__\"===r){if(!t.call(e,r))return;if(a)return a(e,r).value}return e[r]};e.exports=function e(){var r,n,t,o,i,a,p=arguments[0],f=1,m=arguments.length,d=!1;for(\"boolean\"==typeof p&&(d=p,p=arguments[1]||{},f=2),(null==p||\"object\"!=typeof p&&\"function\"!=typeof p)&&(p={});f<m;++f)if(null!=(r=arguments[f]))for(n in r)t=c(p,n),p!==(o=c(r,n))&&(d&&o&&(u(o)||(i=s(o)))?(i?(i=!1,a=t&&s(t)?t:[]):a=t&&u(t)?t:{},l(p,{name:n,newValue:e(d,a,o)})):void 0!==o&&l(p,{name:n,newValue:o}));return p}},function(e,r,n){\"use strict\";n.r(r);var t=n(0),o=n.n(t),i=function(e,r,n){if(!r)return!1;var t,o=r.split(\".\"),i=o[o.length-1],a=e;for(t=0;t<o.length-1;++t)void 0===a[o[t]]&&(a[o[t]]=Number.isNaN(+o[t+1])?{}:[]),a=a[o[t]];if(void 0!==n){var s=a[i];return a[i]=n,{updated:n,previous:s}}return delete a[i],!1},a=function(e,r,n){var t,o=r.split(\".\"),i=e;if(void 0===i)return n;for(t=0;t<o.length;++t){if(void 0===i[o[t]])return n;i=i[o[t]]}return i},s=\"\".concat(\" \",\"(\").concat(\" \"),u=\"\".concat(\" \",\")\").concat(\" \");function l(e){return s+e+u}function c(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(e.qLibraryId){var n=function(e,r){if(!r)return null;var n,t;for(n=0;n<r.length;n++)if((t=r[n]).qInfo.qId===e)return t;return null}(e.qLibraryId,r.dimensionList);return n&&n.qData.info[0].qTags.indexOf(\"$numeric\")>-1}var t=function(e,r){if(!r)return null;var n,t,o=function(e){var r=e.trim();\"=\"===r.charAt(0)&&(r=(r=r.substring(1)).trim());var n=r.length-1;return\"[\"===r.charAt(0)&&\"]\"===r.charAt(n)&&(r=(r=r.substring(1,n)).trim()),r}(e);for(n=0;n<r.length;n++){if((t=r[n]).qName===o)return t;if(t.qDerivedFieldData)for(var i=0;i<t.qDerivedFieldData.qDerivedFieldLists.length;++i)for(var a=t.qDerivedFieldData.qDerivedFieldLists[i],s=0;s<a.qFieldDefs.length;++s){var u=a.qFieldDefs[s];if(u.qName===o)return u}}return null}(e.qDef.qFieldDefs[0],r.fieldList);return t&&t.qTags.indexOf(\"$numeric\")>-1}function p(e){return!(!e.fullAccumulation&&!e.fullRange)}function f(e,r){var n=e.crossAllDimensions;return 2===r&&n?\"RowNo(Total)\":\"RowNo()\"}function m(e){var r=function(e){return e?(e=function(e){return e.replace(/\\/\\*[^]*?\\*\\//g,\"\")}(e=function(e){return e.replace(/\\/\\/(.*)$/gm,\"\")}(e))).trim():\"\"}(e).trim();return\"=\"===r.substring(0,1)?r.substring(1).trim():r}function d(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return\"[$(=Replace(GetObjectField(\".concat(e,\"),']',']]'))]\")}function y(e,r){var n=e.crossAllDimensions;return 2===r&&n?\"Above(Total \":\"Above(\"}function q(e){return void 0===e?\")\":\", 0, \".concat(e,\")\")}function b(e,r){return e?\"\".concat(r,'={\">=$(=Min(').concat(r,\"))<=$(=Max(\").concat(r,'))\"}'):\"\".concat(r,'={\"=Only({1}').concat(r,\")>='$(=MinString(\").concat(r,\"))' and Only({1}\").concat(r,\")<='$(=MaxString(\").concat(r,\"))'\\\"}\")}function D(e){var r=e.modifier,n=void 0===r?{}:r,t=e.dimensions,o=e.dimensionAndFieldList,i=e.funcComp,a=void 0===i?\"Sum\":i,s=e.valueComp,u=void 0===s?\"0\":s;if(!n.showExcludedValues)return\"\";if(t&&1===t.length){var l=b(c(t[0],o),d(0));return\"\".concat(a,\"({1<\").concat(l,\">}\").concat(u,\")\")}if(t&&2===t.length){var p=c(t[0],o),f=c(t[1],o),m=d(0),y=d(1),q=b(p,m),D=b(f,y);return\"\".concat(a,\"({1<\").concat(q,\",\").concat(D,\">}\").concat(u,\")\")}return\"\".concat(a,\"({1}\").concat(u,\")\")}function v(e){return\"\".concat(e,\"(\")}function g(e){var r=e.properties,n=e.layout;return a(r,\"qHyperCubeDef.qDimensions\",a(n,\"qHyperCube.qDimensionInfo\",[])).length}var h={isFullRange:p,getNumDimensions:g,getExpressionWithExcludedComp:function(e){var r=e.expression,n=e.modifier,t=e.dimensions,o=e.dimensionAndFieldList,i=e.treatMissingAsNull,a=l(m(r));if(!n.showExcludedValues)return a;var s=D({modifier:n,dimensions:t,dimensionAndFieldList:o}),u=i?\"\":\", 0\";if(t&&1===t.length){var c=d(0);return\"If(Count(\".concat(c,\") > 0, \").concat(a,\" + \").concat(s).concat(u,\")\")}if(t&&2===t.length){var p=d(0),f=d(1);return\"If(Count(\".concat(p,\") * Count(\").concat(f,\") > 0, \").concat(a,\" + \").concat(s).concat(u,\")\")}return a},getRowNoComp:f,getNumStepComp:function(e,r){if(!p(e)){var n=e.steps;return\"number\"!=typeof n||Number.isNaN(n)?6:n}return f(e,r)},getAboveCompPrefix:y,getAboveCompSuffix:q,getAboveComp:function(e,r,n,t){return y(e,r)+n+q(t)},getFunctionPrefix:v,getFunctionSuffix:function(){return\")\"},getRangeComp:function(e,r){return v(e)+r+\")\"},getAggrComp:function(e,r,n){return\"Aggr(\".concat(e,\", \").concat(r,\", \").concat(n,\")\")},getExcludedComp:D,needDimension:function(e){var r=e.modifier,n=e.properties,t=e.layout;return 0===function(e){return void 0===e.primaryDimension?e.accumulationDimension:e.primaryDimension}(r)&&2===g({properties:n,layout:t})},getDimComp:function(e,r){var n=function(e){return e[arguments.length>1&&void 0!==arguments[1]?arguments[1]:0].qDef.qSortCriterias[0]}(e,r),t=d(r);if(!n.qSortByExpression&&!n.qSortByNumeric&&!n.qSortByAscii)return t;var o=[\"Descending\",\"Ascending\"],i=n.qSortByNumeric?\"(Numeric, \".concat(o[(n.qSortByNumeric+1)/2],\")\"):\"\",a=n.qSortByAscii?\"(Text, \".concat(o[(n.qSortByAscii+1)/2],\")\"):\"\";return n.qSortByNumeric&&n.qSortByAscii?\"(\".concat(t,\", \").concat(i,\", \").concat(a,\")\"):n.qSortByNumeric?\"(\".concat(t,\", \").concat(i,\")\"):n.qSortByAscii?\"(\".concat(t,\", \").concat(a,\")\"):t},simplifyExpression:m,extractInputExpression:function(e){var r=e.outputExpression;if(e.modifier){var n=r.indexOf(s);if(-1!==n){var t=r.indexOf(u);if(-1!==t)return r.substring(n+s.length,t)}}},initModifier:function(e,r){Object.keys(r).forEach((function(n){void 0===e[n]&&(e[n]=r[n])}))},isNumeric:c,isApplicable:function(e){var r=e.properties,n=e.layout,t=e.minDimensions,o=void 0===t?1:t,i=e.maxDimensions,a=void 0===i?2:i;if(!r&&!n)return!0;var s=g({properties:r,layout:n});return s>=o&&s<=a},getExpressionWithMarkers:l,canExtract:function(e){var r=e.indexOf(s),n=e.indexOf(u);return r>-1&&n>-1&&r<n},getDimDefWithWrapper:d,getFieldWithWrapper:function(e){var r=e?e.replace(/]/g,\"]]\"):e;return\"[\".concat(r,\"]\")}};function x(e){return(x=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}var E=o.a.bind(null,!0),A={},C=Array.isArray;function I(e){return null!=e&&!Array.isArray(e)&&\"object\"===x(e)}function M(e){return void 0===e}function S(e,r){return\"function\"==typeof e[r]||\"$$\"===r.substring(0,2)||\"_\"===r.substring(0,1)}function L(e,r){var n,t=r.substring(1).split(\"/\").slice(0,-1);return t.forEach((function(r,o){if(o!==t.length){n=+r;var i=Number.isNaN(n)?{}:[];e[n||r]=M(e[n||r])?i:e[r],e=e[n||r]}})),e}function O(e,r){var n=!0;if(I(e)&&I(r))return Object.keys(e).length===Object.keys(r).length&&(Object.keys(e).forEach((function(t){O(e[t],r[t])||(n=!1)})),n);if(C(e)&&C(r)){if(e.length!==r.length)return!1;for(var t=0,o=e.length;t<o;t+=1)if(!O(e[t],r[t]))return!1;return!0}return e===r}A.generate=function(e,r,n){n=n||\"\";var t=[];return Object.keys(r).forEach((function(o){var i=function(e){return e?E({},{val:e}).val:e}(r[o]),a=e[o],s=\"\".concat(n,\"/\").concat(o);O(i,a)||S(r,o)||(M(a)?t.push({op:\"add\",path:s,value:i}):I(i)&&I(a)?t=t.concat(A.generate(a,i,s)):C(i)&&C(a)?t=t.concat(function(e,r,n){var t=[],o=e.slice(),i=-1;function a(e,r,n){if(e[n]&&M(e[n].qInfo))return null;if(e[n]&&e[n].qInfo.qId===r)return n;for(var t=0,o=e.length;t<o;t+=1)if(e[t]&&e[t].qInfo.qId===r)return t;return-1}if(O(r,o))return t;if(!M(r[0])&&M(r[0].qInfo))return t.push({op:\"replace\",path:n,value:r}),t;for(var s=o.length-1;s>=0;s-=1)-1===(i=a(r,o[s].qInfo&&o[s].qInfo.qId,s))?(t.push({op:\"remove\",path:\"\".concat(n,\"/\").concat(s)}),o.splice(s,1)):t=t.concat(A.generate(o[s],r[i],\"\".concat(n,\"/\").concat(s)));for(var u=0,l=r.length;u<l;u+=1)-1===(i=a(o,r[u].qInfo&&r[u].qInfo.qId))?(t.push({op:\"add\",path:\"\".concat(n,\"/\").concat(u),value:r[u]}),o.splice(u,0,r[u])):i!==u&&(t.push({op:\"move\",path:\"\".concat(n,\"/\").concat(u),from:\"\".concat(n,\"/\").concat(i)}),o.splice(u,0,o.splice(i,1)[0]));return t}(a,i,s)):t.push({op:\"replace\",path:\"\".concat(n,\"/\").concat(o),value:i}))})),Object.keys(e).forEach((function(o){M(r[o])&&!S(e,o)&&t.push({op:\"remove\",path:\"\".concat(n,\"/\").concat(o)})})),t},A.apply=function(e,r){r.forEach((function(r){var n,t=L(e,r.path),o=r.path.split(\"/\").splice(-1)[0],i=o&&Number.isNaN(+o)?t[o]:t[+o]||t,a=r.from?r.from.split(\"/\").splice(-1)[0]:null;if(\"/\"===r.path&&(t=null,i=e),\"add\"===r.op||\"replace\"===r.op)if(C(t))\"-\"===o&&(o=t.length),t.splice(+o,\"add\"===r.op?0:1,r.value);else if(C(i)&&C(r.value)){var s,u=r.value.slice();i.length=0,(s=i).push.apply(s,function(e){return function(e){if(Array.isArray(e)){for(var r=0,n=new Array(e.length);r<e.length;r++)n[r]=e[r];return n}}(e)||function(e){if(Symbol.iterator in Object(e)||\"[object Arguments]\"===Object.prototype.toString.call(e))return Array.from(e)}(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance\")}()}(u))}else if(I(i)&&I(r.value))n=i,Object.keys(n).forEach((function(e){Object.getOwnPropertyDescriptor(n,e).configurable&&!S(n,e)&&delete n[e]})),E(i,r.value);else{if(!t)throw new Error(\"Patchee is not an object we can patch\");t[o]=r.value}else if(\"move\"===r.op){var l=L(e,r.from);C(t)?t.splice(+o,0,l.splice(+a,1)[0]):(t[o]=l[a],delete l[a])}else\"remove\"===r.op&&(C(t)?t.splice(+o,1):delete t[o])}))},A.clone=function(e){return E({},e)},A.createPatch=function(e,r,n){var t={op:e.toLowerCase(),path:n};return\"move\"===t.op?t.from=r:void 0!==r&&(t.value=r),t},A.updateObject=function(e,r){Object.keys(e).length?A.apply(e,A.generate(e,r)):E(e,r)};var P=A,F=function(e,r,n){if(!e)return Promise.resolve();var t=P.generate(r,n);return o()(!0,r,n),t&&t.length?(t=t.map((function(e){return{qOp:e.op,qValue:JSON.stringify(e.value),qPath:e.path}})),e.applyPatches(t,!0)):Promise.resolve()},N=\"accumulation\";function V(e,r){var n=a(e,r);if(n)for(var t=0;t<n.length;t++)if(n[t].type===N)return n[t]}function w(e,r){var n=function(e,r){var n=a(e,r);if(!n)return-1;for(var t=0;t<n.length;t++)if(n[t].type===N)return t;return-1}(e,r);return n>-1?\"\".concat(r,\".\").concat(n):r}var H={type:\"accumulation\",disabled:!1,accumulationDimension:0,crossAllDimensions:!1,showExcludedValues:!0,fullAccumulation:!1,steps:6,outputExpression:\"\"},T={translationKey:\"properties.modifier.accumulation\",needDimension:h.needDimension,isApplicable:function(e){var r=e.properties,n=e.layout;return h.isApplicable({properties:r,layout:n,minDimensions:1,maxDimensions:2})},generateExpression:function(e){var r=e.expression,n=e.modifier,t=e.properties,o=e.layout,i=e.numDimensions,s=e.dimensionAndFieldList;if(!n)return r;var u=i;void 0===u&&(u=h.getNumDimensions({properties:t,layout:o}));var l=a(t,\"qHyperCubeDef.qDimensions\",[]),c=h.getExpressionWithExcludedComp({expression:r,modifier:n,dimensions:l,dimensionAndFieldList:s}),p=h.getNumStepComp(n,u),f=h.getAboveComp(n,u,c,p),m=h.getRangeComp(\"RangeSum\",f);if(h.needDimension({modifier:n,properties:t,layout:o})){var d=h.getDimComp(l,1),y=h.getDimComp(l,0),q=h.getAggrComp(m,d,y);m=n.showExcludedValues?h.getExcludedComp({modifier:n,dimensions:l,dimensionAndFieldList:s,valueComp:q}):q}return m},extractInputExpression:h.extractInputExpression,initModifier:function(e){h.initModifier(e,H)},enableTotalsFunction:function(){return!1},propertyPanelDef:function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n={type:\"items\",items:{disclaimer:{component:\"text\",translation:r.disclaimer||\"properties.modifier.accumulation.disclaimer\",show:function(e,r){return!h.isApplicable({properties:r.properties})}},settings:{type:\"items\",items:{primaryDimension:{refFn:function(r){return\"\".concat(w(r,e),\".accumulationDimension\")},type:\"integer\",translation:r.primaryDimension||\"properties.modifier.primaryDimension\",title:{translation:r.primaryDimensionTooltip||\"properties.modifier.accumulation.primaryDimension.tooltip\"},component:\"dropdown\",schemaIgnore:!0,defaultValue:1,options:function(e,r){return r.layout.qHyperCube.qDimensionInfo.map((function(e,r){return{value:r,label:e.qGroupFallbackTitles[0]}}))},show:function(e,r){return r.layout.qHyperCube.qDimensionInfo.length>1}},crossAllDimensions:{refFn:function(r){return\"\".concat(w(r,e),\".crossAllDimensions\")},type:\"boolean\",translation:r.crossAllDimensions||\"properties.modifier.crossAllDimensions\",title:{translation:r.crossAllDimensionsTooltip||\"properties.modifier.accumulation.crossAllDimensions.tooltip\"},schemaIgnore:!0,defaultValue:!1,show:function(e,r){return r.layout.qHyperCube.qDimensionInfo.length>1}},fullRange:{refFn:function(r){return\"\".concat(w(r,e),\".fullAccumulation\")},type:\"boolean\",translation:r.range||\"properties.modifier.range\",component:\"dropdown\",schemaIgnore:!0,defaultValue:!1,options:[{value:!0,translation:r.rangeFull||\"properties.modifier.range.full\"},{value:!1,translation:r.rangeCustom||\"properties.modifier.range.custom\"}]},steps:{refFn:function(r){return\"\".concat(w(r,e),\".steps\")},type:\"integer\",translation:r.rangeSteps||\"properties.modifier.range.steps\",schemaIgnore:!0,defaultValue:6,change:function(r){var n=V(r,e);if(n){var t=n.steps;n.steps=\"number\"!=typeof t||Number.isNaN(t)?6:Math.abs(t)}},show:function(r){var n=V(r,e);return n&&!n.fullAccumulation}},showExcludedValues:{refFn:function(r){return\"\".concat(w(r,e),\".showExcludedValues\")},type:\"boolean\",translation:r.showExcludedValues||\"properties.modifier.showExcludedValues\",schemaIgnore:!0,defaultValue:!0}},show:function(e,r){return h.isApplicable({properties:r.properties})}}},show:function(r,n,t){var o=t.ext.support.modifiers;if(!Array.isArray(o)||-1===o.indexOf(N))return!1;var i=V(r,e);return i&&!i.disabled}};return n}},j=\"movingAverage\";function _(e,r){var n=a(e,r);if(n)for(var t=0;t<n.length;t++)if(n[t].type===j)return n[t]}function R(e,r){var n=function(e,r){var n=a(e,r);if(!n)return-1;for(var t=0;t<n.length;t++)if(n[t].type===j)return t;return-1}(e,r);return n>-1?\"\".concat(r,\".\").concat(n):r}var B={type:\"movingAverage\",disabled:!1,primaryDimension:0,crossAllDimensions:!1,showExcludedValues:!0,fullRange:!1,steps:6,outputExpression:\"\",nullSuppression:!1},k={translationKey:\"properties.modifier.movingAverage\",needDimension:h.needDimension,isApplicable:function(e){var r=e.properties,n=e.layout;return h.isApplicable({properties:r,layout:n,minDimensions:1,maxDimensions:2})},generateExpression:function(e){var r,n=e.expression,t=e.modifier,o=e.properties,i=e.layout,s=e.numDimensions,u=e.dimensionAndFieldList;if(!t)return n;var l=s;void 0===l&&(l=h.getNumDimensions({properties:o,layout:i}));var c=a(o,\"qHyperCubeDef.qDimensions\",[]),p=t.showExcludedValues&&t.nullSuppression,f=h.getExpressionWithExcludedComp({expression:n,modifier:t,dimensions:c,dimensionAndFieldList:u,treatMissingAsNull:p}),m=h.getNumStepComp(t,l),d=h.getAboveComp(t,l,f,m);if(t.nullSuppression)r=h.getRangeComp(\"RangeAvg\",d);else{var y=h.getRangeComp(\"RangeSum\",d),q=function(e,r){var n=h.getRowNoComp(e,r);if(!h.isFullRange(e)){var t=e.steps,o=\"number\"!=typeof t||Number.isNaN(t)?6:t;return\"RangeMin(\".concat(o,\", \").concat(n,\")\")}return n}(t,l);r=\"\".concat(y,\" / \").concat(q)}var b=r;if(h.needDimension({modifier:t,properties:o,layout:i})){var D=h.getDimComp(c,1),v=h.getDimComp(c,0),g=h.getAggrComp(b,D,v);b=t.showExcludedValues?h.getExcludedComp({modifier:t,dimensions:c,dimensionAndFieldList:u,funcComp:\"Only\",valueComp:g}):g}return b},extractInputExpression:h.extractInputExpression,initModifier:function(e){h.initModifier(e,B)},enableTotalsFunction:function(){return!1},propertyPanelDef:function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n={type:\"items\",items:{disclaimer:{component:\"text\",translation:r.disclaimer||\"properties.modifier.movingAverage.disclaimer\",show:function(e,r){return!h.isApplicable({properties:r.properties})}},settings:{type:\"items\",items:{primaryDimension:{refFn:function(r){return\"\".concat(R(r,e),\".primaryDimension\")},type:\"integer\",translation:r.primaryDimension||\"properties.modifier.primaryDimension\",title:{translation:r.primaryDimensionTooltip||\"properties.modifier.movingAverage.primaryDimension.tooltip\"},component:\"dropdown\",schemaIgnore:!0,defaultValue:1,options:function(e,r){return r.layout.qHyperCube.qDimensionInfo.map((function(e,r){return{value:r,label:e.qGroupFallbackTitles[0]}}))},show:function(e,r){return r.layout.qHyperCube.qDimensionInfo.length>1}},crossAllDimensions:{refFn:function(r){return\"\".concat(R(r,e),\".crossAllDimensions\")},type:\"boolean\",translation:r.crossAllDimensions||\"properties.modifier.crossAllDimensions\",title:{translation:r.crossAllDimensionsTooltip||\"properties.modifier.movingAverage.crossAllDimensions.tooltip\"},schemaIgnore:!0,defaultValue:!1,show:function(e,r){return r.layout.qHyperCube.qDimensionInfo.length>1}},fullRange:{refFn:function(r){return\"\".concat(R(r,e),\".fullRange\")},type:\"boolean\",translation:r.range||\"properties.modifier.range\",component:\"dropdown\",schemaIgnore:!0,defaultValue:!1,options:[{value:!0,translation:r.rangeFull||\"properties.modifier.range.full\"},{value:!1,translation:r.rangeCustom||\"properties.modifier.range.custom\"}]},steps:{refFn:function(r){return\"\".concat(R(r,e),\".steps\")},type:\"integer\",translation:r.rangeSteps||\"properties.modifier.range.steps\",schemaIgnore:!0,defaultValue:6,change:function(r){var n=_(r,e);if(n){var t=n.steps;n.steps=\"number\"!=typeof t||Number.isNaN(t)?6:Math.abs(t)}},show:function(r){var n=_(r,e);return n&&!n.fullRange}},showExcludedValues:{refFn:function(r){return\"\".concat(R(r,e),\".showExcludedValues\")},type:\"boolean\",translation:r.showExcludedValues||\"properties.modifier.showExcludedValues\",schemaIgnore:!0,defaultValue:!0},nullSuppression:{refFn:function(r){return\"\".concat(R(r,e),\".nullSuppression\")},type:\"boolean\",translation:r.showNull||\"properties.dimensions.showNull\",schemaIgnore:!0,defaultValue:!1,inverted:!0}},show:function(e,r){return h.isApplicable({properties:r.properties})}}},show:function(r,n,t){var o=t.ext.support.modifiers;if(!Array.isArray(o)||-1===o.indexOf(j))return!1;var i=_(r,e);return i&&!i.disabled}};return n}},U=\"difference\";function G(e,r){var n=a(e,r);if(n)for(var t=0;t<n.length;t++)if(n[t].type===U)return n[t]}function W(e,r){var n=function(e,r){var n=a(e,r);if(!n)return-1;for(var t=0;t<n.length;t++)if(n[t].type===U)return t;return-1}(e,r);return n>-1?\"\".concat(r,\".\").concat(n):r}var $={type:\"difference\",disabled:!1,primaryDimension:0,crossAllDimensions:!1,showExcludedValues:!0,outputExpression:\"\"},z={translationKey:\"properties.modifier.difference\",needDimension:h.needDimension,isApplicable:function(e){var r=e.properties,n=e.layout;return h.isApplicable({properties:r,layout:n,minDimensions:1,maxDimensions:2})},extractInputExpression:h.extractInputExpression,generateExpression:function(e){var r=e.expression,n=e.modifier,t=e.properties,o=e.layout,i=e.numDimensions,s=e.dimensionAndFieldList;if(!n)return r;var u=i;void 0===u&&(u=h.getNumDimensions({properties:t,layout:o}));var l=a(t,\"qHyperCubeDef.qDimensions\",[]),c=h.getExpressionWithExcludedComp({expression:r,modifier:n,dimensions:l,dimensionAndFieldList:s}),p=h.getAboveComp(n,u,c),f=\"\".concat(c,\" - \").concat(p);if(h.needDimension({modifier:n,properties:t,layout:o})){var m=h.getDimComp(l,1),d=h.getDimComp(l,0),y=h.getAggrComp(f,m,d);f=n.showExcludedValues?h.getExcludedComp({modifier:n,dimensions:l,dimensionAndFieldList:s,funcComp:\"Only\",valueComp:y}):y}return f},initModifier:function(e){Object.keys($).forEach((function(r){void 0===e[r]&&(e[r]=$[r])}))},enableTotalsFunction:function(){return!1},propertyPanelDef:function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n={type:\"items\",items:{disclaimer:{component:\"text\",translation:r.disclaimer||\"properties.modifier.difference.disclaimer\",show:function(e,r){return!h.isApplicable({properties:r.properties})}},settings:{type:\"items\",items:{primaryDimension:{refFn:function(r){return\"\".concat(W(r,e),\".primaryDimension\")},type:\"integer\",translation:r.primaryDimension||\"properties.modifier.primaryDimension\",title:{translation:r.primaryDimensionTooltip||\"properties.modifier.difference.primaryDimension.tooltip\"},component:\"dropdown\",schemaIgnore:!0,defaultValue:1,options:function(e,r){return r.layout.qHyperCube.qDimensionInfo.map((function(e,r){return{value:r,label:e.qGroupFallbackTitles[0]}}))},show:function(e,r){return r.layout.qHyperCube.qDimensionInfo.length>1}},crossAllDimensions:{refFn:function(r){return\"\".concat(W(r,e),\".crossAllDimensions\")},type:\"boolean\",translation:r.crossAllDimensions||\"properties.modifier.crossAllDimensions\",title:{translation:r.crossAllDimensionsTooltip||\"properties.modifier.difference.crossAllDimensions.tooltip\"},schemaIgnore:!0,defaultValue:!1,show:function(e,r){return r.layout.qHyperCube.qDimensionInfo.length>1}},showExcludedValues:{refFn:function(r){return\"\".concat(W(r,e),\".showExcludedValues\")},type:\"boolean\",translation:r.showExcludedValues||\"properties.modifier.showExcludedValues\",schemaIgnore:!0,defaultValue:!0}},show:function(e,r){return h.isApplicable({properties:r.properties})}}},show:function(r,n,t){var o=t.ext.support.modifiers;if(!Array.isArray(o)||-1===o.indexOf(U))return!1;var i=G(r,e);return i&&!i.disabled}};return n}},Y={CURRENT_SELECTION:0,SELECT_FIELD_VALUE:1,DISREGARD_SELECTION:2},J={ONE_DIMENSION:0,ALL_DIMENSIOANS:1,DISREGARD_ALL_DIMENSIONS:2},K=\"normalization\";function X(e,r){var n=a(e,r);if(n)for(var t=0;t<n.length;t++)if(n[t].type===K)return n[t]}function Q(e,r){var n=function(e,r){var n=a(e,r);if(!n)return-1;for(var t=0;t<n.length;t++)if(n[t].type===K)return t;return-1}(e,r);return n>-1?\"\".concat(r,\".\").concat(n):r}function Z(e,r){for(var n=0;n<e.length;n++)if(e[n].value===r)return n;return-1}function ee(e,r,n,t){var o=r.layout.qHyperCube.qDimensionInfo.length,i=[{value:J.ONE_DIMENSION,translation:n.dimensionalScopeOneDimension||\"properties.modifier.dimensionalScope.respectOneDimension\",tooltipTranslation:n.dimensionalScopeOneDimensionTooltip||\"properties.modifier.dimensionalScope.respectOneDimension.tooltip\"},{value:J.ALL_DIMENSIOANS,translation:n.dimensionalScopeAllDimensions||\"properties.modifier.dimensionalScope.\".concat(2===o?\"respectAllDimensions\":\"respectDimension\"),tooltipTranslation:n.dimensionalScopeAllDimensionsTooltip||\"properties.modifier.dimensionalScope.\".concat(2===o?\"respectAllDimensions\":\"respectDimension\",\".tooltip\")},{value:J.DISREGARD_ALL_DIMENSIONS,translation:n.dimensionalScopeDisregardAllDimensions||\"properties.modifier.dimensionalScope.\".concat(2===o?\"disregardAllDimensions\":\"disregardDimension\"),tooltipTranslation:n.dimensionalScopeDisregardAllDimensionsTooltip||\"properties.modifier.dimensionalScope.\".concat(2===o?\"disregardAllDimensions\":\"disregardDimension\",\".tooltip\")}];return i=function(e,r,n){if(e<2){var t=Z(r,0);r.splice(t,1)}return r}(o,i),function(e,r,n){if(0===e){var t=Z(r,1);r.splice(t,1)}return r}(X(e,t).selectionScope,i)}function re(e,r,n){var t=[{value:Y.CURRENT_SELECTION,translation:r.selectionScopeCurrentSelection||\"properties.modifier.selectionScope.currentSelection\"},{value:Y.SELECT_FIELD_VALUE,translation:r.selectionScopeSpecificValue||\"properties.modifier.selectionScope.selectAField\"},{value:Y.DISREGARD_SELECTION,translation:r.selectionScopeTotal||\"properties.modifier.selectionScope.total\"}];return function(e,r,n){if(1===e){var t=Z(r,0);r.splice(t,1)}return r}(X(e,n).dimensionalScope,t)}var ne={type:\"normalization\",disabled:!1,primaryDimension:0,outputExpression:\"\",dimensionalScope:J.DISREGARD_ALL_DIMENSIONS,selectionScope:Y.DISREGARD_SELECTION};function te(e){return 2===e?\"{1}\":\"\"}function oe(e,r,n){return 1===e?\"{$<\".concat(h.getFieldWithWrapper(r),\"={'\").concat(n,\"'}>}\"):\"\"}function ie(e,r){return 0===e&&r>1||2===e?\"Total\":\"\"}function ae(e,r,n){return 0===e&&r>1?\"<\".concat(h.getDimDefWithWrapper(n),\">\"):\"\"}var se={translationKey:\"properties.modifier.normalization\",needDimension:function(){return!0},isApplicable:function(e){var r=e.properties,n=e.layout;return h.isApplicable({properties:r,layout:n,minDimensions:1,maxDimensions:2})},extractInputExpression:h.extractInputExpression,generateExpression:function(e){var r=e.expression,n=e.modifier,t=e.properties,o=e.layout,i=e.numDimensions,s=e.dimensionAndFieldList;if(!n)return r;var u=i;void 0===u&&(u=h.getNumDimensions({properties:t,layout:o}));var l=a(t,\"qHyperCubeDef.qDimensions\",[]),c=h.getExpressionWithExcludedComp({expression:r,modifier:n,dimensions:l,dimensionAndFieldList:s}),p=n.selectionScope,f=n.dimensionalScope;return function(e,r,n,t,o,i,a){var s=te(r),u=oe(r,n,t),l=\"\"===s&&\"\"===u?\"\":s||u,c=ie(o,i),p=ae(o,i,a),f=function(e){for(var r=[],n=0;n<e;n++)r[n]=h.getDimDefWithWrapper(n);return r.join(\", \")}(i);return\"\".concat(e,\"/ Sum(\").concat(l,\" \").concat(c).concat(p,\" Aggr(\").concat(l,\" \").concat(e,\", \").concat(f,\"))\")}(c,p,n.field,n.value,f,u,n.primaryDimension)},initModifier:function(e){Object.keys(ne).forEach((function(r){void 0===e[r]&&(e[r]=ne[r])}))},updateModifier:function(e,r){1===(r.qDimensions?r.qDimensions.length:0)&&0===e.dimensionalScope&&(e.dimensionalScope=2)},enableTotalsFunction:function(){return!0},propertyPanelDef:function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n={type:\"items\",items:{disclaimer:{component:\"text\",translation:r.disclaimer||\"properties.modifier.normalization.disclaimer\",show:function(e,r){return!h.isApplicable({properties:r.properties})}},settings:{type:\"items\",items:{selectionScope:{refFn:function(r){return\"\".concat(Q(r,e),\".selectionScope\")},type:\"string\",translation:r.modifierSelectionScope||\"properties.modifier.selectionScope\",title:{translation:r.modifierSelectionScopeTooltip||\"properties.modifier.selectionScope.tooltip\"},component:\"dropdown\",schemaIgnore:!0,defaultValue:Y.DISREGARD_SELECTION,options:function(n){return re(n,r,e)}},field:{refFn:function(r){return\"\".concat(Q(r,e),\".field\")},type:\"string\",component:\"expression-with-dropdown\",translation:\"Common.Field\",defaultValue:\"\",dropdownOnly:!0,options:function(e,r,n){return n.app.getFieldList().then((function(e){return e.map((function(e){return{label:e.qName,value:e.qName}}))}))},show:function(r){return X(r,e).selectionScope===Y.SELECT_FIELD_VALUE}},value:{refFn:function(r){return\"\".concat(Q(r,e),\".value\")},type:\"string\",ref:\"value\",component:\"string\",translation:\"properties.value\",expression:\"optional\",show:function(r){return X(r,e).selectionScope===Y.SELECT_FIELD_VALUE}},dimensionalScope:{refFn:function(r){return\"\".concat(Q(r,e),\".dimensionalScope\")},type:\"string\",translation:r.modifierDimensionalScope||\"properties.modifier.dimensionalScope\",title:{translation:r.modifierDimensionalScopeTooltip||\"properties.modifier.dimensionalScope.tooltip\"},component:\"dropdown\",schemaIgnore:!0,defaultValue:J.DISREGARD_ALL_DIMENSIONS,supportTooltip:!0,options:function(n,t){return ee(n,t,r,e)}},primaryDimension:{refFn:function(r){return\"\".concat(Q(r,e),\".primaryDimension\")},type:\"integer\",translation:r.primaryDimension||\"properties.modifier.primaryDimension\",title:{translation:r.primaryDimensionTooltip||\"properties.modifier.normalization.primaryDimension.tooltip\"},component:\"dropdown\",schemaIgnore:!0,defaultValue:1,options:function(e,r){return r.layout.qHyperCube.qDimensionInfo.map((function(e,r){return{value:r,label:e.qGroupFallbackTitles[0]}}))},show:function(r,n){return(X(r,e).dimensionalScope||0)===J.ONE_DIMENSION&&n.layout.qHyperCube.qDimensionInfo.length>1}}},show:function(e,r){return h.isApplicable({properties:r.properties})}}},show:function(r,n,t){var o=t.ext.support.modifiers;if(!Array.isArray(o)||-1===o.indexOf(K))return!1;var i=X(r,e);return i&&!i.disabled}};return n},getDisregardSelectionComp:te,getFieldSelectionComp:oe,getTotalComp:ie,getSelectedDimComp:ae},ue={getExpression:function(e){return a(e,\"qDef.base.qDef\")||a(e,\"qDef.qDef\")},getExpressionRef:function(e){return a(e,\"qDef.base.qDef\")?\"qDef.base.qDef\":\"qDef.qDef\"},getLibraryIdRef:function(e){return a(e,\"qDef.base.qLibraryId\")?\"qDef.base.qLibraryId\":\"qLibraryId\"},getLibraryId:function(e){return a(e,\"qDef.base.qLibraryId\")||a(e,\"qLibraryId\")},getLabelRef:function(e){return a(e,\"qDef.base\")?\"qDef.base.qLabel\":\"qDef.qLabel\"},getLabelExpressionRef:function(e){return a(e,\"qDef.base\")?\"qDef.base.qLabelExpression\":\"qDef.qLabelExpression\"}},le={initBase:function(e,r){(r||le.isValid(e))&&(i(e,\"qDef.base.qDef\",a(e,\"qDef.qDef\")),i(e,\"qDef.base.qLibraryId\",a(e,\"qLibraryId\")),i(e,\"qDef.base.qLabel\",a(e,\"qDef.qLabel\")),i(e,\"qDef.base.qLabelExpression\",a(e,\"qDef.qLabelExpression\")))},restoreBase:function(e){le.isValid(e)&&(i(e,\"qDef.qDef\",a(e,\"qDef.base.qDef\")),i(e,\"qLibraryId\",a(e,\"qDef.base.qLibraryId\")),i(e,\"qDef.qLabel\",a(e,\"qDef.base.qLabel\")),i(e,\"qDef.qLabelExpression\",a(e,\"qDef.base.qLabelExpression\")),a(e,\"qDef.qAggrFunc\")&&a(e,\"qDef.base.qAggrFunc\")&&i(e,\"qDef.qAggrFunc\",a(e,\"qDef.base.qAggrFunc\")),delete e.qDef.base)},isValid:function(e){var r=a(e,\"qDef.base.qDef\"),n=a(e,\"qDef.base.qLibraryId\");return void 0!==r||void 0!==n}},ce=le;function pe(e){return(pe=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}var fe={accumulation:T,movingAverage:k,difference:z,normalization:se},me=(r.default={modifiers:fe,apply:de,applyModifiers:ye,cleanUpMeasure:qe,destroy:function(e){e&&me[e.id]&&me[e.id].masterItemSubscriber&&(me[e.id].masterItemSubscriber&&me[e.id].masterItemSubscriber.unsubscribe(),delete me[e.id])},hasActiveModifiers:be,getActiveModifier:De,initBase:ce.initBase,isSupportedModifiers:function(e){return Array.isArray(e)&&e.some((function(e){return fe[e]}))},isApplicableSupportedModifiers:function(e){var r=e.modifierTypes,n=e.properties,t=e.layout;return Array.isArray(r)&&r.some((function(e){return fe[e]&&fe[e].isApplicable({properties:n,layout:t})}))},measureBase:ue,limitedSorting:function(e){var r=e.measures,n=e.properties,t=e.layout,o=!1,i=!1;return r.forEach((function(e){var r=he(e);Se({modifiers:r,properties:n,layout:t})&&(o=!0,i=i||Ne({modifiers:r,properties:n,layout:t}))})),o&&!i},ifEnableTotalsFunction:ve},{});function de(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=e.model,n=e.properties,t=e.isSnapshot,i=void 0!==t&&t,s=e.masterItem;me[r.id]=me[r.id]||{isFirstTime:!0};var u=me[r.id].isFirstTime;if(me[r.id].isFirstTime=!1,n&&\"object\"===pe(n))return ye({model:r,properties:n});var l=r?r.layout:void 0,c=a(l,\"qSelectionInfo.qInSelections\");if(i||c)return Promise.resolve(!1);var p=a(l,\"qHyperCube.qMeasureInfo\"),f=me[r.id].lastReloadTime;if(me[r.id].lastReloadTime=a(r,\"app.layout.qLastReloadTime\"),be({measures:p,layout:l})){var m=function(e){var r=e.measures,n=e.layout,t=e.lastReloadTime;return a(e.model,\"app.layout.qLastReloadTime\")!==t&&function(e){var r=e.measures,n=e.properties,t=e.layout;return!!Array.isArray(r)&&r.some((function(e){return Me({measure:e,properties:n,layout:t})}))}({measures:r,layout:n})}({measures:p,layout:l,model:r,lastReloadTime:f});return m||function(e){var r=e.measures,n=e.layout,t=e.masterItem,o=e.isFirstTime;return!!Array.isArray(r)&&(o||t||r.some((function(e){return function(e){var r=e.measure,n=e.layout;return Se({modifiers:he(r),layout:n})?!r.base:!!r.base}({measure:e,layout:n})})))}({measures:p,layout:l,masterItem:s,isFirstTime:u})?r.getEffectiveProperties().then((function(e){var n=o()(!0,{},e);Ee(n);var t=Ve(n);return Le({model:r}).then((function(o){return Oe({libraryIds:t,model:r}).then((function(t){return m&&function(e){var r=e.properties;ge(r).forEach((function(e){return function(e){var r=e.measure;if(Me({measure:r,properties:e.properties})){var n=0,t=r.qDef.modifiers;Array.isArray(t)&&t.forEach((function(e){if(\"object\"===pe(e)&&!e.disabled){if(n++,\"object\"!==pe(fe[e.type]))throw new Error('Modifier \"'.concat(e.type,'\" is not available'));if(n>1)throw new Error(\"More than 1 modifier on a measure! (not yet supported)\");var t=fe[e.type].extractInputExpression({outputExpression:r.qDef.qDef,modifier:e});void 0!==t&&Ce(r)&&h.simplifyExpression(r.qDef.base.qDef)!==h.simplifyExpression(t)&&(r.qDef.base.qDef=t)}}))}}({measure:e,properties:r})}))}({properties:n}),ye({model:r,oldProperties:e,properties:n,runUpdateIfChange:!0,masterItem:s,libraryItemsProps:t,dimensionAndFieldList:o})}))}))})):Promise.resolve(!1)}return function(e){return!!Array.isArray(e)&&e.some((function(e){return\"object\"===pe(e.base)}))}(p)?r.getEffectiveProperties().then((function(e){return function(e){var r=e.model,n=e.properties,t=Ve(n);return we({model:r,libraryIds:t}).then((function(){var e=o()(!0,{},n);return ge(n).forEach((function(e){return qe(e)})),Fe({oldProperties:e,newProperties:n,model:r})}))}({model:r,properties:e})})):Promise.resolve(!1)}function ye(e){var r=e.model,n=e.oldProperties,t=e.properties,i=e.measures,s=e.runUpdateIfChange,u=void 0!==s&&s,l=e.masterItem,c=e.libraryItemsProps,p=e.dimensionAndFieldList;void 0===n&&(n=u?o()(!0,{},t):t),Ee(t);var f=Ve(t);return we({model:r,libraryIds:f,masterItem:l}).then((function(){return function(e){var r=e.measures,n=e.properties,t=e.model,i=e.libraryItemsProps,s=e.dimensionAndFieldList;if(r||(r=ge(n)),!r.length)return Promise.resolve();if(!be({measures:r,properties:n}))return r.forEach((function(e){return qe(e)})),Promise.resolve();var u=i?void 0:Ve(n);return Le({model:t,dimensionAndFieldList:s}).then((function(e){return Oe({libraryIds:u,model:t,libraryItemsProps:i}).then((function(t){r.forEach((function(r){Se({modifiers:r.qDef.modifiers,properties:n})?(function(e){var r=e.measure,n=e.properties,t=e.libraryItemsProps,i=e.dimensionAndFieldList,s=0;ce.isValid(r)||ce.initBase(r,!0);var u=r.qDef,l=u.modifiers,c=u.base;Array.isArray(l)&&l.forEach((function(e){if(\"object\"===pe(e)&&!e.disabled){if(s++,\"object\"!==pe(fe[e.type]))throw new Error('Modifier \"'.concat(e.type,'\" is not available'));if(s>1)throw new Error(\"More than 1 modifier on a measure! (not yet supported)\");fe[e.type].initModifier(e);var u=r.qLibraryId||c&&c.qLibraryId;u?function(e){var r=e.measure,n=e.modifier,t=e.properties,i=e.dimensionAndFieldList,a=e.libraryItemsProps[e.libraryId],s=a.qMeasure.qDef,u=fe[n.type].generateExpression({expression:s,modifier:n,properties:t,dimensionAndFieldList:i});n.outputExpression=u,r.qDef.qDef=n.outputExpression,(r.qDef.qLabel||a.qMeasure.qLabel)&&(r.qDef.qLabel=a.qMeasure.qLabel),(r.qDef.qLabelExpression||a.qMeasure.qLabelExpression)&&(r.qDef.qLabelExpression=a.qMeasure.qLabelExpression),r.qDef.quarantine&&r.qDef.quarantine.qNumFormat&&a.qMeasure.qNumFormat&&(r.qDef.qNumFormat=a.qMeasure.qNumFormat,r.qDef.isCustomFormatted=a.qMeasure.isCustomFormatted),delete r.qLibraryId,r.qDef.coloring=a.qMeasure.coloring,n.base=o()(!0,{},r.qDef.base)}({measure:r,modifier:e,libraryId:u,properties:n,libraryItemsProps:t,dimensionAndFieldList:i}):function(e){var r=e.measure,n=e.modifier,t=e.properties,i=e.dimensionAndFieldList;\"function\"==typeof fe[n.type].updateModifier&&fe[n.type].updateModifier(n,t.qHyperCubeDef);var a=ue.getExpression(r),s=fe[n.type].generateExpression({expression:a,modifier:n,properties:t,dimensionAndFieldList:i});n.outputExpression=s,r.qDef.qDef=n.outputExpression,r.qDef.base.qLabelExpression?r.qDef.qLabelExpression=r.qDef.base.qLabelExpression:r.qDef.qLabel=r.qDef.base.qLabel||a,n.base=o()(!0,{},r.qDef.base)}({measure:r,modifier:e,properties:n,dimensionAndFieldList:i}),function(e){var r=a(e,\"qDef.qAggrFunc\");\"Expr\"!==r||ve(e)?\"None\"!==r?delete e.qDef.base.qAggrFunc:\"None\"===r&&ve(e)&&\"Expr\"===e.qDef.base.qAggrFunc&&(e.qDef.qAggrFunc=\"Expr\",delete e.qDef.base.qAggrFunc):(e.qDef.qAggrFunc=\"None\",e.qDef.base.qAggrFunc=\"Expr\")}(r)}}))}({measure:r,properties:n,libraryItemsProps:t,dimensionAndFieldList:e}),Ae(r)):qe(r)}))}))}))}({measures:i,properties:t,model:r,libraryItemsProps:c,dimensionAndFieldList:p}).then((function(){return u?Fe({oldProperties:n,newProperties:t,model:r}):Promise.resolve(!1)}))}))}function qe(e){!function(e){var r=he(e);return Array.isArray(r)&&r.some((function(e){return\"object\"===pe(e)&&!e.disabled&&!fe[e.type]}))}(e)?ce.restoreBase(e):delete e.qDef.base,e.qDef.coloring&&delete e.qDef.coloring,Ae(e)}function be(e){var r=e.measures,n=e.properties,t=e.layout;return!!Array.isArray(r)&&r.some((function(e){return Se({modifiers:he(e),properties:n,layout:t})}))}function De(e){var r=he(e);if(Array.isArray(r))for(var n=0;n<r.length;n++){var t=r[n];if(fe[t.type]&&!t.disabled)return t}}function ve(e){var r=De(e);return!r||fe[r.type].enableTotalsFunction(e)}function ge(e){return a(e,\"qHyperCubeDef.qMeasures\",[]).concat(a(e,\"qHyperCubeDef.qLayoutExclude.qHyperCubeDef.qMeasures\",[]))}function he(e){return e.modifiers||e.qDef&&e.qDef.modifiers}function xe(e){return a(e,\"outputExpression.qValueExpression.qExpr\")||a(e,\"outputExpression\")}function Ee(e){ge(e).forEach((function(e){return function(e){var r=De(e);r&&(void 0!==r.outputExpression&&xe(r)!==e.qDef.qDef?delete e.qDef.base:!ce.isValid(e)&&r.base&&(e.qDef.base=o()(!0,{},r.base)))}(e)}))}function Ae(e){var r=he(e);Array.isArray(r)&&r.forEach((function(r){\"object\"===pe(r)&&(r.disabled||!fe[r.type]&&xe(r)!==e.qDef.qDef)&&(r.disabled=!0,delete r.base)}))}function Ce(e){return e.base||e.qDef&&e.qDef.base}function Ie(e){var r=Ce(e);return e.qLibraryId||r&&r.qLibraryId}function Me(e){var r=e.measure,n=e.properties,t=e.layout;return!Ie(r)&&Se({modifiers:he(r),properties:n,layout:t})}function Se(e){var r=e.modifiers,n=e.properties,t=e.layout,o={};return Array.isArray(r)&&r.some((function(e){return!(\"object\"!==pe(e)||e.disabled||!fe[e.type])&&(void 0===o[e.type]&&(o[e.type]=fe[e.type].isApplicable({properties:n,layout:t})),o[e.type])}))}function Le(e){var r=e.model,n=e.dimensionAndFieldList;if(n)return Promise.resolve(n);var t=[],o={},i=r.app.getDimensionList().then((function(e){o.dimensionList=e}));t.push(i);var a=r.app.getFieldList().then((function(e){o.fieldList=e}));return t.push(a),Promise.all(t).then((function(){return o}))}function Oe(e){var r=e.libraryIds,n=e.model,t=e.libraryItemsProps;if(t)return Promise.resolve(t);var o=r.measureLibraryIds,i=r.dimensionLibraryIds,a={},s=[];return o.forEach((function(e){var r=n.app.getMeasure(e).then((function(r){return r.getProperties().then((function(r){a[e]=r}))}));s.push(r)})),i.forEach((function(e){var r=n.app.getDimension(e).then((function(r){return r.getProperties().then((function(r){a[e]=r}))}));s.push(r)})),Promise.all(s).then((function(){return a}))}function Pe(e,r){if(\"\"!==r||-1===[\"qFmt\",\"qDec\",\"qThou\"].indexOf(e))return r}function Fe(e){var r=e.oldProperties,n=e.newProperties,t=e.model,o=JSON.stringify(a(r,\"qHyperCubeDef.qMeasures\"),Pe)!==JSON.stringify(a(n,\"qHyperCubeDef.qMeasures\"),Pe)||JSON.stringify(a(r,\"qHyperCubeDef.qLayoutExclude.qHyperCubeDef.qMeasures\"),Pe)!==JSON.stringify(a(n,\"qHyperCubeDef.qLayoutExclude.qHyperCubeDef.qMeasures\"),Pe);return o?function(e){var r=e.model,n=e.oldProperties,t=e.newProperties,o=r.layout;return o&&!o.qHasSoftPatches&&!o.qExtendsId&&a(o,\"qMeta.privileges\",[]).indexOf(\"update\")>-1?r.setProperties(t):F(r,n,t)}({model:t,oldProperties:r,newProperties:n}).then((function(){return o})):Promise.resolve(o)}function Ne(e){var r=e.modifiers,n=e.properties,t=e.layout;return Array.isArray(r)&&r.some((function(e){return\"object\"===pe(e)&&!e.disabled&&fe[e.type]&&fe[e.type].needDimension({modifier:e,properties:n,layout:t})}))}function Ve(e){var r=ge(e),n=[],t=[],o=!1;return r.forEach((function(r){var t=he(r);if(Se({modifiers:t,properties:e})){var i=Ie(r);i&&n.push(i),o=o||Ne({modifiers:t,properties:e})}})),a(e,\"qHyperCubeDef.qDimensions\",[]).forEach((function(e){var r=e.qLibraryId;r&&t.push(r)})),{measureLibraryIds:n,dimensionLibraryIds:t}}function we(e){var r=e.model,n=e.libraryIds;return!e.masterItem&&n&&(n.measureLibraryIds.length||n.dimensionLibraryIds.length)?(me[r.id].masterItemSubscriber=me[r.id].masterItemSubscriber||function(e){var r=e.model,n=e.callback,t={},o={},i={},s={dimension:[\"qDim.qFieldDefs\"],measure:[\"qMeasure.qDef\",\"qMeasure.qLabel\",\"qMeasure.qLabelExpression\",\"qMeasure.coloring\",\"qMeasure.qNumFormat\",\"qMeasure.isCustomFormatted\"]};function u(e){var r={},n=a(e,\"qInfo.qType\");return n&&s[n]&&s[n].forEach((function(n){r[n]=a(e,n)})),JSON.stringify(r)}function l(e){var r=e.qInfo.qId;if(t[r]){var o=u(e);t[r].properties!==o&&(t[r].properties=o,\"function\"==typeof n&&t[r].enabled&&n(e)),t[r].enabled=!0}}function c(e,n){return r.app[n](e).then((function(r){t[e]={listener:r.layoutSubscribe(l),enabled:!1,properties:u(r.layout)}}))}return{subscribe:function(e){var n=e.measureLibraryIds,a=e.dimensionLibraryIds,s=[];return function(e){var r=e.dimensionLibraryIds;o={},e.measureLibraryIds.forEach((function(e){o[e]=!0})),i={},r.forEach((function(e){i[e]=!0}))}({measureLibraryIds:n,dimensionLibraryIds:a}),Object.keys(t).forEach((function(e){o[e]||i[e]||(t[e].listener.dispose(),delete t[e])})),r.app&&(Object.keys(o).forEach((function(e){o[e]&&!t[e]&&s.push(c(e,\"getMeasure\"))})),Object.keys(i).forEach((function(e){i[e]&&!t[e]&&s.push(c(e,\"getDimension\"))}))),Promise.all(s)},unsubscribe:function(){Object.keys(t).forEach((function(e){t[e].listener.dispose()})),t={}}}}({model:r,callback:function(e){return de({model:r,masterItem:e}).then((function(){return r.app.clearUndoBuffer()}))}}),me[r.id].masterItemSubscriber.subscribe(n)):Promise.resolve()}}])},function(e,r,n){\"use strict\";function t(e){var r=function e(r){var n,t=r;return t>9?(n=65+t-10)>90&&(n+=6):t=\"\".concat(t).charCodeAt(0),[48,111,79,105,73,108].indexOf(n)>-1?e(t+1):String.fromCharCode(n)}(e%62),n=Math.floor(e/62);return n>0?t(n)+r:r}function o(e){return(o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}n.r(r);var i={getValue:function(e,r,n){if(null==e||null==r)return n;for(var t=r.split(\".\"),o=e,i=0;i<t.length;++i){var a=t[i];if(\"\"!==a){if(void 0===o[a]||null===o[a])return n;o=o[a]}}return o},setValue:function(e,r,n){if(null!=e&&null!=r){for(var t=r.split(\".\"),o=t[t.length-1],i=e,a=0;a<t.length-1;++a){var s=t[a];void 0!==i[s]&&null!==i[s]||(i[s]=Number.isNaN(+t[a+1])?{}:[]),i=i[s]}void 0!==n?i[o]=n:delete i[o]}},isEmpty:function(e){return 0===Object.keys(e).length&&e.constructor===Object},isAtomicValue:function(e){return/boolean|number|string/.test(o(e))},generateId:function(){return t(Math.round(99e11*Math.random()+1e11)).replace(/\\W/g,\"\")}};function a(e){return function(e){if(Array.isArray(e))return s(e)}(e)||function(e){if(\"undefined\"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,r){if(!e)return;if(\"string\"==typeof e)return s(e,r);var n=Object.prototype.toString.call(e).slice(8,-1);\"Object\"===n&&e.constructor&&(n=e.constructor.name);if(\"Map\"===n||\"Set\"===n)return Array.from(e);if(\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return s(e,r)}(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function s(e,r){(null==r||r>e.length)&&(r=e.length);for(var n=0,t=new Array(r);n<r;n++)t[n]=e[n];return t}function u(e){return function(e){if(Array.isArray(e))return l(e)}(e)||function(e){if(\"undefined\"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,r){if(!e)return;if(\"string\"==typeof e)return l(e,r);var n=Object.prototype.toString.call(e).slice(8,-1);\"Object\"===n&&e.constructor&&(n=e.constructor.name);if(\"Map\"===n||\"Set\"===n)return Array.from(e);if(\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return l(e,r)}(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function l(e,r){(null==r||r>e.length)&&(r=e.length);for(var n=0,t=new Array(r);n<r;n++)t[n]=e[n];return t}function c(e,r,n){if(e){for(var t=0;t<e.length;t++)if(e[t][r]===n)return t;return-1}return-1}var p={isOrderedSubset:function(e,r){if(!(e&&r&&e.length&&r.length))return!1;var n=e.indexOf(r[0]);if(-1!==n){for(var t=0;t<r.length;t++){var o=e.indexOf(r[t]);if(n>o)return!1;n=o}return!0}return!1},indexAdded:function(e,r){var n;for(n=0;n<e.length;++n)e[n]>=0&&e[n]>=r&&++e[n];e.push(r)},indexRemoved:function(e,r){var n,t=0;for(n=0;n<e.length;++n)e[n]>r?--e[n]:e[n]===r&&(t=n);return e.splice(t,1),t},findItemByPropertyValue:function(e,r,n){if(e){for(var t=0;t<e.length;t++)if(e[t][r]===n)return e[t];return null}return null},findIndexByPropertyValue:c};var f=n(1),m=n.n(f);var d={addDimensions:function(e){var r,n=e.exportFormat,t=e.qHyperCubeDef,o=n.data[0];(r=o.dimensions).push.apply(r,a(t.qDimensions));var s,u=i.getValue(t,\"qLayoutExclude.qHyperCubeDef.qDimensions\");u&&(s=o.excludedDimensions).push.apply(s,a(u))},addMeasures:function(e){var r,n=e.exportFormat,t=e.qHyperCubeDef,o=n.data[0];(r=o.measures).push.apply(r,u(t.qMeasures));var a,s=i.getValue(t,\"qLayoutExclude.qHyperCubeDef.qMeasures\");s&&(a=o.excludedMeasures).push.apply(a,u(s))},setInterColumnSortOrder:function(e){var r=e.exportFormat,n=e.qHyperCubeDef,t=r.data[0];n.qInterColumnSortOrder||(n.qInterColumnSortOrder=[]),t.interColumnSortOrder=n.qInterColumnSortOrder.concat();var o=i.getValue(n,\"qLayoutExclude.qHyperCubeDef.qInterColumnSortOrder\");o&&p.isOrderedSubset(o,t.interColumnSortOrder)&&(t.interColumnSortOrder=o.concat())},copyProperties:function(e){var r=e.exportFormat,n=e.properties;Object.keys(n).forEach((function(e){r.properties[e]=n[e]}))},updateLayoutExclude:function(e){var r=e.exportFormat,n=e.properties;n.qLayoutExclude||(n.qLayoutExclude={}),n.qLayoutExclude.disabled&&(Object.keys(n.qLayoutExclude.disabled).forEach((function(e){r.properties.hasOwnProperty(e)||(r.properties[e]=n.qLayoutExclude.disabled[e])})),delete n.qLayoutExclude.disabled),n.qLayoutExclude.changed&&(!function(e){Object.keys(e.qLayoutExclude.changed).forEach((function(r){e.qLayoutExclude.changed[r].to===i.getValue(e,r)&&i.setValue(e,r,e.qLayoutExclude.changed[r].from)}))}(n),delete n.qLayoutExclude.changed),n.qLayoutExclude.quarantine&&!i.isEmpty(n.qLayoutExclude.quarantine)||delete n.qLayoutExclude},storeMeasuresModifiers:function(e){e.forEach((function(e){m.a.cleanUpMeasure(e),e.qDef.modifiers&&(e.store={modifiers:e.qDef.modifiers},delete e.qDef.modifiers)}))}};function y(e,r,n){var t,o,a=i.getValue(e,r);if(!i.isAtomicValue(a))try{if((o=(o=(t=JSON.stringify(a)).match(/:\\{/g))?o.length:0)>2)return;a=JSON.parse(t)}catch(e){return}i.getValue(e,\"qLayoutExclude.quarantine\")||i.setValue(e,\"qLayoutExclude.quarantine\",{});var s=i.getValue(e,\"qLayoutExclude.quarantine\");s[n]||(s[n]={}),s[n][r]=a}var q=n(0),b=n.n(q);function D(e,r){var n=b()(!0,{},r,e);return i.getValue(n,\"qOtherTotalSpec.qOtherCounted\")||i.setValue(n,\"qOtherTotalSpec.qOtherCounted\",{qv:\"10\"}),i.getValue(n,\"qOtherTotalSpec.qOtherLimit\")||i.setValue(n,\"qOtherTotalSpec.qOtherLimit\",{qv:\"0\"}),n.hasOwnProperty(\"othersLabel\")||(n.othersLabel=\"Others\"),n}function v(e,r){return b()(!0,{},r,e)}function g(e,r,n){return\"function\"==typeof e?e(r):Number.isNaN(+e)?n:e}var h=Math.pow(2,53)-1;function x(e){return function(e){if(Array.isArray(e))return E(e)}(e)||function(e){if(\"undefined\"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,r){if(!e)return;if(\"string\"==typeof e)return E(e,r);var n=Object.prototype.toString.call(e).slice(8,-1);\"Object\"===n&&e.constructor&&(n=e.constructor.name);if(\"Map\"===n||\"Set\"===n)return Array.from(e);if(\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return E(e,r)}(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function E(e,r){(null==r||r>e.length)&&(r=e.length);for(var n=0,t=new Array(r);n<r;n++)t[n]=e[n];return t}function A(e){return function(e){if(Array.isArray(e))return C(e)}(e)||function(e){if(\"undefined\"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,r){if(!e)return;if(\"string\"==typeof e)return C(e,r);var n=Object.prototype.toString.call(e).slice(8,-1);\"Object\"===n&&e.constructor&&(n=e.constructor.name);if(\"Map\"===n||\"Set\"===n)return Array.from(e);if(\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return C(e,r)}(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function C(e,r){(null==r||r>e.length)&&(r=e.length);for(var n=0,t=new Array(r);n<r;n++)t[n]=e[n];return t}var I={importCommonProperties:function(e,r,n){var t=\"masterobject\"===i.getValue(r,\"properties.qInfo.qType\")?\"masterobject\":i.getValue(n,\"qInfo.qType\");i.setValue(e,\"qInfo.qType\",t),e.visualization=n.visualization},copyPropertyIfExist:function(e,r,n){r.hasOwnProperty(e)&&(n[e]=r[e])},copyPropertyOrSetDefault:function(e,r,n,t){r.hasOwnProperty(e)?n[e]=r[e]:n[e]=t},getDefaultDimension:function(){return{qDef:{autoSort:!0,cId:\"\",othersLabel:\"Others\"},qLibraryId:\"\",qNullSuppression:!1,qOtherLabel:\"Others\",qOtherTotalSpec:{qOtherLimitMode:\"OTHER_GE_LIMIT\",qOtherMode:\"OTHER_OFF\",qOtherSortMode:\"OTHER_SORT_DESCENDING\",qSuppressOther:!1}}},getDefaultMeasure:function(){return{qDef:{autoSort:!0,cId:\"\",numFormatFromTemplate:!0},qLibraryId:\"\",qTrendLines:[]}},addDimensions:function(e){var r,n=e.exportFormat,t=e.maxDimensions,o=e.minDimensions,i=e.newHyperCubeDef,a=e.defaultDimension,s=n.data[0];for(r=0;r<s.dimensions.length;++r){var u=D(s.dimensions[r],a);i.qDimensions.length<t?i.qDimensions.push(u):i.qLayoutExclude.qHyperCubeDef.qDimensions.push(u)}for(r=0;r<s.excludedDimensions.length;++r){var l=D(s.excludedDimensions[r],a);i.qDimensions.length<o?i.qDimensions.push(l):i.qLayoutExclude.qHyperCubeDef.qDimensions.push(l)}},addMeasures:function(e){var r,n=e.exportFormat,t=e.maxMeasures,o=e.minMeasures,i=e.newHyperCubeDef,a=e.defaultMeasure,s=n.data[0];for(r=0;r<s.measures.length;++r){var u=v(s.measures[r],a);i.qMeasures.length<t?i.qMeasures.push(u):i.qLayoutExclude.qHyperCubeDef.qMeasures.push(u)}for(r=0;r<s.excludedMeasures.length;++r){var l=v(s.excludedMeasures[r],a);i.qMeasures.length<o?i.qMeasures.push(l):i.qLayoutExclude.qHyperCubeDef.qMeasures.push(l)}},getMaxMinDimensionMeasure:function(e){var r=e.exportFormat,n=e.dataDefinition,t=void 0===n?{}:n,o=r.data[0],i=t.dimensions||{max:0},a=t.measures||{max:0},s=g(a.max,o.dimensions.length,h),u=g(a.min,o.dimensions.length,0);return{maxDimensions:g(i.max,s,h),minDimensions:g(i.min,u,0),maxMeasures:s,minMeasures:u}},setInterColumnSortOrder:function(e){var r=e.exportFormat,n=e.newHyperCubeDef,t=r.data[0],o=n.qDimensions.length+n.qMeasures.length;n.qInterColumnSortOrder=t.interColumnSortOrder.concat();var i=n.qInterColumnSortOrder.length;if(i!==o)for(n.qLayoutExclude&&(n.qLayoutExclude.qHyperCubeDef.qInterColumnSortOrder=t.interColumnSortOrder.concat());i!==o;)i<o?(p.indexAdded(n.qInterColumnSortOrder,i),++i):(--i,p.indexRemoved(n.qInterColumnSortOrder,i))},createNewProperties:function(e){var r=e.exportFormat,n=e.initialProperties,t=e.hypercubePath,o={qLayoutExclude:{disabled:{},quarantine:{}}};return Object.keys(r.properties).forEach((function(e){\"qLayoutExclude\"===e?r.properties[e].quarantine&&(o.qLayoutExclude.quarantine=b()(!0,{},r.properties[e].quarantine)):\"qHyperCubeDef\"===e&&t?i.setValue(o,\"\".concat(t,\".qHyperCubeDef\"),r.properties.qHyperCubeDef):n.hasOwnProperty(e)||-1!==[\"qMetaDef\",\"descriptionExpression\",\"labelExpression\"].indexOf(e)||function(e,r){return\"components\"===r&&Array.isArray(e[r])&&e[r].some((function(e){return\"general\"===e.key}))}(r.properties,e)?o[e]=r.properties[e]:o.qLayoutExclude.disabled[e]=r.properties[e]})),null===(o=b()(!0,{},n,o)).components&&(o.components=[]),o},shouldInitLayoutExclude:function(e){var r=e.exportFormat,n=e.maxDimensions,t=e.minDimensions,o=e.maxMeasures,i=e.minMeasures,a=r.data[0];return a.dimensions.length>n&&n>0||a.measures.length>o&&o>0||a.excludedDimensions.length>0&&a.dimensions.length+a.excludedDimensions.length>t||a.excludedMeasures.length>0&&a.measures.length+a.excludedMeasures.length>i||!o&&a.measures.length>0||!n&&a.dimensions.length>0},initLayoutExclude:function(e){var r=e.exportFormat,n=e.maxDimensions,t=e.minDimensions,o=e.maxMeasures,i=e.minMeasures,a=e.newHyperCubeDef,s=r.data[0];a.qLayoutExclude||(a.qLayoutExclude={}),a.qLayoutExclude.qHyperCubeDef||(a.qLayoutExclude.qHyperCubeDef={}),(s.dimensions.length>n&&n>0||s.excludedDimensions&&s.excludedDimensions.length&&s.dimensions.length+s.excludedDimensions.length>t)&&(a.qLayoutExclude.qHyperCubeDef.qDimensions||(a.qLayoutExclude.qHyperCubeDef.qDimensions=[])),(s.measures.length>o&&o>0||s.excludedMeasures&&s.excludedMeasures.length&&s.measures.length+s.excludedMeasures.length>i)&&(a.qLayoutExclude.qHyperCubeDef.qMeasures||(a.qLayoutExclude.qHyperCubeDef.qMeasures=[])),!o&&s.measures.length&&(a.qLayoutExclude.qHyperCubeDef.qMeasures||(a.qLayoutExclude.qHyperCubeDef.qMeasures=[])),!n&&s.dimensions.length&&(a.qLayoutExclude.qHyperCubeDef.qDimensions||(a.qLayoutExclude.qHyperCubeDef.qDimensions=[]))},updateDimensionsOnAdded:function(e){var r=e.newProperties,n=e.dataDefinition,t=e.hypercubePath;if(n.dimensions&&\"function\"==typeof n.dimensions.added){var o=i.getValue(r,t||\"\").qHyperCubeDef,a=x(o.qDimensions);o.qDimensions=[],a.forEach((function(e){o.qDimensions.push(e),n.dimensions.added(e,r)}))}},updateMeasuresOnAdded:function(e){var r=e.newProperties,n=e.dataDefinition,t=e.hypercubePath;if(n.measures&&\"function\"==typeof n.measures.added){var o=i.getValue(r,t||\"\").qHyperCubeDef,a=A(o.qMeasures);o.qMeasures=[],a.forEach((function(e){o.qMeasures.push(e),n.measures.added(e,r)}))}},restoreMeasuresModifiers:function(e){var r=e.measures,n=e.modifierTypes;r&&n&&m.a.isSupportedModifiers(n)&&r.forEach((function(e){e.store&&e.store.modifiers&&(e.qDef.modifiers=e.store.modifiers),delete e.store}))}};function M(e,r){var n=i.getValue(e,\"qLayoutExclude.quarantine\",{})[r];return!!n&&(Object.keys(n).forEach((function(r){i.setValue(e,r,n[r])})),delete e.qLayoutExclude.quarantine[r],!0)}var S={exportProperties:function(e){var r=e.propertyTree,n=e.hypercubePath,t=e.viewDataMode,o=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,r={data:[],properties:{}},n=0;n<e;++n)r.data.push({dimensions:[],measures:[],excludedDimensions:[],excludedMeasures:[],interColumnSortOrder:[]});return r}(),a=r.qProperty,s=i.getValue(a,n||\"\"),u=s.qHyperCubeDef;return u.qInterColumnSortOrder||(u.qInterColumnSortOrder=[]),d.addDimensions({exportFormat:o,qHyperCubeDef:u}),d.addMeasures({exportFormat:o,qHyperCubeDef:u}),d.setInterColumnSortOrder({exportFormat:o,qHyperCubeDef:u}),delete u.qLayoutExclude,d.copyProperties({exportFormat:o,properties:a}),n&&(o.properties.qHyperCubeDef=u,delete s.qHyperCubeDef),d.updateLayoutExclude({exportFormat:o,properties:a}),t||d.storeMeasuresModifiers(o.properties.qHyperCubeDef.qMeasures),Array.isArray(o.properties.filters)&&(y(o.properties,\"filters\",\"storedFilters\"),delete o.properties.filters),o.properties.qHyperCubeDef.qContextSetExpression&&(y(o.properties,\"qHyperCubeDef.qContextSetExpression\",\"storedFilters\"),o.properties.qHyperCubeDef.qContextSetExpression=\"\"),o.properties.qHyperCubeDef.qDynamicScript&&o.properties.qHyperCubeDef.qDynamicScript.length&&(y(o.properties,\"qHyperCubeDef.qDynamicScript\",\"dynamicScript\"),o.properties.qHyperCubeDef.qDynamicScript=[]),o},importProperties:function(e){var r=e.exportFormat,n=e.initialProperties,t=void 0===n?{}:n,o=e.dataDefinition,a=void 0===o?{}:o,s=e.defaultPropertyValues,u=void 0===s?{}:s,l=e.hypercubePath,c=e.extension,p=e.supportedFilters,f=void 0===p||p,m=e.isHCModifierSupported,d=void 0===m||m,y={qChildren:[]},q=I.createNewProperties({exportFormat:r,initialProperties:t,hypercubePath:l}),b=i.getValue(t,l||\"\").qHyperCubeDef,D=i.getValue(q,l||\"\").qHyperCubeDef,v=I.getMaxMinDimensionMeasure({exportFormat:r,dataDefinition:a}),g=v.maxDimensions,h=v.minDimensions,x=v.maxMeasures,E=v.minMeasures,A=u.defaultDimension,C=void 0===A?I.getDefaultDimension():A,S=u.defaultMeasure,L=void 0===S?I.getDefaultMeasure():S;D.qDimensions.length=0,D.qMeasures.length=0,I.shouldInitLayoutExclude({exportFormat:r,maxDimensions:g,minDimensions:h,maxMeasures:x,minMeasures:E})&&I.initLayoutExclude({exportFormat:r,maxDimensions:g,minDimensions:h,maxMeasures:x,minMeasures:E,newHyperCubeDef:D}),I.addDimensions({exportFormat:r,maxDimensions:g,minDimensions:h,newHyperCubeDef:D,defaultDimension:C}),I.addMeasures({exportFormat:r,maxMeasures:x,minMeasures:E,newHyperCubeDef:D,defaultMeasure:L}),I.updateDimensionsOnAdded({newProperties:q,dataDefinition:a,hypercubePath:l}),I.updateMeasuresOnAdded({newProperties:q,dataDefinition:a,hypercubePath:l}),I.setInterColumnSortOrder({exportFormat:r,newHyperCubeDef:D}),I.copyPropertyIfExist(\"qMaxStackedCells\",b,D),I.copyPropertyIfExist(\"qNoOfLeftDims\",b,D),I.copyPropertyOrSetDefault(\"qInitialDataFetch\",b,D,[{qTop:0,qLeft:0,qWidth:0,qHeight:0}]),I.copyPropertyOrSetDefault(\"qMode\",b,D,\"S\"),I.copyPropertyOrSetDefault(\"qReductionMode\",b,D,\"N\"),I.copyPropertyOrSetDefault(\"qSortbyYValue\",b,D),I.copyPropertyOrSetDefault(\"qIndentMode\",b,D),I.copyPropertyOrSetDefault(\"qShowTotalsAbove\",b,D),I.importCommonProperties(q,r,t),y.qProperty=q;var O=i.getValue(c||{},\"support.modifiers\");return I.restoreMeasuresModifiers({measures:D.qMeasures,modifierTypes:O}),f&&M(y.qProperty,\"storedFilters\"),\"S\"===D.qMode&&d&&M(y.qProperty,\"dynamicScript\"),y}},L={cellBackgroundColor:!0,cellForegroundColor:!0,colorByAlternative:!0,colorByExpression:!0,tooltip:!0,urlLabel:!0,url:!0};function O(e,r,n,t){r=r||[];var o=c(e,t,n),i=c(r,t,n);if(-1!==o&&-1===i){var a=e.splice(o,1);r.push(a[0])}return r}function P(e,r){return e.length!==r}var F={create:function(e,r){if(!e||!L[e])throw new Error(\"Attribute Expressions Util: ID required\");var n={};return r&&Object.keys(r).forEach((function(e){n[e]=r[e]})),n.id=e,n.qAttribute=!0,n},moveByIdFromGroup:function(e,r,n,t,o){n=n||\"qAttributeExpressions\",o=o||\"id\";for(var i=0;i<e.length;i++){var a=e[i][n],s=r.length;if(O(a,r,t,o),P(r,s))return r}return r},IDMAP:{CELL_BACKGROUND_COLOR:\"cellBackgroundColor\",CELL_FOREGROUND_COLOR:\"cellForegroundColor\",COLOR_BY_ALTERNATIVE:\"colorByAlternative\",COLOR_BY_EXPRESSION:\"colorByExpression\",TOOLTIP:\"tooltip\",CELL_LINK_LABEL:\"urlLabel\",CELL_LINK_URL:\"url\"}};var N={getNumDimensions:function(e){return i.getValue(e,\"qHyperCubeDef.qDimensions.length\",0)},getNumMeasures:function(e){return i.getValue(e,\"qHyperCubeDef.qMeasures.length\",0)},wrapFieldName:function(e){return e.split(\" \").length>1&&\"=\"!==e[0]&&\"[\"!==e[0]?\"[\".concat(e,\"]\"):e},getItemLabel:function(e){return e.label||e.name}},V={colorModeOptions:{primary:function(){return!0},dimension:function(e){return N.getNumDimensions(e)>0&&N.getNumMeasures(e)<=1},multiColor:function(e){return N.getNumMeasures(e)>1},measure:function(e){return N.getNumDimensions(e)>0},expression:function(e){return N.getNumMeasures(e)>=1}}},w={colorModeOptions:{primary:function(){return!0},dimension:function(){return!0},multiColor:function(){return!1},measure:function(){return!0},expression:function(e){return N.getNumMeasures(e)>=1}}},H={scatterplot:w,\"sn-scatter-plot\":w,piechart:{colorModeOptions:{primary:function(){return!0},dimension:function(){return!0},multiColor:function(){return!1},measure:function(){return!0},expression:function(e){return N.getNumMeasures(e)>=1}}},linechart:{colorModeOptions:{primary:function(){return!0},dimension:function(e){return N.getNumDimensions(e)>1},multiColor:function(e){return N.getNumMeasures(e)>1},measure:function(e){return N.getNumDimensions(e)<=1},expression:function(e){return N.getNumMeasures(e)>=1}}},map:{colorModeOptions:{primary:function(){return!0},dimension:function(e){return N.getNumDimensions(e)>=1},multiColor:function(e){return N.getNumMeasures(e)>1},measure:function(e){return N.getNumDimensions(e)>=1},expression:function(e){return N.getNumDimensions(e)>=1}}},distributionplot:{colorModeOptions:{primary:function(){return!0},dimension:function(){return!0},multiColor:function(){return!1},measure:function(){return!0},expression:function(e){return N.getNumDimensions(e)>=1}}}};function T(e,r,n){if(Array.isArray(e[r])){var t=p.findIndexByPropertyValue(e[r],\"id\",n);t>=0&&e[r].splice(t,1)}else e[r]=[]}function j(e,r){var n=F.IDMAP.COLOR_BY_ALTERNATIVE;e.forEach((function(e){T(e,\"qAttributeDimensions\",n),T(e,\"qAttributeExpressions\",n)})),r.forEach((function(e){T(e,\"qAttributeDimensions\",n),T(e,\"qAttributeExpressions\",n)}))}function _(e,r){if(r){var n=\"=\"===r.charAt(0);e.color.altLabel=n?{qStringExpression:{qExpr:r.substr(1)}}:r}}function R(e){var r=e.properties,n=e.isDimension,t=e.dimensions,o=e.excludedDimensions,a=e.measures,s=e.label;j(t,o);var u=t[t.length-1];if(u){var l=n?i.getValue(r,\"color.byDimDef\"):i.getValue(r,\"color.byMeasureDef\"),c=i.getValue(r,\"color.formatting.qNumFormat\"),f=i.getValue(r,\"color.formatting.isCustomFormatted\");if(l){var m=F.create(F.IDMAP.COLOR_BY_ALTERNATIVE);switch(l.type){case\"expression\":!function(e){var r=e.attributeExpression,n=e.label,t=e.item,o=e.isDimension,i=e.qNumFormat,a=e.isCustomFormatted;r.label=n||t.label,o?r.qDef=t.key:(r.qExpression=t.key,i&&(r.qNumFormat=i,r.isCustomFormatted=a)),r.matchMeasure=t.activeMeasureIndex,r.label&&\"=\"===r.label.charAt(0)&&(r.labelExpRef=\"color.altLabel\")}({attributeExpression:m,label:s,item:l,isDimension:n,qNumFormat:c,isCustomFormatted:f});break;case\"libraryItem\":!function(e){var r=e.attributeExpression,n=e.measures,t=e.item,o=e.isDimension,i=e.qNumFormat,a=e.isCustomFormatted;o||(r.matchMeasure=p.findIndexByPropertyValue(n,\"qLibraryId\",t.key),i&&(r.qNumFormat=i,r.isCustomFormatted=a)),void 0!==t.expression?r.qExpression=t.expression:r.qLibraryId=t.key,r.colorMapRef=t.key}({attributeExpression:m,measures:a,item:l,isDimension:n,qNumFormat:c,isCustomFormatted:f})}n?(m.qSortBy={qSortByAscii:1},u.qAttributeDimensions.push(m)):u.qAttributeExpressions.push(m)}}}function B(e,r,n,t){var o,i,a,s={};switch(e){case\"dimension\":n.qLibraryId?(s.type=\"dimension\",s.name=n.qLibraryId,s.id=n.qLibraryId):(s.type=\"field\",r?(s.name=n.label||n.qDef,s.id=n.qDef):(s.name=n.qDef.qFieldDefs[0],s.label=(a=n.qDef).qLabelExpression?a.qLabelExpression:a.qFieldLabels&&a.qFieldLabels[0]?a.qFieldLabels[0]:a.qFieldDefs[0]));break;case\"measure\":(o=function(e,r){return r?e.qLibraryId:m.a.measureBase.getLibraryId(e)}(n,r))?(s.type=\"measure\",s.name=o,s.id=o,(i=function(e,r){return m.a.hasActiveModifiers({measures:[e]})&&r?e.qDef.qDef:void 0}(n,t))&&(s.expression=i)):(s.type=\"expression\",r?(s.name=n.label||n.qExpression,s.id=n.qExpression):(s.name=n.qDef.qDef,s.label=function(e){var r=e.qDef;return r.qLabelExpression?r.qLabelExpression:r.qLabel?r.qLabel:r.qDef}(n)));break;default:throw new Error('columnType should be \"dimension\" or \"measure\"')}return s}var k={useMasterNumberFormat:function(e){e.quarantine={qNumFormat:e.qNumFormat||{},isCustomFormatted:e.isCustomFormatted||!1},e.qNumFormat=null,e.isCustomFormatted=void 0}};function U(e,r,n,t){var o=n?\"expression\":r.type,i=e.color,a=i.mode,s=N.getItemLabel(r);switch(_(e,s||\"\"),o){case\"field\":a=\"byDimension\",i.byDimDef={label:r.label||N.wrapFieldName(r.name),key:N.wrapFieldName(r.name),type:\"expression\",activeDimensionIndex:r.activeDimensionIndex};break;case\"expression\":a=\"byMeasure\",i.byMeasureDef={label:n||s,key:n||r.name,type:\"expression\",activeMeasureIndex:r.activeMeasureIndex};break;case\"dimension\":a=\"byDimension\",i.byDimDef={label:r.name,key:r.id,type:\"libraryItem\",activeDimensionIndex:r.activeDimensionIndex};break;case\"measure\":a=\"byMeasure\",i.byMeasureDef={label:r.name,key:r.id,expression:r.expression,type:\"libraryItem\",activeMeasureIndex:r.activeMeasureIndex},i.formatting&&k.useMasterNumberFormat(i.formatting)}t||(i.auto=!1,i.mode=a)}function G(e,r){var n=i.getValue(e,\"\".concat(r,\"qDimensions\"),[]),t=n[function(e,r,n){var t=i.getValue(r,\"visualization\"),o=n.split(\".\"),a=Number(o[1]),s=i.getValue(r,\"layers.\".concat(a,\".type\"));return 2===e.length&&\"map\"===t&&\"point\"===s}(n,e,r)?0:n.length-1],o=F.IDMAP.COLOR_BY_ALTERNATIVE,a=p.findItemByPropertyValue(t.qAttributeDimensions,\"id\",o);return U(e,B(\"dimension\",!!a,a||t)),!!a}function W(e,r){var n=i.getValue(e,\"\".concat(r,\"qDimensions\"),[]),t=i.getValue(e,\"\".concat(r,\"qMeasures\"),[]),o=i.getValue(e,\"\".concat(r,\"qLayoutExclude.qHyperCubeDef.qDimensions\"),[]),a=i.getValue(e,\"color.byDimDef\");if(a&&_(e,a.label),function(e){return!!(e&&e.activeDimensionIndex>-1)}(a))!function(e,r){var n=i.getValue(e,\"\".concat(r,\"qDimensions\"),[]),t=i.getValue(e,\"color.byDimDef\");t.activeDimensionIndex=Math.min(t.activeDimensionIndex,n.length-1);var o=B(\"dimension\",!1,n[t.activeDimensionIndex]);o.activeDimensionIndex=t.activeDimensionIndex,U(e,o)}(e,r);else if(function(e){return!e||!e.key}(a)&&G(e,r))return;R({properties:e,isDimension:!0,dimensions:n,excludedDimensions:o,measures:t,label:i.getValue(e,\"color.byDimDef.label\")})}function $(e,r){var n=i.getValue(e,\"\".concat(r,\"qDimensions\"),[]),t=i.getValue(e,\"\".concat(r,\"qMeasures\"),[]),o=i.getValue(e,\"\".concat(r,\"qLayoutExclude.qHyperCubeDef.qDimensions\"),[]),a=i.getValue(e,\"color.byMeasureDef\");if(a&&_(e,a.label),function(e){return!!(e&&e.activeMeasureIndex>-1)}(a))!function(e,r){var n=i.getValue(e,\"\".concat(r,\"qMeasures\"),[]),t=i.getValue(e,\"color.byMeasureDef\");if(t.activeMeasureIndex=Math.min(t.activeMeasureIndex,n.length-1),t.activeMeasureIndex>-1){var o=B(\"measure\",!1,n[t.activeMeasureIndex],!0);o.activeMeasureIndex=t.activeMeasureIndex,U(e,o)}}(e,r);else if(function(e,r){return(!e||!e.key)&&r.length>0}(a,t)&&function(e,r){var n=i.getValue(e,\"\".concat(r,\"qDimensions\"),[]),t=i.getValue(e,\"\".concat(r,\"qMeasures\"),[]),o=n[n.length-1],a=F.IDMAP.COLOR_BY_ALTERNATIVE,s=p.findItemByPropertyValue(o.qAttributeExpressions,\"id\",a);return U(e,B(\"measure\",!!s,s||t[0])),!!s}(e,r))return;R({properties:e,isDimension:!1,dimensions:n,excludedDimensions:o,measures:t,label:i.getValue(e,\"color.byMeasureDef.label\")})}var z={changeProperty:function(e,r,n){i.setValue(e,r,n),i.isAtomicValue(n)&&function(e,r,n){var t=e.qLayoutExclude;t&&(t.changed||(t.changed={}),t.changed[r]={from:i.getValue(e,r),to:n})}(e,r,n)},getCanColorBy:function(e,r){var n={primary:!0};if(e){var t=(H[r]||V).colorModeOptions||V.colorModeOptions;n.byDimension=t.dimension(e),n.byMeasure=t.measure(e),n.byMultiple=t.multiColor(e),n.byExpression=t.expression(e)}return n},shouldUpdateColorBy:function(e){var r=e.canColorBy,n=e.autoColor,t=e.colorMode,o=e.dimensions;return!(r[t]&&!n&&(\"byDimension\"!==t&&\"byMeasure\"!==t||!o.length))},updateColorBy:function(e,r){var n=i.getValue(e,\"color.mode\"),t=i.getValue(e,\"color.auto\"),o=i.getValue(e,\"\".concat(r,\"qDimensions\"),[]),a=i.getValue(e,\"\".concat(r,\"qMeasures\"),[]),s=i.getValue(e,\"\".concat(r,\"qLayoutExclude.qHyperCubeDef.qDimensions\"),[]);t?j(o,s):function(e){var r=e.auto,n=e.colorMode,t=e.dimensions;return!r&&\"byDimension\"===n&&t.length>0}({auto:t,colorMode:n,dimensions:o})?W(e,r):function(e){var r=e.auto,n=e.colorMode,t=e.dimensions,o=e.measures,a=e.properties,s=i.getValue(a,\"visualization\");return!(r||\"byMeasure\"!==n||!t.length||\"map\"!==s&&!o.length)}({auto:t,colorMode:n,dimensions:o,measures:a,properties:e})?$(e,r):function(e,r){var n=i.getValue(e,\"color.mode\"),t=i.getValue(e,\"\".concat(r,\"qDimensions\"),[]),o=i.getValue(e,\"\".concat(r,\"qMeasures\"),[]),a=i.getValue(e,\"\".concat(r,\"qLayoutExclude.qHyperCubeDef.qDimensions\"),[]);\"byMultiple\"===n&&o.length<2&&i.setValue(e,\"color.mode\",\"primary\"),j(t,a)}(e,r)},deleteTotalMode:function(e){e.forEach((function(e){e.qOtherTotalSpec&&\"qTotalMode\"in e.qOtherTotalSpec&&delete e.qOtherTotalSpec.qTotalMode}))},shouldAddColorByExpression:function(e){var r=e.shouldUpdateColorBy,n=e.properties,t=i.getValue(n,\"qHyperCubeDef.qMeasures\",[]),o=i.getValue(n,\"color.mode\",\"\");return!r&&\"byExpression\"===o&&t.length>0},addColorByExpression:function(e){var r=i.getValue(e,\"qHyperCubeDef.qMeasures.0.qAttributeExpressions\",[]),n=i.getValue(e,\"color.colorExpression\",\"\");r.splice(0,0,{qExpression:n,id:\"colorByExpression\"}),i.setValue(e,\"qHyperCubeDef.qMeasures.0.qAttributeExpressions\",r)},switchToAutoColor:function(e){i.setValue(e,\"color.mode\",\"primary\"),i.setValue(e,\"color.auto\",!0)},shouldSwitchToColorPersistent:function(e){var r=i.getValue(e,\"qHyperCubeDef.qDimensions\",[]),n=i.getValue(e,\"color.persistent\",!1);return r.length>1&&!n}};var Y={exportProperties:function(e){var r=e.propertyTree,n=e.hypercubePath,t=e.viewDataMode,o=S.exportProperties({propertyTree:r,hypercubePath:n,viewDataMode:t}),i=o.data[0],a=i.dimensions.concat(i.excludedDimensions),s=i.measures.concat(i.excludedMeasures),u=F.IDMAP,l=u.COLOR_BY_ALTERNATIVE,c=u.COLOR_BY_EXPRESSION;return F.moveByIdFromGroup(a,[],\"qAttributeDimensions\",l),F.moveByIdFromGroup(a,[],\"qAttributeExpressions\",l),F.moveByIdFromGroup(s,[],\"qAttributeExpressions\",c),o},importProperties:function(e){var r=e.exportFormat,n=e.initialProperties,t=e.dataDefinition,o=e.defaultPropertyValues,a=e.hypercubePath,s=e.extension,u=e.supportedFilters,l=e.isHCModifierSupported,c=S.importProperties({exportFormat:r,initialProperties:n,dataDefinition:t,defaultPropertyValues:o,hypercubePath:a,extension:s,supportedFilters:u,isHCModifierSupported:l}),p=c.qProperty,f=i.getValue(p,\"visualization\"),m=i.getValue(p,\"qHyperCubeDef.qDimensions\",[]),d=i.getValue(p,\"color.mode\",\"\"),y=i.getValue(p,\"color.auto\",\"\"),q=z.getCanColorBy(p,f),b=z.shouldUpdateColorBy({canColorBy:q,autoColor:y,colorMode:d,dimensions:m});return q[d]?z.shouldAddColorByExpression({shouldUpdateColorBy:b,properties:p})&&z.addColorByExpression(p):z.switchToAutoColor(p),b&&z.updateColorBy(p,\"qHyperCubeDef.\"),z.shouldSwitchToColorPersistent(p)&&z.changeProperty(p,\"color.persistent\",!0),z.deleteTotalMode(m),c}};var J=[\"bar\",\"marker\",\"line\"];var K={handleAutoMinMax:function(e){var r=e.initialProperties,n=e.properties;r.measureAxis&&void 0===r.measureAxis.autoMinMax?M(n,\"unsupportedAutoMinMax\")||b()(n.measureAxis,r.measureAxis):M(n,\"supportedAutoMinMax\")||b()(n.measureAxis,r.measureAxis)},handleMeasuresAxis:function(e){var r,n=e.exportFormat,t=e.initialProperties,o=e.properties,i=e.measureType,a=o.qHyperCubeDef,s=o.measureAxis;if(function(e){var r=e.exportFormat,n=e.initialProperties;return!(!r.properties.measureAxes||n.measureAxes||!n.measureAxis||void 0===n.measureAxis.autoMinMax)}({exportFormat:n,initialProperties:t})){var u=function(e){var r=[];return e.qMeasures.length>0&&e.qMeasures.forEach((function(e){if(e.qDef.series){var n=e.qDef.series,t=n.type,o=n.axis;r[o]||(r[o]={axis:o,type:{line:0,marker:0,bar:0,total:0}}),J.includes(t)&&r[o].type[t]++,r[o].type.total++}})),r}(a);u.length?(i&&(r=u.filter((function(e){return e.type[i]>0})).sort((function(e,r){return r.type[i]-e.type[i]}))),r&&r.length||(r=u.sort((function(e,r){return r.type.total-e.type.total}))),r&&r[0]&&b()(s,n.properties.measureAxes[r[0].axis])):b()(s,n.properties.measureAxes[0])}},setInterColumnSortOrder:function(e){if(e.qDimensions.length>1){var r=e.qInterColumnSortOrder.indexOf(0);if(0!==r){var n=e.qInterColumnSortOrder[0];e.qInterColumnSortOrder[0]=0,e.qInterColumnSortOrder[r]=n}}}};var X={exportProperties:function(e){var r=e.propertyTree,n=e.hypercubePath,t=e.viewDataMode,o=e.supportedAutoMinMax,i=void 0===o||o,a=Y.exportProperties({propertyTree:r,hypercubePath:n,viewDataMode:t}),s=a.properties;return i?(y(s,\"measureAxis.min\",\"supportedAutoMinMax\"),y(s,\"measureAxis.max\",\"supportedAutoMinMax\")):(y(s,\"measureAxis.min\",\"unsupportedAutoMinMax\"),y(s,\"measureAxis.max\",\"unsupportedAutoMinMax\")),a},importProperties:function(e){var r=e.exportFormat,n=e.initialProperties,t=e.dataDefinition,o=e.defaultPropertyValues,i=e.hypercubePath,a=e.measureType,s=e.extension,u=e.supportedFilters,l=e.isHCModifierSupported,c=Y.importProperties({exportFormat:r,initialProperties:n,dataDefinition:t,defaultPropertyValues:o,hypercubePath:i,extension:s,supportedFilters:u,isHCModifierSupported:l}),p=c.qProperty;return K.handleAutoMinMax({initialProperties:n,properties:p}),K.handleMeasuresAxis({exportFormat:r,initialProperties:n,properties:p,measureType:a}),K.setInterColumnSortOrder(p.qHyperCubeDef),c}};function Q(e,r,n){return\"qLayoutExclude.quarantine.\".concat(e,\".\").concat(r,\".\").concat(n)}function Z(e){var r=e.properties,n=e.arrayPath,t=e.quarantineName,o=e.arrayName,a=e.itemPath;i.getValue(r,n,[]).forEach((function(e){return function(e){var r=e.properties,n=e.quarantineName,t=e.arrayName,o=e.item,a=e.itemPath,s=i.getValue(o,a);if(void 0!==s){var u=i.getValue(o,\"qDef.cId\");u||(u=i.generateId(),i.setValue(o,\"qDef.cId\",u));var l=Q(n,t,u);i.setValue(r,l,s),i.setValue(o,a,void 0)}}({properties:r,quarantineName:t,arrayName:o,item:e,itemPath:a})}))}function ee(e){var r=e.properties,n=e.arrayPath,t=e.quarantineName,o=e.arrayName,a=e.itemPath;i.getValue(r,n,[]).forEach((function(e){return function(e){var r=e.properties,n=e.quarantineName,t=e.arrayName,o=e.item,a=e.itemPath,s=i.getValue(o,\"qDef.cId\");if(s){var u=Q(n,t,s),l=i.getValue(r,u);void 0!==l&&(i.setValue(o,a,l),i.setValue(r,u,void 0))}}({properties:r,quarantineName:t,arrayName:o,item:e,itemPath:a})}))}var re={quarantine:function(e){Z({properties:e,arrayPath:\"qHyperCubeDef.qMeasures\",quarantineName:\"conditionalColoring\",arrayName:\"measures\",itemPath:\"qDef.conditionalColoring\"})},unquarantine:function(e){ee({properties:e,arrayPath:\"qHyperCubeDef.qMeasures\",itemPath:\"qDef.conditionalColoring\",arrayName:\"measures\",quarantineName:\"conditionalColoring\"})}};var ne={quarantine:function(e){Z({properties:e,arrayPath:\"qHyperCubeDef.qMeasures\",quarantineName:\"conditionalShowHide\",arrayName:\"measures\",itemPath:\"qCalcCondition\"}),Z({properties:e,arrayPath:\"qHyperCubeDef.qDimensions\",quarantineName:\"conditionalShowHide\",arrayName:\"dimensions\",itemPath:\"qCalcCondition\"})},unquarantine:function(e){ee({properties:e,arrayPath:\"qHyperCubeDef.qMeasures\",quarantineName:\"conditionalShowHide\",arrayName:\"measures\",itemPath:\"qCalcCondition\"}),ee({properties:e,arrayPath:\"qHyperCubeDef.qDimensions\",quarantineName:\"conditionalShowHide\",arrayName:\"dimensions\",itemPath:\"qCalcCondition\"})},quarantineAlternative:function(e){Z({properties:e,arrayPath:\"qHyperCubeDef.qLayoutExclude.qHyperCubeDef.qMeasures\",quarantineName:\"conditionalShowHide\",arrayName:\"alternativeMeasures\",itemPath:\"qCalcCondition\"}),Z({properties:e,arrayPath:\"qHyperCubeDef.qLayoutExclude.qHyperCubeDef.qDimensions\",quarantineName:\"conditionalShowHide\",arrayName:\"alternativeDimensions\",itemPath:\"qCalcCondition\"})},unquarantineAlternative:function(e){ee({properties:e,arrayPath:\"qHyperCubeDef.qLayoutExclude.qHyperCubeDef.qMeasures\",quarantineName:\"conditionalShowHide\",arrayName:\"alternativeMeasures\",itemPath:\"qCalcCondition\"}),ee({properties:e,arrayPath:\"qHyperCubeDef.qLayoutExclude.qHyperCubeDef.qDimensions\",quarantineName:\"conditionalShowHide\",arrayName:\"alternativeDimensions\",itemPath:\"qCalcCondition\"})}};r.default={hypercube:S,colorChart:Y,axisChart:X,quarantineProperty:y,unquarantineProperty:M,quarantineArrayProp:Z,unquarantineArrayProp:ee,conditionalColoring:re,conditionalShow:ne}}])}));","import { getValue } from 'qlik-chart-modules';\n\nconst COMMON_COLOR_PROPS = [\n 'altLabel',\n 'auto',\n 'autoMinMax',\n 'byDimDef',\n 'byMeasureDef',\n 'dimensionScheme',\n 'expressionIsColor',\n 'expressionLabel',\n 'measureMax',\n 'measureMin',\n 'measureScheme',\n 'mode',\n 'paletteColor',\n 'persistent',\n 'reverseScheme',\n 'useBaseColors',\n 'useDimColVal',\n];\n\nfunction move(from, to, list) {\n for (let i = 0; i < list.length; ++i) {\n const name = list[i];\n if (from[name] !== undefined) {\n to[name] = from[name];\n delete from[name];\n }\n }\n}\n\nfunction importColors(properties) {\n properties.color.point = properties.color.point || {};\n move(properties.color, properties.color.point, COMMON_COLOR_PROPS);\n if (properties.color.colorExpression) {\n properties.color.point.expression = {\n qValueExpression: { qExpr: properties.color.colorExpression },\n };\n delete properties.color.colorExpression;\n }\n // TODO: Change byExpression and not expressionIsColor to byMeasure when supported\n properties.color.point.expressionIsColor = true;\n}\nfunction exportColors(properties) {\n move(properties.color.point, properties.color, COMMON_COLOR_PROPS);\n properties.color.colorExpression = getValue(properties, 'color.point.expression.qValueExpression.qExpr', '');\n delete properties.color.point.expression;\n}\n\nexport default {\n importColors,\n exportColors,\n};\n","import conversion from 'qlik-object-conversion';\nimport distributionPlotColorBy from './distributionplot-color-by';\n\nexport function importProperties({ dataDefinition, defaultPropertyValues, exportFormat, initialProperties }) {\n const propTree = conversion.axisChart.importProperties({\n exportFormat,\n initialProperties,\n dataDefinition,\n defaultPropertyValues,\n });\n\n const props = propTree.qProperty;\n if (props.qHyperCubeDef.qInterColumnSortOrder.length === 3) {\n props.qHyperCubeDef.qInterColumnSortOrder = [1, 2, 0]; // Since the distribution plot does not allow re-ordering of sorting prioritizes we must set this manually on conversion\n }\n distributionPlotColorBy.importColors(props);\n props.qHyperCubeDef.qAlwaysFullyExpanded = true;\n return propTree;\n}\n\nexport function exportProperties({ propertyTree, viewDataMode }) {\n const exportFormat = conversion.axisChart.exportProperties({\n propertyTree,\n viewDataMode,\n });\n\n distributionPlotColorBy.exportColors(propertyTree.qProperty);\n\n return exportFormat;\n}\n","import properties from './object-properties';\nimport data from './distributionplot-data';\nimport { importProperties, exportProperties } from './distributionplot-import-export';\n\nexport default (env) => {\n const dataDefinition = data(env);\n return {\n properties,\n data: {\n targets: [dataDefinition],\n },\n importProperties({ exportFormat, initialProperties }) {\n return importProperties({ dataDefinition, exportFormat, initialProperties });\n },\n exportProperties,\n };\n};\n","const ExpressionWrapper = {\n wrapExpression,\n};\n\nfunction wrapExpression(expression) {\n const result = expression.replace(/\\]/g, ']]');\n\n return result ? `[${result}]` : '';\n}\n\nexport default ExpressionWrapper;\n","/* eslint-disable no-restricted-syntax */\n/* eslint-disable guard-for-in */\nconst ExpressionReplacer = {\n replaceExpressionTokens,\n createRegExp,\n};\n\nfunction replaceExpressionTokens(expression, tokenMappings, tokenIdentifiers) {\n const identifiers = {\n start: (tokenIdentifiers && tokenIdentifiers.start) || '{{',\n end: (tokenIdentifiers && tokenIdentifiers.end) || '}}',\n };\n\n let returnExpression = expression;\n let tokenExpression;\n let tokenString;\n\n for (const key in tokenMappings) {\n tokenExpression = tokenMappings[key];\n tokenString = identifiers.start + key + identifiers.end;\n\n returnExpression = returnExpression.replace(createRegExp(tokenString, true), tokenExpression);\n }\n\n return returnExpression;\n}\n\nfunction createRegExp(string, isGlobal, isGrouped) {\n const escapedString = escapeRegExp(string);\n const regexpString = isGrouped ? `(${escapedString})` : escapedString;\n return isGlobal ? new RegExp(regexpString, 'g') : new RegExp(regexpString);\n}\n\nfunction escapeRegExp(str) {\n return str.replace(/[-[\\]/{}()*+?.\\\\^$|]/g, '\\\\$&');\n}\n\nexport default ExpressionReplacer;\n","/* eslint-disable guard-for-in */\n/* eslint-disable no-restricted-syntax */\nimport ExpressionWrapper from './expression-wrapper';\nimport ExpressionReplacer from './expression-replacer';\n\nconst ExpressionGenerator = {\n generateExpression,\n};\n\n// builds up mappings for the dimensions and measures and wraps the dimensions\n// mappings = { mapping }\n// mapping = {\n// \tvalue: (string) the expression value to replace the key with,\n// \twrap: (boolean) if the expression should be cleaned and wrapped or not (usually if field)\n// variations: (Array) array of strings with variations on the same key that if the value is empty should also be empty\nfunction generateExpression(template, mappings) {\n const explicitMappings = {};\n\n if (mappings) {\n for (const key in mappings) {\n const mapping = mappings[key];\n\n const expression = mapping.wrap ? ExpressionWrapper.wrapExpression(mapping.value) : mapping.value;\n\n explicitMappings[key] = expression;\n\n const variations = mapping.variations || [];\n\n variations.forEach((variation) => {\n const variationExpressions = assembleVariation(variation, expression, key);\n explicitMappings[variation] = variationExpressions;\n });\n }\n }\n\n return ExpressionReplacer.replaceExpressionTokens(template, explicitMappings);\n}\n\n// Internal functions\n\nfunction assembleVariation(variation, value, key) {\n if (value === '') {\n return '';\n }\n\n const regExp = ExpressionReplacer.createRegExp(key, true, true);\n const stringArray = variation.split(regExp);\n let expression = '';\n\n stringArray.forEach((substring) => {\n expression += substring !== key ? substring : value;\n });\n\n return expression;\n}\n\nexport default ExpressionGenerator;\n","import extend from 'extend';\nimport ExpressionGenerator from '../expression-generator/expression-generator';\n\nconst HyperCubeGenerator = {\n generateHyperCubeDef,\n getAllHyperCubeExpressions,\n};\n\n// builds up a hyper cube using a hyper cube def and the hyper cube result, needs the app as well\n// also supports additional mappings that allows generation of more advanced expressions\nfunction generateHyperCubeDef(template, hyperCubeDef, hyperCube, app, mappings) {\n // hyper cube knows about {{Dim[n]}} {{Mea[n]}} mappings.\n return getKnownMappings(template.dimensions.concat(template.measures), hyperCubeDef, hyperCube, app).then(\n (knownMappings) => {\n const allMappings = extend({}, knownMappings, mappings);\n\n const generatedHyperCubeDef = extend(true, {}, hyperCubeDef);\n // clean the dimensions and measures\n generatedHyperCubeDef.qDimensions = [];\n generatedHyperCubeDef.qMeasures = [];\n\n template.dimensions.forEach((dimensionTemplate) => {\n generatedHyperCubeDef.qDimensions.push({\n qDef: {\n qFieldDefs: [`=${ExpressionGenerator.generateExpression(dimensionTemplate, allMappings)}`],\n },\n });\n });\n\n template.measures.forEach((measureTemplate) => {\n generatedHyperCubeDef.qMeasures.push({\n qDef: {\n qDef: ExpressionGenerator.generateExpression(measureTemplate, allMappings),\n },\n });\n });\n\n return generatedHyperCubeDef;\n }\n );\n}\n\nasync function getAllHyperCubeExpressions(hyperCubeDef, hyperCube, app) {\n const dimensions = hyperCubeDef.qDimensions.map((dimension, index) =>\n getExpressionFromDimension(dimension, app, index, hyperCube)\n );\n const measures = hyperCubeDef.qMeasures.map((measure) => getExpressionFromMeasure(measure, app));\n\n return {\n dimensions: await Promise.all(dimensions),\n measures: await Promise.all(measures),\n };\n}\n\nfunction getExpressionFromDimension(dimension, app, index, hyperCube) {\n if (dimension.qLibraryId) {\n return getExpressionFromLibraryItem(dimension.qLibraryId, 'dimension', app, index, hyperCube);\n }\n const drillIndex = hyperCube.qDimensionInfo[index].qGroupPos;\n return Promise.resolve(dimension.qDef.qFieldDefs[drillIndex]);\n}\n\nfunction getExpressionFromMeasure(measure, app) {\n if (measure.qLibraryId) {\n return getExpressionFromLibraryItem(measure.qLibraryId, 'measure', app);\n }\n return Promise.resolve(measure.qDef.qDef);\n}\n\n// Internal functions\n\nfunction getExpressionFromLibraryItem(id, type, app, index, hyperCube) {\n if (!app) {\n console.warn('No app provided, returning library id');\n return id;\n }\n\n const getFn = type === 'dimension' ? 'getDimension' : 'getMeasure';\n\n return app[getFn](id).then((item) =>\n item.getProperties().then((props) => {\n if (type === 'dimension') {\n return props.qDim.qFieldDefs[hyperCube.qDimensionInfo[index].qGroupPos];\n }\n return props.qMeasure.qDef;\n })\n );\n}\n\n// identifies {{Dim[x]}} {{Mea[x]}} mappings and returns the distinct instances of them\nfunction getKnownMappings(mappings, hyperCubeDef, hyperCube, app) {\n const knownMappings = {};\n let dimensionIndices;\n let measureIndices;\n const dfds = [];\n\n mappings.forEach((mapping) => {\n dimensionIndices = spliceIdentifiedMatches(mapping.match(getMappingRegExp('Dim')));\n dimensionIndices.forEach((index) => {\n dfds.push(\n getExpressionFromDimension(hyperCubeDef.qDimensions[index], app, index, hyperCube).then((expression) => {\n knownMappings[`Dim[${index}]`] = { value: expression, wrap: true };\n })\n );\n });\n\n measureIndices = spliceIdentifiedMatches(mapping.match(getMappingRegExp('Mea')));\n measureIndices.forEach((index) => {\n dfds.push(\n getExpressionFromMeasure(hyperCubeDef.qMeasures[index], app).then((expression) => {\n knownMappings[`Mea[${index}]`] = { value: expression };\n })\n );\n });\n });\n\n let returnPromise;\n if (dfds.length) {\n returnPromise = Promise.all(dfds).then(() => Promise.resolve(knownMappings));\n } else {\n returnPromise = Promise.resolve(knownMappings);\n }\n return returnPromise;\n}\n\nfunction getMappingRegExp(string) {\n return new RegExp(`\\\\{\\\\{${string}\\\\[\\\\d\\\\]\\\\}\\\\}`, 'g');\n}\n\nfunction spliceIdentifiedMatches(matches) {\n if (!matches) {\n return [];\n }\n return matches.map((match) => match.substr(6, 1));\n}\n\nexport default HyperCubeGenerator;\n","function booleanConvertFunctions(isReverseSortFn, defaultSort) {\n isReverseSortFn =\n isReverseSortFn ||\n function () {\n return false;\n };\n defaultSort = defaultSort || 1;\n return {\n get(getFn) {\n return !!getFn('integer');\n },\n set(value, setFn) {\n if (value) {\n const reverseSort = isReverseSortFn();\n let intValue = reverseSort ? -1 : 1;\n intValue *= defaultSort;\n setFn('integer', intValue);\n } else {\n setFn('integer', 0);\n }\n },\n };\n}\n\n/**\n * Create convert functions to convert an integer property value for usage in string / enum\n * property-panel components such as the dropdown.\n *\n * @param {Function} isReverseSortFn Function to determine reverse sorting. Optional.\n */\nfunction enumConvertFunctions(isReverseSortFn) {\n isReverseSortFn =\n isReverseSortFn ||\n function () {\n return false;\n };\n return {\n get(getFn) {\n const reverseSortMultiplier = isReverseSortFn() ? -1 : 1;\n const value = getFn('integer') * reverseSortMultiplier;\n switch (value) {\n case -1:\n return 'descending';\n case 1:\n return 'ascending';\n default:\n // 0\n return 'disabled';\n }\n },\n set(value, setFn) {\n const reverseSort = isReverseSortFn();\n switch (value) {\n case 'descending':\n setFn('integer', reverseSort ? 1 : -1);\n break;\n case 'ascending':\n setFn('integer', reverseSort ? -1 : 1);\n break;\n case 'disabled':\n setFn('integer', 0);\n break;\n default:\n // will delete the property\n setFn('integer', undefined);\n break;\n }\n },\n };\n}\n\nfunction invertedEnumConvertFunctions(isReverseSortFn) {\n const invertedIsReverseSortFn = function () {\n return isReverseSortFn ? !isReverseSortFn() : true;\n };\n return enumConvertFunctions(invertedIsReverseSortFn);\n}\n\nexport default {\n booleanConvertFunctions,\n enumConvertFunctions,\n invertedEnumConvertFunctions,\n};\n","import { getValue } from 'qlik-chart-modules';\nimport convertFunctions from './convert-functions';\n\nconst sortDropdownOptions = [\n {\n value: 'ascending',\n translation: 'properties.sorting.ascending',\n },\n {\n value: 'descending',\n translation: 'properties.sorting.descending',\n },\n];\n\nfunction getSortByPropertyDefinition(ref, translation, convertFuncs) {\n return {\n type: 'items',\n items: {\n toggled: {\n type: 'boolean',\n ref,\n translation,\n convertFunctions: convertFuncs.toggled,\n },\n order: {\n type: 'string',\n component: 'dropdown',\n ref,\n options: sortDropdownOptions,\n convertFunctions: convertFuncs.sorting,\n show(itemData) {\n return getValue(itemData, ref, 0) !== 0;\n },\n },\n },\n };\n}\n\nfunction state(ref, isReverseSortFn) {\n ref = ref || 'qSortByState';\n const cFuncs = {\n toggled: convertFunctions.booleanConvertFunctions(isReverseSortFn),\n sorting: convertFunctions.invertedEnumConvertFunctions(isReverseSortFn),\n };\n return getSortByPropertyDefinition(ref, 'properties.sorting.sortByState', cFuncs);\n}\n\nfunction frequency(ref, isReverseSortFn) {\n ref = ref || 'qSortByFrequency';\n const cFuncs = {\n toggled: convertFunctions.booleanConvertFunctions(isReverseSortFn),\n sorting: convertFunctions.invertedEnumConvertFunctions(isReverseSortFn),\n };\n return getSortByPropertyDefinition(ref, 'properties.sorting.sortByFrequency', cFuncs);\n}\n\nfunction ascii(ref, isReverseSortFn) {\n ref = ref || 'qSortByAscii';\n const cFuncs = {\n toggled: convertFunctions.booleanConvertFunctions(isReverseSortFn),\n sorting: convertFunctions.enumConvertFunctions(isReverseSortFn),\n };\n return getSortByPropertyDefinition(ref, 'properties.sorting.sortByAlphabetic', cFuncs);\n}\n\nfunction numeric(ref, isReverseSortFn) {\n ref = ref || 'qSortByNumeric';\n const cFuncs = {\n toggled: convertFunctions.booleanConvertFunctions(isReverseSortFn, -1),\n sorting: convertFunctions.enumConvertFunctions(isReverseSortFn),\n };\n return getSortByPropertyDefinition(ref, 'properties.sorting.sortByNumeric', cFuncs);\n}\n\nfunction expression(ref, isReverseSortFn) {\n ref = ref || 'qSortByExpression';\n const cFuncs = {\n toggled: convertFunctions.booleanConvertFunctions(isReverseSortFn),\n sorting: convertFunctions.enumConvertFunctions(isReverseSortFn),\n };\n const propDef = getSortByPropertyDefinition(ref, 'properties.sorting.sortByExpression', cFuncs);\n\n propDef.items.expression = {\n type: 'number',\n component: 'expression',\n expressionType: 'ValueExpr',\n ref: 'qExpression',\n translation: 'Common.Expression',\n defaultValue: '',\n show(itemData) {\n return getValue(itemData, ref, 0) !== 0;\n },\n };\n\n return propDef;\n}\n\nexport default {\n state,\n ascii,\n numeric,\n expression,\n frequency,\n};\n","const CONSTANTS = {\n DATA_PATH: 'qUndoExclude',\n HYPERCUBE_DEF_PATH: 'qHyperCubeDef',\n HYPERCUBE_PATH: 'qHyperCube',\n CHART_ID: 'object.distributionPlot',\n\n AUTO_SORT: 'sorting.autoSort',\n SORT_CRITERIA: 'sorting.sortCriteria',\n SORTING_ELEMENT_ID: 'sorting.elementId',\n SORTING_ELEMENT_MIN_ID: 'distplot-exp-min',\n SORTING_ELEMENT_MAX_ID: 'distplot-exp-max',\n SORTING_EXPRESSION: 'sorting.expression',\n\n MAX_GLYPH_COUNT: 20,\n MAX_STACKED_VALUES: 3000, // Max nbr of values in outer dim\n\n HORIZONTAL: 'horizontal',\n\n BOX_PADDING: 2,\n POINT_BANDWIDTH_BASE_RATIO: 0.35, // Base value, with no scaling applied\n MAX_POINT_BASE_SIZE_PX: 34, // Base value, with no scaling applied\n MIN_POINT_PIXELS: 5,\n JITTER_PARAMETER: 3, // This is used in relation to point size\n\n BUBBLE_SCALES_MAX: 100,\n};\n\nObject.freeze(CONSTANTS);\n\nexport default CONSTANTS;\n","import { getValue } from 'qlik-chart-modules';\nimport CONSTANTS from './distributionplot-constants';\n\nfunction hasMultipleDimensions(container) {\n // var hasMultiple = container.qHyperCubeDef && container.qHyperCubeDef.qDimensions.length > 1;\n const hasMultiple =\n (container.qHyperCubeDef && container.qHyperCubeDef.qDimensions.length > 1) ||\n (container.qHyperCube && container.qHyperCube.qDimensionInfo && container.qHyperCube.qDimensionInfo.length > 1);\n return hasMultiple;\n}\n\nfunction getOuterDimensionCardinality(layout) {\n const qHyperCube = getValue(layout, CONSTANTS.HYPERCUBE_PATH);\n if (!hasMultipleDimensions(layout)) {\n return 1;\n }\n return qHyperCube && qHyperCube.qDimensionInfo[1].qCardinal;\n}\n\nfunction isAutoSort(properties) {\n return getValue(properties, CONSTANTS.AUTO_SORT, false);\n}\n\nfunction isSortByExpression(properties) {\n return getValue(properties, `${CONSTANTS.SORT_CRITERIA}.sortByExpression`, 0) !== 0;\n}\n\nfunction isSortByNumeric(properties) {\n return getValue(properties, `${CONSTANTS.SORT_CRITERIA}.sortByNumeric`, 0) !== 0;\n}\n\nfunction isSortByAscii(properties) {\n return getValue(properties, `${CONSTANTS.SORT_CRITERIA}.sortByAscii`, 0) !== 0;\n}\n\nconst distplotUtils = {\n hasMultipleDimensions,\n getOuterDimensionCardinality,\n isAutoSort,\n isSortByExpression,\n isSortByNumeric,\n isSortByAscii,\n};\n\nexport default distplotUtils;\n","const reverseMap = {\n cellBackgroundColor: true,\n cellForegroundColor: true,\n colorByAlternative: true,\n colorByExpression: true,\n tooltip: true,\n urlLabel: true,\n url: true,\n};\n\nexport default {\n create(id, props) {\n if (!id || !reverseMap[id]) {\n throw new Error('Attribute Expressions Util: ID required');\n }\n const ret = {};\n if (props) {\n Object.keys(props).forEach((key) => {\n ret[key] = props[key];\n });\n }\n ret.id = id;\n ret.qAttribute = true;\n\n return ret;\n },\n getById(attributeExpressions, id, idProp) {\n if (attributeExpressions) {\n idProp = idProp || 'id';\n return attributeExpressions.filter((aE) => aE[idProp] === id)[0];\n }\n return false;\n },\n getIndexById(attributeExpressions, id, idProp) {\n let index = -1;\n if (attributeExpressions) {\n idProp = idProp || 'id';\n attributeExpressions.forEach((aE, i) => {\n if (aE[idProp] === id) {\n index = i;\n }\n });\n }\n return index;\n },\n moveById(fromArray, toArray, id, idProp) {\n const expsIndex = this.getIndexById(fromArray, id, idProp);\n toArray = toArray || [];\n const targetIndex = this.getIndexById(toArray, id, idProp);\n if (expsIndex !== -1 && targetIndex === -1) {\n const attribExps = fromArray.splice(expsIndex, 1);\n toArray.push(attribExps[0]);\n }\n return toArray;\n },\n moveAllById(fromArray, toArray, id, idProp) {\n const fromAttribExps = fromArray.filter((obj) => obj.id === id);\n const toAttribExps = toArray.filter((obj) => obj.id === id);\n const newAttribExps = fromAttribExps.filter((fromObj) => {\n const existingAttr = toAttribExps.filter((toObj) => toObj[idProp] === fromObj[idProp]);\n if (existingAttr.length > 0) {\n return false;\n }\n return true;\n });\n return [...toArray, ...newAttribExps];\n },\n moveByIdFromGroup(fromGroup, toArray, attributeProp, id, idProp) {\n attributeProp = attributeProp || 'qAttributeExpressions';\n idProp = idProp || 'id';\n for (let i = 0; i < fromGroup.length; i++) {\n const fromArray = fromGroup[i][attributeProp];\n const l = toArray.length;\n this.moveById(fromArray, toArray, id, idProp);\n if (l !== toArray.length) {\n return toArray;\n }\n }\n return toArray;\n },\n clean(attributeExpressions) {\n return attributeExpressions.filter((aE) => aE && aE.id);\n },\n IDMAP: {\n CELL_BACKGROUND_COLOR: 'cellBackgroundColor',\n CELL_FOREGROUND_COLOR: 'cellForegroundColor',\n COLOR_BY_ALTERNATIVE: 'colorByAlternative',\n COLOR_BY_EXPRESSION: 'colorByExpression',\n TOOLTIP: 'tooltip',\n CELL_LINK_LABEL: 'urlLabel',\n CELL_LINK_URL: 'url',\n },\n};\n","function getColorByDefinition(columnType, isAttribute, target) {\n const ret = {};\n let qDef;\n let hasLabelExpression;\n let hasLabel;\n\n switch (columnType) {\n case 'dimension':\n if (target.qLibraryId) {\n ret.type = 'dimension';\n ret.name = target.qLibraryId;\n ret.id = target.qLibraryId;\n } else {\n ret.type = 'field';\n if (isAttribute) {\n ret.name = target.label || target.qDef;\n ret.id = target.qDef;\n } else {\n qDef = target.qDef;\n hasLabelExpression = !!qDef.qLabelExpression;\n hasLabel = qDef.qFieldLabels && qDef.qFieldLabels[0];\n\n ret.name = qDef.qFieldDefs[0];\n\n if (hasLabelExpression) {\n ret.label = qDef.qLabelExpression;\n } else if (hasLabel) {\n ret.label = qDef.qFieldLabels[0];\n } else {\n ret.label = qDef.qFieldDefs[0];\n }\n }\n }\n break;\n default:\n throw new Error('Default-property-logic.js: getColorByDefinition: Illegal input');\n }\n return ret;\n}\n\nexport default {\n getColorByDefinition,\n};\n","function useMasterNumberFormat(formatting) {\n formatting.quarantine = {\n qNumFormat: formatting.qNumFormat || {},\n isCustomFormatted: formatting.isCustomFormatted || false,\n };\n formatting.qNumFormat = null;\n formatting.isCustomFormatted = undefined;\n}\nfunction useLocalFormat(formatting) {\n formatting.qNumFormat = formatting.quarantine?.qNumFormat || {};\n formatting.isCustomFormatted = formatting.quarantine?.isCustomFormatted || false;\n formatting.quarantine = undefined;\n}\nfunction isUsingMasterNumberFormat(formatting) {\n return !!formatting?.quarantine?.qNumFormat ?? false;\n}\n\nexport default {\n useMasterNumberFormat,\n useLocalFormat,\n isUsingMasterNumberFormat,\n};\n","import { getValue, setValue } from 'qlik-chart-modules';\nimport attributeExpsUtil from '../extra/attribute-expression-util';\nimport LogicHelper from '../extra/property-logic-helper';\nimport NumberFormatUtil from '../extra/number-format-util';\n\n// Hardcoded hack. Should be fixed when we have a better solution.\n// This solves the problem with supporting base colors for old objects.\n// This also fixes the conversion problem.\n\nconst baseNotSupported = ['scatterplot', 'map'];\n\nconst baseDimSupported = ['map'];\n\nexport default {\n baseColor: {\n isSupported(type) {\n return type && type.length && baseNotSupported.indexOf(type) === -1;\n },\n isDimSupported(type) {\n // Used for Auto coloring. Usually we limit coloring by dimension library color to visualizations with\n // one dimension but map is special case with 2 dimensions. However, only one is visible to the user.\n return type && type.length && baseDimSupported.indexOf(type) !== -1;\n },\n },\n colorBy: {},\n colorByUpdater(properties, path, markerSettings, srcPath) {\n this.updateColorDef(properties, srcPath, markerSettings);\n this.updateHypercubeAttributes(properties, path, markerSettings);\n },\n updateColorDef(properties, path, markerSettings) {\n const mode = getValue(markerSettings, 'mode');\n const auto = getValue(markerSettings, 'auto');\n const dimensions = getValue(properties, `${path}qDimensions`, []);\n const measures = getValue(properties, `${path}qMeasures`, []);\n let item;\n let dim;\n let attrDim;\n let colorByDefinition;\n\n if (!auto && mode === 'byDimension' && dimensions.length) {\n item = getValue(markerSettings, 'byDimDef');\n\n if (item) {\n setAltLabel(markerSettings, item.label);\n }\n\n if (item && item.activeDimensionIndex > -1) {\n item.activeDimensionIndex = Math.min(item.activeDimensionIndex, dimensions.length - 1); // Set to last active dimension index if index if out of bounds\n dim = dimensions[item.activeDimensionIndex];\n colorByDefinition = LogicHelper.getColorByDefinition('dimension', false, dim);\n colorByDefinition.activeDimensionIndex = item.activeDimensionIndex;\n setColorByPropertyDef(markerSettings, colorByDefinition);\n } else if (!item || !item.key) {\n dim = dimensions[dimensions.length - 1];\n\n attrDim = attributeExpsUtil.getById(dim.qAttributeDimensions, attributeExpsUtil.IDMAP.COLOR_BY_ALTERNATIVE);\n setColorByPropertyDef(markerSettings, LogicHelper.getColorByDefinition('dimension', !!attrDim, attrDim || dim));\n }\n } else if (!auto && mode === 'byMeasure' && dimensions.length) {\n throw new Error('not suported in any 444-chart');\n } else if (mode === 'byMultiple' && measures.length < 2) {\n setValue(markerSettings, 'mode', 'primary');\n }\n },\n updateHypercubeAttributes(properties, path, markerSettings) {\n const mode = getValue(markerSettings, 'mode');\n const auto = getValue(markerSettings, 'auto');\n const dimensions = getValue(properties, `${path}qDimensions`, []);\n const measures = getValue(properties, `${path}qMeasures`, []);\n const exclDimensions = getValue(properties, `${path}qLayoutExclude.qHyperCubeDef.qDimensions`, []);\n\n if (!auto && mode === 'byDimension' && dimensions.length) {\n // Clear old qAttributeDimension/qAttributeExpression and add a qAttributeDimension for the current dimension\n resolveColorByPropertyDef(\n markerSettings,\n true,\n dimensions,\n exclDimensions,\n measures,\n getValue(markerSettings, 'byDimDef.label')\n );\n } else if (!auto && mode === 'byMeasure' && dimensions.length) {\n // Clear old qAttributeDimension/qAttributeExpression and add a qAttributeExpression for the current measure\n resolveColorByPropertyDef(\n markerSettings,\n false,\n dimensions,\n exclDimensions,\n measures,\n getValue(markerSettings, 'byMeasureDef.label')\n );\n } else {\n // Remove color by properties\n clearColorByItem(dimensions, exclDimensions);\n }\n },\n setColorByPropertyDef,\n resolveColorByPropertyDef,\n clearColorByItem,\n};\n\nfunction clearColorByItem(dimensions, exclDimensions) {\n dimensions.forEach((dim) => {\n cleanAttributeByType(dim, attributeExpsUtil.IDMAP.COLOR_BY_ALTERNATIVE, 'qAttributeDimensions');\n cleanAttributeByType(dim, attributeExpsUtil.IDMAP.COLOR_BY_ALTERNATIVE, 'qAttributeExpressions');\n });\n exclDimensions.forEach((dim) => {\n cleanAttributeByType(dim, attributeExpsUtil.IDMAP.COLOR_BY_ALTERNATIVE, 'qAttributeDimensions');\n cleanAttributeByType(dim, attributeExpsUtil.IDMAP.COLOR_BY_ALTERNATIVE, 'qAttributeExpressions');\n });\n}\n\nfunction cleanAttributeByType(target, type, attribute) {\n if (target[attribute]) {\n const index = attributeExpsUtil.getIndexById(target[attribute], type);\n if (index >= 0) {\n target[attribute].splice(index, 1);\n }\n } else {\n target[attribute] = []; // eslint-disable-line no-param-reassign\n }\n}\n\nfunction wrapFieldName(name) {\n return name.split(' ').length > 1 && name[0] !== '=' && name[0] !== '[' ? `[${name}]` : name;\n}\n\nfunction setColorByPropertyDef(properties, item, expression, keepMode) {\n const itemType = expression ? 'expression' : item.type;\n let mode = properties.mode;\n const label = item.label || item.name || '';\n\n setAltLabel(properties, label);\n\n switch (itemType) {\n case 'field':\n mode = 'byDimension';\n properties.byDimDef = {\n label: item.label || wrapFieldName(item.name),\n key: wrapFieldName(item.name),\n type: 'expression',\n activeDimensionIndex: item.activeDimensionIndex,\n }; // eslint-disable-line no-param-reassign\n break;\n case 'expression':\n mode = 'byMeasure';\n properties.byMeasureDef = {\n label: expression || item.label || item.name,\n key: expression || item.name,\n type: 'expression',\n }; // eslint-disable-line no-param-reassign\n break;\n case 'dimension':\n mode = 'byDimension';\n properties.byDimDef = {\n label: item.name,\n key: item.id,\n type: 'libraryItem',\n activeDimensionIndex: item.activeDimensionIndex,\n }; // eslint-disable-line no-param-reassign\n break;\n case 'measure':\n mode = 'byMeasure';\n properties.byMeasureDef = { label: item.name, key: item.id, type: 'libraryItem' };\n if (properties.formatting) {\n NumberFormatUtil.useMasterNumberFormat(properties.formatting);\n }\n break;\n default:\n break;\n }\n if (!keepMode) {\n properties.auto = false; // eslint-disable-line no-param-reassign\n properties.mode = mode; // eslint-disable-line no-param-reassign\n }\n}\n\nfunction resolveColorByPropertyDef(properties, isDim, dimensions, exclDimensions, measures, customLabel) {\n clearColorByItem(dimensions, exclDimensions);\n const dim = dimensions[dimensions.length - 1];\n if (dim) {\n const item = isDim ? getValue(properties, 'byDimDef') : getValue(properties, 'byMeasureDef');\n const qNumFormat = getValue(properties, 'formatting.qNumFormat');\n const isCustomFormatted = getValue(properties, 'formatting.isCustomFormatted');\n\n if (item) {\n const attribExps = attributeExpsUtil.create(attributeExpsUtil.IDMAP.COLOR_BY_ALTERNATIVE);\n switch (item.type) {\n case 'expression':\n attribExps.label = customLabel || item.label;\n if (isDim) {\n attribExps.qDef = item.key;\n } else {\n attribExps.qExpression = item.key;\n if (qNumFormat) {\n attribExps.qNumFormat = qNumFormat;\n attribExps.isCustomFormatted = isCustomFormatted;\n }\n }\n break;\n case 'libraryItem':\n if (!isDim) {\n // Figure out if we are using a library item that matches one in data\n let inIndex = -1;\n measures.forEach((mea, index) => {\n if (item.key === mea.qLibraryId) {\n inIndex = index;\n }\n });\n attribExps.matchMeasure = inIndex;\n if (qNumFormat) {\n attribExps.qNumFormat = qNumFormat;\n attribExps.isCustomFormatted = isCustomFormatted;\n }\n }\n attribExps.qLibraryId = item.key;\n attribExps.colorMapRef = item.key;\n break;\n default:\n break;\n }\n if (isDim) {\n attribExps.qSortBy = { qSortByAscii: 1 };\n dim.qAttributeDimensions.push(attribExps);\n } else {\n dim.qAttributeExpressions.push(attribExps);\n }\n }\n }\n}\n\nfunction setAltLabel(properties, label) {\n if (!label) {\n return;\n }\n\n const isExpression = label.charAt(0) === '=';\n\n properties.altLabel = isExpression ? { qStringExpression: { qExpr: label.substr(1) } } : label;\n}\n","// import propertyResolver from '../../../assets/client/utils/property-resolver';\nimport { getValue } from 'qlik-chart-modules';\nimport AdvancedColorer from '@qlik/common/picasso/advanced-colorer';\n\n// Privates\n\nfunction getBaseColor(info) {\n if (!info) {\n return false;\n }\n if (info.coloring && info.coloring.baseColor && info.coloring.baseColor.color) {\n return info.coloring.baseColor;\n }\n if (info.baseColor && info.baseColor.color) {\n return info.baseColor;\n }\n return false;\n}\n\n// Public\n\nfunction isDimensionLibraryItem(data) {\n return getValue(data, 'color.point.byDimDef.type') === 'libraryItem';\n}\n\nfunction isMeasureLibraryItem(data) {\n return getValue(data, 'color.point.byMeasureDef.type') === 'libraryItem';\n}\n\nfunction isColorAuto(data) {\n return getValue(data, 'color.point.auto') === true;\n}\n\nfunction isColorBySingle(data) {\n return !isColorAuto(data) && getValue(data, 'color.point.mode', 'primary') === 'primary';\n}\n\nfunction isColorByDimension(data) {\n return !isColorAuto(data) && getValue(data, 'color.point.mode') === 'byDimension';\n}\n\nfunction isColorByMeasure(data) {\n return !isColorAuto(data) && getValue(data, 'color.point.mode') === 'byMeasure';\n}\n\nfunction isColorByExpression(data) {\n return !isColorAuto(data) && getValue(data, 'color.point.mode') === 'byExpression';\n}\n\nfunction measuresHasBaseColors(handler) {\n return getValue(handler, 'layout.qHyperCube.qMeasureInfo', []).filter((info) => !!getBaseColor(info)).length > 0;\n}\n\nfunction dimensionsHasBaseColors(handler) {\n return getValue(handler, 'layout.qHyperCube.qDimensionInfo', []).filter((info) => !!getBaseColor(info)).length > 0;\n}\n\nfunction onGlobalChangeColors(data) {\n AdvancedColorer.updateColorDef(data, 'qHyperCubeDef.', data.color.point);\n}\n\n/**\n * Logic for showing/hiding legend section\n * @param {object} data\n */\nfunction showLegend(data) {\n const mode = getValue(data, 'color.point.mode', 'primary');\n return mode !== 'primary' && mode !== 'byExpression' && isColorAuto(data) === false;\n}\n\nfunction showColorByLabel(data) {\n // We only want to show if we are not coloring by a \"library item\" or Coloring by \"n:th dimension\"\n const isDimAndNotLibraryItem = isColorByDimension(data) && isDimensionLibraryItem(data) === false;\n\n const isMeasureAndNotLibraryItem = isColorByMeasure(data) && isMeasureLibraryItem(data) === false;\n const hasActiveDimensionIndex = getValue(data, 'color.point.byDimDef.activeDimensionIndex') > -1;\n return (isDimAndNotLibraryItem && !hasActiveDimensionIndex) || isMeasureAndNotLibraryItem;\n}\n\nfunction onChangeCalcCond(data) {\n const baseCube = data?.qHyperCubeDef;\n const generatedCube = data?.qUndoExclude?.qHyperCubeDef;\n if (baseCube && generatedCube) {\n generatedCube.qCalcCond = baseCube.qCalcCond;\n generatedCube.qCalcCondition = baseCube.qCalcCondition;\n }\n}\n\nfunction hasDimValueColors(handler, activeDimId) {\n return handler.layout.qHyperCube.qDimensionInfo[activeDimId]?.coloring?.hasValueColors ?? true;\n}\n\nexport default {\n measuresHasBaseColors,\n dimensionsHasBaseColors,\n onGlobalChangeColors,\n onChangeCalcCond,\n\n isColorByDimension,\n isColorByMeasure,\n isColorAuto,\n isColorByExpression,\n isColorBySingle,\n isDimensionLibraryItem,\n isMeasureLibraryItem,\n showLegend,\n showColorByLabel,\n hasDimValueColors,\n};\n","import { setValue } from 'qlik-chart-modules';\n\nfunction Sorter(getSettingsFn, getElementsFn) {\n this.getSettings = getSettingsFn;\n\n this.getElements = getElementsFn;\n}\n\nSorter.prototype.applyAutoSorting = applyAutoSorting;\nSorter.prototype.applyDefaultCustomSorting = applyDefaultCustomSorting;\nSorter.prototype.applyCustomSorting = applyCustomSorting;\n\nexport default Sorter;\n\nfunction applyAutoSorting(dimension) {\n const sortCriterias = dimension.qDef.qSortCriterias;\n\n if (!sortCriterias[0]) {\n sortCriterias.push({});\n }\n\n const sortCriteria = sortCriterias[0];\n const settings = this.getSettings();\n\n setValue(sortCriteria, 'qSortByExpression', settings.SORT_BY_EXPRESSION);\n setValue(sortCriteria, 'qSortByAscii', settings.SORT_BY_ASCII);\n setValue(sortCriteria, 'qSortByNumeric', settings.SORT_BY_NUMERIC);\n setValue(sortCriteria, 'qSortByLoadOrder', settings.SORT_BY_LOAD_ORDER);\n\n if (!sortCriteria.qExpression) {\n sortCriteria.qExpression = {};\n }\n\n const elements = this.getElements();\n const defaultElement = getDefaultElement(elements);\n\n sortCriteria.qExpression.qv = defaultElement.exp;\n}\n\nfunction applyDefaultCustomSorting(dimension, chartSorting) {\n applyAutoSorting.call(this, dimension);\n\n const elements = this.getElements();\n const defaultElement = getDefaultElement(elements);\n const sortCriteria = dimension.qDef.qSortCriterias[0];\n\n chartSorting.elementId = defaultElement.id;\n\n chartSorting.sortCriteria = {};\n\n setValue(chartSorting.sortCriteria, 'sortByExpression', sortCriteria.qSortByExpression);\n setValue(chartSorting.sortCriteria, 'sortByAscii', sortCriteria.qSortByAscii);\n setValue(chartSorting.sortCriteria, 'sortByNumeric', sortCriteria.qSortByNumeric);\n setValue(chartSorting.sortCriteria, 'sortByLoadOrder', sortCriteria.qSortByLoadOrder);\n}\n\nfunction applyCustomSorting(dimension, chartSorting) {\n const sortCriteria = dimension.qDef.qSortCriterias[0];\n\n setValue(sortCriteria, 'qSortByExpression', chartSorting.sortCriteria.sortByExpression);\n setValue(sortCriteria, 'qSortByAscii', chartSorting.sortCriteria.sortByAscii);\n setValue(sortCriteria, 'qSortByNumeric', chartSorting.sortCriteria.sortByNumeric);\n setValue(sortCriteria, 'qSortByLoadOrder', chartSorting.sortCriteria.sortByLoadOrder);\n\n if (sortCriteria.qSortByExpression !== 1 && sortCriteria.qSortByExpression !== -1) {\n return;\n }\n\n if (!sortCriteria.qExpression) {\n sortCriteria.qExpression = {};\n }\n\n if (chartSorting.elementId) {\n const elements = this.getElements();\n const element = getMatchingElement(elements, chartSorting.elementId);\n\n sortCriteria.qExpression.qv = element.exp;\n } else {\n sortCriteria.qExpression.qv = chartSorting.expression.qValueExpression.qExpr;\n }\n}\n\nfunction getDefaultElement(elements) {\n const matchingElements = elements.filter((element) => element.isDefault);\n\n return matchingElements.length === 0 ? elements[0] : matchingElements[0];\n}\n\nfunction getMatchingElement(elements, elementId) {\n const matchingElements = elements.filter((measure) => measure.id === elementId);\n\n if (matchingElements.length === 0) {\n throwError(`Could not find any element matching the element '${elementId}'`);\n }\n\n return matchingElements[0];\n}\n\nfunction throwError(message) {\n throw new Error(`Sorter: ${message}`);\n}\n","import Sorter from './Sorter';\n\nconst sorterFactory = {\n create,\n};\n\nexport default sorterFactory;\n\nfunction create(getSettingsFn, elementsRetriever) {\n return new Sorter(getSettingsFn, elementsRetriever);\n}\n","const sorterFacade = {\n applySorting,\n};\n\nexport default sorterFacade;\n\nfunction applySorting(sorter, dimension, chartSorting) {\n const isAutoSort = chartSorting.autoSort;\n const hasCachedSortCriteria = !!chartSorting.sortCriteria;\n\n if (isAutoSort) {\n sorter.applyAutoSorting(dimension);\n } else if (!hasCachedSortCriteria) {\n sorter.applyDefaultCustomSorting(dimension, chartSorting);\n } else {\n sorter.applyCustomSorting(dimension, chartSorting);\n }\n}\n","const SORTER_BASE_SORTING_SETTINGS = {\n ASCII: {\n ELEMENT: undefined,\n SORT_BY_EXPRESSION: undefined,\n SORT_BY_ASCII: 1,\n SORT_BY_NUMERIC: 1,\n SORT_BY_LOAD_ORDER: 1,\n },\n};\n\nObject.freeze(SORTER_BASE_SORTING_SETTINGS.ASCII);\nObject.freeze(SORTER_BASE_SORTING_SETTINGS);\n\nexport default SORTER_BASE_SORTING_SETTINGS;\n","import extend from 'extend';\nimport BASE_SORTING_SETTINGS from '@qlik/common/picasso/sorting/base-derived/sorter-base-sorting-settings';\n\nconst SORTING_SETTINGS = extend(\n true,\n {\n DIST_MAX: {\n ELEMENT: 'distplot-exp-max', // This refers to the element returned from getElements() in distributionplot-sorting-elements-retriever.js\n SORT_BY_EXPRESSION: -1,\n SORT_BY_ASCII: 1,\n SORT_BY_NUMERIC: 1,\n SORT_BY_LOAD_ORDER: 1,\n },\n },\n BASE_SORTING_SETTINGS\n);\n\nexport default SORTING_SETTINGS;\n","import { getValue } from 'qlik-chart-modules';\nimport SETTINGS from './distributionplot-sorting-settings';\n\n//\n// Implementation details\n//\nfunction getSettings(layout) {\n const cardinality = getValue(layout, 'qHyperCube.qDimensionInfo.1.qCardinal', 1);\n\n if (cardinality > 10) {\n return SETTINGS.DIST_MAX;\n }\n\n return SETTINGS.ASCII;\n}\n\nconst settingsRetriever = {\n getSettings,\n};\n\nexport default settingsRetriever;\n","import ExpressionWrapper from '@qlik/common/picasso/expression-generator/expression-wrapper';\n// import translator from '../../../../js/lib/translator';\nimport distributionPlotConstants from '../distributionplot-constants';\n\n//\n// Implementation details\n//\nfunction getElementIds() {\n return [distributionPlotConstants.SORTING_ELEMENT_MIN_ID, distributionPlotConstants.SORTING_ELEMENT_MAX_ID];\n}\n\n/**\n * Get a fractile or min/max expression, putting the dimensions/measures in the correct\n * place inside the expression.\n *\n * @param {number} percentile given as a decimal value in the range 0 <= 1\n * @param {string} innerDimString\n * @param {string} outerDimString\n * @param {string} innerMeasureString\n * @return {string} An expression which will sort the data on outer dimension's min/max/fractile value\n */\nfunction getFractileExpression(percentile, innerDim, outerDim, innerMeasureString) {\n const totalAndAggr =\n 'total {{<outerDimString>}} Aggr( {{innerMeasureString}}, {{outerDimString,}} {{innerDimString}} )';\n let fnName = 'Fractile';\n\n if (percentile === 0) {\n fnName = 'Min';\n } else if (percentile === 1) {\n fnName = 'Max';\n }\n\n const wrappedInnerDim = innerDim ? ExpressionWrapper.wrapExpression(innerDim) : '';\n const wrappedOuterDim = outerDim ? ExpressionWrapper.wrapExpression(outerDim) : '';\n\n const template = `${fnName}( ${totalAndAggr}, ${percentile} )`;\n const expression = template\n .replace(/{{innerDimString}}/g, wrappedInnerDim)\n .replace(/{{outerDimString}}/g, wrappedOuterDim)\n .replace(/{{<outerDimString>}}/g, outerDim ? `<${wrappedOuterDim}>` : '')\n .replace(/{{outerDimString,}}/g, outerDim ? `${wrappedOuterDim},` : '')\n .replace(/{{innerMeasureString}}/g, (innerMeasureString || '').replace(/^=/, ''));\n\n return expression;\n}\n\nfunction getElements(measureExpressions, dimensionExpressions, settings, translator) {\n const innerDimString = dimensionExpressions[0];\n const outerDimString = dimensionExpressions[1];\n const innerMeasureString = measureExpressions[0];\n const expMin = getFractileExpression(0, innerDimString, outerDimString, innerMeasureString);\n const expMax = getFractileExpression(1, innerDimString, outerDimString, innerMeasureString);\n\n return [\n {\n id: distributionPlotConstants.SORTING_ELEMENT_MIN_ID,\n label: translator.get('properties.distributionPlot.min'),\n exp: expMin,\n isDefault: distributionPlotConstants.SORTING_ELEMENT_MIN_ID === settings.ELEMENT,\n },\n {\n id: distributionPlotConstants.SORTING_ELEMENT_MAX_ID,\n label: translator.get('properties.distributionPlot.max'),\n exp: expMax,\n isDefault: distributionPlotConstants.SORTING_ELEMENT_MAX_ID === settings.ELEMENT,\n },\n ];\n}\n\nconst distplotSortingElementsRetriever = {\n getElementIds,\n getElements,\n getFractileExpression,\n};\n\nexport default distplotSortingElementsRetriever;\n","import sorterFactory from '@qlik/common/picasso/sorting/base-derived/sorter-factory';\nimport sorterFacade from '@qlik/common/picasso/sorting/base-derived/sorter-facade';\nimport HyperCubeDefGenerator from '@qlik/common/picasso/hypercube-def-generator/hypercube-def-generator';\nimport settingsRetriever from './distributionplot-sorting-settings-retriever';\nimport elementsRetriever from './distributionplot-sorting-elements-retriever';\n\nfunction throwError(message) {\n throw new Error(`distributionplot-sorter.applySorting: ${message}`);\n}\n\nfunction validate(properties) {\n const qHyperCubeDef = properties.qHyperCubeDef;\n if (!qHyperCubeDef) {\n throwError(\"no 'qHyperCubeDef' in properties arg\");\n } else if (!qHyperCubeDef.qDimensions) {\n throwError(\"no 'qHyperCubeDef.qDimensions' in properties arg\");\n } else if (!qHyperCubeDef.qMeasures) {\n throwError(\"no 'qHyperCubeDef.qMeasures' in properties arg\");\n } else if (!qHyperCubeDef.qDimensions.length || qHyperCubeDef.qDimensions.length < 2) {\n throwError(\"'qHyperCubeDef.qDimensions' has no outer dimension\");\n }\n}\n\nfunction setSorting(properties, layout, expressions, translator) {\n if (!properties.qUndoExclude) {\n return;\n }\n\n if (!properties.sorting) {\n properties.sorting = { autoSort: true };\n }\n\n const dimensions = properties.qUndoExclude.qHyperCubeDef.qDimensions;\n\n if (dimensions.length >= 2) {\n properties.qUndoExclude.qHyperCubeDef.qInterColumnSortOrder = [0, 2, 1];\n } else {\n properties.qUndoExclude.qHyperCubeDef.qInterColumnSortOrder = [1, 0];\n }\n\n const getSettingsFn = function () {\n return settingsRetriever.getSettings(layout);\n };\n\n const getElementsFn = function () {\n const settings = getSettingsFn();\n\n return elementsRetriever.getElements(expressions.measures, expressions.dimensions, settings, translator);\n };\n\n const sorter = sorterFactory.create(getSettingsFn, getElementsFn);\n const outerDimension = dimensions[0];\n const chartSorting = properties.sorting;\n\n sorterFacade.applySorting(sorter, outerDimension, chartSorting);\n}\n\nfunction applySorting(properties, layout, app, exps, translator) {\n validate(properties);\n\n if (exps) {\n return setSorting(properties, layout, exps, translator);\n }\n\n return HyperCubeDefGenerator.getAllHyperCubeExpressions(properties.qHyperCubeDef, layout.qHyperCube, app).then(\n (expressions) => {\n setSorting(properties, layout, expressions, translator);\n }\n );\n}\n\nconst distplotSorter = {\n applySorting,\n};\n\nexport default distplotSorter;\n","import { getValue, setValue } from 'qlik-chart-modules';\nimport CONSTANTS from '../distributionplot-constants';\n\nconst SORT_BY_EXPRESSION_REF = `${CONSTANTS.SORT_CRITERIA}.sortByExpression`;\n\n//\n// Implementation details\n//\nfunction updateSortOrder(properties, prevProperties) {\n if (!prevProperties) {\n return;\n }\n\n const currentSortByExpression = getValue(properties, SORT_BY_EXPRESSION_REF);\n const currentIsSortByExpression = currentSortByExpression === -1 || currentSortByExpression === 1;\n\n if (!currentIsSortByExpression) {\n return;\n }\n\n const currentSortingElement = getValue(properties, CONSTANTS.SORTING_ELEMENT_ID);\n const prevSortingElement = getValue(prevProperties, CONSTANTS.SORTING_ELEMENT_ID);\n\n const hasPrevSortingElement = !!prevSortingElement;\n\n const currentSortingElementIsMin = currentSortingElement === CONSTANTS.SORTING_ELEMENT_MIN_ID;\n const currentSortingElementIsMax = currentSortingElement === CONSTANTS.SORTING_ELEMENT_MAX_ID;\n const prevSortingElementIsMin = prevSortingElement === CONSTANTS.SORTING_ELEMENT_MIN_ID;\n const prevSortingElementIsMAx = prevSortingElement === CONSTANTS.SORTING_ELEMENT_MAX_ID;\n const wasChangedFromMaxToMin = currentSortingElementIsMin && prevSortingElementIsMAx;\n const wasChangedFromMinToMax = currentSortingElementIsMax && (!hasPrevSortingElement || prevSortingElementIsMin);\n const prevSortByExpression = getValue(prevProperties, SORT_BY_EXPRESSION_REF);\n const prevWasSortByExpression = prevSortByExpression === -1 || prevSortByExpression === 1;\n\n const currentSortByExpressionIsAscending = currentSortByExpression === 1;\n\n const sortByExpressionToggledOnWithMaxElementAndAscendingSet =\n currentSortingElementIsMax && !prevWasSortByExpression && currentSortByExpressionIsAscending;\n\n if (wasChangedFromMaxToMin) {\n setValue(properties, SORT_BY_EXPRESSION_REF, 1);\n } else if (wasChangedFromMinToMax || sortByExpressionToggledOnWithMaxElementAndAscendingSet) {\n setValue(properties, SORT_BY_EXPRESSION_REF, -1);\n }\n}\n\nconst expressionSortOrderer = {\n updateSortOrder,\n};\n\nexport default expressionSortOrderer;\n","const getStylingPanelDefinition = (bkgOptionsEnabled) => ({\n component: 'styling-panel',\n chartTitle: 'Object.DistributionPlot',\n translation: 'LayerStyleEditor.component.styling',\n subtitle: 'LayerStyleEditor.component.styling',\n ref: 'components',\n useGeneral: true,\n useBackground: bkgOptionsEnabled,\n});\n\nexport default getStylingPanelDefinition;\n","import { setValue, getValue } from 'qlik-chart-modules';\nimport HyperCubeDefGenerator from '@qlik/common/picasso/hypercube-def-generator/hypercube-def-generator';\nimport sortOrderBuilder from '@qlik/common/extra/sort-order/sort-order';\nimport distplotUtils from './distributionplot-utils';\nimport propsLogic from './distributionplot-properties-logic';\nimport distplotSorter from './sorting/distributionplot-sorter';\nimport settingsRetriever from './sorting/distributionplot-sorting-settings-retriever';\nimport elementsRetriever from './sorting/distributionplot-sorting-elements-retriever';\nimport expressionSortOrderer from './sorting/distributionplot-expression-sort-orderer';\nimport CONSTANTS from './distributionplot-constants';\nimport getStylingPanelDefinition from './styling-panel-definition';\n\nfunction getNumMeasures(obj) {\n return getValue(obj, 'qHyperCubeDef.qMeasures.length', 0);\n}\nfunction getNumDimensions(obj) {\n return getValue(obj, 'qHyperCubeDef.qDimensions.length', 0);\n}\n\nfunction persistentColorsShowFunc(data) {\n return (\n !getValue(data, 'color.point.auto') &&\n getValue(data, 'color.point.mode') === 'byDimension' &&\n getNumMeasures(data) <= 1\n );\n}\n\nexport default function propertyDefinition(env) {\n const { flags, translator } = env;\n const theme = env.anything.sense.theme;\n\n // Feature Flags\n const stylingPanelEnabled = env.flags.isEnabled('SENSECLIENT_IM_2018_STYLINGPANEL_DIST_PLOT');\n const bkgOptionsEnabled = env.flags.isEnabled('SENSECLIENT_IM_2018_DIST_BG');\n\n const lookupColorInPalette = (color) => {\n const palette = theme.getDataColorPickerPalettes()[0].colors;\n const index = palette.indexOf(color);\n return { color, index };\n };\n\n const colors = {\n translation: 'properties.colors',\n type: 'items',\n items: {\n colors: {\n type: 'items',\n items: {\n pointColor: {\n type: 'items',\n translation: 'properties.colorsAndLegend',\n grouped: true,\n items: {\n colors: {\n type: 'items',\n items: {\n autoColor: {\n ref: 'color.point.auto',\n type: 'boolean',\n translation: 'properties.colors',\n component: 'switch',\n defaultValue: true,\n options: [\n {\n value: true,\n translation: 'Common.Auto',\n },\n {\n value: false,\n translation: 'Common.Custom',\n },\n ],\n },\n colorMode: {\n ref: 'color.point.mode',\n type: 'string',\n component: 'dropdown',\n options() {\n return [\n {\n value: 'primary',\n translation: 'properties.colorMode.primary',\n },\n {\n value: 'byExpression',\n translation: 'properties.colorMode.byExpression',\n },\n ];\n },\n defaultValue: 'primary',\n show(data) {\n return !getValue(data, 'color.point.auto', true);\n },\n },\n boxColor: {\n ref: 'color.box.paletteColor',\n translation: 'properties.distributionPlot.boxColor',\n type: 'object',\n component: 'color-picker',\n dualOutput: true,\n defaultValue() {\n const color = theme.getStyle(CONSTANTS.CHART_ID, 'box', 'fill');\n return lookupColorInPalette(color);\n },\n },\n paletteColor: {\n ref: 'color.point.paletteColor',\n translation: 'properties.distributionPlot.pointColor',\n type: 'object',\n component: 'color-picker',\n dualOutput: true,\n show(data) {\n return (\n !getValue(data, 'color.point.auto', true) &&\n getValue(data, 'color.point.mode', 'primary') === 'primary'\n );\n },\n defaultValue() {\n const color = theme.getDataColorSpecials().primary;\n return lookupColorInPalette(color);\n },\n },\n attributeExpression: {\n type: 'string',\n component: 'expression',\n expressionType: 'measure',\n schemaIgnore: true,\n ref: 'color.point.expression.qValueExpression.qExpr',\n translation: 'Common.Expression',\n show(data) {\n return (\n !getValue(data, 'color.point.auto') && getValue(data, 'color.point.mode') === 'byExpression'\n );\n },\n },\n expressionIsColor: {\n ref: 'color.point.expressionIsColor',\n translation: 'properties.expressionIsColor',\n type: 'boolean',\n defaultValue: true,\n show: false,\n },\n },\n },\n },\n },\n },\n },\n },\n };\n\n const general = {\n items: {\n showDisclaimer: {\n translation: 'properties.showDisclaimer',\n type: 'boolean',\n ref: 'showDisclaimer',\n component: 'switch',\n show() {\n return flags.isEnabled('SHOW_DISCLAIMER');\n },\n defaultValue: true,\n options: [\n {\n value: true,\n translation: 'Common.Show',\n },\n {\n value: false,\n translation: 'properties.hide',\n },\n ],\n },\n },\n };\n const presentation = {\n type: 'items',\n translation: 'properties.presentation',\n items: {\n styleEditor: stylingPanelEnabled && getStylingPanelDefinition(bkgOptionsEnabled),\n orientation: {\n ref: 'orientation',\n type: 'string',\n component: 'item-selection-list',\n defaultValue: 'horizontal',\n horizontal: true,\n items: [\n {\n component: 'icon-item',\n icon: 'direction_up_down',\n labelPlacement: 'bottom',\n translation: 'properties.orientation.vertical',\n value: 'vertical',\n },\n {\n icon: 'direction_left_right',\n component: 'icon-item',\n labelPlacement: 'bottom',\n translation: 'Common.Horizontal',\n value: 'horizontal',\n },\n ],\n },\n showDistBackground: {\n ref: 'presentation.visibleComponents',\n translation: 'properties.show',\n type: 'string',\n component: 'dropdown',\n defaultValue: 'points_box',\n options: [\n {\n value: 'points_box',\n translation: 'properties.distributionPlot.pointsAndBox',\n },\n {\n value: 'points',\n translation: 'properties.distributionPlot.pointsOnly',\n },\n {\n value: 'box',\n translation: 'properties.distributionPlot.boxOnly',\n },\n ],\n },\n gridLines: {\n type: 'items',\n snapshot: {\n tid: 'property-gridLines',\n },\n items: {\n showGridLines: {\n ref: 'gridlines.auto',\n type: 'boolean',\n translation: 'properties.gridLine.spacing',\n component: 'switch',\n defaultValue: true,\n options: [\n {\n value: true,\n translation: 'Common.Auto',\n },\n {\n value: false,\n translation: 'Common.Custom',\n },\n ],\n },\n gridSpacing: {\n ref: 'gridlines.spacing',\n type: 'number',\n component: 'dropdown',\n defaultValue: 2,\n options: [\n {\n value: 0,\n translation: 'properties.gridLine.noLines',\n },\n // Gridlines \"wide\" option can be implemented when Picasso supports displaying a\n // gridline every other tick: http://rd-picasso.rdlund.qliktech.com/picasso/master/docs/dist/components/grid-line.html\n // {\n // \tvalue: 1,\n // \ttranslation: \"properties.gridLine.wide\"\n // },\n {\n value: 2,\n translation: 'properties.gridLine.medium',\n },\n {\n value: 3,\n translation: 'properties.gridLine.narrow',\n },\n ],\n show(data) {\n return data.gridlines && !data.gridlines.auto;\n },\n },\n },\n },\n },\n };\n\n presentation.items.bubbleScaleItems = {\n type: 'items',\n items: {\n bubbleScales: {\n type: 'integer',\n component: 'slider',\n ref: 'dataPoint.bubbleScales',\n translation: 'properties.dataPoints.bubbleSizes', // we may need translation for bubbleScales instead\n min: 20,\n max: CONSTANTS.BUBBLE_SCALES_MAX,\n step: 5,\n defaultValue: 100,\n show(data) {\n return data.qHyperCubeDef.qMeasures.length < 2 && data.presentation.visibleComponents !== 'box';\n },\n },\n },\n };\n\n presentation.items.jitter = {\n type: 'string',\n component: 'switch',\n ref: 'dataPoint.displacement',\n translation: 'properties.distributionPlot.jitter',\n defaultValue: 'none',\n options: [\n {\n value: 'none',\n translation: 'properties.off',\n },\n {\n value: 'jitter',\n translation: 'properties.on',\n },\n ],\n show(data) {\n return data.presentation.visibleComponents !== 'box';\n },\n };\n\n // These will be added to the distplot drop-down\n // properties.distributionPlot.min, properties.distributionPlot.max\n\n const measureAxis = {\n uses: 'axis.picasso.measureAxis',\n items: {\n startAt: {\n type: 'string',\n component: 'dropdown',\n translation: 'properties.axis.startAt',\n readOnly: (data) =>\n !data.measureAxis.autoMinMax && !(data.measureAxis.minMax === 'min' && data.measureAxis.min === 0),\n options: [\n {\n value: 'zero',\n translation: 'properties.axis.startAt.zero',\n },\n {\n value: 'lowest',\n translation: 'properties.axis.startAt.lowest',\n },\n ],\n defaultValue: 'lowest',\n convertFunctions: {\n get(getter, definition, args, data) {\n const { autoMinMax, minMax, min } = data?.measureAxis || {};\n if (autoMinMax === true) {\n return 'lowest';\n }\n if (!autoMinMax && minMax === 'min' && min === 0) {\n return 'zero';\n }\n return getter(definition.type);\n },\n set(value, setter, definition, args, data) {\n if (value === 'zero') {\n setValue(data, 'measureAxis.autoMinMax', false);\n setValue(data, 'measureAxis.minMax', 'min');\n setValue(data, 'measureAxis.min', 0);\n } else {\n setValue(data, 'measureAxis.autoMinMax', true);\n }\n },\n },\n classification: {\n section: 'axis',\n tags: ['simple'],\n exclusive: true,\n },\n },\n },\n };\n\n const dimensionAxis = {\n uses: 'axis.picasso.dimensionAxis',\n show(properties, handler) {\n const hasSecondDimension = getValue(handler.layout, `${CONSTANTS.HYPERCUBE_PATH}.qDimensionInfo.length`) > 1;\n return hasSecondDimension;\n },\n items: {\n dimensionAxisTitle: {\n component: 'header',\n type: 'string',\n show(properties, handler) {\n return getValue(handler.layout, `${CONSTANTS.HYPERCUBE_PATH}.qDimensionInfo.length`) > 1;\n },\n classification: {\n section: 'axis',\n tags: ['simple'],\n exclusive: true,\n },\n },\n othersGroup: {\n items: {\n label: {\n show(properties, handler) {\n return (\n getValue(handler.layout, `${CONSTANTS.HYPERCUBE_PATH}.qDimensionInfo.length`) > 1 &&\n getValue(handler.layout, 'orientation') !== 'horizontal'\n );\n },\n options: flags.isEnabled('SENSECLIENT_LAYERED_LABELS')\n ? [\n {\n value: 'auto',\n translation: 'Common.Auto',\n },\n {\n value: 'horizontal',\n translation: 'Common.Horizontal',\n },\n {\n value: 'tilted',\n translation: 'properties.labels.tilted',\n },\n {\n value: 'layered',\n translation: 'properties.labels.layered',\n },\n ]\n : undefined,\n },\n dock: {\n show(properties, handler) {\n return getValue(handler.layout, `${CONSTANTS.HYPERCUBE_PATH}.qDimensionInfo.length`) > 1;\n },\n },\n },\n },\n },\n };\n\n function updateAltLabel(data, byDefRef) {\n const byDef = getValue(data, byDefRef, undefined);\n if (!byDef || typeof byDef.label === 'undefined') {\n return;\n }\n if (byDef.label.charAt(0) === '=') {\n data.color.point.altLabel = {\n qStringExpression: {\n qExpr: byDef.label.substr(1),\n },\n };\n } else {\n data.color.point.altLabel = byDef.label;\n }\n }\n\n const label = (data) => {\n if (getValue(data, 'color.point.auto'))\n return translator.get('Simple.Color.Auto', translator.get('properties.colorMode.primary'));\n return translator.get('Common.Custom');\n };\n\n const colorModeOptions = (data) => {\n const options = [\n {\n value: 'primary',\n translation: 'properties.colorMode.primary',\n },\n {\n value: 'byDimension',\n translation: 'properties.colorMode.byDimension',\n },\n ];\n if (getValue(data, 'color.point.mode') === 'byExpression') {\n options.push({\n value: 'byExpression',\n translation: 'properties.colorMode.byExpression',\n });\n }\n return options;\n };\n\n const getLabel = (data, args) => {\n if (data.color.point.byDimDef?.type === 'libraryItem') {\n const libId = data.color.point.byDimDef?.key ?? '';\n const qDimensionInfo = args.handler.layout.qUndoExclude?.qHyperCube?.qDimensionInfo ?? [];\n for (let i = 0; i < qDimensionInfo.length; i++) {\n const qAttrDimInfo = qDimensionInfo[i].qAttrDimInfo;\n if (qAttrDimInfo) {\n for (let j = 0; j < qAttrDimInfo.length; j++) {\n if (qAttrDimInfo[j].colorMapRef === libId) return qAttrDimInfo[j].qFallbackTitle;\n }\n }\n }\n return '';\n }\n\n return data.color.point.byDimDef?.label ?? '';\n };\n\n const byDimensionOptions = (data, handler, args) => {\n if (data.qHyperCubeDef?.qDimensions?.length) {\n const options = data.qHyperCubeDef?.qDimensions.map((d, index) => ({\n value: index,\n label: translator.get('properties.colorBy.currentDimension', index + 1),\n }));\n if ((data.color?.point?.byDimDef?.activeDimensionIndex ?? -1) < 0) {\n options.push({\n value: -1,\n label: getLabel(data, args),\n });\n }\n return options;\n }\n return [];\n };\n\n const showPointPaletteColor = (data, handler) => {\n const useMeasureBaseColor =\n getValue(data, 'color.point.useBaseColors') === 'measure' && propsLogic.measuresHasBaseColors(handler);\n const useDimensionBaseColor =\n getValue(data, 'color.point.useBaseColors') === 'dimension' && propsLogic.dimensionsHasBaseColors(handler);\n return propsLogic.isColorBySingle(data) && !useMeasureBaseColor && !useDimensionBaseColor;\n };\n\n const showDisclaimer = (data, handler) =>\n !getValue(data, 'color.point.auto', undefined) &&\n getValue(data, 'color.point.mode', undefined) === 'primary' &&\n !showPointPaletteColor(data, handler);\n\n const simpleColors = {\n items: {\n disclaimer: {\n show(data, handler) {\n return flags.isEnabled('SIMPLE_PROPERTIES_LIBRARY_COLOR') ? false : showDisclaimer(data, handler);\n },\n },\n simpleItems: {\n show(data, handler) {\n return flags.isEnabled('SIMPLE_PROPERTIES_LIBRARY_COLOR') ? true : !showDisclaimer(data, handler);\n },\n items: {\n autoColor: {\n ref: 'color.point.auto',\n undefinedValue: false,\n label,\n change: (data) => {\n if (!getValue(data, 'color.point.auto')) {\n setValue(data, 'color.point.mode', 'primary');\n setValue(data, 'color.point.useBaseColors', 'off');\n }\n },\n },\n colorMode: {\n ref: 'color.point.mode',\n options: colorModeOptions,\n show(data) {\n return !propsLogic.isColorAuto(data);\n },\n change(data) {\n if (getValue(data, 'color.point.mode', undefined) === 'primary') {\n const useBaseColors = getValue(data, 'color.point.useBaseColors', undefined);\n if (useBaseColors !== undefined && useBaseColors !== 'off') {\n setValue(data, 'color.point.useBaseColors', 'off');\n }\n }\n },\n globalChange() {},\n },\n colorByDimension: {\n ref: 'color.point.byDimDef.activeDimensionIndex',\n options: byDimensionOptions,\n show(data, handler, args) {\n return propsLogic.isColorByDimension(data) && byDimensionOptions(data, handler, args).length > 1;\n },\n change(data) {\n updateAltLabel(data, 'color.point.byDimDef');\n },\n },\n baseColors: {\n type: 'items',\n items: {\n useBaseColor: {\n ref: 'color.point.useBaseColors',\n show(data, handler) {\n const mode = getValue(data, 'color.point.mode', 'primary');\n return (\n flags.isEnabled('SIMPLE_PROPERTIES_LIBRARY_COLOR') &&\n !propsLogic.isColorAuto(data) &&\n mode === 'primary' &&\n (propsLogic.measuresHasBaseColors(handler) || propsLogic.dimensionsHasBaseColors(handler))\n );\n },\n },\n },\n },\n paletteColor: {\n ref: 'color.point.paletteColor',\n translation: 'properties.distributionPlot.pointColor',\n show: showPointPaletteColor,\n },\n // Switch for showing/hiding custom color schemes\n useDimColVal: {\n ref: 'color.point.useDimColVal',\n show(data, handler, args) {\n const activeDimId = data.color.point?.byDimDef?.activeDimensionIndex ?? null;\n const hasValueColors = propsLogic.hasDimValueColors(args.handler, activeDimId);\n return (\n flags.isEnabled('SIMPLE_PROPERTIES_LIBRARY_COLOR') &&\n hasValueColors &&\n propsLogic.isColorByDimension(data) &&\n propsLogic.isDimensionLibraryItem(data)\n );\n },\n },\n boxColor: {\n ref: 'color.box.paletteColor',\n translation: 'properties.distributionPlot.boxColor',\n type: 'object',\n component: 'color-picker',\n dualOutput: true,\n defaultValue() {\n const color = theme.getStyle(CONSTANTS.CHART_ID, 'box', 'fill');\n return lookupColorInPalette(color);\n },\n show(data) {\n return !getValue(data, 'color.point.auto', true);\n },\n },\n },\n },\n },\n };\n\n const colorsAndLegend = {\n uses: 'colorsAndLegend',\n items: {\n colors: {\n globalChange: propsLogic.onGlobalChangeColors,\n items: {\n autoColor: {\n ref: 'color.point.auto',\n undefinedValue: false,\n },\n colorMode: {\n ref: 'color.point.mode',\n options(data) {\n const options = [];\n options.push({\n value: 'primary',\n translation: 'properties.colorMode.primary',\n });\n options.push({\n value: 'byDimension',\n translation: 'properties.colorMode.byDimension',\n });\n if (getNumDimensions(data) >= 1) {\n options.push({\n value: 'byExpression',\n translation: 'properties.colorMode.byExpression',\n });\n }\n return options;\n },\n show(data) {\n return !propsLogic.isColorAuto(data);\n },\n globalChange() /* data, handler */ {}, // overriding with empty func\n },\n colorByDimension: {\n ref: 'color.point.byDimDef',\n show(data) {\n const isColorByDimension = propsLogic.isColorByDimension(data);\n return isColorByDimension;\n },\n change(data) {\n updateAltLabel(data, 'color.point.byDimDef');\n },\n },\n colorByMeasure: {\n ref: 'color.point.byMeasureDef',\n show(data) {\n return propsLogic.isColorByMeasure(data);\n },\n change(data) {\n updateAltLabel(data, 'color.point.byMeasureDef');\n },\n },\n colorByLabel: {\n ref: 'color.point.altLabel',\n show: propsLogic.showColorByLabel,\n change(data) {\n // Store the custom label in either the dim or the measure (temporary) property. The label is further handled in globalChangeColors()\n const colorMode = getValue(data, 'color.point.mode');\n\n const altLabel = getValue(data, 'color.point.altLabel', '');\n let byDef;\n\n switch (colorMode) {\n case 'byMeasure':\n byDef = data.color.point.byMeasureDef;\n break;\n case 'byDimension':\n byDef = data.color.point.byDimDef;\n break;\n default:\n break;\n }\n\n if (!byDef) {\n return;\n }\n\n byDef.label = altLabel.qStringExpression ? `=${altLabel.qStringExpression.qExpr}` : altLabel;\n },\n },\n baseColors: {\n type: 'items',\n items: {\n useBaseColor: {\n ref: 'color.point.useBaseColors',\n show(data, handler) {\n const mode = getValue(data, 'color.point.mode', 'primary');\n return (\n !propsLogic.isColorAuto(data) &&\n mode === 'primary' &&\n (propsLogic.measuresHasBaseColors(handler) || propsLogic.dimensionsHasBaseColors(handler))\n );\n },\n },\n measureColor: {\n translation: 'properties.libraryColors',\n component: 'measure-color',\n show(data, handler) {\n return (\n !getValue(data, 'color.point.auto') &&\n getValue(data, 'color.point.mode') === 'byMultiple' && // Base color indicator should only be shown when we are in \"Custom\" / \"byMultiple\" mode\n getValue(data, 'color.point.useBaseColors') === 'measure' && // Use base colors must be active\n // && baseColorSupport.isSupported( data.visualization ) // Visualization must support base colors\n handler.layout.qHyperCube.qMeasureInfo.length > 1 && // More than one color must be rendered\n propsLogic.measuresHasBaseColors(handler)\n ); // At least one of the colors must be a base color\n },\n },\n },\n },\n paletteColor: {\n ref: 'color.point.paletteColor',\n translation: 'properties.distributionPlot.pointColor',\n show(data, handler) {\n const useMeasureBaseColor =\n getValue(data, 'color.point.useBaseColors') === 'measure' && propsLogic.measuresHasBaseColors(handler);\n const useDimensionBaseColor =\n getValue(data, 'color.point.useBaseColors') === 'dimension' &&\n propsLogic.dimensionsHasBaseColors(handler);\n return propsLogic.isColorBySingle(data) && !useMeasureBaseColor && !useDimensionBaseColor;\n },\n },\n // Switch for showing/hiding custom color schemes\n useDimColVal: {\n ref: 'color.point.useDimColVal',\n show(data) {\n return propsLogic.isColorByDimension(data) && propsLogic.isDimensionLibraryItem(data);\n },\n },\n useMeasureGradient: {\n ref: 'color.point.useMeasureGradient',\n translation: 'properties.libraryColors',\n type: 'boolean',\n component: 'switch',\n schemaIgnore: true,\n defaultValue: false,\n options: [\n {\n value: true,\n translation: 'properties.on',\n },\n {\n value: false,\n translation: 'properties.off',\n },\n ],\n show(data) {\n const auto = getValue(data, 'color.point.auto');\n const mode = getValue(data, 'color.point.mode');\n return !auto && mode === 'byMeasure' && getValue(data, 'color.point.byMeasureDef.type') === 'libraryItem';\n },\n },\n // // -- Custom color scheme for color by dimensions --\n persistentColors: {\n ref: 'color.point.persistent',\n show(data) {\n if (\n !getValue(data, 'color.point.auto') &&\n getValue(data, 'color.point.mode') === 'byDimension' &&\n getValue(data, 'color.point.byDimDef.type') === 'libraryItem'\n ) {\n return persistentColorsShowFunc(data) && !getValue(data, 'color.point.useDimColVal');\n }\n return persistentColorsShowFunc(data);\n },\n },\n // // -- Color scheme measure\n colorSchemeMeasure: {\n ref: 'color.point.measureScheme',\n show(data) {\n return !propsLogic.isColorAuto(data) && propsLogic.isColorByMeasure(data);\n },\n },\n reverseScheme: {\n ref: 'color.point.reverseScheme',\n change(data) {\n // Also store att data.color.reverseScheme here due to logic connected with the color scheme which would be best left alone (to be continued…).\n data.color.reverseScheme = data.color.point.reverseScheme;\n },\n show(data) {\n return !propsLogic.isColorAuto(data) && propsLogic.isColorByMeasure(data);\n },\n },\n // // -- Color scheme dimension\n colorSchemeDimension: {\n ref: 'color.point.dimensionScheme',\n show(data) {\n const show =\n propsLogic.isColorByDimension(data) &&\n (!propsLogic.isDimensionLibraryItem(data) || !getValue(data, 'color.point.useDimColVal'));\n return show;\n },\n },\n customRange: {\n show(data) {\n return !propsLogic.isColorAuto(data);\n },\n items: {\n autoMinMax: {\n ref: 'color.point.autoMinMax',\n show(data) {\n return propsLogic.isColorByMeasure(data);\n },\n },\n min: {\n ref: 'color.point.measureMin',\n show(data) {\n return propsLogic.isColorByMeasure(data) && getValue(data, 'color.point.autoMinMax') === false;\n },\n invalid(data) {\n if (getValue(data, 'color.point.minMax') === 'minMax') {\n return getValue(data, 'color.point.measureMin') >= getValue(data, 'color.point.measureMax');\n }\n return false;\n },\n },\n max: {\n ref: 'color.point.measureMax',\n show(data) {\n return propsLogic.isColorByMeasure(data) && getValue(data, 'color.point.autoMinMax') === false;\n },\n invalid(data) {\n if (getValue(data, 'color.point.minMax') === 'minMax') {\n return getValue(data, 'color.point.measureMin') >= getValue(data, 'color.point.measureMax');\n }\n return false;\n },\n },\n },\n },\n attributeExpression: {\n ref: 'color.point.expression.qValueExpression.qExpr',\n show(data) {\n return propsLogic.isColorByExpression(data);\n },\n },\n expressionIsColor: {\n ref: 'color.point.expressionIsColor',\n show: false,\n },\n boxColor: {\n ref: 'color.box.paletteColor',\n translation: 'properties.distributionPlot.boxColor',\n type: 'object',\n component: 'color-picker',\n dualOutput: true,\n defaultValue() {\n const color = theme.getStyle(CONSTANTS.CHART_ID, 'box', 'fill');\n return lookupColorInPalette(color);\n },\n show(data) {\n return !getValue(data, 'color.point.auto', true);\n },\n },\n },\n },\n simpleColors,\n legend: {\n show: propsLogic.showLegend,\n type: 'items',\n items: {\n show: {\n // ref: \"legend.show\",\n snapshot: {\n tid: 'property-legend',\n },\n },\n dock: {\n // ref: \"legend.dock\",\n show(data) {\n const show = propsLogic.showLegend(data) && getValue(data, 'legend.show', true);\n return show;\n },\n },\n showTitle: {\n // ref: \"legend.showTitle\",\n show(data) {\n const show = propsLogic.showLegend(data) && getValue(data, 'legend.show', true);\n return show;\n },\n },\n },\n },\n },\n };\n\n const simpleLabels = {\n items: {\n labels: {\n items: {\n header: {\n show(props) {\n return props.qHyperCubeDef.qDimensions?.length && props.qHyperCubeDef.qMeasures?.length;\n },\n },\n dimensionTitle: {\n component: 'checkbox',\n ref: 'dimensionAxis.show',\n type: 'string',\n translation: 'Simple.Label.Dimension.Hide',\n defaultValue: 'all',\n show(props) {\n return props.qHyperCubeDef.qDimensions?.length > 1 && props.qHyperCubeDef.qMeasures?.length;\n },\n convertFunctions: {\n get(getter, def, args, data) {\n return data.dimensionAxis.show === 'labels' || data.dimensionAxis.show === 'none';\n },\n set(value, setter, def, args, data) {\n data.dimensionAxis.show = value ? 'labels' : 'all';\n },\n },\n },\n measureTitle: {\n component: 'checkbox',\n ref: 'measureAxis.show',\n type: 'string',\n translation: 'Simple.Label.Measure.Hide',\n defaultValue: 'all',\n show(props) {\n return props.qHyperCubeDef.qDimensions?.length && props.qHyperCubeDef.qMeasures?.length;\n },\n convertFunctions: {\n get(getter, def, args, data) {\n return data.measureAxis.show === 'labels' || data.measureAxis.show === 'none';\n },\n set(value, setter, def, args, data) {\n data.measureAxis.show = value ? 'labels' : 'all';\n },\n },\n },\n },\n },\n },\n };\n\n const settings = {\n uses: 'settings',\n items: {\n simpleLabels,\n general,\n presentation,\n colors: colorsAndLegend || colors,\n measureAxis,\n dimensionAxis,\n },\n };\n\n const addons = {\n type: 'items',\n component: 'expandable-items',\n translation: 'properties.addons',\n items: {\n dataHandling: {\n uses: 'dataHandling',\n items: {\n calcCond: {\n uses: 'calcCond',\n change: propsLogic.onChangeCalcCond,\n },\n },\n },\n refLines: {\n uses: 'reflines',\n items: {\n colorBackground: {\n show: false,\n },\n },\n },\n },\n };\n\n const defaultExpressionItem = sortOrderBuilder.expression(`${CONSTANTS.SORT_CRITERIA}.sortByExpression`);\n const expressionItem = {\n type: 'items',\n items: {\n toggled: defaultExpressionItem.items.toggled,\n sortByElement: {\n component: 'sort-by-element',\n expressionRef: CONSTANTS.SORTING_EXPRESSION,\n elementRef: CONSTANTS.SORTING_ELEMENT_ID,\n show: distplotUtils.isSortByExpression,\n elements(args) {\n return HyperCubeDefGenerator.getAllHyperCubeExpressions(\n args.properties.qHyperCubeDef,\n args.layout.qHyperCube,\n args.model.app\n ).then((expressions) => {\n const settings = settingsRetriever.getSettings(args.layout);\n\n return elementsRetriever.getElements(expressions.measures, expressions.dimensions, settings, translator);\n });\n },\n },\n order: defaultExpressionItem.items.order,\n },\n };\n\n const sorting = {\n type: 'items',\n translation: 'properties.sorting',\n schemaIgnore: true,\n grouped: false,\n globalChange(data, handler, args) {\n if (args) {\n expressionSortOrderer.updateSortOrder(data, args.prevProperties);\n }\n },\n items: {\n autoSort: {\n ref: CONSTANTS.AUTO_SORT,\n type: 'boolean',\n translation: 'properties.sorting',\n component: 'switch',\n defaultValue: true,\n options: [\n {\n value: true,\n translation: 'Common.Auto',\n },\n {\n value: false,\n translation: 'Common.Custom',\n },\n ],\n show: distplotUtils.hasMultipleDimensions,\n change(data, handler, properties, args) {\n if (data && distplotUtils.hasMultipleDimensions(data) && handler.layout) {\n return distplotSorter.applySorting(data, handler.layout, args.model.app, null, translator);\n }\n return undefined;\n },\n classification: {\n section: 'sorting',\n tags: ['simple'],\n },\n reset(data) {\n data.sorting = { autoSort: true };\n },\n },\n simpleSorting: {\n component: 'sorting-with-elements',\n expressionRef: CONSTANTS.SORTING_EXPRESSION,\n elementRef: CONSTANTS.SORTING_ELEMENT_ID,\n sortCriteriasRef: CONSTANTS.SORT_CRITERIA,\n show(properties) {\n return distplotUtils.hasMultipleDimensions(properties) && !distplotUtils.isAutoSort(properties);\n },\n elements(args) {\n return HyperCubeDefGenerator.getAllHyperCubeExpressions(\n args.handler.properties.qHyperCubeDef,\n args.handler.layout.qHyperCube,\n args.model.app\n ).then((expressions) => {\n const settings = settingsRetriever.getSettings(args.layout);\n\n return elementsRetriever.getElements(expressions.measures, expressions.dimensions, settings, translator);\n });\n },\n classification: {\n section: 'sorting',\n tags: ['simple'],\n exclusive: true,\n },\n },\n sortingItems: {\n type: 'items',\n grouped: true,\n show(properties) {\n return distplotUtils.hasMultipleDimensions(properties) && !distplotUtils.isAutoSort(properties);\n },\n items: {\n expression: expressionItem,\n numeric: sortOrderBuilder.numeric(`${CONSTANTS.SORT_CRITERIA}.sortByNumeric`),\n ascii: sortOrderBuilder.ascii(`${CONSTANTS.SORT_CRITERIA}.sortByAscii`),\n\n defaultSortMessage: {\n component: 'text',\n translation: 'properties.sorting.defaultSortingMessage',\n show(properties) {\n return (\n !distplotUtils.isSortByExpression(properties) &&\n !distplotUtils.isSortByNumeric(properties) &&\n !distplotUtils.isSortByAscii(properties)\n );\n },\n },\n },\n },\n noData: {\n component: 'text',\n translation: 'Common.NoData',\n style: 'hint',\n show(properties) {\n return !distplotUtils.hasMultipleDimensions(properties);\n },\n classification: {\n section: 'sorting',\n tags: ['simple'],\n },\n },\n },\n };\n\n const dimensions = {\n uses: 'dimensions',\n };\n\n const measures = {\n uses: 'measures',\n };\n\n const data = {\n uses: 'data',\n grouped: true,\n items: {\n dimensions,\n measures,\n },\n };\n\n return {\n type: 'items',\n component: 'accordion',\n items: {\n data,\n sorting,\n addons,\n settings,\n },\n };\n}\n","import { getValue } from 'qlik-chart-modules';\n\nconst explorePropertiesSortingDefinitionBuilder = {\n buildDefinition,\n};\n\nexport default explorePropertiesSortingDefinitionBuilder;\n\nfunction buildDefinition(baseHyperCubeDefPath, chartSortingPath, sortedDimensionPath, getSettingsFn, getElementIdsFn) {\n const dimensionSortCriteriaPath = `${sortedDimensionPath}.qDef.qSortCriterias.0.`;\n\n const sortingDefinition = {\n type: 'items',\n translation: 'properties.sorting',\n icon: 'ascending',\n show(data) {\n return getValue(data, `${baseHyperCubeDefPath}.qDimensions.length`, 0) > 1;\n },\n items: {\n sortingOptions: {\n component: 'radio-list',\n type: 'number',\n diffs: [\n `${dimensionSortCriteriaPath}qSortByExpression`,\n `${dimensionSortCriteriaPath}qSortByNumeric`,\n `${dimensionSortCriteriaPath}qSortByAscii`,\n ],\n options: [\n {\n value: 1,\n translation: 'properties.sorting.ascending',\n },\n {\n value: -1,\n translation: 'properties.sorting.descending',\n },\n ],\n setPropertyValue(properties, value, args) {\n const layout = args.layout;\n let currentChartSortProperty = getCurrentSortPropertyInfo(properties, dimensionSortCriteriaPath).chart;\n\n if (!currentChartSortProperty) {\n currentChartSortProperty = 'sortByAscii';\n }\n\n const chartSorting = getValue(properties, chartSortingPath);\n\n if (!chartSorting.sortCriteria) {\n chartSorting.sortCriteria = {};\n }\n\n if (chartSorting.autoSort) {\n const settings = getSettingsFn(layout);\n\n if (settings.ELEMENT) {\n chartSorting.elementId = settings.ELEMENT;\n } else {\n const elementIds = getElementIdsFn(properties, layout);\n\n chartSorting.elementId = elementIds[0];\n }\n }\n\n chartSorting.autoSort = false;\n\n cleanChartSorting(chartSorting, currentChartSortProperty);\n\n chartSorting.sortCriteria[currentChartSortProperty] = value;\n },\n getValue(data) {\n const currentDimensionSortProperty = getCurrentSortPropertyInfo(data, dimensionSortCriteriaPath).dimension;\n\n if (!currentDimensionSortProperty) {\n return 0;\n }\n\n return getValue(data, dimensionSortCriteriaPath + currentDimensionSortProperty);\n },\n },\n },\n };\n\n return sortingDefinition;\n}\n\nfunction getCurrentSortPropertyInfo(data, dimensionSortCriteriaPath) {\n const currentSortPropertyInfo = {\n chart: '',\n dimension: '',\n };\n\n if (getValue(data, `${dimensionSortCriteriaPath}qSortByExpression`, 0) !== 0) {\n currentSortPropertyInfo.chart = 'sortByExpression';\n currentSortPropertyInfo.dimension = 'qSortByExpression';\n } else if (getValue(data, `${dimensionSortCriteriaPath}qSortByNumeric`, 0) !== 0) {\n currentSortPropertyInfo.chart = 'sortByNumeric';\n currentSortPropertyInfo.dimension = 'qSortByNumeric';\n } else if (getValue(data, `${dimensionSortCriteriaPath}qSortByAscii`, 0) !== 0) {\n currentSortPropertyInfo.chart = 'sortByAscii';\n currentSortPropertyInfo.dimension = 'qSortByAscii';\n }\n\n return currentSortPropertyInfo;\n}\n\nfunction cleanChartSorting(chartSorting, currentChartSortProperty) {\n const sortCriteria = chartSorting.sortCriteria;\n\n if (currentChartSortProperty === 'sortByNumeric' || currentChartSortProperty === 'sortByAscii') {\n sortCriteria.sortByExpression = 0;\n }\n\n if (currentChartSortProperty === 'sortByAscii') {\n sortCriteria.sortByNumeric = 0;\n }\n}\n","import extend from 'extend';\nimport sortingDefinitionBuilder from '@qlik/common/picasso/sorting/base-derived/explore-properties-sorting-definition-builder';\nimport settingsRetriever from './sorting/distributionplot-sorting-settings-retriever';\nimport elementsRetriever from './sorting/distributionplot-sorting-elements-retriever';\nimport propsLogic from './distributionplot-properties-logic';\n\nconst sorting = sortingDefinitionBuilder.buildDefinition(\n 'qHyperCubeDef',\n 'sorting',\n 'qUndoExclude.qHyperCubeDef.qDimensions.0',\n settingsRetriever.getSettings,\n elementsRetriever.getElementIds\n);\n\nconst settings = {\n type: 'items',\n component: 'accordion',\n items: {\n data: {\n uses: 'data',\n },\n sorting,\n presentation: {\n uses: 'presentation',\n items: {\n orientation: {\n ref: 'orientation',\n type: 'string',\n component: 'item-selection-list',\n horizontal: true,\n items: [\n {\n component: 'icon-item',\n icon: 'direction_up_down',\n labelPlacement: 'bottom',\n translation: 'properties.orientation.vertical',\n value: 'vertical',\n },\n {\n icon: 'direction_left_right',\n component: 'icon-item',\n labelPlacement: 'bottom',\n translation: 'Common.Horizontal',\n value: 'horizontal',\n },\n ],\n },\n bubbleScales: {\n type: 'integer',\n component: 'slider',\n ref: 'dataPoint.bubbleScales',\n translation: 'properties.dataPoints.bubbleSizes', // we may need translation for bubbleScales instead\n min: 20,\n max: 100,\n step: 5,\n defaultValue: 100,\n show(data) {\n return data.qHyperCubeDef.qMeasures.length < 2 && data.presentation.visibleComponents !== 'box';\n },\n },\n jitter: {\n type: 'string',\n component: 'switch',\n ref: 'dataPoint.displacement',\n translation: 'properties.distributionPlot.jitter',\n defaultValue: 'none',\n options: [\n {\n value: 'none',\n translation: 'properties.off',\n },\n {\n value: 'jitter',\n translation: 'properties.on',\n },\n ],\n show(data) {\n return data.presentation.visibleComponents !== 'box';\n },\n },\n },\n },\n },\n};\n// Add color by features\nconst color = {\n items: {\n color: {\n uses: 'color',\n items: {\n mode: {\n options: [\n {\n value: 'auto',\n translation: 'Common.Auto',\n },\n {\n value: 'primary',\n translation: 'properties.colorMode.primary',\n },\n {\n value: 'byDimension',\n translation: 'properties.colorMode.byDimension',\n },\n ],\n diffs: ['color.point.mode', 'color.point.auto'],\n setPropertyValue(data, v) {\n if (v === 'auto') {\n data.color.point.auto = true;\n } else {\n data.color.point.auto = false;\n data.color.point.mode = v;\n }\n },\n getValue(data) {\n return propsLogic.isColorAuto(data) ? 'auto' : data.color.point.mode;\n },\n },\n dimension: {\n show(data) {\n return propsLogic.isColorByDimension(data);\n },\n items: {\n colorScheme: {\n ref: 'color.point.dimensionScheme',\n },\n persistentColors: {\n ref: 'color.point.persistent',\n },\n },\n },\n measure: {\n show(data) {\n return propsLogic.isColorByMeasure(data);\n },\n items: {\n sequential: {\n ref: 'color.point.measureScheme',\n },\n },\n },\n legend: {\n show: propsLogic.showLegend,\n },\n },\n },\n },\n};\nextend(true, settings, color);\nexport default settings;\n","import pp from './distributionplot-properties';\nimport softDefinition from './distributionplot-explore-properties';\nimport propsLogic from './distributionplot-properties-logic';\nimport data from './distributionplot-data';\nimport { importProperties, exportProperties } from './distributionplot-import-export';\n\nexport default function ext(env) {\n if (!env.anything?.sense) {\n return undefined;\n }\n\n return {\n definition: pp(env),\n softDefinition,\n support: {\n cssScaling: false,\n snapshot: true,\n export: true,\n exportData: true,\n sharing: true,\n viewData: true,\n },\n options: {\n usingDerivedProperties: true,\n colorByPath: 'color.point',\n },\n onSoftPropertyChange(prevProperties, nextProperties) {\n propsLogic.onGlobalChangeColors(nextProperties);\n },\n importProperties: (exportFormat, initialProperties, extension) => {\n const dataDefinition = data(env);\n extension.mapProperties();\n const defaultPropertyValues = {\n defaultDimension: extension.getDefaultDimensionProperties(),\n defaultMeasure: extension.getDefaultMeasureProperties(),\n };\n return importProperties({\n dataDefinition,\n defaultPropertyValues,\n exportFormat,\n initialProperties,\n });\n },\n exportProperties(propertyTree, hyperCubePath, viewDataMode) {\n return exportProperties({ propertyTree, viewDataMode });\n },\n };\n}\n","// private\nconst idGen = {\n getChar(value) {\n // 0 o O i I l\n const banned = [48, 111, 79, 105, 73, 108];\n let val = value;\n\n let charCode;\n if (val > 9) {\n charCode = 65 + val - 10;\n if (charCode > 90) {\n charCode += 6;\n }\n } else {\n val = `${val}`.charCodeAt(0);\n }\n return banned.indexOf(charCode) > -1 ? this.getChar(val + 1) : String.fromCharCode(charCode);\n },\n base62(value) {\n const chr = this.getChar(value % 62);\n const y = Math.floor(value / 62);\n return y > 0 ? this.base62(y) + chr : chr;\n },\n id() {\n const s = this.base62(Math.round(Math.random() * (1e13 - 1e11) + 1e11));\n return s.replace(/\\W/g, '');\n },\n};\n\nexport default function generateId() {\n return idGen.id();\n}\n","const SCROLLBAR_KEY = 'scrollbar';\n\nfunction getActions(isEnabledFn) {\n function targetIsScrollbar(manager, e) {\n if (!e || !isEnabledFn()) {\n return false;\n }\n const startPoint = {\n x: e.center.x - e.deltaX,\n y: e.center.y - e.deltaY,\n };\n const components = this.chart.componentsFromPoint(startPoint);\n return components.some((c) => c.settings.key === SCROLLBAR_KEY);\n }\n\n const tap = {\n // single tap\n type: 'Tap',\n options: {\n enable: targetIsScrollbar,\n },\n events: {\n tap(e) {\n this.chart.component(SCROLLBAR_KEY).emit('tap', e);\n },\n },\n };\n\n const pan = {\n type: 'Pan',\n options: {\n enable: targetIsScrollbar,\n },\n events: {\n panstart(e) {\n this.chart.component(SCROLLBAR_KEY).emit('panStart', e);\n },\n pan(e) {\n this.chart.component(SCROLLBAR_KEY).emit('panMove', e);\n },\n panend(e) {\n this.chart.component(SCROLLBAR_KEY).emit('panEnd', e);\n },\n pancancel(e) {\n this.chart.component(SCROLLBAR_KEY).emit('panCancel', e);\n },\n },\n };\n\n const actions = [tap, pan];\n return actions;\n}\n\nexport default getActions;\n","function getAxisDock(direction, dock, isRtl) {\n return direction === 'y' ? getYAxisDock(dock, isRtl) : getXAxisDock(dock);\n}\n\nfunction getOppositeAxisDock(direction, dock, isRtl) {\n const oppositeDock = dock === 'far' ? 'near' : 'far';\n return getAxisDock(direction, oppositeDock, isRtl);\n}\n\nfunction getYAxisDock(dock, isRtl) {\n const yDockNearFar = dock || 'near';\n return (isRtl && yDockNearFar === 'near') || (!isRtl && yDockNearFar === 'far') ? 'right' : 'left';\n}\n\nfunction getXAxisDock(dock) {\n return dock === 'far' ? 'top' : 'bottom';\n}\n\nexport default {\n getAxisDock,\n getOppositeAxisDock,\n getYAxisDock,\n};\n","// Source: https://en.wikipedia.org/wiki/Bi-directional_text and http://www.unicode.org/Public/6.0.0/ucd/UnicodeData.txt\n// 3 types of strong direction characters: L (strong left-to-right), R(strong right-to-left, Hebrew) and AL(strong right-to-left, Arabic language)\nconst rangesOfLChars =\n '[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02B8\\u02BB-\\u02C1\\u02D0-\\u02D1\\u02E0-\\u02E4\\u02EE\\u0370-\\u0373\\u0376-\\u037D\\u0386\\u0388-\\u03F5\\u03F7-\\u0482\\u048A-\\u0589\\u0903-\\u0939\\u093B\\u093D-\\u0940\\u0949-\\u094C\\u094E-\\u0950\\u0958-\\u0961\\u0964-\\u097F\\u0982-\\u09B9\\u09BD-\\u09C0\\u09C7-\\u09CC\\u09CE-\\u09E1\\u09E6-\\u09F1\\u09F4-\\u09FA\\u0A03-\\u0A39\\u0A3E-\\u0A40\\u0A59-\\u0A6F\\u0A72-\\u0A74\\u0A83-\\u0AB9\\u0ABD-\\u0AC0\\u0AC9-\\u0ACC\\u0AD0-\\u0AE1\\u0AE6-\\u0AEF\\u0B02-\\u0B39\\u0B3D-\\u0B3E\\u0B40\\u0B47-\\u0B4C\\u0B57-\\u0B61\\u0B66-\\u0B77\\u0B83-\\u0BBF\\u0BC1-\\u0BCC\\u0BD0-\\u0BF2\\u0C01-\\u0C3D\\u0C41-\\u0C44\\u0C58-\\u0C61\\u0C66-\\u0C6F\\u0C7F-\\u0CB9\\u0CBD-\\u0CCB\\u0CD5-\\u0CE1\\u0CE6-\\u0D40\\u0D46-\\u0D4C\\u0D4E-\\u0D61\\u0D66-\\u0DC6\\u0DCF-\\u0DD1\\u0DD8-\\u0E30\\u0E32-\\u0E33\\u0E40-\\u0E46\\u0E4F-\\u0EB0\\u0EB2-\\u0EB3\\u0EBD-\\u0EC6\\u0ED0-\\u0F17\\u0F1A-\\u0F34\\u0F36\\u0F38\\u0F3E-\\u0F6C\\u0F7F\\u0F85\\u0F88-\\u0F8C\\u0FBE-\\u0FC5\\u0FC7-\\u102C\\u1031\\u1038\\u103B-\\u103C\\u103F-\\u1057\\u105A-\\u105D\\u1061-\\u1070\\u1075-\\u1081\\u1083-\\u1084\\u1087-\\u108C\\u108E-\\u109C\\u109E-\\u135A\\u1360-\\u138F\\u13A0-\\u13F4\\u1401-\\u167F\\u1681-\\u169A\\u16A0-\\u1711\\u1720-\\u1731\\u1735-\\u1751\\u1760-\\u1770\\u1780-\\u17B6\\u17BE-\\u17C5\\u17C7-\\u17C8\\u17D4-\\u17DA\\u17DC\\u17E0-\\u17E9\\u1810-\\u18A8\\u18AA-\\u191C\\u1923-\\u1926\\u1929-\\u1931\\u1933-\\u1938\\u1946-\\u19DA\\u1A00-\\u1A16\\u1A19-\\u1A55\\u1A57\\u1A61\\u1A63-\\u1A64\\u1A6D-\\u1A72\\u1A80-\\u1AAD\\u1B04-\\u1B33\\u1B35\\u1B3B\\u1B3D-\\u1B41\\u1B43-\\u1B6A\\u1B74-\\u1B7C\\u1B82-\\u1BA1\\u1BA6-\\u1BA7\\u1BAA-\\u1BE5\\u1BE7\\u1BEA-\\u1BEC\\u1BEE\\u1BF2-\\u1C2B\\u1C34-\\u1C35\\u1C3B-\\u1C7F\\u1CD3\\u1CE1\\u1CE9-\\u1CEC\\u1CEE-\\u1DBF\\u1E00-\\u1FBC\\u1FBE\\u1FC2-\\u1FCC\\u1FD0-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FFC\\u200E\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E-\\u214F\\u2160-\\u2188\\u2336-\\u237A\\u2395\\u249C-\\u24E9\\u26AC\\u2800-\\u28FF\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2D00-\\u2D70\\u2D80-\\u2DDE\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u31BA\\u31F0-\\u321C\\u3220-\\u324F\\u3260-\\u327B\\u327F-\\u32B0\\u32C0-\\u32CB\\u32D0-\\u3376\\u337B-\\u33DD\\u33E0-\\u33FE\\u3400-\\u4DB5\\u4E00-\\uA48C\\uA4D0-\\uA60C\\uA610-\\uA66E\\uA680-\\uA6EF\\uA6F2-\\uA6F7\\uA722-\\uA787\\uA789-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA824\\uA827\\uA830-\\uA837\\uA840-\\uA873\\uA880-\\uA8C3\\uA8CE-\\uA8D9\\uA8F2-\\uA925\\uA92E-\\uA946\\uA952-\\uA97C\\uA983-\\uA9B2\\uA9B4-\\uA9B5\\uA9BA-\\uA9BB\\uA9BD-\\uAA28\\uAA2F-\\uAA30\\uAA33-\\uAA34\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA4D-\\uAAAF\\uAAB1\\uAAB5-\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2-\\uABE4\\uABE6-\\uABE7\\uABE9-\\uABEC\\uABF0-\\uFB17\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFDC]';\nconst rangesOfRChars =\n '[\\u05BE\\u05C0\\u05C3\\u05C6\\u05D0-\\u05F4\\u07C0-\\u07EA\\u07F4-\\u07F5\\u07FA-\\u0815\\u081A\\u0824\\u0828\\u0830-\\u0858\\u085E\\u200F\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB4F]';\nconst rangesOfALChars =\n '[\\u0608\\u060B\\u060D\\u061B-\\u064A\\u066D-\\u066F\\u0671-\\u06D5\\u06E5-\\u06E6\\u06EE-\\u06EF\\u06FA-\\u070D\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\uFB50-\\uFD3D\\uFD50-\\uFDFC\\uFE70-\\uFEFC]';\n// eslint-disable-next-line no-misleading-character-class\nconst rangesOfLRgExp = new RegExp(rangesOfLChars);\nconst rangesOfRRgExp = new RegExp(rangesOfRChars);\nconst rangesOfALRgExp = new RegExp(rangesOfALChars);\n\nconst // left-to-right marker\n lrm = String.fromCharCode(8206); // right-to-left marker\n\nconst rlm = String.fromCharCode(8207);\n\nfunction isLtrChar(c) {\n return rangesOfLRgExp.test(c);\n}\n\nfunction isRtlChar(c) {\n return rangesOfRRgExp.test(c) || rangesOfALRgExp.test(c);\n}\n\nfunction detectTextDirection(s) {\n const n = s ? s.length : 0;\n let i;\n let c;\n for (i = 0; i < n; i++) {\n c = s[i];\n if (isLtrChar(c)) {\n return 'ltr';\n }\n if (isRtlChar(c)) {\n return 'rtl';\n }\n }\n return 'ltr';\n}\n\nexport default {\n lrm,\n rlm,\n detectTextDirection,\n};\n","import extend from 'extend';\nimport RtlUtil from '../../../../extra/rtl-util';\n\n/**\n * Get Picasso settings for an individual ref-line.\n *\n * @param {*} settings Default settings for the ref-line\n * @param {*} lineColorIndex Chart builder options + paletteColor option\n */\nfunction lineSettings(settings, options) {\n const lineStroke =\n typeof options.paletteColor !== 'undefined'\n ? options.theme.getColorPickerColor(options.paletteColor)\n : 'transparent';\n const defaultSettings = {\n value: 0,\n line: {\n stroke: lineStroke,\n strokeDasharray: options?.style?.lineType,\n },\n };\n return extend(true, defaultSettings, settings || {});\n}\n\n/**\n * Get Picasso settings for an individual ref-line used to display label and OOB.\n *\n * @param {*} settings Default settings for the ref-line label\n * @param {*} options Chart builder options + paletteColor option\n */\nfunction lineLabelSettings(settings, options) {\n const chartID = options && options.chartID; // Should we validate if the parameter exists?\n let labelColor = options.theme.getStyle(chartID, 'referenceLine.label.name', 'color');\n const labelFontSize = options.theme.getStyle(chartID, 'referenceLine.label.name', 'fontSize');\n const labelFontFamily = options.theme.getStyle(chartID, 'referenceLine.label.name', 'fontFamily');\n\n if (options.paletteColor) {\n labelColor = options.theme.getColorPickerColor(options.paletteColor);\n } else if (!labelColor) {\n labelColor = 'transparent';\n }\n\n const defaultSettings = {\n value: 0,\n line: {\n stroke: 'transparent',\n },\n label: {\n align: 'center',\n vAlign: 'middle',\n text: '',\n fill: labelColor,\n fontFamily: labelFontFamily,\n fontSize: labelFontSize,\n maxWidthPx: 135,\n },\n };\n return extend(true, defaultSettings, settings || {});\n}\n\nconst isVisible = (refLine) =>\n refLine && refLine.show !== false && refLine.show !== 0 && refLine.show !== '0' && refLine.refLineExpr !== undefined;\n\nfunction getRefLineTitle({ refLine, label, valueString }) {\n if (refLine.showValue !== false) {\n if (refLine.showLabel !== false) {\n return `${label} ${RtlUtil.lrm}(${valueString})${RtlUtil.lrm}`;\n }\n return `${RtlUtil.lrm}(${valueString})${RtlUtil.lrm}`;\n }\n if (refLine.showLabel !== false) {\n return label;\n }\n return '';\n}\n\nexport default {\n lineSettings,\n lineLabelSettings,\n isVisible,\n getRefLineTitle,\n};\n","import DimensionMeasureChartLayoutSettings from './layout-settings';\n\nconst constants = {\n SHOW_AXIS_LABELS_OPTIONS: ['all', 'labels'], // show dim/measure axis labels when it matches one of this values\n SHOW_TITLE_OPTIONS: ['all', 'title'], // show the dimension/measure title when the show option matches one of these values\n HORIZONTAL: 'horizontal',\n VERTICAL: 'vertical',\n LAYOUTSETTINGS: DimensionMeasureChartLayoutSettings,\n};\n\nconstants.DEFAULT_CHART_ORIENTATION = constants.HORIZONTAL;\n\nexport default constants;\n","export default {\n lasso: {\n displayOrder: 10000,\n },\n rangeDim: {\n displayOrder: 10000,\n },\n rangeMeasure: {\n displayOrder: 10000,\n },\n rangeMinor: {\n displayOrder: 10000,\n },\n\n // SPARK\n scrollBar: {\n minimumLayoutMode: 'SPARK',\n prioOrder: -1,\n displayOrder: 100,\n },\n\n refLines: {\n minimumLayoutMode: 'SPARK',\n prioOrder: 60,\n displayOrder: -10,\n },\n\n // XMALL\n measureAxisTitle: {\n minimumLayoutMode: 'XSMALL',\n prioOrder: 30,\n displayOrder: 90,\n },\n dimensionAxisTitle: {\n minimumLayoutMode: 'XSMALL',\n prioOrder: 30,\n displayOrder: 90,\n },\n\n measureAxis: {\n minimumLayoutMode: 'XSMALL',\n prioOrder: 10,\n displayOrder: 80,\n },\n dimensionAxis: {\n minimumLayoutMode: 'XSMALL',\n prioOrder: 10,\n displayOrder: 80,\n },\n\n gridLines: {\n minimumLayoutMode: 'XSMALL',\n displayOrder: -100,\n },\n\n // SMALL\n refLinesLabels: {\n minimumLayoutMode: 'SMALL',\n prioOrder: 60,\n displayOrder: 0,\n },\n};\n","import extend from 'extend';\nimport generateId from '../../../../extra/generate-id';\nimport getScrollActions from '../../../scroll/scroll-actions';\nimport axisDockUtil from '../../components/util/axis-dock-util';\nimport refLineUtil from '../../components/util/ref-line-util';\nimport CONSTANTS from './constants';\n\nconst SENSE_PICASSO_SPACING_COEFFICIENT = 100;\n\nfunction DimensionMeasureChart(chartBuilder, opts) {\n const options = opts || {};\n\n const measureAxisProperties = options.measureAxisProperties || {};\n const dimensionAxisProperties = options.dimensionAxisProperties || {};\n const chartOrientation = options.orientation || CONSTANTS.DEFAULT_CHART_ORIENTATION;\n const isChartHorizontal = chartOrientation === CONSTANTS.HORIZONTAL;\n const measureDirection = isChartHorizontal ? 'x' : 'y';\n const dimensionDirection = isChartHorizontal ? 'y' : 'x';\n const SHOW_AXIS_LABELS_OPTIONS = CONSTANTS.SHOW_AXIS_LABELS_OPTIONS;\n const SHOW_TITLE_OPTIONS = CONSTANTS.SHOW_TITLE_OPTIONS;\n const includeMeasureAxisComponent = SHOW_AXIS_LABELS_OPTIONS.includes(measureAxisProperties.show);\n const includeMeasureAxisTitleComponent =\n !!options.measureTitleText && SHOW_TITLE_OPTIONS.includes(measureAxisProperties.show);\n const includeDimensionAxisComponent =\n options.includeDimensionAxis && SHOW_AXIS_LABELS_OPTIONS.includes(dimensionAxisProperties.show);\n const includeDimensionAxisTitleComponent =\n options.includeDimensionAxis &&\n !!options.dimensionTitleText &&\n SHOW_TITLE_OPTIONS.includes(dimensionAxisProperties.show);\n const includeGridlines = options.gridlines && !(!options.gridlines.auto && options.gridlines.spacing === 0);\n\n const includeRefLines = options.refLines && options.refLines.some((refLine) => refLine.show);\n\n const interactionActions = [];\n\n if (includeMeasureAxisComponent) {\n addMeasureAxisComponent(chartBuilder, options, measureDirection, measureAxisProperties);\n }\n\n if (includeMeasureAxisTitleComponent) {\n addMeasureAxisTitleComponent(chartBuilder, options, measureDirection);\n }\n\n addMeasureScale(chartBuilder, options, chartOrientation, measureAxisProperties);\n\n if (includeDimensionAxisComponent) {\n addDimensionAxisComponent(chartBuilder, options, dimensionDirection);\n }\n\n if (includeDimensionAxisTitleComponent) {\n addDimensionAxisTitleComponent(chartBuilder, options, dimensionDirection);\n }\n\n if (options.includeDimensionAxis) {\n addDimensionScale(chartBuilder, options, chartOrientation);\n }\n\n if (includeGridlines) {\n addGridlinesComponent(chartBuilder, options.gridlines, measureDirection);\n }\n\n if (options.hasNavigation) {\n addScrollbarComponent(chartBuilder, interactionActions, options, isChartHorizontal);\n }\n\n if (includeRefLines) {\n addRefLineComponent(chartBuilder, options, measureDirection, measureAxisProperties);\n }\n\n if (options.enableLasso && options.selectionsEnabled) {\n const lassoOptions = options.lasso || {};\n addLassoComponent(chartBuilder, lassoOptions);\n }\n\n if (options.enableDimRange && options.includeDimensionAxis && options.selectionsEnabled) {\n const rangeDimOptions = options.dimRange || {};\n const dimensionAxisOptions = getDimensionAxisOptions(options, dimensionDirection);\n addRangeDimComponent(chartBuilder, rangeDimOptions, isChartHorizontal, dimensionAxisOptions.dock, options.isRtl);\n }\n\n if (options.enableMeasureRange && options.selectionsEnabled) {\n const rangeMeasureOptions = options.measureRange || {};\n const measureAxisOptions = getMeasureAxisOptions(options, measureDirection);\n addRangeMeasureComponent(\n chartBuilder,\n rangeMeasureOptions,\n isChartHorizontal,\n measureAxisOptions.dock,\n options.isRtl\n );\n }\n\n if (options.enableAreaRange && options.selectionsEnabled) {\n const areaDimOptions = options.areaRange || {};\n const dimAreaAxisOptions = getDimensionAxisOptions(options, dimensionDirection);\n addRangeAreaComponent(chartBuilder, areaDimOptions, isChartHorizontal, dimAreaAxisOptions.dock, options.isRtl);\n }\n\n if (options.brushActions) {\n addInteractionActions(interactionActions, options.brushActions);\n }\n\n if (interactionActions.length) {\n addInteractionComponent(chartBuilder, interactionActions);\n }\n}\n\nexport default DimensionMeasureChart;\n\nfunction addInteractionComponent(chartBuilder, interactionActions) {\n return chartBuilder.addInteraction({}, { gestures: interactionActions });\n}\n\nfunction addInteractionActions(interactionActions, actions) {\n actions.forEach((a) => {\n interactionActions.push(a);\n });\n}\n\nfunction addMeasureScale(chartBuilder, options, chartOrientation, measureAxisProperties) {\n let measureScaleSettings = options.measureScaleSettings;\n\n const measureScaleOptions = {\n isRtl: options.isRtl,\n source: options.measureSource,\n orientation: chartOrientation,\n measureAxisProperties,\n };\n\n if (measureAxisProperties && measureAxisProperties.spacing > 0) {\n measureScaleSettings = extend(true, measureScaleSettings || {}, {\n component: {\n ticks: {\n distance: measureAxisProperties.spacing * SENSE_PICASSO_SPACING_COEFFICIENT,\n },\n },\n });\n }\n\n chartBuilder.addScale('measure-scale', measureScaleSettings, measureScaleOptions);\n}\n\nfunction addMeasureAxisComponent(chartBuilder, options, measureDirection, measureAxisProperties) {\n let measureAxisSettings = {\n scale: 'measure',\n forceBounds: measureAxisProperties && !measureAxisProperties.autoMinMax && measureAxisProperties.showBounds,\n };\n measureAxisSettings = extend(measureAxisSettings, CONSTANTS.LAYOUTSETTINGS.measureAxis);\n\n const measureAxisOptions = getMeasureAxisOptions(options, measureDirection);\n\n chartBuilder.addComponent(`${measureDirection}-axis`, measureAxisSettings, measureAxisOptions);\n}\n\nfunction addMeasureAxisTitleComponent(chartBuilder, options, measureDirection) {\n let measureTitleSettings = {\n text: options.measureTitleText,\n };\n measureTitleSettings = extend(measureTitleSettings, CONSTANTS.LAYOUTSETTINGS.measureAxisTitle);\n\n const measureAxisOptions = getMeasureAxisTitleOptions(options, measureDirection);\n\n chartBuilder.addComponent(`${measureDirection}-axis-title`, measureTitleSettings, measureAxisOptions);\n}\n\nfunction addDimensionScale(chartBuilder, options, chartOrientation) {\n const dimensionScaleOptions = {\n isRtl: options.isRtl,\n source: options.dimensionSource,\n orientation: chartOrientation === CONSTANTS.HORIZONTAL ? CONSTANTS.VERTICAL : CONSTANTS.HORIZONTAL,\n };\n\n chartBuilder.addScale('dimension-scale', options.dimensionScaleSettings, dimensionScaleOptions);\n}\n\nfunction addDimensionAxisComponent(chartBuilder, options, dimensionDirection) {\n let dimensionAxisSettings = {\n scale: 'dimension',\n };\n dimensionAxisSettings = extend(dimensionAxisSettings, CONSTANTS.LAYOUTSETTINGS.dimensionAxis);\n\n const dimensionAxisOptions = getDimensionAxisOptions(options, dimensionDirection);\n\n extend(true, dimensionAxisSettings, options.dimensionAxisSettings || {});\n\n chartBuilder.addComponent(`${dimensionDirection}-axis`, dimensionAxisSettings, dimensionAxisOptions);\n}\n\nfunction addDimensionAxisTitleComponent(chartBuilder, options, dimensionDirection) {\n let dimensionAxisTitleSettings = {\n text: options.dimensionTitleText,\n };\n dimensionAxisTitleSettings = extend(dimensionAxisTitleSettings, CONSTANTS.LAYOUTSETTINGS.dimensionAxisTitle);\n\n const dimensionAxisTitleOptions = getDimensionAxisTitleOptions(options, dimensionDirection);\n\n chartBuilder.addComponent(`${dimensionDirection}-axis-title`, dimensionAxisTitleSettings, dimensionAxisTitleOptions);\n}\n\nfunction addGridlinesComponent(chartBuilder, gridlinesOptions, measureDirection) {\n let gridlinesSettings = {\n ticks: {\n show: true,\n },\n minorTicks: {\n show: !gridlinesOptions.auto && !gridlinesOptions.auto && gridlinesOptions.spacing === 3,\n },\n };\n gridlinesSettings = extend(gridlinesSettings, CONSTANTS.LAYOUTSETTINGS.gridLines);\n\n gridlinesSettings[measureDirection] = { scale: 'measure' };\n\n chartBuilder.addComponent('grid-line', gridlinesSettings);\n}\n\nfunction addScrollbarComponent(chartBuilder, interactionActions, options, isChartHorizontal) {\n const settings = chartBuilder.getSettings();\n\n settings.scroll = {\n dimension: {\n viewSize: (options.scrollSettings && options.scrollSettings.viewSize) || 0,\n max: (options.scrollSettings && options.scrollSettings.max) || 0,\n },\n };\n\n const scrollbarOptions = {\n isRtl: options.isRtl,\n chartID: options.chartID,\n isHorizontal: !isChartHorizontal,\n };\n\n const scrollBarSettings = extend({}, CONSTANTS.LAYOUTSETTINGS.scrollBar);\n\n chartBuilder.addComponent('scrollbar', scrollBarSettings, scrollbarOptions);\n\n addInteractionActions(interactionActions, getScrollActions(options.isNavigationEnabledFn));\n}\n\n/*\n * Add \"ref-line\" component(s). Currently two \"ref-line\" components are used to reserve space for labels and\n * OOB markers outside of the data area. First component: shows the line(s) within the data area. Second component:\n * shows the label(s) and OOB marker(s).\n */\nfunction addRefLineComponent(chartBuilder, options, measureDirection, measureAxisProperties) {\n const axisDock = axisDockUtil.getAxisDock(measureDirection, measureAxisProperties.dock, options.isRtl);\n let refLinesSettings = {\n // First component\n key: 'ref-line',\n style: {\n oob: {\n show: false,\n },\n },\n lines: {\n x: [],\n y: [],\n },\n };\n refLinesSettings = extend(refLinesSettings, CONSTANTS.LAYOUTSETTINGS.refLines);\n\n let refLinesLabelsSettings = {\n // Second component\n // Use a unique key to force re-render of this component in Picasso.\n // This must be done because Picasso does not allow re-binding of functions (and shouldn't either).\n key: `ref-line-labels-${generateId()}`,\n require: ['renderer', 'chart'],\n dock: axisDockUtil.getOppositeAxisDock(measureDirection, measureAxisProperties.dock, options.isRtl),\n preferredSize() {\n if (measureDirection === 'x') {\n // Use constant component size if horizontal\n return 26;\n }\n\n // Adapt component size to the longest label if vertical\n const measureText = this.renderer.measureText;\n const formatter = this.chart.formatter({ data: chartBuilder.settings.scales.measure.data });\n const labelWidths = refLinesLabelsSettings.lines.y.map((line) => {\n const formattedValue = line.label.showValue !== false ? `(${formatter(line.value)})` : '';\n const text = `${line.label.text} ${formattedValue}`;\n const minimumText = line.label.text && formattedValue ? ` ${formattedValue}` : formattedValue;\n return {\n wanted: measureText({\n text,\n fontSize: line.fontSize,\n fontFamily: line.fontFamily,\n }).width,\n required: measureText({\n text: minimumText,\n fontSize: line.fontSize,\n fontFamily: line.fontFamily,\n }).width,\n };\n });\n\n const maxLabelWidth = labelWidths[0];\n for (let i = 1; i < labelWidths.length; i++) {\n if (labelWidths[i].wanted > maxLabelWidth.wanted) {\n maxLabelWidth.wanted = labelWidths[i].wanted;\n }\n if (labelWidths[i].required > maxLabelWidth.required) {\n maxLabelWidth.required = labelWidths[i].required;\n }\n }\n const labelPadding = 12;\n if (maxLabelWidth.required + labelPadding > 100) {\n return maxLabelWidth.required + labelPadding; // Always have space for the value\n }\n return Math.min(maxLabelWidth.wanted + labelPadding, 100); // Limit to 100 px width\n },\n lines: {\n x: [],\n y: [],\n },\n };\n refLinesLabelsSettings = extend(refLinesLabelsSettings, CONSTANTS.LAYOUTSETTINGS.refLinesLabels);\n\n options.refLines.forEach((refLine) => {\n if (!refLine.show) {\n return;\n }\n\n const expressionValue = refLine.refLineExpr && refLine.refLineExpr.value;\n const lineOptions = extend(true, {}, options, {\n paletteColor: refLine.paletteColor,\n style: refLine.style,\n chartID: chartBuilder.options.chartID,\n });\n\n // Add a line for each visible ref line\n const lineSettings = refLineUtil.lineSettings(\n {\n scale: 'measure',\n dir: measureDirection,\n value: expressionValue,\n },\n lineOptions\n );\n\n refLinesSettings.lines[measureDirection].push(lineSettings);\n\n // Add a label and an OOB marker for each visible ref line (using the second component)\n const lineLabelSettings = refLineUtil.lineLabelSettings(\n {\n scale: 'measure',\n value: expressionValue,\n label: {\n text: refLine.showLabel !== false ? refLine.label : '',\n showValue: refLine.showValue !== false,\n },\n },\n lineOptions\n );\n\n if (measureDirection === 'x') {\n lineLabelSettings.label.vAlign = axisDock === 'near' ? 1 : 0;\n } else {\n // y\n lineLabelSettings.label.align = axisDock === 'near' ? 0 : 1;\n }\n\n refLinesLabelsSettings.lines[measureDirection].push(lineLabelSettings);\n });\n\n chartBuilder.addComponent('ref-line', refLinesSettings, {});\n chartBuilder.addComponent('ref-line', refLinesLabelsSettings, {});\n}\n\n/**\n * Adds a lasso component to the chart builder\n * @param {ChartBuilder} chartBuilder\n * @param {object} options - lasso options\n * @param {string} options.brushKey - key used as context for lasso selection triggers\n * @param {string} options.brushComponent - target component key\n */\nfunction addLassoComponent(chartBuilder, options) {\n const lassoOptions = {\n brushKey: options.brushKey,\n brushComponents: options.brushComponents,\n brushData: options.brushData,\n };\n\n chartBuilder.addComponent('lasso', CONSTANTS.LAYOUTSETTINGS.lasso, lassoOptions);\n}\n/**\n * Adds a dimension range component to the chart builder\n * @param {any} chartBuilder\n * @param {object} options - range dim options\n * @param {string} options.brushKey - key used as context for range selection triggers\n * @param {string} options.brushAxis - target axis to perform range select on\n * @param {string} options.brushScale - Scale to use\n * @param {boolean} isChartHorizontal - Whether the chart is horizontal or not\n */\nfunction addRangeDimComponent(chartBuilder, options, isChartHorizontal, dock, isRtl) {\n let rangeDimSettings = {\n key: 'rangeDim',\n };\n\n rangeDimSettings = extend(rangeDimSettings, CONSTANTS.LAYOUTSETTINGS.rangeDim);\n\n const rangeDimOptions = {\n brushKey: options.brushKey,\n brushAxis: options.brushAxis,\n brushArea: options.brushArea,\n brushScale: options.brushScale,\n isHorizontal: !isChartHorizontal,\n dock,\n isRtl,\n };\n\n chartBuilder.addComponent('range', rangeDimSettings, rangeDimOptions);\n}\n\nfunction addRangeMeasureComponent(chartBuilder, options, isChartHorizontal, dock, isRtl) {\n let rangeMeasureSettings = {\n key: 'rangeMeasure',\n };\n\n rangeMeasureSettings = extend(rangeMeasureSettings, CONSTANTS.LAYOUTSETTINGS.rangeMeasure);\n\n const rangeMeasureOptions = {\n brushKey: options.brushKey,\n brushAxis: options.brushAxis,\n brushArea: options.brushArea,\n brushScale: options.brushScale,\n multiple: options.multiple,\n isHorizontal: isChartHorizontal,\n dock,\n isRtl,\n };\n\n chartBuilder.addComponent('range', rangeMeasureSettings, rangeMeasureOptions);\n}\n\nfunction addRangeAreaComponent(chartBuilder, options, isChartHorizontal, dock, isRtl) {\n let rangeMinorSettings = {\n key: 'rangeMinor',\n };\n\n rangeMinorSettings = extend(rangeMinorSettings, CONSTANTS.LAYOUTSETTINGS.rangeMinor);\n\n const rangeMeasureOptions = {\n brushKey: options.brushKey,\n brushAxis: options.brushAxis,\n brushData: options.brushData,\n brushArea: options.brushArea,\n brushComponents: options.brushComponents,\n brushScale: options.brushScale,\n multiple: options.multiple,\n isHorizontal: options.brushScale === 'measure' ? isChartHorizontal : !isChartHorizontal,\n dock,\n isRtl,\n chartInstance: options.chartInstance,\n };\n\n chartBuilder.addComponent('range-area', rangeMinorSettings, rangeMeasureOptions);\n}\n\nfunction getMeasureAxisOptions(options, measureDirection) {\n return {\n dock: options.measureAxisProperties && options.measureAxisProperties.dock,\n direction: measureDirection,\n isRtl: options.isRtl,\n };\n}\n\nfunction getMeasureAxisTitleOptions(options, measureDirection) {\n return getMeasureAxisOptions(options, measureDirection);\n}\n\nfunction getDimensionAxisOptions(options, dimensionDirection) {\n return {\n dock: options.dimensionAxisProperties && options.dimensionAxisProperties.dock,\n direction: dimensionDirection,\n isRtl: options.isRtl,\n };\n}\n\nfunction getDimensionAxisTitleOptions(options, dimensionDirection) {\n return getDimensionAxisOptions(options, dimensionDirection);\n}\n","import extend from 'extend';\n\nfunction scale(settings, opts) {\n const options = opts || {};\n const isHorizontal = !options.orientation || options.orientation === 'horizontal';\n const isRtl = !!options.isRtl;\n\n const defaultSettings = {\n name: options.name || 'scale',\n component: {\n invert: isHorizontal && isRtl,\n minorTicks: {\n count: 1,\n },\n range: options.range || undefined,\n domain: options.domain || undefined,\n trackBy: options.trackBy || 'id',\n },\n };\n\n return extend(true, {}, defaultSettings, settings || {});\n}\n\nfunction measureScale(settings, opts) {\n const options = opts || {};\n let fields = options.source || [];\n if (typeof fields === 'string') {\n fields = [fields];\n }\n\n const defaultSettings = {\n name: 'measure',\n component: {\n expand: 0.1,\n data: {\n fields: fields.map((f) => ({\n field: f,\n })),\n },\n },\n };\n\n const measureAxisProperties = opts && opts.measureAxisProperties;\n\n if (measureAxisProperties && !measureAxisProperties.autoMinMax) {\n // explicit min max measure scale range\n if (['min', 'minMax'].includes(measureAxisProperties.minMax)) {\n defaultSettings.component.min = measureAxisProperties.min;\n }\n if (['max', 'minMax'].includes(measureAxisProperties.minMax)) {\n defaultSettings.component.max = measureAxisProperties.max;\n }\n }\n\n const measureSettings = extend(true, defaultSettings, settings || {});\n const scaleSettings = scale(measureSettings, opts);\n const hasInvertSettings = settings && settings.component && typeof settings.component.invert !== 'undefined';\n\n if (!hasInvertSettings && opts && opts.orientation === 'vertical') {\n scaleSettings.component.invert = !scaleSettings.component.invert;\n }\n\n return scaleSettings;\n}\n\nfunction dimensionScale(settings, opts) {\n const defaultSettings = {\n name: 'dimension',\n component: {\n trackBy: 'id',\n type: 'band',\n data: {\n extract: {\n field: (opts && opts.source) || '',\n props: {\n label(v) {\n return v.qText || '';\n }, // Map qText to handle both qElemNo and qElemNumber\n },\n },\n },\n label(v) {\n return v.datum.label.value;\n }, // Set qText as value from the mapping on r.92\n },\n };\n\n const dimensionSettings = extend(true, defaultSettings, settings || {});\n\n return scale(dimensionSettings, opts);\n}\n\nscale.measureScale = measureScale;\nscale.dimensionScale = dimensionScale;\n\nexport default scale;\n","import extend from 'extend';\nimport axisDockUtil from './util/axis-dock-util';\n\nfunction axis(settings, options) {\n const chartID = options && options.chartID; // Should we validate if the parameter exists?\n const dock = options && options.dock;\n const direction = options && options.direction;\n const isRtl = options && options.isRtl;\n\n const axisLineStroke = options.theme.getStyle(chartID, 'axis.line.major', 'color');\n const titleFontSize = options.theme.getStyle(chartID, 'axis.title', 'fontSize');\n const titleFill = options.theme.getStyle(chartID, 'axis.title', 'color');\n const labelsFill = options.theme.getStyle(chartID, 'axis.label.name', 'color');\n const labelsFontSize = options.theme.getStyle(chartID, 'axis.label.name', 'fontSize');\n const titleFontFamily = options.theme.getStyle(chartID, 'axis.title', 'fontFamily');\n const labelsFontFamily = options.theme.getStyle(chartID, 'axis.label.name', 'fontFamily');\n\n const defaultSettings = {\n key: 'axis',\n type: 'axis',\n dock: axisDockUtil.getAxisDock(direction, dock, isRtl),\n brush: { trigger: [], consume: [] },\n settings: {\n title: {\n fontSize: titleFontSize,\n fontFamily: titleFontFamily,\n fill: titleFill,\n },\n line: {\n show: true,\n strokeWidth: 1,\n stroke: axisLineStroke,\n },\n labels: {\n fill: labelsFill,\n fontSize: labelsFontSize,\n fontFamily: labelsFontFamily,\n tiltAngle: isRtl ? -40 : 40,\n maxEdgeBleed: 75,\n maxSize: 150,\n mode: 'auto',\n },\n ticks: {\n stroke: axisLineStroke,\n },\n minorTicks: {\n stroke: axisLineStroke,\n },\n },\n };\n const axisSettings = extend(true, {}, defaultSettings, settings || {});\n axisSettings.brush.consume.forEach((consume) => {\n consume.style.active.strokeWidth = 0;\n });\n return axisSettings;\n}\n\nfunction xAxis(settings, options) {\n const defaultSettings = {\n key: 'x-axis',\n scale: 'x',\n };\n const xAxisSettings = extend(true, defaultSettings, settings || {});\n return axis(xAxisSettings, options);\n}\n\nfunction yAxis(settings, options) {\n const dock = options && options.dock;\n const isRtl = options && options.isRtl;\n const defaultSettings = {\n key: 'y-axis',\n scale: 'y',\n dock: axisDockUtil.getYAxisDock(dock, isRtl),\n };\n const yAxisSettings = extend(true, defaultSettings, settings || {});\n return axis(yAxisSettings, options);\n}\n\naxis.xAxis = xAxis;\naxis.yAxis = yAxis;\n\nexport default axis;\n","import extend from 'extend';\nimport axisDockUtil from './util/axis-dock-util';\n\nfunction text(settings, options) {\n const chartID = options && options.chartID;\n const dock = options && options.dock;\n const direction = options && options.direction;\n const isRtl = options && options.isRtl;\n const titleFontSize = options.theme.getStyle(chartID, 'axis.title', 'fontSize');\n const titleFill = options.theme.getStyle(chartID, 'axis.title', 'color');\n const titleFontFamily = options.theme.getStyle(chartID, 'axis.title', 'fontFamily');\n\n const defaultSettings = {\n key: 'text',\n type: 'text',\n dock: axisDockUtil.getAxisDock(direction, dock, isRtl) || 'bottom',\n displayOrder: 0, // TODO: This can be removed when picasso set displayOrder for text component to 0. Currently picasso set it to 99.\n style: {\n text: {\n fontSize: titleFontSize,\n fontFamily: titleFontFamily,\n fill: titleFill,\n },\n },\n };\n return extend(true, {}, defaultSettings, settings || {});\n}\n\nfunction xAxisTitle(settings, options) {\n const defaultSettings = {\n key: 'x-axis-title',\n };\n const xAxisTitleSettings = extend(true, defaultSettings, settings || {});\n return text(xAxisTitleSettings, options);\n}\n\nfunction yAxisTitle(settings, options) {\n const dock = options && options.dock;\n const isRtl = options && options.isRtl;\n const defaultSettings = {\n key: 'y-axis-title',\n dock: axisDockUtil.getYAxisDock(dock, isRtl) || 'left',\n };\n const yAxisTitleSettings = extend(true, defaultSettings, settings || {});\n return text(yAxisTitleSettings, options);\n}\n\ntext.xAxisTitle = xAxisTitle;\ntext.yAxisTitle = yAxisTitle;\n\nexport default text;\n","function getBublesAlign(isHorizontal, dock, isRtl) {\n let isAlignStart = (isHorizontal && dock !== 'far') || (!isHorizontal && dock === 'far');\n if (!isHorizontal && isRtl) {\n isAlignStart = !isAlignStart;\n }\n return isAlignStart ? 'start' : 'end';\n}\n\nfunction getDock(brushAxis, brushArea) {\n const dockTargets = [];\n let dockT;\n if (brushAxis) {\n dockTargets.push(`@${brushAxis}`);\n }\n if (brushArea) {\n dockTargets.push(`@${brushArea}`);\n }\n if (dockTargets.length) {\n dockT = dockTargets.join(',');\n }\n return dockT;\n}\n\nexport default {\n getBublesAlign,\n getDock,\n};\n","/* eslint-disable guard-for-in */\n/* eslint-disable no-restricted-syntax */\nconst layoutModes = {\n SPARK: { width: 0, height: 0 },\n XSMALL: { width: 150, height: 75 },\n SMALL: { width: 300, height: 150 },\n MEDIUM: { width: 400, height: 220 },\n FULL: { width: 550, height: 450 },\n};\n\nfunction LayoutModes() {\n return layoutModes;\n}\n\nLayoutModes.getLayoutModeKeys = function () {\n const layoutModeKeys = [];\n let modeKey;\n\n for (modeKey in layoutModes) {\n layoutModeKeys.push(modeKey);\n }\n return layoutModeKeys;\n};\n\nexport default LayoutModes;\n","import extend from 'extend';\n\nfunction getLabel(context) {\n const end = context.data.end;\n const formatter = context.dataset(end.source.key).field(end.source.field).formatter();\n return formatter(end.value);\n}\n\nfunction labels(settings, options) {\n const chartID = options && options.chartID;\n const labelsFill = options.theme.getStyle(chartID, 'label.value', 'color');\n const labelsFontSize = options.theme.getStyle(chartID, 'label.value', 'fontSize');\n const labelsFontFamily = options.theme.getStyle(chartID, 'label.value', 'fontFamily');\n\n const defaultSettings = {\n key: 'labels',\n type: 'labels',\n displayOrder: 1,\n settings: {\n sources: [\n {\n component: 'box-marker', // Connects with the matching \"key:\" attribute in the visualizations\n selector: 'rect',\n strategy: {\n type: 'bar',\n settings: {\n direction: 'up',\n fontFamily: labelsFontFamily,\n fontSize: parseFloat(labelsFontSize),\n align: 0.5,\n labels: [\n {\n placements: [\n {\n position: 'outside',\n fill: labelsFill,\n justify: 0,\n },\n {\n position: 'inside',\n fill: settings && settings.settings.sources[0].strategy.settings.labels[0].placements[1].fill,\n justify: 1,\n },\n ],\n label: getLabel,\n },\n ],\n },\n },\n },\n ],\n },\n };\n return extend(true, {}, defaultSettings, settings || {});\n}\n\nexport default labels;\n","import extend from 'extend';\n\nconst directions = {\n left: 'left',\n right: 'right',\n up: 'top',\n down: 'bottom',\n};\n\nfunction legend(settings, options) {\n const chartID = options && options.chartID;\n const isRtl = options && options.isRtl;\n let dock = (options && options.dock) || 'auto';\n const show = options && options.show;\n\n if (dock === 'auto') {\n dock = options.chartHeight / options.chartWidth < 1 ? (isRtl ? 'left' : 'right') : 'bottom';\n }\n\n const titleFill = options.theme.getStyle(chartID, 'legend.title', 'color');\n const titleFontSize = options.theme.getStyle(chartID, 'legend.title', 'fontSize');\n const itemFill = options.theme.getStyle(chartID, 'legend.label', 'color');\n const itemFontSize = options.theme.getStyle(chartID, 'legend.label', 'fontSize');\n const titleFontFamily = options.theme.getStyle(chartID, 'legend.title', 'fontFamily');\n const itemFontFamily = options.theme.getStyle(chartID, 'legend.label', 'fontFamily');\n\n const defaultSettings = {\n key: 'legend',\n type: 'legend-cat',\n dock,\n show,\n\n scale: {\n type: 'color',\n },\n settings: {\n title: {\n anchor: 'middle',\n },\n layout: {\n direction: isRtl ? 'rtl' : 'ltr',\n size: dock === 'top' || dock === 'bottom' ? 2 : 1,\n vertical: dock === 'top' || dock === 'bottom' ? 16 : 8,\n },\n navigation: {\n button: {\n class: {\n 'lui-fade-button': true,\n },\n content(h, state) {\n const c = ['lui-button__icon', 'lui-icon', `lui-icon--triangle-${directions[state.direction]}`];\n return h('span', {\n style: {\n pointerEvents: 'none',\n },\n class: c.join(' '),\n });\n },\n },\n },\n },\n style: {\n item: {\n label: {\n fontSize: itemFontSize,\n fontFamily: itemFontFamily,\n fill: itemFill,\n lineHeight: 1,\n wordBreak: 'break-word',\n },\n margin: {\n top: 5,\n left: 10,\n right: 10,\n bottom: 10,\n },\n shape: {\n type: options.type ? options.type : 'square',\n size: (parseInt(itemFontSize, 10) * 3) / 4, // To make it consistent with non-picasso charts\n },\n },\n title: {\n show: options.showTitle,\n fontSize: titleFontSize,\n fontFamily: titleFontFamily,\n fill: titleFill,\n },\n },\n };\n return extend(true, {}, defaultSettings, settings);\n}\n\nexport default legend;\n","import extend from 'extend';\nimport ChartPresets from './chart-presets';\nimport scale from './scale';\nimport axis from './components/axis';\nimport boxMarker from './components/box-marker';\nimport eventArea from './components/event-area';\nimport gridLine from './components/grid-line';\nimport interaction from './components/interaction';\nimport pointMarker from './components/point-marker';\nimport scrollbar from './components/scrollbar';\nimport text from './components/text';\nimport lasso from './components/lasso';\nimport range from './components/range';\nimport refLine from './components/ref-line';\nimport layoutModes from './layout-modes';\nimport labels from './components/labels';\nimport categoricalLegend from './components/categorical-legend';\nimport sequentialLegend from './components/sequential-legend';\nimport rangeArea from './components/range-area';\n\nfunction createComponent(type, settings, options) {\n switch (type) {\n // Picasso components\n case 'scale':\n return scale(settings, options);\n case 'measure-scale':\n return scale.measureScale(settings, options);\n case 'dimension-scale':\n return scale.dimensionScale(settings, options);\n case 'axis':\n return axis(settings, options);\n case 'box-marker':\n return boxMarker(settings, options);\n case 'point-marker':\n return pointMarker(settings, options);\n case 'scrollbar':\n return scrollbar(settings, options);\n case 'text':\n return text(settings, options);\n case 'lasso':\n return lasso(settings, options);\n case 'range':\n return range(settings, options);\n case 'range-area':\n return rangeArea(settings, options);\n case 'categorical-legend':\n return categoricalLegend(settings, options);\n case 'sequential-legend':\n return sequentialLegend(settings, options);\n // Wrapepd picasso components\n case 'x-axis':\n return axis.xAxis(settings, options);\n case 'y-axis':\n return axis.yAxis(settings, options);\n case 'x-axis-title':\n return text.xAxisTitle(settings, options);\n case 'y-axis-title':\n return text.yAxisTitle(settings, options);\n case 'grid-line':\n return gridLine(settings, options);\n case 'interaction':\n return interaction(settings, options);\n case 'ref-line':\n return refLine(settings, options);\n // Custom components\n case 'event-area':\n return eventArea(settings, options);\n case 'labels':\n return labels(settings, options);\n default:\n return undefined;\n }\n}\n\nfunction ChartBuilder(options) {\n this.options = options || {};\n\n this.settings = {\n dockLayout: {\n layoutModes: layoutModes(),\n },\n components: [],\n scales: {},\n };\n}\n\nChartBuilder.prototype.addComponent = function addComponent(type, settings, options) {\n const extendedOptions = extend(true, {}, this.options, options || {});\n const component = createComponent(type, settings, extendedOptions);\n this.settings.components.push(component);\n return component;\n};\n\nChartBuilder.prototype.addInteraction = function addInteraction(settings, options) {\n const extendedOptions = extend(true, {}, this.options, options || {});\n const component = createComponent('interaction', settings, extendedOptions);\n if (!this.settings.interactions) {\n this.settings.interactions = [];\n }\n this.settings.interactions.push(component);\n return component;\n};\n\nChartBuilder.prototype.addScale = function addScale(type, settings, options) {\n const extendedOptions = extend(true, {}, this.options, options || {});\n const scale = createComponent(type, settings, extendedOptions);\n this.settings.scales[scale.name] = scale.component;\n};\n\nChartBuilder.prototype.getSettings = function getSettings() {\n return this.settings;\n};\n\nChartBuilder.prototype.getComponent = function getComponent(key) {\n return this.settings.components.filter((component) => component.key === key)[0];\n};\n\nChartBuilder.prototype.addPreset = function addPreset(type, options) {\n ChartPresets(type, this, options);\n};\n\nChartBuilder.validateComponentKeys = function validateComponentKeys(components) {\n const keys = {};\n return components\n .map((component) => {\n const key = component.key;\n if (!key) {\n return `Missing key for component ${component.type}`;\n }\n if (keys[key]) {\n return `Duplicate key for component ${component.type}`;\n }\n keys[key] = true;\n return null;\n })\n .filter((msg) => !!msg);\n};\n\n/*\n * Factory function\n */\nChartBuilder.create = function (options) {\n return new ChartBuilder(options);\n};\n\nChartBuilder.createComponent = createComponent;\n\nexport default ChartBuilder;\n","import extend from 'extend';\n\nfunction boxMarker(settings) {\n const defaultSettings = {\n key: 'box-marker',\n type: 'box-marker',\n settings: {\n minor: { scale: 'x' },\n orientation: 'horizontal',\n },\n brush: { trigger: [], consume: [] },\n };\n return extend(true, {}, defaultSettings, settings || {});\n}\n\nexport default boxMarker;\n","import extend from 'extend';\n\nfunction pointMarker(settings) {\n const defaultSettings = {\n key: 'point-marker',\n type: 'point-marker',\n settings: {},\n brush: { trigger: [], consume: [] },\n };\n return extend(true, {}, defaultSettings, settings || {});\n}\n\nexport default pointMarker;\n","import extend from 'extend';\n\nfunction scrollbar(settings, options) {\n const isRtl = options && options.isRtl;\n const chartID = options && options.chartID;\n const isHorizontal = options && options.isHorizontal;\n const defaultSettings = {\n key: 'scrollbar',\n type: 'scrollbar',\n scroll: 'dimension',\n dock: isHorizontal ? 'bottom' : isRtl ? 'left' : 'right',\n settings: {\n backgroundColor: options.theme.getStyle(chartID, '', 'backgroundColor'),\n invert: isRtl && isHorizontal,\n },\n };\n return extend(true, {}, defaultSettings, settings || {});\n}\n\nexport default scrollbar;\n","import extend from 'extend';\n\nfunction lasso(settings, options) {\n const brushKey = options && options.brushKey;\n const brushComponents = options && options.brushComponents ? options.brushComponents : [];\n const brushData = options && options.brushData ? options.brushData : ['elemNo'];\n\n const defaultSettings = {\n type: 'brush-lasso',\n key: 'lasso',\n displayOrder: 99,\n settings: {\n brush: {\n components: [],\n },\n lasso: {\n fill: 'rgba(0, 0, 0, 0)',\n stroke: 'rgba(102,102,102,1)',\n strokeWidth: 2,\n opacity: 1,\n strokeDasharray: null, // '10, 4',\n },\n startPoint: {\n r: 10,\n fill: 'rgba(0, 152, 69, 1)',\n strokeWidth: 0,\n opacity: 1,\n },\n },\n };\n\n brushComponents.forEach((comp) => {\n defaultSettings.settings.brush.components.push({\n contexts: brushKey ? [brushKey] : undefined,\n key: comp,\n data: brushData,\n });\n });\n\n return extend(true, {}, defaultSettings, settings || {});\n}\n\nexport default lasso;\n","import extend from 'extend';\nimport rangeUtil from './util/range-util';\n\nfunction range(settings, options) {\n const brushKey = options && options.brushKey;\n const brushAxis = options && options.brushAxis;\n const brushArea = options && options.brushArea;\n const brushScale = options && options.brushScale;\n const isHorizontal = options && options.isHorizontal;\n const dock = options && options.dock;\n const isRtl = options && options.isRtl;\n\n const defaultSettings = {\n type: 'brush-range',\n key: 'range',\n displayOrder: 99,\n dock: rangeUtil.getDock(brushAxis, brushArea),\n settings: {\n brush: brushKey,\n fill: 'rgba(0, 0, 0, 0)',\n scale: brushScale,\n multiple: options && options.multiple === false ? options.multiple : true,\n direction: isHorizontal ? 'horizontal' : 'vertical',\n target: {\n component: brushAxis,\n fill: 'rgba( 82, 204, 82, 0.2 )',\n fillActive: 'rgba(82, 204, 82, 0.4)',\n },\n bubbles: {\n align: rangeUtil.getBublesAlign(isHorizontal, dock, isRtl),\n },\n },\n };\n return extend(true, {}, defaultSettings, settings || {});\n}\n\nexport default range;\n","import extend from 'extend';\nimport rangeUtil from './util/range-util';\n\nfunction rangeArea(settings, options) {\n const brushKey = options && options.brushKey;\n const brushAxis = options && options.brushAxis;\n const brushComponents = options && options.brushComponents ? options.brushComponents : [];\n const brushData = options && options.brushData ? options.brushData : ['elemNo'];\n const brushArea = options && options.brushArea;\n const isHorizontal = options && options.isHorizontal;\n const dock = options && options.dock;\n const isRtl = options && options.isRtl;\n const chartInstance = options && options.chartInstance;\n let isStartBorder = true;\n\n const defaultSettings = {\n type: 'brush-area-dir',\n key: 'area',\n displayOrder: 99,\n dock: rangeUtil.getDock(brushAxis, brushArea),\n settings: {\n brush: {\n components: [],\n },\n direction: isHorizontal ? 'horizontal' : 'vertical',\n target: {\n component: brushAxis,\n fill: 'rgba( 82, 204, 82, 0.2 )',\n fillActive: 'rgba(82, 204, 82, 0.4)',\n },\n bubbles: {\n align: rangeUtil.getBublesAlign(isHorizontal, dock, isRtl),\n label(data) {\n if (isStartBorder) {\n isStartBorder = false;\n const formattedStartValue = chartInstance\n .dataset(data.binStart.source.key)\n .field(data.binStart.source.field)\n .formatter()(data.binStart.value);\n return formattedStartValue;\n }\n isStartBorder = true;\n const formattedEndValue = chartInstance\n .dataset(data.binEnd.source.key)\n .field(data.binEnd.source.field)\n .formatter()(data.binEnd.value);\n return formattedEndValue;\n },\n },\n multiple: options && options.multiple === false ? options.multiple : true,\n },\n };\n\n brushComponents.forEach((comp) => {\n defaultSettings.settings.brush.components.push({\n contexts: brushKey ? [brushKey] : undefined,\n key: comp,\n data: brushData,\n action: 'add',\n });\n });\n\n return extend(true, {}, defaultSettings, settings || {});\n}\n\nexport default rangeArea;\n","import extend from 'extend';\n\nfunction sequentialLegend(settings, options) {\n const chartID = options && options.chartID;\n const isRtl = options && options.isRtl;\n let dock = options.dock || 'auto';\n\n if (dock === 'auto') {\n dock = options.chartHeight < options.chartWidth ? (isRtl ? 'left' : 'right') : 'bottom';\n }\n\n const titleFill = options.theme.getStyle(chartID, 'legend.title', 'color');\n const titleFontSize = options.theme.getStyle(chartID, 'legend.title', 'fontSize');\n const titleFontFamily = options.theme.getStyle(chartID, 'legend.title', 'fontFamily');\n const tickFill = options.theme.getStyle(chartID, 'legend.label', 'color');\n const tickFontSize = options.theme.getStyle(chartID, 'legend.label', 'fontSize');\n const tickFontFamily = options.theme.getStyle(chartID, 'legend.label', 'fontFamily');\n\n function getAlignValue(word) {\n switch (word) {\n case 'left':\n return 0;\n case 'right':\n return 1;\n case 'middle':\n default:\n return 0.5;\n }\n }\n\n const defaultSettings = {\n key: 'seqlegend',\n type: 'legend-seq',\n dock,\n\n // Settings to position the legend outside of the axis\n displayOrder: 200,\n minimumLayoutMode: 'MEDIUM',\n prioOrder: 0,\n\n settings: {\n align: isRtl ? getAlignValue('right') : getAlignValue('left'),\n major: {\n invert: dock === 'left' || dock === 'right' || isRtl,\n },\n title: {\n show: options.showTitle,\n fontSize: titleFontSize,\n fontFamily: titleFontFamily,\n fill: titleFill,\n },\n tick: {\n fill: tickFill,\n fontSize: tickFontSize,\n fontFamily: tickFontFamily,\n },\n },\n };\n const finalSettings = extend(true, {}, defaultSettings, settings);\n return finalSettings;\n}\n\nexport default sequentialLegend;\n","import extend from 'extend';\n\nfunction gridLine(settings, options) {\n const chartID = options && options.chartID;\n\n const axisLineStroke = options.theme.getStyle(chartID, 'grid.line.major', 'color');\n\n const defaultSettings = {\n displayOrder: -1,\n key: 'grid-line',\n type: 'grid-line',\n x: null,\n y: null,\n ticks: {\n stroke: axisLineStroke,\n },\n minorTicks: {\n stroke: axisLineStroke,\n },\n };\n\n return extend(true, {}, defaultSettings, settings || {});\n}\n\nexport default gridLine;\n","import extend from 'extend';\n\nfunction interaction(settings, options) {\n const gestures = (options && options.gestures) || [];\n const defaultSettings = {\n type: 'hammer',\n key: 'hammered',\n gestures,\n };\n return extend(true, {}, defaultSettings, settings || {});\n}\n\nexport default interaction;\n","import extend from 'extend';\n\nfunction refLine(settings, options) {\n const chartID = options && options.chartID; // Should we validate if the parameter exists?\n const oobColor = options.theme.getStyle(chartID, 'referenceLine.outOfBounds', 'color');\n const oobBackgroundColor = options.theme.getStyle(chartID, 'referenceLine.outOfBounds', 'backgroundColor');\n\n const defaultSettings = {\n key: 'ref-line',\n type: 'ref-line',\n dock: 'center',\n prioOrder: -1,\n lines: {\n x: [],\n y: [],\n },\n style: {\n oob: {\n width: 7,\n fill: oobBackgroundColor,\n text: {\n fill: oobColor,\n },\n padding: {\n x: 7,\n y: 5,\n },\n },\n },\n };\n\n return extend(true, {}, defaultSettings, settings || {});\n}\n\nexport default refLine;\n","import extend from 'extend';\n\nfunction eventArea(settings) {\n const defaultSettings = {\n type: 'event-area',\n key: 'event-area',\n };\n return extend(true, {}, defaultSettings, settings || {});\n}\n\nexport default eventArea;\n","import DimensionMeasureChart from './presets/dimension-measure-chart/dimension-measure-chart';\n\nfunction ChartPresets(type, chartBuilder, options) {\n switch (type) {\n case 'dimension-measure-chart':\n DimensionMeasureChart(chartBuilder, options);\n break;\n default:\n throw Error('There is no chart preset with that type');\n }\n}\n\nexport default ChartPresets;\n","/**\n * Configuration for disclaimers\n *\n */\n\n/**\n * Placement on chart\n */\nconst ALIGNMENT = {\n CENTER: 0,\n BOTTOM: 1,\n};\n\n/**\n * Configuration of all disclaimers\n *\n * label - key for translation\n * alignment - Placement on chart\n * default - Supported by default. If 'false' the disclaimer needs to be set to 'true' in supportedDisclaimers to be valid\n */\nconst DISCLAIMERS = [\n {\n label: 'NoDataExist',\n alignment: ALIGNMENT.CENTER,\n default: true,\n },\n {\n label: 'RequireNumericDimension',\n alignment: ALIGNMENT.CENTER,\n default: false,\n },\n {\n label: 'OnlyNanData',\n alignment: ALIGNMENT.CENTER,\n default: true,\n },\n {\n label: 'OnlyNegativeOrZeroValues',\n alignment: ALIGNMENT.CENTER,\n default: false,\n },\n {\n label: 'LimitedData',\n alignment: ALIGNMENT.BOTTOM,\n default: false,\n },\n {\n label: 'OnlyNanColor',\n alignment: ALIGNMENT.BOTTOM,\n default: false,\n },\n {\n label: 'NegativeOrZeroValues',\n alignment: ALIGNMENT.BOTTOM,\n default: false,\n },\n {\n label: 'DataRangeIncludingZero',\n alignment: ALIGNMENT.BOTTOM,\n default: false,\n },\n];\n\nexport default {\n DISCLAIMERS,\n ALIGNMENT,\n};\n","/**\n * Disclaimer utility for setting attributes needed for the disclaimer component\n *\n * @exports objects.picasso/disclaimer/disclaimer-attributes-utils\n */\nimport DisclaimersConfig from './disclaimers-config';\n\n/**\n * Checks if the data range in measures and axis spans over the value 0\n * @ignore\n * @param measureAxis\n * @param measureInfo\n * @returns {boolean} True if the data range in any measure or the given axis spans over 0\n */\nfunction hasDataRangeIncludingZero(measureAxis, measureInfo) {\n const len = measureInfo.length;\n let i;\n let explicitMinOn;\n let explicitMaxOn;\n let min;\n let max;\n if (measureAxis) {\n explicitMinOn =\n !measureAxis.autoMinMax &&\n (measureAxis.minMax === 'min' || measureAxis.minMax === 'minMax') &&\n measureAxis.min !== null &&\n !Number.isNaN(+measureAxis.min);\n explicitMaxOn =\n !measureAxis.autoMinMax &&\n (measureAxis.minMax === 'max' || measureAxis.minMax === 'minMax') &&\n measureAxis.max !== null &&\n !Number.isNaN(+measureAxis.max);\n }\n min = Number.MAX_VALUE;\n max = -Number.MAX_VALUE;\n\n // return true if data contains zero\n for (i = 0; i < len; i++) {\n min = Math.min(min, measureInfo[i].qMin);\n max = Math.max(max, measureInfo[i].qMax);\n if (min <= 0 && max >= 0) {\n return true;\n }\n }\n\n // return true if axis explicits contains zero\n min = explicitMinOn ? measureAxis.min : min;\n max = explicitMaxOn ? measureAxis.max : max;\n return min <= 0 && max >= 0;\n}\n\nfunction hasSubNodes(stackedDataPages) {\n return (\n stackedDataPages && stackedDataPages[0] && stackedDataPages[0].qData[0] && stackedDataPages[0].qData[0].qSubNodes\n );\n}\n\nconst util = {\n getNoDataExistAttribute(qHyperCube) {\n return qHyperCube.qSize.qcy * qHyperCube.qSize.qcx === 0;\n },\n\n getLimitedDataAttribute(qHyperCube, opts) {\n let result = false;\n let maxNbrOfDimensions;\n if (!qHyperCube) {\n result = opts.explicitLimitedData === true;\n } else if (opts.explicitLimitedData !== undefined) {\n result = opts.explicitLimitedData === true;\n } else if (qHyperCube.qDataPages && qHyperCube.qDataPages[0]) {\n result = !opts.paging && qHyperCube.qSize.qcy > qHyperCube.qDataPages[0].qMatrix.length;\n } else if (hasSubNodes(qHyperCube.qStackedDataPages)) {\n maxNbrOfDimensions = opts.maxNbrOfDimensions ? opts.maxNbrOfDimensions : 2;\n if (qHyperCube.qDimensionInfo.length >= maxNbrOfDimensions) {\n result = qHyperCube.qStackedDataPages[0].qData[0].qSubNodes.some((node) => node.qDown > 0);\n } else {\n result =\n qHyperCube.qStackedDataPages[0].qData[0].qSubNodes.length < qHyperCube.qStackedDataPages[0].qArea.qHeight;\n }\n }\n return result;\n },\n\n getNegativeOrZeroValuesAttribute(qHyperCube, opts) {\n return !opts.supportNegative && qHyperCube.qMeasureInfo.some((measure) => measure.qMin <= 0);\n },\n\n getOnlyNegativeOrZeroValuesAttribute(qHyperCube, opts) {\n return (\n (!opts.supportNegative &&\n qHyperCube.qMeasureInfo.every((measure) => measure.qMax <= 0 && measure.qMax >= measure.qMin)) ||\n qHyperCube.qSize.qcy === 0\n );\n },\n\n getOnlyNanDataAttribute(qHyperCube, opts) {\n if (opts.explicitOnlyNanData !== undefined) {\n return opts.explicitOnlyNanData;\n }\n\n return qHyperCube.qMeasureInfo.every((measure) => measure.qMax < measure.qMin || measure.qMax === 'NaN');\n },\n\n getDataRangeIncludingZeroAttribute(data, opts) {\n return !opts.supportRangeOverZero && hasDataRangeIncludingZero(data.measureAxis, data.qHyperCube.qMeasureInfo);\n },\n\n /**\n * Apply attributes that configures disclaimers for a charts\n * @param {Object} options - Options\n * @param {Object} data - Layout data\n * @returns {Object}\n */\n applyAttributes(options, data) {\n const opts = options || {};\n const dataAttributes = {};\n\n opts.supportNegative = opts.supportNegative === undefined ? true : opts.supportNegative;\n opts.supportRangeOverZero = opts.supportRangeOverZero === undefined ? true : opts.supportRangeOverZero;\n\n DisclaimersConfig.DISCLAIMERS.forEach((config) => {\n dataAttributes[config.label] = false;\n });\n if (!data || !data.qHyperCube) {\n return dataAttributes;\n }\n dataAttributes.NoDataExist = this.getNoDataExistAttribute(data.qHyperCube);\n if (dataAttributes.NoDataExist) {\n return dataAttributes;\n }\n dataAttributes.RequireNumericDimension = opts.explicitRequireNumericDimension;\n if (dataAttributes.RequireNumericDimension) {\n return dataAttributes;\n }\n dataAttributes.LimitedData = this.getLimitedDataAttribute(data.qHyperCube, opts);\n dataAttributes.NegativeOrZeroValues = this.getNegativeOrZeroValuesAttribute(data.qHyperCube, opts);\n dataAttributes.OnlyNegativeOrZeroValues = this.getOnlyNegativeOrZeroValuesAttribute(data.qHyperCube, opts);\n dataAttributes.OnlyNanData = this.getOnlyNanDataAttribute(data.qHyperCube, opts);\n dataAttributes.DataRangeIncludingZero = this.getDataRangeIncludingZeroAttribute(data, opts);\n\n return dataAttributes;\n },\n};\nexport default util;\n","/**\n * Helper for disclaimer component\n *\n */\n\n/**\n * Create new Helper for disclaimer\n * @param disclaimersConfig {Array} List of disclaimer config objects\n * @param dataAttributes {Object} Config for which disclaimers that are valid to show\n * @param supportedDisclaimers {Object} Config for which disclaimers that are supported\n * @constructor\n */\nfunction Helper(disclaimersConfig, dataAttributes, supportedDisclaimers) {\n this.disclaimersConfig = disclaimersConfig;\n this.dataAttributes = dataAttributes;\n this.supportedDisclaimers = supportedDisclaimers;\n}\n\nfunction isValid(label, list) {\n return label && list && list[label];\n}\n\n/**\n * Returns true if disclaimer config is valid, supported and has an alignment\n * @param disclaimer {Object} Configuration for a disclaimer\n * @param alignment {Integer} Alignment value in disclaimers config\n * @returns {Boolean}\n */\nHelper.prototype.isValidAndSupported = function (disclaimer, alignment) {\n return (\n isValid(disclaimer.label, this.dataAttributes) &&\n (disclaimer.default || isValid(disclaimer.label, this.supportedDisclaimers)) &&\n alignment !== undefined &&\n disclaimer.alignment === alignment\n );\n};\n\n/**\n * Returns true if there are any valid disclaimers for an alignment\n * @param alignment {Integer} Alignment value in disclaimers config\n * @returns {Boolean}\n */\nHelper.prototype.isAnyValidDisclaimer = function (alignment) {\n let result = false;\n const self = this;\n this.disclaimersConfig.forEach((config) => {\n if (self.isValidAndSupported(config, alignment)) {\n result = true;\n }\n });\n return result;\n};\n\n/**\n * Gets all translated disclaimer messages for an alignment\n * @param alignment {Integer} Alignment value in disclaimers config\n * @param translator {Object} Translator component\n * @returns {string}\n */\nHelper.prototype.getMessage = function (alignment, translator) {\n let str = '';\n const self = this;\n if (translator) {\n this.disclaimersConfig.forEach((config) => {\n if (self.isValidAndSupported(config, alignment)) {\n str += `${translator.get(`Object.Disclaimer.${config.label}`)} `;\n }\n });\n }\n return str;\n};\n\nexport default Helper;\n","/**\n * Disclaimer component for Picasso base charts\n *\n * @exports objects.picasso/disclaimer/disclaimer\n */\n\nimport extend from 'extend';\nimport DisclaimersConfig from './disclaimers-config';\nimport AttributesUtil from './disclaimer-attributes-util';\nimport DisclaimerComponentHelper from './disclaimer-component-helper';\n\nDisclaimer.ERRORS = {\n SET: 'Calling Disclaimer.set() without attributes',\n DISPLAY: 'Calling Disclaimer.display() before attributes are applied',\n};\n\n/**\n * Create new disclaimer component\n * @param {Object} options - A reference to chart options\n * @constructor\n */\nfunction Disclaimer(environment) {\n this.environment = environment;\n this.clear();\n}\n\nDisclaimer._applyDefaultSupport = function (supportedDisclaimers, disclaimersConfig) {\n let supported = supportedDisclaimers;\n if (!supported) {\n supported = {};\n }\n disclaimersConfig.forEach((config) => {\n if (supported[config.label] === undefined) {\n supported[config.label] = config.default;\n }\n });\n return supported;\n};\n\nDisclaimer.prototype.getComponentSettings = function () {\n const { translator } = this.environment;\n const supportedDisclaimers = extend(true, {}, this.vizAttributes.supportedDisclaimers);\n const helper = new DisclaimerComponentHelper(\n DisclaimersConfig.DISCLAIMERS,\n this.dataAttributes,\n supportedDisclaimers\n );\n\n let message;\n let dock;\n if (helper.isAnyValidDisclaimer(DisclaimersConfig.ALIGNMENT.CENTER)) {\n message = helper.getMessage(DisclaimersConfig.ALIGNMENT.CENTER, translator);\n dock = 'center';\n } else if (helper.isAnyValidDisclaimer(DisclaimersConfig.ALIGNMENT.BOTTOM)) {\n message = helper.getMessage(DisclaimersConfig.ALIGNMENT.BOTTOM, translator);\n dock = 'bottom';\n } else {\n return undefined;\n }\n\n return {\n key: 'disclaimer',\n type: 'disclaimer',\n layout: {\n displayOrder: 1000,\n dock,\n },\n settings: {\n label: message,\n rtl: this.environment?.options?.direction === 'rtl',\n },\n };\n};\n\n/**\n * Set attributes that configures disclaimers for a charts\n * @param {Object} attributes - Disclaimer settings for a chart\n */\nDisclaimer.prototype.set = function (attributes) {\n this.clear();\n if (attributes) {\n this.vizAttributes = attributes;\n this.dataAttributes = AttributesUtil.applyAttributes(this.vizAttributes.options, this.vizAttributes.data);\n } else {\n throw new Error(Disclaimer.ERRORS.SET);\n }\n};\n\n/**\n * Clears disclaimer settings\n */\nDisclaimer.prototype.clear = function () {\n this.vizAttributes = null;\n this.dataAttributes = null;\n};\n\nexport default Disclaimer;\n","import extend from 'extend';\nimport { getValue } from 'qlik-chart-modules';\n\nimport Class from '../extra/class';\nimport ChartBuilder from './chart-builder/chart-builder';\nimport Disclaimer from './disclaimer/disclaimer';\n\nfunction getData(backendApi, hyperCube, rect) {\n let page = {\n qTop: 0,\n qLeft: 0,\n qWidth: hyperCube.qSize.qcx,\n qHeight: 10000 / hyperCube.qSize.qcx,\n };\n let dataPagesPath;\n\n if (rect) {\n const width = rect.width || hyperCube.qSize.qcx;\n const maxHeight = Math.floor(10000 / width);\n page = {\n qTop: rect.top || 0,\n qLeft: rect.left || 0,\n qWidth: width,\n qHeight: rect.height ? Math.min(rect.height, maxHeight) : maxHeight,\n };\n } else {\n page = {\n qTop: 0,\n qLeft: 0,\n qWidth: hyperCube.qSize.qcx,\n qHeight: 10000 / hyperCube.qSize.qcx,\n };\n }\n\n switch (hyperCube.qMode) {\n case 'K': // Stacked mode\n dataPagesPath = 'qStackedDataPages';\n break;\n case 'S': // Straight table mode\n default:\n dataPagesPath = 'qDataPages';\n break;\n }\n\n return backendApi.getData([page], null, hyperCube).then((pages) => {\n hyperCube[dataPagesPath] = pages;\n });\n}\n\nconst ChartView = Class.extend({\n init(picasso, $element, environment, backendApi, selectionsApi) {\n this.$element = $element;\n this.environment = environment;\n this.backendApi = backendApi;\n\n this._selectionsApi = selectionsApi;\n this._on = false;\n this._disclaimer = new Disclaimer(environment);\n this._dataPaths = ['qHyperCube'];\n\n const self = this;\n\n // Set properties that should be available in subclasses\n\n this.picassoElement = $element[0];\n this.picassoElement.className += ' picasso-chart';\n\n // Paint a visually empty Picasso chart containing an event-area component\n this.chartInstance = picasso.chart({\n element: this.picassoElement,\n settings: {\n components: [\n ChartBuilder.createComponent('event-area', {\n mounted(element) {\n // Mounted is run synchronously so this.dataAreaElem will be available in subclass constructors\n self.dataAreaElem = element;\n },\n }),\n ],\n },\n });\n },\n\n updateEnvironment(environment) {\n this.environment = environment;\n },\n\n isRtl() {\n return this.environment.options?.direction === 'rtl';\n },\n\n setDataPaths(dataPaths) {\n this._dataPaths = dataPaths;\n },\n\n getData(backendApi, hyperCube, rect) {\n return getData(backendApi, hyperCube, rect);\n },\n\n hasValidData() {\n return true;\n },\n\n paint() {\n // Use this.layout\n if (this.hasValidData()) {\n this._disclaimer.set(this.getDisclaimerAttributes(this.layout));\n const disclaimerComponent = this._disclaimer.getComponentSettings();\n const isSuppressingDisc = disclaimerComponent?.layout?.dock === 'center';\n\n const chartSettings = this.createChartSettings(this.layout);\n if (isSuppressingDisc) {\n chartSettings.components = [disclaimerComponent];\n } else if (disclaimerComponent) {\n chartSettings.components.push(disclaimerComponent);\n }\n ChartBuilder.validateComponentKeys(chartSettings.components).forEach((errorMsg) => {\n console.error(errorMsg);\n });\n\n this.updateChart(this.layout, chartSettings);\n this._painted = true;\n }\n return Promise.resolve();\n },\n\n resize() {\n // Use this.layout\n if (!this.layout) {\n // There are cases where resize is run before updateData, therefore layout is undefined\n return undefined;\n }\n return this.paint();\n },\n\n createChartSettings() {\n throw new Error('Subclass must implement \"createChartSettings\" function');\n },\n\n addSnapshotChartSettings(settings, layout) {\n const { freeResize } = this.environment.options;\n if (!freeResize && layout.snapshotData) {\n settings.dockLayout.logicalSize = {\n width: layout.snapshotData.content.size.w,\n height: layout.snapshotData.content.size.h,\n preserveAspectRatio: true,\n };\n }\n },\n\n updateData(layout) {\n // clone the layout so that updates ignored by suppressOnPaint does not affect it.\n if (this._destroyed) {\n return Promise.reject();\n }\n\n this.layout = extend(true, {}, layout);\n this.layout.permissions = layout.permissions;\n return Promise.resolve();\n },\n\n updateChart(layout, settings, isPartialData) {\n const localeInfo = this.environment.appLayout?.qLocaleInfo ?? {};\n const data = this._dataPaths.map((path) => ({\n type: 'q',\n key: path,\n config: {\n localeInfo,\n },\n data: getValue(layout, path.replace(/\\//g, '.')),\n }));\n if (this.colorService) {\n data.push(...this.colorService.getData());\n }\n\n this.chartInstance.update({\n data,\n settings,\n partialData: isPartialData,\n });\n\n const STATE_DATA_UPDATED = 2;\n this.picassoElement.setAttribute('data-state', STATE_DATA_UPDATED); // For integration test\n },\n\n destroy() {\n this._destroyed = true;\n this.off();\n this.chartInstance.destroy();\n },\n\n getViewState() {\n return {};\n },\n\n isLassoDisabled() {\n return true;\n },\n\n setSnapshotData(snapshotLayout) {\n if (!snapshotLayout.snapshotData) {\n snapshotLayout.snapshotData = {};\n }\n snapshotLayout.snapshotData.content = {\n // eslint-disable-line no-param-reassign\n chartData: {},\n size: {\n w: this.$element.width(),\n h: this.$element.height(),\n },\n };\n },\n\n getDisclaimerAttributes(layout) {\n return {\n data: layout,\n };\n },\n});\n\nexport default ChartView;\n","/**\n * Generate a 32 bit integer hash code from a string\n */\nexport default function hashFromString(str) {\n let hash = 0;\n\n if (!str || !str.length) {\n return hash;\n }\n\n for (let i = 0; i < str.length; i++) {\n const chr = str.charCodeAt(i);\n /* eslint-disable no-bitwise */\n hash = (hash << 5) - hash + chr;\n hash &= hash;\n /* eslint-enable no-bitwise */\n }\n return hash;\n}\n","import hashFromString from '../../../extra/hash-from-string';\n\nconst hash = {\n generateHash,\n updateHash,\n};\n\nexport default hash;\n\n/**\n * Implementation details\n */\n\nfunction generateHash(hashData) {\n return hashFromString(JSON.stringify(hashData));\n}\n\nfunction updateHash(properties, hashData) {\n if (!properties.qUndoExclude) {\n properties.qUndoExclude = {};\n }\n\n properties.qUndoExclude.hashCode = hash.generateHash(hashData);\n}\n","import { getValue } from 'qlik-chart-modules';\n\nconst hashBuilder = {\n getDefaultHashDataForHyperCube,\n};\n\nexport default hashBuilder;\n\n/**\n * Implementation details\n */\n\nfunction getDefaultHashDataForHyperCube(hyperCubeDef, hyperCube, app) {\n return getMeasureExpressions(hyperCubeDef, app).then((measureExpressions) => ({\n drillLevel: getDrillIndices(hyperCube),\n dimensionExpressions: getDimensionExpressions(hyperCube),\n measureExpressions,\n }));\n}\n\nfunction getMeasureExpressions(hyperCubeDef, app) {\n const dfds = [];\n\n if (!hyperCubeDef.qMeasures) {\n return Promise.resolve(dfds);\n }\n\n hyperCubeDef.qMeasures.forEach((measure) => {\n if (measure.qLibraryId) {\n dfds.push(getMeasureDataFromLibraryItem(measure.qLibraryId, app));\n } else {\n dfds.push(Promise.resolve());\n }\n });\n\n return Promise.all(dfds);\n}\n\nfunction getMeasureDataFromLibraryItem(libraryId, app) {\n return app.getMeasure(libraryId).then((item) => item.getProperties().then((props) => props.qMeasure.qDef));\n}\n\nfunction getDimensionExpressions(hyperCube) {\n return hyperCube.qDimensionInfo.map((dimensionInfo) => dimensionInfo.qGroupFieldDefs);\n}\n\nfunction getDrillIndices(hyperCube) {\n const dimensions = getDimensions(hyperCube);\n return dimensions.map((dim) => dim.qGroupPos);\n}\n\nfunction getDimensions(hyperCube) {\n return getValue(hyperCube, 'qDimensionInfo', []);\n}\n","/* eslint-disable no-restricted-syntax */\nimport originalExtend from 'extend';\n\nconst JSONPatch = {};\n\nconst extend = originalExtend.bind(null, true);\nfunction isObject(v) {\n return v != null && !Array.isArray(v) && typeof v === 'object';\n}\nconst isArray = Array.isArray;\n\nconst isUndef = function (v) {\n return typeof v === 'undefined';\n};\n\nconst isFunction = function (v) {\n return typeof v === 'function';\n};\n\n/**\n * Generate an exact duplicate (with no references) of a specific value.\n *\n * @private\n * @param {Object} The value to duplicate\n * @returns {Object} a unique, duplicated value\n */\nfunction generateValue(val) {\n if (val) {\n val = extend({}, { val }).val;\n }\n return val;\n}\n\n/**\n * An additional type checker used to determine if the property is of internal\n * use or not a type that can be translated into JSON (like functions).\n *\n * @private\n * @param {Object} obj The object which has the property to check\n * @param {String} The property name to check\n * @returns {Boolean} Whether the property is deemed special or not\n */\nfunction isSpecialProperty(obj, key) {\n return isFunction(obj[key]) || key.substring(0, 2) === '$$' || key.substring(0, 1) === '_';\n}\n\n/**\n * Finds the parent object from a JSON-Pointer (\"/foo/bar/baz\" = \"bar\" is \"baz\" parent),\n * also creates the object structure needed.\n *\n * @private\n * @param {Object} data The root object to traverse through\n * @param {String} The JSON-Pointer string to use when traversing\n * @returns {Object} The parent object\n */\nfunction getParent(data, str) {\n const seperator = '/';\n const parts = str.substring(1).split(seperator).slice(0, -1);\n let numPart;\n\n parts.forEach((part, i) => {\n if (i === parts.length) {\n return;\n }\n numPart = +part;\n data[numPart || part] = isUndef(data[numPart || part]) ? (!Number.isNaN(+numPart) ? [] : {}) : data[part];\n data = data[numPart || part];\n });\n\n return data;\n}\n\n/**\n * Cleans an object of all its properties, unless they're deemed special or\n * cannot be removed by configuration.\n *\n * @private\n * @param {Object} obj The object to clean\n */\nfunction emptyObject(obj) {\n Object.keys(obj).forEach((key) => {\n const config = Object.getOwnPropertyDescriptor(obj, key);\n\n if (config.configurable && !isSpecialProperty(obj, key)) {\n delete obj[key];\n }\n });\n}\n\n/**\n * Compare an object with another, could be object, array, number, string, bool.\n *\n * @param {Object} a The first object to compare\n * @param {Object} b The second object to compare\n * @returns {Boolean} Whether the objects are identical\n */\nfunction compare(a, b) {\n if (isObject(a) && isObject(b)) {\n if (Object.keys(a).length !== Object.keys(b).length) {\n return false;\n }\n for (const key of Object.keys(a)) {\n if (!compare(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n if (isArray(a) && isArray(b)) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0, l = a.length; i < l; i++) {\n if (!compare(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n return a === b;\n}\n\n/**\n * Generates patches by comparing two arrays.\n *\n * @private\n * @param {Array} oldA The old (original) array, which will be patched\n * @param {Array} newA The new array, which will be used to compare against\n * @returns {Array} An array of patches (if any)\n */\nfunction patchArray(original, newA, basePath) {\n let patches = [];\n const oldA = original.slice();\n let i;\n let l;\n let tmpIdx = -1;\n\n function findIndex(a, id, idx) {\n if (a[idx] && isUndef(a[idx].qInfo)) {\n return null;\n }\n if (a[idx] && a[idx].qInfo.qId === id) {\n // shortcut if identical\n return idx;\n }\n for (let i = 0, l = a.length; i < l; i++) {\n if (a[i] && a[i].qInfo.qId === id) {\n return i;\n }\n }\n return -1;\n }\n\n if (compare(newA, oldA)) {\n // array is unchanged\n return patches;\n }\n\n if (newA[0] === null || (!isUndef(newA[0]) && isUndef(newA[0].qInfo))) {\n // we cannot create patches without unique identifiers, replace array...\n patches.push({\n op: 'replace',\n path: basePath,\n value: newA,\n });\n return patches;\n }\n\n for (i = oldA.length - 1; i >= 0; --i) {\n tmpIdx = findIndex(newA, oldA[i] && oldA[i].qInfo && oldA[i].qInfo.qId, i);\n if (tmpIdx === -1) {\n patches.push({\n op: 'remove',\n path: `${basePath}/${i}`,\n });\n oldA.splice(i, 1);\n } else {\n patches = patches.concat(JSONPatch.generate(oldA[i], newA[tmpIdx], `${basePath}/${i}`));\n }\n }\n\n for (i = 0, l = newA.length; i < l; ++i) {\n tmpIdx = findIndex(oldA, newA[i] && newA[i].qInfo && newA[i].qInfo.qId);\n if (tmpIdx === -1) {\n patches.push({\n op: 'add',\n path: `${basePath}/${i}`,\n value: newA[i],\n });\n oldA.splice(i, 0, newA[i]);\n } else if (tmpIdx !== i) {\n patches.push({\n op: 'move',\n path: `${basePath}/${i}`,\n from: `${basePath}/${tmpIdx}`,\n });\n oldA.splice(i, 0, oldA.splice(tmpIdx, 1)[0]);\n }\n }\n return patches;\n}\n\n/**\n * Generate an array of JSON-Patch:es following the JSON-Patch Specification Draft.\n *\n * See [specification draft](http://tools.ietf.org/html/draft-ietf-appsawg-json-patch-10)\n *\n * Does NOT currently generate patches for arrays (will replace them)\n *\n * @param {Object} original The object to patch to\n * @param {Object} newData The object to patch from\n * @param {String} [basePath] The base path to use when generating the paths for the patches (normally not used)\n * @returns {Array} An array of patches\n */\nJSONPatch.generate = function (original, newData, basePath) {\n basePath = basePath || '';\n let patches = [];\n\n Object.keys(newData).forEach((key) => {\n const val = generateValue(newData[key]);\n const oldVal = original[key];\n const tmpPath = `${basePath}/${key}`;\n\n if (compare(val, oldVal) || isSpecialProperty(newData, key)) {\n return;\n }\n if (isUndef(oldVal)) {\n // property does not previously exist\n patches.push({\n op: 'add',\n path: tmpPath,\n value: val,\n });\n } else if (isObject(val) && isObject(oldVal)) {\n // we need to generate sub-patches for this, since it already exist\n patches = patches.concat(JSONPatch.generate(oldVal, val, tmpPath));\n } else if (isArray(val) && isArray(oldVal)) {\n patches = patches.concat(patchArray(oldVal, val, tmpPath));\n } else {\n // it's a simple property (bool, string, number)\n patches.push({\n op: 'replace',\n path: `${basePath}/${key}`,\n value: val,\n });\n }\n });\n\n Object.keys(original).forEach((key) => {\n if (isUndef(newData[key]) && !isSpecialProperty(original, key)) {\n // this property does not exist anymore\n patches.push({\n op: 'remove',\n path: `${basePath}/${key}`,\n });\n }\n });\n\n return patches;\n};\n\n/**\n * Apply a list of patches to an object.\n *\n * @param {Object} original The object to patch\n * @param {Array} patches The list of patches to apply\n */\nJSONPatch.apply = function (original, patches) {\n patches.forEach((patch) => {\n const parent = getParent(original, patch.path);\n let key = patch.path.split('/').splice(-1)[0];\n const target = key && Number.isNaN(+key) ? parent[key] : parent[+key] || parent;\n const from = patch.from ? patch.from.split('/').splice(-1)[0] : null;\n\n if (patch.op === 'add' || patch.op === 'replace') {\n if (isArray(parent)) {\n // trust indexes from patches, so don't replace the index if it's an add\n if (key === '-') {\n key = parent.length;\n }\n parent.splice(+key, patch.op === 'add' ? 0 : 1, patch.value);\n } else if (isArray(target) && isArray(patch.value)) {\n const newValues = patch.value.slice();\n // keep array reference if possible...\n target.length = 0;\n target.push.apply(target, newValues);\n } else if (isObject(target) && isObject(patch.value)) {\n // keep object reference if possible...\n emptyObject(target);\n extend(target, patch.value);\n } else {\n // simple value\n parent[key] = patch.value;\n }\n } else if (patch.op === 'move') {\n const oldParent = getParent(original, patch.from);\n if (isArray(parent)) {\n parent.splice(+key, 0, oldParent.splice(+from, 1)[0]);\n } else {\n parent[key] = oldParent[from];\n delete oldParent[from];\n }\n } else if (patch.op === 'remove') {\n if (isArray(parent)) {\n parent.splice(+key, 1);\n } else {\n delete parent[key];\n }\n }\n });\n};\n\n/**\n * Deep clone an object.\n *\n * @param {Object} obj The object to clone\n * @returns {Object} A new object identical to the `obj`\n */\nJSONPatch.clone = function (obj) {\n return extend({}, obj);\n};\n\n/**\n * Creates a JSON-patch.\n *\n * @param {String} op The operation of the patch. Available values: \"add\", \"remove\", \"move\"\n * @param {Object} [val] The value to set the `path` to. If `op` is `move`, `val` is the \"from JSON-path\" path\n * @param {String} path The JSON-path for the property to change (e.g. \"/qHyperCubeDef/columnOrder\")\n * @returns {Object} A patch following the JSON-patch specification\n */\nJSONPatch.createPatch = function (op, val, path) {\n const patch = {\n op: op.toLowerCase(),\n path,\n };\n if (patch.op === 'move') {\n patch.from = val;\n } else if (typeof val !== 'undefined') {\n patch.value = val;\n }\n return patch;\n};\n\n/**\n * Apply the differences of two objects (keeping references if possible).\n * Identical to running `JSONPatch.apply(original, JSONPatch.generate(original, newData));`\n *\n * @param {Object} original The object to update/patch\n * @param {Object} newData the object to diff against\n *\n * @example\n * var obj1 = { foo: [1,2,3], bar: { baz: true, qux: 1 } };\n * var obj2 = { foo: [4,5,6], bar: { baz: false } };\n * JSONPatch.updateObject(obj1, obj2);\n * // => { foo: [4,5,6], bar: { baz: false } };\n */\nJSONPatch.updateObject = function (original, newData) {\n if (!Object.keys(original).length) {\n extend(original, newData);\n return;\n }\n JSONPatch.apply(original, JSONPatch.generate(original, newData));\n};\n\nexport default JSONPatch;\n","import extend from 'extend';\nimport JSONPatch from './json-patch';\n\nclass SoftPropertyHandler {\n constructor(model) {\n this._model = model;\n }\n\n setModel(model) {\n this._model = model;\n }\n\n saveSoftProperties(prevEffectiveProperties, effectiveProperties) {\n if (!this._model) {\n return Promise.resolve(false);\n }\n\n let patches = JSONPatch.generate(prevEffectiveProperties, effectiveProperties);\n extend(true, prevEffectiveProperties, effectiveProperties);\n\n if (patches && patches.length) {\n patches = patches.map((p) => ({\n qOp: p.op,\n qValue: JSON.stringify(p.value),\n qPath: p.path,\n }));\n\n return this._model.applyPatches(patches, true).then(() => true);\n }\n return Promise.resolve(false);\n }\n\n async mergeSoftPatches() {\n if (!this._model) {\n return;\n }\n\n const propertiesPromise = this._model.getProperties();\n const effectivePromise = this._model.getEffectiveProperties();\n\n const properties = await propertiesPromise;\n const effective = await effectivePromise;\n\n if (properties.qExtendsId) {\n return;\n }\n const patches = JSONPatch.generate(properties, effective);\n JSONPatch.apply(properties, patches);\n\n const self = this;\n self._model.setProperties(properties).then(() => {\n self._model.clearSoftPatches();\n });\n }\n}\n\nexport default SoftPropertyHandler;\n","export default {\n canModifyHardProperties,\n};\n\nfunction canModifyHardProperties(layout) {\n if (layout.qHasSoftPatches || layout.qExtendsId) {\n return false;\n }\n if (layout.permissions) {\n return layout.permissions.update;\n }\n return layout.qMeta.privileges.indexOf('update') !== -1;\n}\n","import SoftPropertyHandler from '../../../extra/soft-property-handler';\nimport hardPropertiesChecker from '../../../extra/hard-properties-checker';\n\nexport default {\n saveDerivedProperties,\n};\n\n/**\n * Implementation details\n */\n\nfunction saveDerivedProperties(model, layout, properties, prevProperties) {\n // Can't set new properties on a master item (SUI-1363)\n\n if (hardPropertiesChecker.canModifyHardProperties(layout)) {\n return model.setProperties(properties);\n }\n\n const softPropertyHandler = new SoftPropertyHandler(model);\n return softPropertyHandler.saveSoftProperties(prevProperties, properties);\n}\n","export default {\n validate,\n};\n\n/**\n * Implementation details\n */\n\nfunction validate(settings) {\n if (\n !settings ||\n !settings.layout ||\n !settings.properties ||\n !settings.model ||\n !settings.hashData ||\n !settings.generateDerivedProperties\n ) {\n throw Error('Derived-properties: Missing input');\n }\n}\n","import extend from 'extend';\nimport Hash from './hash/hash';\nimport HashBuilder from './hash/hash-builder';\nimport Save from './save/save';\nimport InputValidator from './input-validator/input-validator';\n\nfunction DerivedProperties() {\n this._generationInProgress = false;\n}\n\nDerivedProperties.prototype.isDerivedUpToDate = isDerivedUpToDate;\nDerivedProperties.prototype.updateDerivedProperties = updateDerivedProperties;\nDerivedProperties.prototype.addDefaultHyperCubeHash = addDefaultHyperCubeHash;\n\nexport default DerivedProperties;\n\nfunction isDerivedUpToDate(settings) {\n InputValidator.validate(settings);\n\n const properties = settings.properties;\n const hash = Hash.generateHash(settings.hashData);\n\n if (!properties.qUndoExclude || properties.qUndoExclude.hashCode !== hash) {\n return false;\n }\n\n return true;\n}\n\n// Returns a boolean flag if properties actually are being updated or not\nfunction updateDerivedProperties(settings) {\n InputValidator.validate(settings);\n\n if (this._generationInProgress) {\n return Promise.resolve(true);\n }\n\n if (isDerivedUpToDate(settings)) {\n const layoutIsUpdated =\n settings.layout.qUndoExclude &&\n settings.layout.qUndoExclude.hashCode === settings.properties.qUndoExclude.hashCode;\n return Promise.resolve(!layoutIsUpdated);\n }\n\n const self = this;\n const model = settings.model;\n const layout = settings.layout;\n const properties = extend(true, {}, settings.properties);\n const prevProperties = extend(true, {}, properties);\n\n this._generationInProgress = true;\n\n Hash.updateHash(properties, settings.hashData);\n\n return settings.generateDerivedProperties(layout, properties).then(() =>\n Save.saveDerivedProperties(model, layout, properties, prevProperties).then(() => {\n self._generationInProgress = false;\n\n return Promise.resolve(true);\n })\n );\n}\n\nfunction addDefaultHyperCubeHash(hyperCubeDef, hyperCube, app, settings) {\n return HashBuilder.getDefaultHashDataForHyperCube(hyperCubeDef, hyperCube, app).then((defaultSettings) =>\n extend(true, settings, defaultSettings)\n );\n}\n","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n","/* eslint no-nested-ternary: 0 */\n\nimport extend from 'extend';\n\nexport function getFieldAccessor(field, page, deps) {\n if (!field) {\n return -1;\n }\n const cache = deps.cache;\n const origin = field.origin ? field.origin() : null;\n if (origin) {\n field = origin;\n }\n let fieldIdx = cache.fields.indexOf(field);\n let attrIdx = -1;\n let attrDimIdx = -1;\n if (fieldIdx === -1) {\n for (let i = 0; i < cache.wrappedFields.length; i++) {\n attrDimIdx = cache.wrappedFields[i].attrDims.map((v) => v.instance).indexOf(field);\n attrIdx = cache.wrappedFields[i].attrExps.map((v) => v.instance).indexOf(field);\n if (attrDimIdx !== -1 || attrIdx !== -1) {\n fieldIdx = i;\n break;\n }\n }\n }\n\n fieldIdx -= page.qArea.qLeft;\n if (fieldIdx < 0 || fieldIdx >= page.qArea.qWidth) {\n // throw new Error('Field out of range');\n return -1;\n }\n\n if (attrDimIdx >= 0) {\n return (row) => row[fieldIdx].qAttrDims.qValues[attrDimIdx];\n }\n if (attrIdx >= 0) {\n return (row) => row[fieldIdx].qAttrExps.qValues[attrIdx];\n }\n\n return (row) => row[fieldIdx];\n}\n\n// TODO - handle 'other' value\n// const specialTextValues = {\n// '-3': (meta) => {\n// if ('othersLabel' in meta) {\n// return meta.othersLabel;\n// }\n// return '';\n// }\n// };\n\nfunction datumExtract(propCfg, cell, { key }) {\n const datum = {\n value:\n typeof propCfg.value === 'function'\n ? propCfg.value(cell)\n : typeof propCfg.value !== 'undefined'\n ? propCfg.value\n : cell, // eslint-disable-line no-nested-ternary\n };\n\n datum.label =\n typeof propCfg.label === 'function'\n ? propCfg.label(cell)\n : typeof propCfg.label !== 'undefined'\n ? String(propCfg.label)\n : String(datum.value); // eslint-disable-line no-nested-ternary\n\n if (propCfg.field) {\n datum.source = {\n key,\n field: propCfg.field.key(),\n };\n }\n\n return datum;\n}\n\nfunction cellToValue({ cache, f, mainCell, p, prop, page, rowIdx, row, sourceKey, target, targetProp }) {\n let propCell = mainCell;\n if (p.field && p.field !== f) {\n const propCellFn = getFieldAccessor(p.field, page, { cache });\n if (propCellFn === -1) {\n return;\n }\n propCell = extend({ qRow: rowIdx }, propCellFn(row));\n }\n target[targetProp] = datumExtract(p, propCell, { key: sourceKey }, prop);\n}\n\nexport default function extract(config, dataset, cache, util) {\n const cfgs = Array.isArray(config) ? config : [config];\n let dataItems = [];\n for (let i = 0; i < cfgs.length; i++) {\n if (typeof cfgs[i].field !== 'undefined') {\n const cube = dataset.raw();\n const sourceKey = dataset.key();\n const f = typeof cfgs[i].field === 'object' ? cfgs[i].field : dataset.field(cfgs[i].field);\n const { props, main } = util.normalizeConfig(cfgs[i], dataset);\n const propsArr = Object.keys(props);\n\n const track = !!cfgs[i].trackBy;\n const trackType = typeof cfgs[i].trackBy;\n const tracker = {};\n const trackedItems = [];\n const items = [];\n\n for (let j = 0; j < cube.qDataPages.length; j++) {\n const fn = getFieldAccessor(f, cube.qDataPages[j], { cache });\n if (fn === -1) {\n continue;\n }\n for (let k = 0; k < cube.qDataPages[j].qMatrix.length; k++) {\n const rowIdx = cube.qDataPages[j].qArea.qTop + k;\n const mainCell = extend({ qRow: rowIdx }, fn(cube.qDataPages[j].qMatrix[k]));\n const ret = datumExtract(main, mainCell, { key: sourceKey });\n const exclude = main.filter && !main.filter(mainCell);\n if (exclude) {\n continue;\n }\n\n for (let l = 0; l < propsArr.length; l++) {\n const p = props[propsArr[l]];\n let arr = p.fields || [p];\n\n if (p.fields) {\n ret[propsArr[l]] = [];\n }\n\n // loop through all props that need to be mapped and\n // assign 'value' and 'source' to each property\n for (let m = 0; m < arr.length; m++) {\n cellToValue({\n cache,\n f,\n mainCell,\n p: arr[m],\n prop: propsArr[l],\n props,\n page: cube.qDataPages[j],\n rowIdx,\n row: cube.qDataPages[j].qMatrix[k],\n sourceKey,\n target: p.fields ? ret[propsArr[l]] : ret,\n targetProp: p.fields ? m : propsArr[l],\n });\n }\n\n if (p.fields) {\n const fieldValues = ret[propsArr[l]].map((v) => v.value);\n const fieldLabels = ret[propsArr[l]].map((v) => v.label);\n ret[propsArr[l]] = {\n value:\n typeof p.value === 'function'\n ? p.value(fieldValues)\n : typeof p.value !== 'undefined'\n ? p.value\n : fieldValues,\n label:\n typeof p.label === 'function'\n ? p.label(fieldLabels)\n : typeof p.label !== 'undefined'\n ? String(p.label)\n : String(ret[propsArr[l]].value),\n };\n }\n }\n\n // collect items based on the trackBy value\n // items with the same trackBy value are placed in an array and reduced later\n if (track) {\n util.track({\n cfg: cfgs[i],\n itemData: mainCell,\n obj: ret,\n target: trackedItems,\n tracker,\n trackType,\n });\n }\n\n items.push(ret);\n }\n }\n\n // reduce if items have been grouped\n const tmp = track\n ? util.collect(trackedItems, {\n main,\n propsArr,\n props,\n })\n : items;\n dataItems = [...dataItems, ...tmp];\n }\n }\n return dataItems;\n}\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","export default function(callback) {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n callback(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n } while (next.length);\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], children, i;\n while (node = nodes.pop()) {\n callback(node), children = node.children;\n if (children) for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], next = [], children, i, n;\n while (node = nodes.pop()) {\n next.push(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n while (node = next.pop()) {\n callback(node);\n }\n return this;\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n var nodes = [];\n this.each(function(node) {\n nodes.push(node);\n });\n return nodes;\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\n\nexport default function hierarchy(data, children) {\n var root = new Node(data),\n valued = +data.value && (root.value = data.value),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n if (children == null) children = defaultChildren;\n\n while (node = nodes.pop()) {\n if (valued) node.value = +node.data.value;\n if ((childs = children(node.data)) && (n = childs.length)) {\n node.children = new Array(n);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction defaultChildren(d) {\n return d.children;\n}\n\nfunction copyData(node) {\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy\n};\n","export function optional(f) {\n return f == null ? null : required(f);\n}\n\nexport function required(f) {\n if (typeof f !== \"function\") throw new Error;\n return f;\n}\n","import {required} from \"./accessors.js\";\nimport {Node, computeHeight} from \"./hierarchy/index.js\";\n\nvar keyPrefix = \"$\", // Protect against keys like “__proto__”.\n preroot = {depth: -1},\n ambiguous = {};\n\nfunction defaultId(d) {\n return d.id;\n}\n\nfunction defaultParentId(d) {\n return d.parentId;\n}\n\nexport default function() {\n var id = defaultId,\n parentId = defaultParentId;\n\n function stratify(data) {\n var d,\n i,\n n = data.length,\n root,\n parent,\n node,\n nodes = new Array(n),\n nodeId,\n nodeKey,\n nodeByKey = {};\n\n for (i = 0; i < n; ++i) {\n d = data[i], node = nodes[i] = new Node(d);\n if ((nodeId = id(d, i, data)) != null && (nodeId += \"\")) {\n nodeKey = keyPrefix + (node.id = nodeId);\n nodeByKey[nodeKey] = nodeKey in nodeByKey ? ambiguous : node;\n }\n }\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], nodeId = parentId(data[i], i, data);\n if (nodeId == null || !(nodeId += \"\")) {\n if (root) throw new Error(\"multiple roots\");\n root = node;\n } else {\n parent = nodeByKey[keyPrefix + nodeId];\n if (!parent) throw new Error(\"missing: \" + nodeId);\n if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n if (parent.children) parent.children.push(node);\n else parent.children = [node];\n node.parent = parent;\n }\n }\n\n if (!root) throw new Error(\"no root\");\n root.parent = preroot;\n root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight);\n root.parent = null;\n if (n > 0) throw new Error(\"cycle\");\n\n return root;\n }\n\n stratify.id = function(x) {\n return arguments.length ? (id = required(x), stratify) : id;\n };\n\n stratify.parentId = function(x) {\n return arguments.length ? (parentId = required(x), stratify) : parentId;\n };\n\n return stratify;\n}\n","/**\n * Resolves the value at the given JSON path\n * @private\n * @param {String} path [description]\n * @param {Object} obj [description]\n * @return {Object} [description]\n *\n * @example\n * let path = \"/path/to/paradise\";\n * let obj = {\n * path: {\n * to: { paradise: \"heaven\"},\n * from: {...}\n * }\n * };\n * resolve( path, obj ); // \"heaven\"\n */\nexport default function resolve(path, obj) {\n if (path.charAt(0) === '/') {\n path = path.substring(1);\n }\n const arr = path.split('/');\n let subpath;\n let container = obj;\n for (let i = 0; i < arr.length; i++) {\n if (arr[i] === '*' && Array.isArray(container)) {\n const carr = [];\n subpath = arr.slice(i + 1).join('/');\n for (let c = 0; c < container.length; c++) {\n let v = resolve(subpath, container[c]);\n // v.forEach(_ => _._parent = container[c]);\n if (Array.isArray(v)) {\n carr.push(...v);\n } else {\n carr.push(v);\n }\n }\n return carr;\n // return container.map(v => resolve(arr.slice(i + 1).join('/'), v));\n }\n if (!arr[i] && Array.isArray(container)) {\n const carr = new Array(container.length);\n subpath = arr.slice(i + 1).join('/');\n for (let c = 0; c < container.length; c++) {\n carr[c] = resolve(subpath, container[c]);\n }\n return carr;\n // return container.map(v => resolve(arr.slice(i + 1).join('/'), v));\n }\n if (arr[i] in container) {\n container = container[arr[i]];\n }\n }\n\n return container;\n}\n","function flattenTree(children, steps, arrIndexAtTargetDepth) {\n let arr = [];\n if (!children || !children.length) {\n return arr;\n }\n if (steps <= 0) {\n const nodes = arrIndexAtTargetDepth >= 0 ? [children[arrIndexAtTargetDepth]] : children;\n arr = [...arr, ...nodes];\n } else {\n for (let i = 0; i < children.length; i++) {\n if (children[i].children && children[i].children.length) {\n arr = [...arr, ...flattenTree(children[i].children, steps - 1, arrIndexAtTargetDepth)];\n }\n }\n }\n return arr;\n}\n\nexport function treeAccessor(sourceDepth, targetDepth, arrIndexAtTargetDepth) {\n if (sourceDepth === targetDepth) {\n return (d) => d;\n }\n if (sourceDepth > targetDepth) {\n // traverse upwards\n const steps = Math.max(0, Math.min(100, sourceDepth - targetDepth));\n return (node) => {\n let n = node;\n for (let i = 0; i < steps; ++i) {\n n = n.parent;\n }\n return n;\n };\n }\n if (targetDepth > sourceDepth) {\n // flatten descendants\n const steps = Math.max(0, Math.min(100, targetDepth - sourceDepth));\n return (node) => flattenTree(node.children, steps - 1, arrIndexAtTargetDepth);\n }\n return false;\n}\n\nexport function findField(query, { cache }) {\n if (typeof query === 'number') {\n return cache.fields[query];\n }\n\n const allFields = cache.allFields;\n if (typeof query === 'function') {\n for (let i = 0; i < allFields.length; i++) {\n if (query(allFields[i])) {\n return allFields[i];\n }\n }\n return false;\n }\n if (typeof query === 'string') {\n for (let i = 0; i < allFields.length; i++) {\n if (allFields[i].key() === query || allFields[i].title() === query) {\n return allFields[i];\n }\n }\n } else if (query && allFields.indexOf(query) !== -1) {\n // assume 'query' is a field instance\n return query;\n }\n\n throw Error(`Field not found: ${query}`);\n}\n","/* eslint no-nested-ternary: 0 */\n\nimport { hierarchy, stratify } from 'd3-hierarchy';\n\nimport picker from '../json-path-resolver';\n\nimport { treeAccessor } from './util';\n\nconst DIM_RX = /^qDimensionInfo(?:\\/(\\d+))?/;\nconst M_RX = /^\\/?qMeasureInfo\\/(\\d+)/;\nconst ATTR_EXPR_RX = /\\/qAttrExprInfo\\/(\\d+)/;\nconst ATTR_DIM_RX = /\\/qAttrDimInfo\\/(\\d+)/;\n\nfunction getColumnOrder(dataset) {\n const qColumnOrder = dataset.raw().qColumnOrder;\n const fields = dataset.fields();\n\n return qColumnOrder && qColumnOrder.length === fields.length ? qColumnOrder : fields.map((f, i) => i);\n}\n\nfunction getDimensionColumnOrder(cube) {\n const order =\n cube.qColumnOrder && cube.qColumnOrder.length ? cube.qColumnOrder : cube.qDimensionInfo.map((d, ii) => ii);\n\n return order.filter((ii) => ii < cube.qDimensionInfo.length);\n}\n\nexport function getFieldDepth(field, { cube }) {\n if (!field) {\n return -1;\n }\n\n let key = field.origin && field.origin() ? field.origin().key() : field.key();\n let isFieldDimension = false;\n let fieldIdx = -1; // cache.fields.indexOf(field);\n let attrIdx = -1;\n let attrDimIdx = -1;\n let fieldDepth = -1;\n let pseudoMeasureIndex = -1;\n let measureIdx = -1;\n let remainder = key;\n\n const treeOrder = cube.qEffectiveInterColumnSortOrder;\n const columnOrder = getDimensionColumnOrder(cube);\n\n if (DIM_RX.test(remainder)) {\n isFieldDimension = true;\n fieldIdx = +DIM_RX.exec(remainder)[1];\n remainder = key.replace(DIM_RX, '');\n }\n\n if (M_RX.test(remainder)) {\n if (cube.qMode === 'K') {\n pseudoMeasureIndex = +M_RX.exec(remainder)[1];\n } else if (treeOrder && treeOrder.indexOf(-1) !== -1) {\n pseudoMeasureIndex = +M_RX.exec(remainder)[1];\n measureIdx = 0;\n } else {\n measureIdx = +M_RX.exec(remainder)[1];\n }\n remainder = remainder.replace(M_RX, '');\n }\n\n if (remainder) {\n if (ATTR_DIM_RX.exec(remainder)) {\n attrDimIdx = +ATTR_DIM_RX.exec(remainder)[1];\n } else if (ATTR_EXPR_RX.exec(remainder)) {\n attrIdx = +ATTR_EXPR_RX.exec(remainder)[1];\n }\n }\n\n if (isFieldDimension) {\n if (cube.qMode === 'S') {\n fieldDepth = columnOrder[fieldIdx];\n } else {\n fieldDepth = treeOrder ? treeOrder.indexOf(fieldIdx) : fieldIdx;\n }\n } else if (treeOrder && treeOrder.indexOf(-1) !== -1) {\n // if pseudo dimension exists in sort order\n fieldDepth = treeOrder.indexOf(-1); // depth of pesudodimension\n } else {\n // assume measure is at the bottom of the tree\n fieldDepth = cube.qDimensionInfo.length - (cube.qMode === 'K' ? 0 : 1);\n }\n\n return {\n fieldDepth: fieldDepth + 1, // +1 due to root node\n pseudoMeasureIndex,\n measureIdx,\n attrDimIdx,\n attrIdx,\n };\n}\n\nfunction getFieldAccessor(sourceDepthObject, targetDepthObject) {\n let nodeFn = treeAccessor(\n sourceDepthObject.fieldDepth,\n targetDepthObject.fieldDepth,\n targetDepthObject.pseudoMeasureIndex\n );\n let valueFn;\n\n if (targetDepthObject.measureIdx >= 0) {\n valueFn = (node) => node.data.qValues[targetDepthObject.measureIdx];\n } else {\n valueFn = (node) => node.data;\n }\n let attrFn;\n\n if (targetDepthObject.attrDimIdx >= 0) {\n attrFn = (data) => data?.qAttrDims?.qValues[targetDepthObject.attrDimIdx];\n } else if (targetDepthObject.attrIdx >= 0) {\n attrFn = (data) => data?.qAttrExps?.qValues[targetDepthObject.attrIdx];\n }\n\n return {\n nodeFn,\n attrFn,\n valueFn,\n };\n}\n\nfunction datumExtract(propCfg, cell, { key }) {\n const datum = {\n value:\n typeof propCfg.value === 'function'\n ? propCfg.value(cell)\n : typeof propCfg.value !== 'undefined'\n ? propCfg.value\n : cell, // eslint-disable-line no-nested-ternary\n };\n\n datum.label =\n typeof propCfg.label === 'function'\n ? propCfg.label(cell)\n : typeof propCfg.label !== 'undefined'\n ? String(propCfg.label)\n : String(datum.value); // eslint-disable-line no-nested-ternary\n\n if (propCfg.field) {\n datum.source = {\n key,\n field: propCfg.field.key(),\n };\n }\n\n return datum;\n}\n\nfunction doIt({ propsArr, props, item, itemData, ret, sourceKey }) {\n for (let i = 0; i < propsArr.length; i++) {\n const pCfg = props[propsArr[i]];\n const arr = pCfg.fields || [pCfg];\n let coll;\n let collStr;\n if (pCfg.fields) {\n coll = [];\n collStr = [];\n }\n\n for (let j = 0; j < arr.length; j++) {\n const p = arr[j];\n let fn;\n let str;\n let value;\n let nodes;\n let cells;\n let label;\n if (p.type === 'primitive') {\n value = p.value;\n label = String(p.value);\n } else {\n if (typeof p.value === 'function') {\n fn = (v) => p.value(v, item);\n }\n if (typeof p.label === 'function') {\n str = (v) => p.label(v, item);\n }\n if (p.accessor) {\n nodes = p.accessor(item);\n if (Array.isArray(nodes)) {\n // propably descendants\n cells = nodes.map(p.valueAccessor);\n if (p.attrAccessor) {\n cells = cells.map(p.attrAccessor);\n }\n if (fn) {\n value = cells.map(fn);\n fn = null;\n }\n if (str) {\n label = cells.map(str);\n str = null;\n }\n value = p.reduce ? p.reduce(value) : value;\n label = p.reduceLabel ? p.reduceLabel(label, value) : String(value);\n } else {\n value = p.attrAccessor ? p.attrAccessor(p.valueAccessor(nodes)) : p.valueAccessor(nodes);\n label = value;\n }\n } else {\n value = itemData;\n label = itemData;\n }\n }\n if (pCfg.fields) {\n const v = fn ? fn(value) : value;\n coll.push(v);\n collStr.push(str && label != null ? str(label) : label != null ? label : String(v));\n } else {\n const v = fn ? fn(value) : value;\n ret[propsArr[i]] = {\n value: v,\n label: str ? str(label) : label != null ? label : String(v),\n };\n if (p.field) {\n ret[propsArr[i]].source = { field: p.field.key(), key: sourceKey };\n }\n }\n }\n if (coll) {\n ret[propsArr[i]] = {\n value: typeof pCfg.value === 'function' ? pCfg.value(coll, item) : coll,\n label: typeof pCfg.label === 'function' ? pCfg.label(collStr, item) : collStr,\n };\n }\n }\n}\n\nconst getHierarchy = (cube, cache, config) => {\n const rootPath = cube.qMode === 'K' ? '/qStackedDataPages/*/qData' : '/qTreeDataPages/*';\n const childNodes = cube.qMode === 'K' ? 'qSubNodes' : 'qNodes';\n const root = picker(rootPath, cube);\n if (!root || !root[0]) {\n return null;\n }\n cache.tree = hierarchy(root[0], config.children || ((node) => node[childNodes]));\n return cache.tree;\n};\n\nfunction getHierarchyForSMode(dataset) {\n const matrix = dataset.raw().qDataPages.length ? dataset.raw().qDataPages[0].qMatrix : [];\n const order = getColumnOrder(dataset);\n const fields = dataset.fields();\n const dimensions = dataset\n .fields()\n .filter((f) => f.type() === 'dimension')\n .map((f) => order.indexOf(fields.indexOf(f)));\n const measures = dataset\n .fields()\n .filter((f) => f.type() === 'measure')\n .map((f) => order.indexOf(fields.indexOf(f)));\n\n const root = {\n __id: '__root',\n qValues: [],\n };\n\n const keys = {\n __root: root,\n };\n\n for (let r = 0; r < matrix.length; r++) {\n const row = matrix[r];\n let id = '__root';\n // let parent = root;\n let isNew = false;\n for (let c = 0; c < dimensions.length; c++) {\n const cell = row[dimensions[c]];\n const key = `${id}__${cell.qElemNumber ?? cell.qElemNo}`;\n if (!keys[key]) {\n keys[key] = {\n __id: key,\n __parent: id,\n qValues: [],\n ...cell,\n };\n isNew = true;\n }\n id = key;\n }\n if (isNew) {\n for (let c = 0; c < measures.length; c++) {\n const cell = row[measures[c]];\n keys[id].qValues.push(cell);\n }\n }\n }\n\n const nodes = Object.keys(keys).map((key) => keys[key]);\n\n const h = stratify()\n .id((d) => d.__id)\n .parentId((d) => d.__parent)(nodes);\n\n return h;\n}\n\nconst attachPropsAccessors = ({ propsArr, props, cube, cache, itemDepthObject, f }) => {\n for (let i = 0; i < propsArr.length; i++) {\n const pCfg = props[propsArr[i]];\n const arr = pCfg.fields ? pCfg.fields : [pCfg];\n for (let j = 0; j < arr.length; j++) {\n const p = arr[j];\n if (p.field !== f) {\n const depthObject = getFieldDepth(p.field, { cube, cache });\n const accessors = getFieldAccessor(itemDepthObject, depthObject);\n p.accessor = accessors.nodeFn; // nodes accessor\n p.valueAccessor = accessors.valueFn; // cell accessor\n p.attrAccessor = accessors.attrFn; // attr cell accessor\n }\n }\n }\n};\n\nexport function augment(config = {}, dataset, cache, util) {\n const cube = dataset.raw();\n const sourceKey = dataset.key();\n const h = cube.qMode === 'S' ? getHierarchyForSMode(dataset) : getHierarchy(cube, cache, config);\n if (!h) {\n return null;\n }\n\n const height = h.height;\n const propDefs = [];\n for (let i = 0; i <= height; i++) {\n let f = null;\n if (i > 0) {\n if (cube.qMode === 'S') {\n const order = getDimensionColumnOrder(cube);\n let idx = order[i - 1];\n f = cache.fields[idx];\n } else {\n let idx = cube.qEffectiveInterColumnSortOrder[i - 1];\n // if (idx === -1) { // pseudo\n // let childIdx = node.parent.children.indexOf(node);\n // idx = cube.qDimensionInfo.length + childIdx; // measure field\n // }\n if (i > cube.qEffectiveInterColumnSortOrder.length) {\n idx = cube.qDimensionInfo.length;\n }\n\n f = cache.fields[idx];\n }\n }\n\n const { props, main } = util.normalizeConfig({ ...config, field: f ? f.key() : undefined }, dataset);\n const propsArr = Object.keys(props);\n propDefs[i] = { propsArr, props, main };\n\n const itemDepthObject = f ? getFieldDepth(f, { cube, cache }) : { fieldDepth: 0 };\n\n attachPropsAccessors({\n propsArr,\n props,\n cube,\n cache,\n itemDepthObject,\n f,\n });\n }\n\n const replica = h.copy();\n const replicaDescendants = replica.descendants();\n const descendants = h.descendants();\n\n for (let i = 0; i < descendants.length; i++) {\n const propsArr = propDefs[descendants[i].depth].propsArr;\n const props = propDefs[descendants[i].depth].props;\n const main = propDefs[descendants[i].depth].main;\n\n const item = replicaDescendants[i];\n const itemData = item.data; // main.valueAccessor(currentOriginal);\n\n const ret = datumExtract(main, itemData, { key: sourceKey });\n doIt({\n propsArr,\n props,\n item,\n itemData,\n ret,\n sourceKey,\n isTree: true,\n });\n descendants[i].data = ret;\n }\n return h;\n}\n\nexport function extract(config, dataset, cache, util) {\n const cfgs = Array.isArray(config) ? config : [config];\n let dataItems = [];\n for (let g = 0; g < cfgs.length; g++) {\n if (typeof cfgs[g].field !== 'undefined') {\n const cube = dataset.raw();\n const sourceKey = dataset.key();\n const h = getHierarchy(cube, cache, config);\n if (!h) {\n continue;\n }\n\n const f = typeof cfgs[g].field === 'object' ? cfgs[g].field : dataset.field(cfgs[g].field);\n const { props, main } = util.normalizeConfig(cfgs[g], dataset);\n const propsArr = Object.keys(props);\n\n const itemDepthObject = getFieldDepth(f, { cube, cache });\n const { nodeFn, attrFn, valueFn } = getFieldAccessor({ fieldDepth: 0 }, itemDepthObject);\n\n attachPropsAccessors({\n propsArr,\n props,\n cube,\n cache,\n itemDepthObject,\n f,\n });\n\n const track = !!cfgs[g].trackBy;\n const trackType = typeof cfgs[g].trackBy;\n const tracker = {};\n const trackedItems = [];\n\n const items = nodeFn(cache.tree);\n const mapped = [];\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n const itemData = attrFn ? attrFn(valueFn(item)) : valueFn(item);\n const exclude = main.filter && !main.filter(itemData);\n if (exclude) {\n continue;\n }\n const ret = datumExtract(main, itemData, { key: sourceKey });\n doIt({\n propsArr,\n props,\n item,\n itemData,\n ret,\n sourceKey,\n });\n // collect items based on the trackBy value\n // items with the same trackBy value are placed in an array and reduced later\n if (track) {\n util.track({\n cfg: cfgs[g],\n itemData,\n obj: ret,\n target: trackedItems,\n tracker,\n trackType,\n });\n }\n mapped.push(ret);\n }\n // reduce if items have been grouped\n const tmp = track\n ? util.collect(trackedItems, {\n main,\n propsArr,\n props,\n })\n : mapped;\n dataItems = [...dataItems, ...tmp];\n }\n }\n return dataItems;\n}\n","/*! javascript-number-formatter - v1.1.11 - http://mottie.github.com/javascript-number-formatter/ * © ecava */\n!function(a,b){\"function\"==typeof define&&define.amd?define([],b):\"object\"==typeof module?module.exports=b():a.format=b()}(this,function(){return function(a,b){\"use strict\";if(!a||isNaN(+b))return b;var c,d,e,f,g,h,i,j,k,l,m=a.length,n=a.search(/[0-9\\-\\+#]/),o=n>0?a.substring(0,n):\"\",p=a.split(\"\").reverse().join(\"\"),q=p.search(/[0-9\\-\\+#]/),r=m-q,s=a.substring(r,r+1),t=r+(\".\"===s||\",\"===s?1:0),u=q>0?a.substring(t,m):\"\";if(a=a.substring(n,t),b=\"-\"===a.charAt(0)?-b:+b,c=b<0?b=-b:0,d=a.match(/[^\\d\\-\\+#]/g),e=d&&d[d.length-1]||\".\",f=d&&d[1]&&d[0]||\",\",a=a.split(e),b=b.toFixed(a[1]&&a[1].length),b=+b+\"\",h=a[1]&&a[1].lastIndexOf(\"0\"),j=b.split(\".\"),(!j[1]||j[1]&&j[1].length<=h)&&(b=(+b).toFixed(h+1)),k=a[0].split(f),a[0]=k.join(\"\"),g=a[0]&&a[0].indexOf(\"0\"),g>-1)for(;j[0].length<a[0].length-g;)j[0]=\"0\"+j[0];else 0===+j[0]&&(j[0]=\"\");if(b=b.split(\".\"),b[0]=j[0],i=k[1]&&k[k.length-1].length){for(l=b[0],p=\"\",r=l.length%i,m=l.length,t=0;t<m;t++)p+=l.charAt(t),!((t-r+1)%i)&&t<m-i&&(p+=f);b[0]=p}return b[1]=a[1]&&b[1]?e+b[1]:\"\",d=b.join(\"\"),\"0\"!==d&&\"\"!==d||(c=!1),o+((c?\"-\":\"\")+d)+u}});","import formatter from 'number-format.js';\n\nfunction escapeRegExp(str) {\n return str.replace(/[-[\\]/{}()*+?.\\\\^$|]/g, '\\\\$&');\n}\n\nconst SIprefixes = {\n 3: 'k',\n 6: 'M',\n 9: 'G',\n 12: 'T',\n 15: 'P',\n 18: 'E',\n 21: 'Z',\n 24: 'Y',\n '-3': 'm',\n '-6': 'μ',\n '-9': 'n',\n '-12': 'p',\n '-15': 'f',\n '-18': 'a',\n '-21': 'z',\n '-24': 'y',\n },\n percentage = /%$/,\n // scientific = /e[\\+\\-][0-9]+/,\n radix = /^\\(r(0[2-9]|[12]\\d|3[0-6])\\)/i,\n oct = /^\\(oct\\)/i,\n dec = /^\\(dec\\)/i,\n hex = /^\\(hex\\)/i,\n bin = /^\\(bin\\)/i,\n rom = /^\\(rom\\)/i,\n functional = /^(\\(rom\\)|\\(bin\\)|\\(hex\\)|\\(dec\\)|\\(oct\\)|\\(r(0[2-9]|[12]\\d|3[0-6])\\))/i,\n prec = /#|0/g;\n\nfunction formatRadix(value, fradix, pattern, decimal) {\n value = value.toString(fradix);\n if (pattern[1] === pattern[1].toUpperCase()) {\n value = value.toUpperCase();\n }\n if (value.length - value.indexOf('.') > 10) {\n // limit to 10 decimal places\n value = value.slice(0, value.indexOf('.') + 11);\n }\n\n return value.replace('.', decimal || '.');\n}\n\n// value must be an integer\n// value must not be in scientific notation\nfunction formatRoman(value, pattern) {\n let i,\n s = '',\n v = Number(String(value).slice(-3)),\n nThousands = (value - v) / 1000,\n decimal = [0, 1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900].reverse(),\n numeral = ['0', 'I', 'IV', 'V', 'IX', 'X', 'XL', 'L', 'XC', 'C', 'CD', 'D', 'CM'].reverse();\n\n while (v > 0) {\n for (i = 0; i < decimal.length; i++) {\n if (decimal[i] <= v) {\n s += numeral[i];\n v -= decimal[i];\n break;\n }\n }\n }\n\n for (i = 0; i < nThousands; i++) {\n s = `M${s}`;\n }\n\n if (pattern[1] !== pattern[1].toUpperCase()) {\n s = s.toLowerCase();\n }\n return s;\n}\n\nfunction formatFunctional(value, pattern, d) {\n let temp;\n if (radix.test(pattern)) {\n value = formatRadix(value, Number(/\\d{2}/.exec(pattern)[0]), pattern, d);\n } else if (oct.test(pattern)) {\n value = formatRadix(value, 8, pattern, d);\n } else if (dec.test(pattern)) {\n value = formatRadix(value, 10, pattern, d);\n } else if (hex.test(pattern)) {\n value = formatRadix(value, 16, pattern, d);\n } else if (bin.test(pattern)) {\n value = formatRadix(value, 2, pattern, d);\n } else if (rom.test(pattern)) {\n temp = '';\n if (value < 0) {\n temp = '-';\n value = -value;\n }\n value = Math.floor(value);\n if (value === 0) {\n value = '0';\n } else if (value <= 500000) {\n // limit in engine\n value = formatRoman(value, pattern);\n value = temp + value;\n } else {\n value = pattern + temp + value.toExponential(0); // to return same result as engine\n }\n }\n\n return value;\n}\n\nfunction escape(value, flags, justStr) {\n const str = escapeRegExp(value);\n if (justStr) {\n return str;\n }\n return new RegExp(str || '', flags);\n}\n\nfunction createRegExp(thousand, decimal) {\n if (decimal) {\n decimal = escapeRegExp(decimal);\n }\n if (thousand) {\n thousand = escapeRegExp(thousand);\n }\n return new RegExp(`(?:[#0]+${thousand})?[#0]+(?:${decimal}[#0]+)?`);\n}\n\nfunction getAbbreviations(localeInfo, listSeparator) {\n if (!localeInfo || !localeInfo.qNumericalAbbreviation) {\n return SIprefixes;\n }\n\n const abbreviations = {};\n let abbrs = localeInfo.qNumericalAbbreviation.split(listSeparator);\n\n abbrs.forEach((abbreviation) => {\n let abbreviationTuple = abbreviation.split(':');\n if (abbreviationTuple.length === 2) {\n abbreviations[abbreviationTuple[0]] = abbreviationTuple[1];\n }\n });\n\n return abbreviations;\n}\n\nfunction preparePattern(o, t, d, abbreviate) {\n let parts,\n lastPart,\n pattern = o.pattern,\n numericPattern,\n prefix,\n postfix,\n groupTemp,\n decTemp,\n temp,\n regex;\n\n if (abbreviate) {\n o.abbreviate = true;\n }\n\n // extract the numeric part from the pattern\n regex = createRegExp(t, d);\n numericPattern = pattern.match(regex);\n numericPattern = numericPattern ? numericPattern[0] : '';\n prefix = numericPattern ? pattern.substr(0, pattern.indexOf(numericPattern)) : pattern;\n postfix = numericPattern ? pattern.substring(pattern.indexOf(numericPattern) + numericPattern.length) : '';\n\n if (!numericPattern) {\n numericPattern = pattern ? '#' : '##########';\n }\n\n if (t && t === d) {\n // ignore grouping if grouping separator is same as decimal separator\n // extract decimal part\n parts = numericPattern.split(d);\n lastPart = parts.pop();\n numericPattern = parts.join('') + d + lastPart;\n t = '';\n }\n\n // formatting library does not support multiple characters as separator (nor +-).\n // do a temporary replacement\n groupTemp = t;\n t = /,/.test(d) ? '¤' : ',';\n if (groupTemp) {\n numericPattern = numericPattern.replace(escape(groupTemp, 'g'), t);\n }\n\n decTemp = d;\n d = '.';\n if (decTemp) {\n numericPattern = numericPattern.replace(escape(decTemp, 'g'), d);\n }\n\n temp = numericPattern.match(/#/g);\n temp = temp ? temp.length : 0;\n\n const splitPattern = pattern.split(decTemp);\n let matchPrecisionResult;\n if (splitPattern[1]) {\n matchPrecisionResult = splitPattern[1].match(prec);\n }\n\n o.prefix = prefix || '';\n o.postfix = postfix || '';\n o.pattern = pattern;\n o.maxPrecision = matchPrecisionResult ? matchPrecisionResult.length : 2;\n o.percentage = percentage.test(pattern);\n o.numericPattern = numericPattern || '';\n o.numericRegex = new RegExp(`${escape(t, null, true)}|${escape(d, null, true)}`, 'g');\n o.groupTemp = groupTemp;\n o.decTemp = decTemp;\n o.t = t;\n o.d = d;\n o.temp = temp;\n}\n\nclass NumberFormatter {\n /**\n * @name NumberFormatter\n * @constructs\n * @param {Object} localeInfo\n * @param {String} pattern\n * @param {String} [thousand]\n * @param {String} [decimal]\n * @param {String} [type]\n */\n constructor(localeInfo, pattern, thousand, decimal, type) {\n this.localeInfo = localeInfo;\n this.pattern = pattern;\n this.thousandDelimiter = thousand || ',';\n this.decimalDelimiter = decimal || '.';\n this.type = type || 'numeric';\n\n // FIXME qListSep?\n // this.patternSeparator = this.localeInfo && this.localeInfo.qListSep ? this.localeInfo.qListSep : ';';\n this.patternSeparator = ';';\n\n this.abbreviations = getAbbreviations(localeInfo, this.patternSeparator);\n\n this.prepare();\n }\n\n clone() {\n const n = new NumberFormatter(\n this.localeInfo,\n this.pattern,\n this.thousandDelimiter,\n this.decimalDelimiter,\n this.type\n );\n n.subtype = this.subtype;\n return n;\n }\n\n /**\n * Formats a number according to a specific pattern.\n * Use # for optional numbers and 0 for padding.\n * @param {Number} value Number to format.\n * @param {String} [pattern] The pattern to apply.\n * @param {String} [t] Grouping separator.\n * @param {String} [d] Decimal delimiter.\n * @example\n * format(10, \"0\") // 10;\n * format(10, \"#\") // 10;\n * format(10, \"##.#\") // 10;\n * format(10, \"##.0\") // 10.0;\n * format(10, \"000\") // 010;\n * format(10.123, \"0.0\") // 10.1;\n * format(10.123, \"0.00##\") // 10.123; // at least 2 decimals, never more than 4\n * format(123456789, \"#,###\") // 123,456,789;\n * format(123456789, \"####-####\", \"-\") // 1-2345-6789;\n *\n * format(0.257, \"0.0%\") // 25.7%; // will multiply by 100\n * format(9876, \"$#,###\") // $9,876;\n * format(-9876, \"$#,###;$(#,###)\") // $(9,876); // use ; for alternative formatting for negative values\n * format(10, \"(r16)\") // a; // radix 16\n * format(15, \"(hex)\") // f; // same as (r16)\n * format(15, \"(HEX)\") // F;\n * format(10, \"(bin)\") // 1010; // same as (r02)\n * format(10, \"(oct)\") // 12; // same as (r08)\n */\n format(value, pattern, t, d) {\n this.prepare(pattern, t, d);\n return this.formatValue(value);\n }\n\n prepare(pattern, t, d) {\n let prep;\n\n if (typeof pattern === 'undefined') {\n pattern = this.pattern;\n }\n if (typeof t === 'undefined') {\n t = this.thousandDelimiter;\n }\n if (typeof d === 'undefined') {\n d = this.decimalDelimiter;\n }\n\n if (!pattern) {\n this._prepared = { pattern: false };\n return;\n }\n\n this._prepared = {\n positive: {\n d,\n t,\n abbreviate: false,\n isFunctional: false,\n prefix: '',\n postfix: '',\n },\n negative: {\n d,\n t,\n abbreviate: false,\n isFunctional: false,\n prefix: '',\n postfix: '',\n },\n zero: {\n d,\n t,\n abbreviate: false,\n isFunctional: false,\n prefix: '',\n postfix: '',\n },\n };\n prep = this._prepared;\n\n pattern = pattern.split(this.patternSeparator);\n prep.positive.pattern = pattern[0];\n prep.negative.pattern = pattern[1];\n prep.zero.pattern = pattern[2];\n if (functional.test(pattern[0])) {\n prep.positive.isFunctional = true;\n }\n if (!pattern[1]) {\n prep.negative = false;\n } else if (functional.test(pattern[1])) {\n prep.negative.isFunctional = true;\n }\n if (!pattern[2]) {\n prep.zero = false;\n } else if (functional.test(pattern[2])) {\n prep.zero.isFunctional = true;\n }\n\n const abbreviate = this.type === 'U';\n if (!prep.positive.isFunctional) {\n preparePattern(prep.positive, t, d, abbreviate);\n }\n if (prep.negative && !prep.negative.isFunctional) {\n preparePattern(prep.negative, t, d, abbreviate);\n }\n if (prep.zero && !prep.zero.isFunctional) {\n preparePattern(prep.zero, t, d, abbreviate);\n }\n }\n\n formatValue(value) {\n let prep = this._prepared,\n temp,\n exponent,\n abbr = '',\n absValue,\n num,\n sciValue = '',\n d,\n t,\n i,\n numericPattern,\n decimalPartPattern,\n original = value;\n\n if (isNaN(value)) {\n return `${original}`;\n }\n\n value = +value;\n\n if (prep.pattern === false) {\n return value.toString();\n }\n\n if (value === 0 && prep.zero) {\n prep = prep.zero;\n return prep.pattern;\n }\n if (value < 0 && prep.negative) {\n prep = prep.negative;\n value = -value;\n } else {\n prep = prep.positive;\n }\n d = prep.d;\n t = prep.t;\n\n if (prep.isFunctional) {\n value = formatFunctional(value, prep.pattern, d);\n } else {\n if (prep.percentage) {\n value *= 100;\n }\n\n if (prep.abbreviate) {\n const abbrArray = Object.keys(this.abbreviations)\n .map((key) => parseInt(key, 10))\n .sort((a, b) => a - b);\n let lowerAbbreviation;\n let upperAbbreviation = abbrArray[0];\n i = 0;\n exponent = Number(Number(value).toExponential().split('e')[1]);\n\n while (upperAbbreviation <= exponent && i < abbrArray.length) {\n i++;\n upperAbbreviation = abbrArray[i];\n }\n\n if (i > 0) {\n lowerAbbreviation = abbrArray[i - 1];\n }\n\n let suggestedAbbrExponent;\n\n // value and lower abbreviation is for values above 10, use the lower (move to the left <==)\n if (lowerAbbreviation && exponent > 0 && lowerAbbreviation > 0) {\n suggestedAbbrExponent = lowerAbbreviation;\n // value and lower abbreviation is for values below 0.1 (move to the right ==>)\n } else if ((exponent < 0 && lowerAbbreviation < 0) || !lowerAbbreviation) {\n // upper abbreviation is also for values below 0.1 and precision allows for using the upper abbreviation(move to the right ==>)\n if (upperAbbreviation < 0 && upperAbbreviation - exponent <= prep.maxPrecision) {\n suggestedAbbrExponent = upperAbbreviation;\n // lower abbrevaition is smaller than exponent and we can't get away with not abbreviating\n } else if (lowerAbbreviation <= exponent && !(upperAbbreviation > 0 && -exponent <= prep.maxPrecision)) {\n // (move to left <==)\n suggestedAbbrExponent = lowerAbbreviation;\n }\n }\n if (suggestedAbbrExponent) {\n abbr = this.abbreviations[suggestedAbbrExponent];\n value /= 10 ** suggestedAbbrExponent;\n }\n }\n\n absValue = Math.abs(value);\n temp = prep.temp;\n numericPattern = prep.numericPattern;\n decimalPartPattern = numericPattern.split(d)[1];\n\n if (this.type === 'I') {\n value = Math.round(value);\n }\n num = value;\n\n if (!decimalPartPattern && numericPattern.slice(-1)[0] === '#') {\n if (absValue >= 10 ** temp || absValue < 1 || absValue < 1e-4) {\n if (value === 0) {\n value = '0';\n } else if (absValue < 1e-4 || absValue >= 1e20) {\n // engine always formats values < 1e-4 in scientific form, values >= 1e20 can only be represented in scientific form\n value = num.toExponential(Math.max(1, Math.min(14, temp)) - 1);\n value = value.replace(/\\.?0+(?=e)/, '');\n sciValue = '';\n } else {\n value = value.toPrecision(Math.max(1, Math.min(14, temp)));\n if (value.indexOf('.') >= 0) {\n value = value.replace(value.indexOf('e') < 0 ? /0+$/ : /\\.?0+(?=e)/, '');\n value = value.replace('.', d);\n }\n }\n } else {\n numericPattern += d;\n temp = Math.max(0, Math.min(20, temp - Math.ceil(Math.log(absValue) / Math.log(10))));\n for (i = 0; i < temp; i++) {\n numericPattern += '#';\n }\n\n value = formatter(numericPattern, value);\n }\n } else if (absValue >= 1e15 || (absValue > 0 && absValue <= 1e-14)) {\n value = absValue ? absValue.toExponential(15).replace(/\\.?0+(?=e)/, '') : '0';\n } else {\n const wholePart = Number(\n value.toFixed(Math.min(20, decimalPartPattern ? decimalPartPattern.length : 0)).split('.')[0]\n );\n let wholePartPattern = numericPattern.split(d)[0];\n wholePartPattern += d;\n\n value = formatter(wholePartPattern, wholePart) || '0';\n\n if (decimalPartPattern) {\n const nDecimals = Math.max(0, Math.min(14, decimalPartPattern.length)); // the length of e.g. 0000#####\n const nZeroes = decimalPartPattern.replace(/#+$/, '').length;\n let decimalPart = (this.type === 'I' ? 0 : absValue % 1).toFixed(nDecimals).slice(2).replace(/0+$/, ''); // remove trailing zeroes\n\n for (i = decimalPart.length; i < nZeroes; i++) {\n decimalPart += '0';\n }\n\n if (decimalPart) {\n value += d + decimalPart;\n }\n } else if (wholePart === 0) {\n // to avoid \"-\" being prefixed to value\n num = 0;\n }\n }\n\n value = value.replace(prep.numericRegex, (m) => {\n if (m === t) {\n return prep.groupTemp;\n }\n if (m === d) {\n return prep.decTemp;\n }\n return '';\n });\n if (num < 0 && !/^-/.test(value)) {\n value = `-${value}`;\n }\n }\n\n return prep.prefix + value + sciValue + abbr + prep.postfix;\n }\n\n static getStaticFormatter() {\n return {\n prepare() {},\n formatValue(v) {\n return `${v}`;\n },\n };\n }\n}\n\nexport default function numberFormatFactory(...args) {\n return new NumberFormatter(...args);\n}\n","export default function memoize(func, opts = {}) {\n const { size = 5000, multipleArguments = false, toKey = (arg) => arg } = opts;\n let cache = Object.create(null);\n let index = Object.create(null);\n let counter = 0;\n let fifo = 0; // First-In-First-Out index\n let cacher;\n let k;\n\n if (multipleArguments) {\n cacher = (...args) => {\n k = toKey(...args);\n if (cacher.has(k)) {\n return cacher.get(k);\n }\n return cacher.set(k, func(...args));\n };\n } else {\n cacher = (arg) => {\n k = toKey(arg);\n if (cacher.has(k)) {\n return cacher.get(k);\n }\n return cacher.set(k, func(arg));\n };\n }\n\n cacher.set = (key, val) => {\n if (counter >= size) {\n delete cache[index[fifo]];\n delete index[fifo];\n counter--;\n fifo++;\n }\n cache[key] = val;\n index[counter] = key;\n counter++;\n return val;\n };\n\n cacher.get = (key) => cache[key];\n\n cacher.has = (key) => key in cache;\n\n cacher.clear = () => {\n cache = Object.create(null);\n index = Object.create(null);\n counter = 0;\n fifo = 0;\n };\n\n cacher.size = () => counter;\n\n return cacher;\n}\n","import numberFormatFactory from './parts/qs-number-formatter';\nimport memoize from './memoize';\n\nexport default function formatter(pattern, thousand, decimal, qType, localeInfo) {\n const qformat = numberFormatFactory(localeInfo, pattern, thousand, decimal, qType);\n const memoized = memoize(qformat.formatValue.bind(qformat), {\n // Handle NaN and cases where toString yields different result than +operator. Ex. a Date.\n toKey: (value) => (isNaN(value) ? value : +value),\n });\n\n /**\n * Format a value according to the specified pattern created at construct\n *\n * @param {Number} value The number to be formatted\n * @return {String} [description]\n */\n function format(value) {\n return memoized(value);\n }\n\n /**\n * Format a value according to a specific pattern\n * that is not the one specified in the constructor\n *\n * @param {String} p Pattern\n * @param {Number} v Value\n * @param {String} t Thousand\n * @param {String} d Decimal\n * @return {String} Formatted value\n */\n format.format = function formatFn(p, v, t, d) {\n memoized.clear();\n return qformat.format(v, p, t, d);\n };\n\n /**\n * Change the pattern on existing formatter\n *\n * @param {String} p Pattern (optional)\n * @return {String} Returns the pattern\n */\n format.pattern = function patternFn(p) {\n if (p) {\n memoized.clear();\n qformat.pattern = p;\n qformat.prepare();\n }\n return qformat.pattern;\n };\n\n /**\n * Set the locale for the formatter\n *\n * @param {Object} args Locale object for formatting\n * @return {Undefined} Returns nothing\n */\n /* format.locale = function( ...args ) {\n locale = formatLocale( ...args );\n d3format = locale.format( pattern );\n\n return this;\n }; */\n\n return format;\n}\n","/* eslint import/prefer-default-export: 0 */\n\nexport const TYPES = {\n AUTO: 'U',\n INTEGER: 'I',\n NUMBER: 'R',\n FIXED_TO: 'F',\n MONEY: 'M',\n DATE: 'D',\n TIME: 'T',\n DATE_TIME: 'TS',\n INTERVAL: 'IV',\n};\n","import { TYPES } from '../constants';\n\nconst DAYS = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];\nconst DAYS_ABBR = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];\nconst MONTHS = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n];\nconst MONTHS_ABBR = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n\nconst SECONDS_PER_DAY = 86400;\n\nfunction pad(s, n) {\n for (let i = s.length; i < n; i++) {\n s = `0${s}`;\n }\n return s;\n}\n\nfunction parseDate(d, twelveFormat) {\n let h = d.getUTCHours();\n let day = d.getUTCDay() - 1;\n if (twelveFormat) {\n h %= 12;\n if (!h) {\n // h == 0 -> 12\n h = 12;\n }\n }\n\n if (day < 0) {\n day = 6;\n }\n\n return {\n year: d.getUTCFullYear(),\n month: d.getUTCMonth(),\n day,\n date: d.getUTCDate(),\n h,\n m: d.getUTCMinutes(),\n s: d.getUTCSeconds(),\n f: d.getUTCMilliseconds(),\n t: d.getUTCHours() >= 12 ? 'pm' : 'am',\n };\n}\n\nfunction getRemainder(value) {\n let s = value.toString().split('.');\n if (s[1]) {\n s = Number(`0.${s[1]}`);\n } else {\n return 0;\n }\n return s;\n}\n\nfunction parseIntervalDays(days) {\n const d = days;\n const h = 24 * getRemainder(d);\n const m = 60 * getRemainder(h);\n const s = 60 * getRemainder(m);\n const ms = 1000 * getRemainder(s);\n\n return {\n d: Math.floor(d),\n h: Math.floor(h),\n m: Math.floor(m),\n s: Math.floor(s),\n f: Math.round(ms),\n };\n}\n\nfunction parseInterval(days, pattern) {\n let units = parseIntervalDays(days),\n d = units.d,\n h = units.h,\n m = units.m,\n s = units.s,\n f = units.f,\n w = 0,\n date;\n\n if (/w+|t+/gi.test(pattern)) {\n date = new Date(\n Date.UTC(1899, 11, 30 + Math.floor(days), 0, 0, Math.round(SECONDS_PER_DAY * (days - Math.floor(days))))\n );\n if (isNaN(date.getTime())) {\n date = null;\n }\n }\n\n if (!/D+/gi.test(pattern)) {\n h += d * 24;\n }\n if (!/h+/gi.test(pattern)) {\n m += h * 60;\n }\n if (!/m+/gi.test(pattern)) {\n s += m * 60;\n }\n if (/w+/gi.test(pattern)) {\n w = date ? date.getDay() - 1 : 0;\n if (w < 0) {\n w = 6;\n }\n }\n\n let someT = '';\n if (date) {\n someT = date.getUTCHours() >= 12 ? 'pm' : 'am';\n }\n\n return {\n year: 0,\n month: 0,\n day: w,\n date: d,\n h,\n m,\n s,\n f,\n t: someT,\n };\n}\n\nfunction getMasks(inst, d) {\n return {\n 'Y+|y+': {\n Y: `${Number(`${d.year}`.slice(-2))}`,\n YY: pad(`${d.year}`.slice(-2), 2),\n YYY: pad(`${d.year}`.slice(-3), 3),\n def(m) {\n // default\n return pad(`${d.year}`, m.length);\n },\n },\n 'M+': {\n M: d.month + 1,\n MM: pad(`${d.month + 1}`, 2),\n MMM: inst.locale_months_abbr[d.month],\n def: inst.locale_months[d.month],\n },\n 'W+|w+': {\n W: d.day,\n WW: pad(`${d.day}`, 2),\n WWW: inst.locale_days_abbr[d.day],\n def: inst.locale_days[d.day],\n },\n 'D+|d+': {\n D: d.date,\n def(m) {\n return pad(`${d.date}`, m.length);\n },\n },\n 'h+|H+': {\n h: d.h,\n def(m) {\n return pad(`${d.h}`, m.length);\n },\n },\n 'm+': {\n m: d.m,\n def(m) {\n return pad(`${d.m}`, m.length);\n },\n },\n 's+|S+': {\n s: d.s,\n def(m) {\n return pad(`${d.s}`, m.length);\n },\n },\n 'f+|F+': {\n def(m) {\n let f = `${d.f}`,\n n = m.length - f.length;\n if (n > 0) {\n for (let i = 0; i < n; i++) {\n f += '0';\n }\n } else if (n < 0) {\n f = f.slice(0, m.length);\n }\n return f;\n },\n },\n 't{1,2}|T{1,2}': {\n def(m) {\n let t = d.t;\n if (m[0].toUpperCase() === m[0]) {\n t = t.toUpperCase();\n }\n t = t.slice(0, m.length);\n return t;\n },\n },\n };\n}\n\nclass DateFormatter {\n /**\n * @name DateFormatter\n * @constructs\n * @param {Object} localeInfo\n * @param {String} pattern\n */\n constructor(localeInfo, pattern, qtype) {\n const info = localeInfo || {};\n\n if (!info.qCalendarStrings) {\n info.qCalendarStrings = {\n qLongDayNames: DAYS,\n qDayNames: DAYS_ABBR,\n qLongMonthNames: MONTHS,\n qMonthNames: MONTHS_ABBR,\n };\n }\n\n this.localeInfo = info;\n this.locale_days = info.qCalendarStrings.qLongDayNames.slice();\n this.locale_days_abbr = info.qCalendarStrings.qDayNames.slice();\n this.locale_months = info.qCalendarStrings.qLongMonthNames.slice();\n this.locale_months_abbr = info.qCalendarStrings.qMonthNames.slice();\n\n if (!pattern) {\n const patternMap = {\n [TYPES.TIME]: info.qTimeFmt || 'hh:mm:ss',\n [TYPES.DATE]: info.qDateFmt || 'YYYY-MM-DD',\n [TYPES.DATE_TIME]: info.qTimestampFmt || 'YYYY-MM-DD hh:mm:ss',\n };\n\n pattern = patternMap[qtype];\n }\n\n this.pattern = pattern;\n }\n\n clone() {\n const n = new DateFormatter(this.localeInfo, this.pattern);\n n.subtype = this.subtype;\n return n;\n }\n\n /**\n * Formats a date according to given pattern\n * @param {Date} date The date to format.\n * @param {String} pattern The desired format of the date\n * var d = new Date(2013, 8, 15, 13, 55, 40, 987);\n * var n = new DateFormatter();\n * @example\n * m.format( d, 'YYYY-MM-DD hh:mm:ss.ffff') // 2013-08-15 13:55:40.9870\n * m.format( d, 'h:m:s tt') // 1:55:40 pm\n * m.format( d, 'h:m:s TT') // 1:55:40 PM\n * m.format( d, 'M/D/YYYY') // 8/15/2013\n * m.format( d, 'WWWW DD MMM') // Thursday 15 Aug\n * m.format( d, 'WWW DD MMMM @ hh:mm:ss') // Thu 15 August @ 13:55:40\n */\n format(date, pattern) {\n // Fallback pattern is set in constructor\n if (!pattern) {\n pattern = this.pattern ? this.pattern : 'YYYY-MM-DD hh:mm:ss';\n }\n\n pattern = pattern.replace(/\\[.+]|\\[|]/g, '');\n const hasTwelveFlag = /t+/gi.test(pattern);\n let parsedDate;\n\n if (date instanceof Date) {\n parsedDate = parseDate(date, hasTwelveFlag);\n } else {\n if (date < 0) {\n // parseInterval don't support for negative values\n date = -date;\n pattern = `-${pattern}`;\n }\n parsedDate = parseInterval(date, pattern);\n }\n // remove [] and everything inside it\n\n const masks = getMasks(this, parsedDate);\n\n const masksArr = [];\n for (const mask in masks) {\n if (Object.prototype.hasOwnProperty.call(masks, mask)) {\n masksArr.push(mask);\n }\n }\n const dateTimeRegex = new RegExp(masksArr.join('|'), 'g');\n\n const result = pattern.replace(dateTimeRegex, (m) => {\n let r;\n let mask;\n for (mask in masks) {\n if (Object.prototype.hasOwnProperty.call(masks, mask)) {\n r = new RegExp(mask);\n if (r.test(m)) {\n break;\n }\n }\n }\n if (!r) {\n return '';\n }\n let value;\n for (const submask in masks[mask]) {\n if (submask === m || submask.toLowerCase() === m) {\n value = masks[mask][submask];\n if (typeof value === 'undefined') {\n value = masks[mask][submask.toLowerCase()];\n }\n break;\n }\n }\n if (typeof value === 'undefined') {\n value = masks[mask].def;\n }\n\n if (typeof value === 'function') {\n value = value(m);\n }\n return value;\n });\n return result;\n }\n}\n\nexport default function dateFormatFactory(...args) {\n return new DateFormatter(...args);\n}\n","import dateFormatFactory from './parts/qs-date-formatter';\nimport { TYPES } from './constants';\nimport memoize from './memoize';\n\nconst MS_PER_DAY = 86400000;\n\nexport function QlikTimeToDate(value) {\n return new Date(\n Date.UTC(1899, 11, 30 + Math.floor(value), 0, 0, 0, Math.round(MS_PER_DAY * (value - Math.floor(value))))\n );\n}\n\nexport default function formatter(pattern, qtype = 'TS', localeInfo = null) {\n let qformat = dateFormatFactory(localeInfo, pattern, qtype);\n let memoized = memoize(qformat.format.bind(qformat), {\n toKey: (date) => (typeof date === 'object' && typeof date.getTime === 'function' ? date.getTime() : date),\n });\n\n /**\n * Prepare a value according to the specified qtype\n *\n * @param {Number} value The value to be formatted\n * @return {Number} The converted value (if applied)\n */\n function prepare(value) {\n if (qtype !== TYPES.INTERVAL) {\n return QlikTimeToDate(value);\n }\n return value;\n }\n\n /**\n * Format a value according to the specified pattern created at construct\n *\n * @param {Date} value The number to be formatted\n * @return {String} [description]\n */\n function format(value) {\n value = prepare(value);\n return memoized(value);\n }\n\n /**\n * Format a value according to a specific pattern\n * that is not the one specified in the constructor\n *\n * @param {String} p Pattern\n * @param {Date} v Value\n * @return {String} Formatted value\n */\n format.format = function formatFn(p, v) {\n memoized.clear();\n v = prepare(v);\n return qformat.format(v, p);\n };\n\n /**\n * Set the locale for the formatter\n *\n * @param {Object} args Locale object for formatting\n * @return {Undefined} Returns nothing\n */\n format.locale = function locale(li) {\n qformat = dateFormatFactory(li, pattern, qtype);\n memoized = memoize(qformat.format.bind(qformat), {\n toKey: (date) => (typeof date === 'object' ? date.getTime() : date),\n });\n return this;\n };\n\n /**\n * Get or set the QType\n *\n * @param {String} nqt New qType (optional)\n * @return {String} Current qtype\n */\n format.qtype = function qtypeFn(nqt) {\n if (nqt !== undefined) {\n qtype = nqt;\n memoized.clear();\n }\n return qtype;\n };\n\n return format;\n}\n","import numberFormat from './numberFormat';\nimport timeFormat from './timeFormat';\n\nexport { numberFormat, timeFormat };\n\nexport function createFromMetaInfo(meta, localeInfo) {\n if (meta && meta.qNumFormat && ['D', 'T', 'TS', 'IV'].indexOf(meta.qNumFormat.qType) !== -1) {\n return timeFormat(meta.qNumFormat.qFmt, meta.qNumFormat.qType, localeInfo);\n }\n let pattern = '#';\n let thousand = localeInfo && typeof localeInfo.qThousandSep !== 'undefined' ? localeInfo.qThousandSep : ',';\n let decimal = localeInfo && typeof localeInfo.qDecimalSep !== 'undefined' ? localeInfo.qDecimalSep : '.';\n let type = 'U';\n let isAuto = meta && !!meta.qIsAutoFormat;\n if (meta && meta.qNumFormat) {\n pattern = meta.qNumFormat.qFmt || pattern;\n thousand = meta.qNumFormat.qThou || thousand;\n decimal = meta.qNumFormat.qDec || decimal;\n type = meta.qNumFormat.qType || type;\n isAuto = isAuto && ['M'].indexOf(meta.qNumFormat.qType) === -1;\n } else {\n isAuto = true;\n }\n\n if (isAuto || type === 'U') {\n pattern = `#${decimal}##`;\n type = 'U';\n }\n\n return numberFormat(pattern, thousand, decimal, type, localeInfo);\n}\n","import { createFromMetaInfo } from '../formatter';\n\nexport default function qField({ meta, id, key, localeInfo, fieldExtractor, value, type, sourceField } = {}) {\n let values;\n\n const valueFn = value || (type === 'dimension' ? (d) => d.qElemNo : (d) => d.qValue);\n const labelFn = (d) => d.qText || '';\n const reduce = type === 'dimension' ? 'first' : 'avg';\n const formatter = createFromMetaInfo(meta, localeInfo);\n const reduceLabel = type === 'dimension' ? 'first' : (labels, v) => formatter(v);\n\n const f = {\n id: () => id,\n key: () => key,\n raw: () => meta,\n title: () => meta.qFallbackTitle || meta.label,\n type: () => type,\n origin: () => sourceField,\n items: () => {\n if (!values) {\n values = fieldExtractor(f);\n }\n return values;\n },\n min: () => meta.qMin,\n max: () => meta.qMax,\n value: valueFn,\n label: labelFn,\n reduce,\n reduceLabel,\n formatter: () => formatter,\n tags: () => meta.qTags,\n };\n\n return f;\n}\n","// import augmentH from './augment-hierarchy';\nimport extend from 'extend';\nimport SExtractor from './extractor-s';\nimport { extract as TExtractor, augment as augmentTree } from './extractor-t';\nimport { findField } from './util';\nimport field from './field';\n\nfunction createFields(path, obj, prefix, parentKey, opts) {\n return (obj[path] || []).map((meta, i) => {\n const fieldKey = `${parentKey ? `${parentKey}/` : ''}${path}/${i}`;\n const f = {\n instance: field(\n extend(\n {\n id: `${prefix ? `${prefix}/` : ''}${fieldKey}`,\n key: fieldKey,\n meta,\n },\n opts\n )\n ),\n };\n f.attrDims = createFields(\n 'qAttrDimInfo',\n meta,\n prefix,\n fieldKey,\n extend({}, opts, { value: (v) => v.qElemNo, type: 'dimension' })\n );\n f.attrExps = createFields(\n 'qAttrExprInfo',\n meta,\n prefix,\n fieldKey,\n extend({}, opts, { value: (v) => v.qNum, type: 'measure' })\n );\n f.measures = createFields(\n 'qMeasureInfo',\n meta,\n prefix,\n fieldKey,\n extend({}, opts, { value: (v) => v.qValue, type: 'measure' })\n );\n return f;\n });\n}\n\nexport default function q({ key, data, config = {} } = {}) {\n const cache = {\n fields: [],\n wrappedFields: [],\n allFields: [],\n virtualFields: [],\n };\n\n const cube = data;\n if (!cube) {\n throw new Error('Missing \"data\" input');\n }\n\n if (!cube.qDimensionInfo) {\n throw new Error('The \"data\" input is not recognized as a hypercube');\n }\n\n const deps = q.util;\n\n const opts = {\n cache,\n cube,\n localeInfo: config.localeInfo,\n fieldExtractor: null,\n pages: null,\n hierarchy: () => null,\n virtualFields: config.virtualFields,\n };\n\n const dataset = {\n key: () => key,\n raw: () => cube,\n field: (query) => findField(query, opts),\n fields: () => cache.fields.slice(),\n extract: (extractionConfig) => opts.extractor(extractionConfig, dataset, cache, deps),\n hierarchy: (hierarchyConfig) => opts.hierarchy(hierarchyConfig, dataset, cache, deps),\n _cache: () => cache,\n };\n\n if (cube.qMode === 'K' || cube.qMode === 'T' || (!cube.qMode && cube.qNodesOnDim)) {\n opts.extractor = TExtractor;\n opts.hierarchy = augmentTree;\n opts.pages = cube.qMode === 'K' ? cube.qStackedDataPages : cube.qTreeDataPages;\n } else if (cube.qMode === 'S') {\n opts.extractor = SExtractor;\n opts.pages = cube.qDataPages;\n opts.hierarchy = augmentTree;\n } else {\n opts.extractor = () => []; // TODO - throw unsupported error?\n }\n\n opts.fieldExtractor = (f) => opts.extractor({ field: f }, dataset, cache, deps);\n\n const dimAcc = cube.qMode === 'S' ? (d) => d.qElemNumber : undefined;\n const measAcc = cube.qMode === 'S' ? (d) => d.qNum : undefined;\n\n cache.wrappedFields.push(\n ...createFields('qDimensionInfo', cube, key, '', extend({}, opts, { value: dimAcc, type: 'dimension' }))\n );\n cache.wrappedFields.push(\n ...createFields('qMeasureInfo', cube, key, '', extend({}, opts, { value: measAcc, type: 'measure' }))\n );\n\n cache.fields = cache.wrappedFields.map((f) => f.instance);\n\n const traverse = (arr) => {\n arr.forEach((f) => {\n cache.allFields.push(f.instance);\n traverse(f.measures);\n traverse(f.attrDims);\n traverse(f.attrExps);\n });\n };\n\n traverse(cache.wrappedFields);\n\n (config.virtualFields || []).forEach((v) => {\n // key: 'temporal',\n // from: 'qDimensionInfo/0',\n // override: {\n // value: v => v.qNum,\n // },\n const sourceField = dataset.field(v.from);\n const f = field({\n meta: sourceField.raw(),\n id: `${key}/${v.key}`,\n sourceField,\n fieldExtractor: (ff) => opts.extractor({ field: ff }, dataset, cache, deps),\n key: v.key,\n type: sourceField.type(),\n localeInfo: opts.localeInfo,\n value: sourceField.value,\n ...(v.override || {}),\n });\n cache.virtualFields.push(f);\n });\n\n cache.allFields.push(...cache.virtualFields);\n\n return dataset;\n}\n","import resolve from '../json-path-resolver';\n\nconst LAYOUT_TO_PROP = [\n ['qHyperCube', 'qHyperCubeDef'],\n ['qTreeData', 'qTreeDataDef'],\n ['qDimensionInfo', 'qDimensions'],\n ['qMeasureInfo', 'qMeasures'],\n ['qAttrDimInfo', 'qAttributeDimensions'],\n ['qAttrExprInfo', 'qAttributeExpressions'],\n];\n\nconst DIM_RX = /\\/qDimensionInfo(?:\\/(\\d+))?/;\nconst M_RX = /\\/qMeasureInfo\\/(\\d+)/;\nconst ATTR_DIM_RX = /\\/qAttrDimInfo\\/(\\d+)(?:\\/(\\d+))?/;\nconst ATTR_EXPR_RX = /\\/qAttrExprInfo\\/(\\d+)/;\nconst HC_RX = /\\/?qHyperCube/;\nconst TD_RX = /\\/?qTreeData/;\n\nconst SHORTEN_HC = (path) => `${path.substr(0, path.indexOf('/qHyperCubeDef') + 14)}`; // 14 = length of '/qHyperCubeDef'\nconst SHORTEN_TD = (path) => `${path.substr(0, path.indexOf('/qTreeDataDef') + 13)}`; // 13 = length of '/qTreeDataDef'\n\nexport function extractFieldFromId(id, layout) {\n let path = id;\n let dimensionIdx = -1;\n let measureIdx = -1;\n let pathToCube = '';\n let shortenizer = (p) => p;\n if (HC_RX.test(id)) {\n pathToCube = `${path.substr(0, path.indexOf('qHyperCube') + 10)}`; // 10 = length of 'qHyperCube'\n shortenizer = SHORTEN_HC;\n } else if (TD_RX.test(id)) {\n pathToCube = `${path.substr(0, path.indexOf('qTreeData') + 9)}`; // 9 = length of 'qTreeData'\n shortenizer = SHORTEN_TD;\n }\n\n let shortenPath = true;\n\n if (DIM_RX.test(id)) {\n dimensionIdx = +DIM_RX.exec(id)[1];\n }\n\n if (M_RX.test(id)) {\n measureIdx = +M_RX.exec(id)[1];\n }\n\n if (ATTR_DIM_RX.test(id)) {\n measureIdx = -1;\n dimensionIdx = 0;\n const attrCol = +ATTR_DIM_RX.exec(path)[2];\n if (!isNaN(attrCol)) {\n dimensionIdx = attrCol;\n path = path.replace(/\\/\\d+$/, '');\n }\n shortenPath = false;\n }\n\n if (ATTR_EXPR_RX.test(id)) {\n // depends on number of measures + number of attr expressions\n // in dimensions and measures before this one\n const offset = measureIdx;\n if (layout) {\n measureIdx = 0;\n const hc = resolve(pathToCube, layout);\n\n // offset by number of measures\n measureIdx += (hc.qMeasureInfo || []).length;\n\n // offset by total number of attr expr in dimensions\n // (assuming attr expr in dimensions are ordered first)\n if (dimensionIdx > -1) {\n measureIdx = hc.qDimensionInfo\n .slice(0, dimensionIdx)\n .reduce((v, dim) => v + dim.qAttrExprInfo.length, measureIdx);\n dimensionIdx = -1;\n } else {\n measureIdx = hc.qDimensionInfo.reduce((v, dim) => v + dim.qAttrExprInfo.length, measureIdx);\n // offset by total number of attr expr in measures before 'index'\n measureIdx = hc.qMeasureInfo.slice(0, offset).reduce((v, meas) => v + meas.qAttrExprInfo.length, measureIdx);\n }\n\n // offset by the actual column value for the attribute expression itself\n measureIdx += +ATTR_EXPR_RX.exec(path)[1];\n } else if (dimensionIdx > -1) {\n dimensionIdx = -1;\n measureIdx = +ATTR_EXPR_RX.exec(path)[1];\n } else {\n measureIdx += +ATTR_EXPR_RX.exec(path)[1] + 1;\n }\n }\n\n LAYOUT_TO_PROP.forEach(([v, prop]) => {\n path = path.replace(v, prop);\n });\n\n if (shortenPath) {\n path = shortenizer(path);\n }\n\n if (path && path[0] !== '/') {\n path = `/${path}`;\n }\n\n return {\n measureIdx,\n dimensionIdx,\n path,\n };\n}\n\n/**\n * Helper method to generate suitable QIX selection methods and parameters based on a brush instance.\n * @alias brush\n * @memberof picasso.q\n * @param {Brush} brush A brush instance\n * @param {object} [opts]\n * @param {boolean} [opts.byCells=false] Whether to prefer selection by row index.\n * @param {string} [opts.primarySource] Field source to extract row indices from. If not specified, indices from first source are used.\n * @param {boolean} [opts.orMode=true] If false, combine measure range selections.\n * @param {object} [layout] QIX data layout. Needed only when brushing on attribute expressions, to be able to calculate the measure index.\n * @return {object[]} An array of relevant selections\n */\nexport default function qBrush(brush, opts = {}, layout) {\n const byCells = opts.byCells;\n const primarySource = opts.primarySource;\n const selections = [];\n const methods = {};\n const isActive = brush.isActive();\n let hasValues = false;\n brush.brushes().forEach((b) => {\n const info = extractFieldFromId(b.id, layout);\n if (b.type === 'range' && info.measureIdx > -1 && info.dimensionIdx > -1) {\n const ranges = b.brush.ranges();\n if (ranges.length) {\n hasValues = true;\n if (!methods.multiRangeSelectTreeDataValues) {\n methods.multiRangeSelectTreeDataValues = {\n path: info.path,\n ranges: [],\n };\n }\n ranges.forEach((range) =>\n methods.multiRangeSelectTreeDataValues.ranges.push({\n qMeasureIx: info.measureIdx,\n qDimensionIx: info.dimensionIdx,\n qRange: {\n qMin: range.min,\n qMax: range.max,\n qMinInclEq: true,\n qMaxInclEq: true,\n },\n })\n );\n }\n } else {\n if (b.type === 'range' && info.measureIdx > -1) {\n const ranges = b.brush.ranges();\n if (ranges.length) {\n hasValues = true;\n if (!methods.rangeSelectHyperCubeValues) {\n methods.rangeSelectHyperCubeValues = {\n path: info.path,\n ranges: [],\n };\n }\n ranges.forEach((range) =>\n methods.rangeSelectHyperCubeValues.ranges.push({\n qMeasureIx: info.measureIdx,\n qRange: {\n qMin: range.min,\n qMax: range.max,\n qMinInclEq: true,\n qMaxInclEq: true,\n },\n })\n );\n }\n }\n if (b.type === 'range' && info.dimensionIdx > -1) {\n const ranges = b.brush.ranges();\n if (ranges.length) {\n hasValues = true;\n if (!methods.selectHyperCubeContinuousRange) {\n methods.selectHyperCubeContinuousRange = {\n path: info.path,\n ranges: [],\n };\n }\n ranges.forEach((range) =>\n methods.selectHyperCubeContinuousRange.ranges.push({\n qDimIx: info.dimensionIdx,\n qRange: {\n qMin: range.min,\n qMax: range.max,\n qMinInclEq: true,\n qMaxInclEq: false,\n },\n })\n );\n }\n }\n\n if (b.type === 'value' && info.dimensionIdx > -1) {\n if (byCells) {\n if (\n layout &&\n layout.qHyperCube &&\n (layout.qHyperCube.qMode === 'P' || layout.qHyperCube.qMode === 'T' || layout.qHyperCube.qMode === 'K')\n ) {\n const hyperCube = layout.qHyperCube;\n const noOfLeftDims = hyperCube.qNoOfLeftDims;\n const dimInterColSortIdx = hyperCube.qEffectiveInterColumnSortOrder.indexOf(info.dimensionIdx);\n\n if (!methods.selectPivotCells) {\n methods.selectPivotCells = {\n path: info.path,\n cells: [],\n };\n }\n\n if (b.id === primarySource || !primarySource) {\n const validValues = b.brush\n .values()\n .map((s) => +s)\n .filter((v) => !isNaN(v));\n\n if ((noOfLeftDims === 0 || dimInterColSortIdx >= noOfLeftDims) && noOfLeftDims > -1) {\n validValues.forEach((val) => {\n methods.selectPivotCells.cells.push({\n qType: 'T',\n qCol: val,\n qRow: dimInterColSortIdx - noOfLeftDims,\n });\n });\n } else {\n validValues.forEach((val) => {\n methods.selectPivotCells.cells.push({\n qType: 'L',\n qCol: info.dimensionIdx,\n qRow: val,\n });\n });\n }\n hasValues = !!methods.selectPivotCells.cells.length;\n }\n } else {\n if (!methods.selectHyperCubeCells) {\n methods.selectHyperCubeCells = {\n path: info.path,\n cols: [],\n };\n }\n\n methods.selectHyperCubeCells.cols.push(info.dimensionIdx);\n if (b.id === primarySource || (!primarySource && !methods.selectHyperCubeCells.values)) {\n methods.selectHyperCubeCells.values = b.brush\n .values()\n .map((s) => +s)\n .filter((v) => !isNaN(v));\n hasValues = !!methods.selectHyperCubeCells.values.length;\n }\n }\n } else {\n const values = b.brush\n .values()\n .map((s) => +s)\n .filter((v) => !isNaN(v));\n hasValues = !!values.length;\n selections.push({\n params: [info.path, info.dimensionIdx, values, false],\n method: 'selectHyperCubeValues',\n });\n }\n }\n }\n });\n\n if (!hasValues && isActive) {\n return [\n {\n method: 'resetMadeSelections',\n params: [],\n },\n ];\n }\n\n if (methods.rangeSelectHyperCubeValues) {\n selections.push({\n method: 'rangeSelectHyperCubeValues',\n params: [\n methods.rangeSelectHyperCubeValues.path,\n methods.rangeSelectHyperCubeValues.ranges,\n [],\n opts.orMode ?? true,\n ],\n });\n }\n\n if (methods.selectHyperCubeContinuousRange) {\n selections.push({\n method: 'selectHyperCubeContinuousRange',\n params: [methods.selectHyperCubeContinuousRange.path, methods.selectHyperCubeContinuousRange.ranges],\n });\n }\n\n if (methods.selectHyperCubeCells) {\n selections.push({\n method: 'selectHyperCubeCells',\n params: [\n methods.selectHyperCubeCells.path,\n methods.selectHyperCubeCells.values,\n methods.selectHyperCubeCells.cols,\n ],\n });\n }\n\n if (methods.selectPivotCells) {\n selections.push({\n method: 'selectPivotCells',\n params: [methods.selectPivotCells.path, methods.selectPivotCells.cells],\n });\n }\n\n if (methods.multiRangeSelectTreeDataValues) {\n selections.push({\n method: 'multiRangeSelectTreeDataValues',\n params: [methods.multiRangeSelectTreeDataValues.path, methods.multiRangeSelectTreeDataValues.ranges],\n });\n }\n\n return selections;\n}\n","import data from './data/dataset';\nimport qBrushHelper from './brush/q-brush';\nimport numberFormat from './formatter/numberFormat';\nimport timeFormat from './formatter/timeFormat';\n\nexport default function initialize(picasso) {\n data.util = picasso.data('matrix').util;\n picasso.data('q', data);\n picasso.formatter('q-number', numberFormat);\n picasso.formatter('q-time', timeFormat);\n}\n\ninitialize.qBrushHelper = qBrushHelper; // deprecated\ninitialize.selections = qBrushHelper;\n","const selectionUtils = {\n brushInterceptors: {\n DIM_VALUE_NULL: -2,\n DIM_VALUE_TOTAL: -3,\n brushOnlyOne,\n filterValues,\n },\n};\n\nexport default selectionUtils;\n\n/**\n * Implementation details\n */\n\n/**\n * Brush interception filter func - Brush ONE single value\n * @param selectBrush\n * @param items\n * @returns {*}\n */\nfunction brushOnlyOne(brush, items) {\n const activeBrushes = brush.brushes().filter((b) => b.type === 'value');\n let toggleOff = [];\n if (activeBrushes.length) {\n activeBrushes.forEach((b) => {\n toggleOff = toggleOff.concat(\n b.brush.values().map((v) => ({\n key: b.id,\n value: v,\n }))\n );\n });\n }\n\n return toggleOff.concat(items);\n}\n\nfunction findField(chartInstance, item) {\n const splitIndex = item.key.indexOf('qHyperCube') + 'qHyperCube'.length;\n const datasetName = item.key.substr(0, splitIndex);\n const fieldName = item.key.substr(splitIndex + 1);\n return chartInstance.dataset(datasetName).field(fieldName);\n}\n\n/**\n * Brush interception filter function\n * Do not allow selections on null value\n * Do not allow selections in locked dimension\n * @param chartInstance\n * @param items\n * @returns Object { items: {Array}, itemsAreLocked: {Boolean} }\n */\nfunction filterValues(chartInstance, items) {\n const self = this;\n let meta;\n let field;\n const lockedFields = [];\n let lockedItems = 0;\n const brushItems = [];\n\n items.forEach((item) => {\n if (item.value === self.DIM_VALUE_NULL || item.value === self.DIM_VALUE_TOTAL) {\n return;\n }\n field = findField(chartInstance, item);\n\n meta = field && field.raw();\n\n if (!meta.qLocked) {\n brushItems.push({\n key: item.key,\n value: item.value,\n });\n } else {\n lockedFields.push(meta);\n lockedItems++;\n }\n });\n\n return { items: brushItems, itemsAreLocked: lockedItems > 0 && lockedItems === items.length, lockedFields };\n}\n","import extend from 'extend';\nimport Actions from './selection-actions';\n\n// TODO: maybe add support later\nconst eventUtils = {\n showLockedFeedback: () => {},\n};\n\nconst DEFAULT_OPTIONS = {\n data: ['elemNo'],\n contexts: ['select'],\n startOnEmptySelection: true,\n style: {\n active: {\n strokeWidth: 2,\n stroke: '#333', // To make it consistent with other charts\n },\n inactive: {\n opacity: 0.3,\n },\n },\n};\n\nconst ESCAPE = 27;\nconst ENTER = 13;\nconst SHIFT = 16;\n\n/**\n * Create a new Selections handler\n *\n * @param {Object} options\n * @param {Object} options.model The backend model for the chart\n * @param {Object} options.chartInstance Picasso chart instance\n * @param {Object} options.selectionsApi Object selectionsApi\n * @returns {Object} The selections handler instance\n */\nfunction Selections(options) {\n if (!options || !options.chartInstance || !options.selectionsApi) {\n throw Error('Selections-handler: Missing input');\n }\n const chartInstance = options.chartInstance;\n const selectionsApi = options.selectionsApi;\n const dataPaths = options.dataPaths || [''];\n const selectPaths = options.selectPaths;\n const lasso = options.lasso;\n\n let selectionContexts = [];\n const selectionsApiRestoreHelper = { propertiesToRestore: {} };\n let on = false;\n const actions = Actions(chartInstance, selectionsApi, selectPaths);\n\n // Not need for a function, so turned it into an object\n const fn = {};\n\n let lastShift = false;\n function shiftToggle(e) {\n if (e.keyCode === SHIFT && e.shiftKey !== lastShift) {\n lastShift = e.shiftKey;\n lasso.toggle();\n }\n }\n\n function confirmOrCancelSelection(event) {\n const key = event.keyCode;\n if (key === ESCAPE) {\n selectionsApi.cancel();\n } else if (key === ENTER) {\n selectionsApi.confirm();\n }\n }\n\n // If a single field in a single table is not locked, this function returns false\n function areAllFieldsLocked() {\n let dimFields = dataPaths.map((dataPath) =>\n chartInstance\n .dataset(dataPath)\n .fields()\n .filter((field) => field.type() === 'dimension')\n );\n\n // flattern list\n dimFields = [].concat.apply([], dimFields);\n\n return dimFields.length && dimFields.every((field) => field.raw().qLocked);\n }\n\n // If a single field in a single table is not locked, this function returns false\n function getFieldsLocked() {\n const lockedFields = [];\n let dimFields = dataPaths.map((dataPath) =>\n chartInstance\n .dataset(dataPath)\n .fields()\n .filter((field) => field.type() === 'dimension')\n );\n\n // flattern list\n dimFields = [].concat.apply([], dimFields);\n\n for (let i = 0; i < dimFields.length; i++) {\n if (dimFields[i].raw().qLocked) {\n lockedFields.push(dimFields[i].raw());\n }\n }\n return {\n fields: lockedFields,\n areAllFieldsLocked: lockedFields.length && lockedFields.length === dimFields.length,\n };\n }\n\n function isLassoDisabled() {\n return options.isLassoDisabled && options.isLassoDisabled();\n }\n\n selectionsApi.on('cleared', () => {\n selectionContexts.forEach((context) => {\n context.brush.clear();\n // Clear dependent components\n context.dependentComponents.forEach((comp) => {\n const instance = chartInstance.component(comp.id);\n if (instance) {\n instance.emit(comp.clear);\n }\n });\n });\n });\n\n // Setup a selection context\n /*\n builder - instance of chart-builder\n componentKeys = []\n options = {\n contexts: [],\n data: [],\n style: {}\n }\n */\n /**\n * Setup a selection context\n * @param {Object} options Selection context options\n * @returns {Object} The selections handler instance\n */\n fn.setUp = function (options) {\n fn.tearDown();\n\n const result = this.setUpBrush(options);\n\n if (on) {\n register();\n }\n\n return result;\n };\n fn.setUpBrush = function (options) {\n const opts = extend(true, {}, DEFAULT_OPTIONS, options);\n\n const selectionTrigger = {\n on: 'tap',\n action(e) {\n return e.ctrlKey || options.isSingleSelect ? 'set' : 'toggle';\n },\n contexts: opts.contexts,\n data: opts.data,\n globalPropagation: 'stop',\n };\n\n const selectionConsumer = {\n context: opts.contexts[0],\n data: opts.data,\n style: opts.style,\n };\n\n const context = createContext(opts, chartInstance);\n // Do this here instead of in register to be able to catch the consumer\n context.listeners.toggle = function (items) {\n if (!on) {\n return [];\n }\n const fieldsLocked = getFieldsLocked();\n if (opts.startOnEmptySelection && items.length === 0 && fieldsLocked.areAllFieldsLocked) {\n eventUtils.showLockedFeedback(fieldsLocked.fields);\n return [];\n }\n return actions.toggleValues(items, context.brush, opts.startOnEmptySelection);\n };\n\n // Add all three to cover tap, brush range and lasso\n context.brush.intercept('toggle-values', context.listeners.toggle);\n context.brush.intercept('add-values', context.listeners.toggle);\n context.brush.intercept('remove-values', context.listeners.toggle);\n context.brush.intercept('set-values', context.listeners.toggle);\n\n context.listeners.start = function () {\n if (selectionContexts.length > 1) {\n selectionContexts.forEach((c) => {\n if (c !== context) {\n c.brush.end();\n }\n });\n\n // something may still be needed but can not call selectionsApi.clear() that would cause a infinite loop\n // if (!selectionsApi.canClear || selectionsApi.canClear()) {\n // selectionsApi.clear();\n // }\n }\n };\n\n selectionContexts.push(context);\n\n return { trigger: selectionTrigger, consume: selectionConsumer };\n };\n fn.setUpStart = function () {\n fn.tearDown();\n };\n fn.setUpDone = function () {\n if (on) {\n register();\n }\n };\n\n fn.tearDown = function () {\n if (on) {\n deregister();\n }\n selectionContexts.forEach((context) => {\n context.brush.removeInterceptor('toggle-values', context.listeners.toggle);\n context.brush.removeInterceptor('add-values', context.listeners.toggle);\n context.brush.removeInterceptor('remove-values', context.listeners.toggle);\n context.brush.removeInterceptor('set-values', context.listeners.toggle);\n });\n selectionContexts = [];\n };\n\n function register() {\n selectionContexts.forEach((context) => {\n context.listeners.update = function (added, removed) {\n // On tap end, picaso will run rendering in the same frame, and if this is a heavy job then long tap end will happen before tap end finish. This can trigger the radial context menu.\n // So we prevent long tap end here.\n if (!context.sleep) {\n actions.update(added, removed, context.brush);\n }\n };\n context.brush.on('update', context.listeners.update);\n context.brush.on('start', context.listeners.start);\n });\n }\n\n function deregister() {\n selectionContexts.forEach((context) => {\n context.brush.removeListener('update', context.listeners.update);\n context.brush.removeListener('start', context.listeners.start);\n });\n }\n\n fn.pauseEngineCalls = function (id) {\n selectionContexts.forEach((context) => {\n if (context.id === id) {\n context.sleep = true;\n }\n });\n };\n\n fn.resumeEngineCalls = function (id, run) {\n selectionContexts.forEach((context) => {\n if (context.id === id) {\n context.sleep = false;\n if (run) {\n context.listeners.update([], []);\n }\n }\n });\n };\n\n fn.addComponent = function (id, comp) {\n selectionContexts.forEach((context) => {\n if (context.id === id) {\n context.dependentComponents.push(comp);\n }\n });\n };\n\n fn.on = function () {\n if (on) {\n return;\n }\n on = true;\n\n register();\n\n document.addEventListener('keydown', shiftToggle);\n document.addEventListener('keyup', shiftToggle);\n\n const onDeactivated = () => {\n selectionContexts.forEach((context) => {\n context.brush.end();\n });\n document.removeEventListener('keyup', confirmOrCancelSelection);\n if (lasso.active()) {\n lasso.toggle();\n }\n };\n selectionsApi.on('deactivated', onDeactivated);\n selectionsApiRestoreHelper.unbindDeactivated = () => {\n selectionsApi.removeListener('deactivated', onDeactivated);\n };\n\n const onActivated = () => {\n document.addEventListener('keyup', confirmOrCancelSelection);\n };\n selectionsApi.on('activated', onActivated);\n selectionsApiRestoreHelper.unbindActivated = () => {\n selectionsApi.removeListener('activated', onActivated);\n };\n };\n fn.isOn = () => on;\n fn.off = function () {\n if (!on) {\n return;\n }\n on = false;\n deregister();\n\n document.removeEventListener('keydown', shiftToggle);\n document.removeEventListener('keyup', shiftToggle);\n document.removeEventListener('keyup', confirmOrCancelSelection);\n\n selectionsApiRestoreHelper.unbindActivated();\n selectionsApiRestoreHelper.unbindDeactivated();\n };\n\n fn.lassoState = function () {\n return lasso.active() && !isLassoDisabled();\n };\n fn.allFieldsLocked = function () {\n return areAllFieldsLocked();\n };\n\n return fn;\n}\n\nclass NoSelections {\n // eslint-disable-next-line class-methods-use-this\n isOn() {\n return false;\n }\n\n // eslint-disable-next-line class-methods-use-this\n on() {\n console.warn('Can not turn on selections on this object');\n }\n\n // eslint-disable-next-line class-methods-use-this\n off() {}\n}\n\nexport default {\n create(options) {\n if (!options.selectionsApi) {\n return new NoSelections();\n }\n return Selections(options);\n },\n};\n\nfunction createContext(options, chartInstance) {\n return {\n brush: chartInstance.brush(options.contexts[0]),\n listeners: {},\n dependentComponents: [],\n id: options.contexts[0],\n };\n}\n","import PicassoQ from 'picasso-plugin-q/dist/picasso-q';\nimport selectionUtils from './selection-utils';\n\n// TODO: maybe add support later\nconst eventUtils = {\n showLockedFeedback: () => {},\n};\n\nfunction SelectionActions(chartInstance, selectionsApi, paths) {\n function fn() {}\n\n function update(added, removed, brush) {\n if (!selectionsApi.isActive()) {\n selectionsApi.begin(paths);\n }\n const selections = PicassoQ.qBrushHelper(brush);\n selections.forEach((s) => {\n selectionsApi.select(s);\n });\n }\n\n function toggleValues(items, brush, startOnEmptySelection) {\n const filterResult = selectionUtils.brushInterceptors.filterValues(chartInstance, items);\n const itms = filterResult.items;\n if (filterResult.itemsAreLocked) {\n eventUtils.showLockedFeedback(filterResult.lockedFields);\n }\n if (!selectionsApi.isActive() && !filterResult.itemsAreLocked && (startOnEmptySelection || itms.length > 0)) {\n selectionsApi.begin(paths);\n brush.start();\n brush.emit('update', [], []); // and activate our brush\n }\n\n return itms;\n }\n\n fn.update = update;\n fn.toggleValues = toggleValues;\n\n return fn;\n}\nexport default SelectionActions;\n","/**\n * Checks whether a collision has occurred for range selection\n * @param e - event, in this case a mouse event\n * @param targets - the target points that the selections are hitting\n * @param selectionGesture - The type of selection gesture, for example area range select\n * @returns {boolean} - True, if a collision has occurred, otherwise false\n */\nfunction isOnComponentForRange(e, targets, selectionGesture) {\n return (\n !!e &&\n !!selectionGesture.chart\n .componentsFromPoint({\n x: e.center.x,\n y: e.center.y,\n })\n .filter((c) => targets.indexOf(c.settings.key) !== -1)[0]\n );\n}\n\n/**\n * Checks whether a collision has occurred for lasso selection\n * @param e - event, in this case a mouse event\n * @param gesturesParams - parameters for lasso selection\n * @param lassoGesture - the lasso gesture instance\n * @returns {boolean} - True, if a collision has occurred, otherwise false\n */\nfunction isOnComponentForLasso(e, gesturesParams, lassoGesture) {\n return (\n e &&\n lassoGesture.chart\n .componentsFromPoint({\n x: e.center.x,\n y: e.center.y,\n })\n .filter((c) => c.settings.key === gesturesParams.keys.componentKey)[0]\n );\n}\n\nfunction isOnComponentForNavBtn(e, legendBrushKey, navBtnGesture) {\n const components = navBtnGesture.chart.componentsFromPoint(e.center);\n return components.some((c) => c.settings.key === legendBrushKey);\n}\n\nexport default {\n isOnComponentForRange,\n isOnComponentForLasso,\n isOnComponentForNavBtn,\n};\n","import Hammer from 'hammerjs';\nimport onComponentChecker from './on-component-checker';\n\nfunction getLassoState(handlers) {\n return handlers.selectionHandler.lassoState() && !handlers.selectionHandler.allFieldsLocked();\n}\n\n/**\n * Handles lasso events for picasso charts using HammerJS. When activating lasso selection enable function is\n * triggered first. lassoStart is triggered on all areas specified by options.direction key. Lasso is the gesture\n * that will be active by default.\n */\nfunction callLassoGesture(state, gesturesFns, gesturesParams) {\n return {\n type: 'Pan',\n options: {\n direction: Hammer.DIRECTION_ALL,\n threshold: 1,\n enable(manager, e) {\n if (state.lassoing) {\n return gesturesFns.isSelectionEnabled();\n }\n const hitComp = onComponentChecker.isOnComponentForLasso(e, gesturesParams, this);\n return (\n gesturesFns.isSelectionEnabled() && e && (getLassoState(gesturesParams.handlers) || state.lassoing) && hitComp\n );\n },\n event: 'lasso',\n },\n recognizeWith: gesturesParams.handlers.scrollHandler ? 'drag' : null,\n events: {\n lassostart(e) {\n const hitComp = onComponentChecker.isOnComponentForLasso(e, gesturesParams, this);\n if (!hitComp) {\n return;\n }\n gesturesFns.switchTo('lasso', this.chart, e);\n state.lassoing = true;\n gesturesParams.handlers.selectionHandler.pauseEngineCalls(gesturesParams.keys.lassoBrushKey);\n e.clientX = e.pointers[0].clientX;\n e.clientY = e.pointers[0].clientY;\n gesturesFns.doEmit(this.chart, 'lasso', 'lassoStart', e);\n },\n lassomove(e) {\n if (!state.lassoing) {\n return;\n }\n e.clientX = e.pointers[0].clientX;\n e.clientY = e.pointers[0].clientY;\n gesturesFns.doEmit(this.chart, 'lasso', 'lassoMove', e);\n },\n lassoend(e) {\n if (!state.lassoing) {\n return;\n }\n\n e.clientX = e.pointers[0].clientX;\n e.clientY = e.pointers[0].clientY;\n gesturesFns.doEmit(this.chart, 'lasso', 'lassoEnd', e);\n gesturesParams.handlers.selectionHandler.resumeEngineCalls(gesturesParams.keys.lassoBrushKey, true);\n state.lassoing = false;\n },\n lassocancel(e) {\n state.lassoing = false;\n gesturesFns.doEmit(this.chart, 'lasso', 'lassoCancel', e);\n gesturesParams.handlers.selectionHandler.resumeEngineCalls(gesturesParams.keys.lassoBrushKey, false);\n },\n },\n };\n}\n\nexport default {\n callLassoGesture,\n};\n","import Hammer from 'hammerjs';\nimport onComponentChecker from './on-component-checker';\n\n/**\n * Handles measure range selection events for picasso charts using HammerJS. When activating measure range selection enable function is\n * triggered first. measurerangestart is triggered on all areas specified by options.direction key. Only after measurerangestart\n * is triggered, then the other events might be triggered as well. The different event\n * names must be appended as suffixes for options.event. In this case options.event is called measurerange, then our\n * events must be named measurerangestart, measurerangemove, measurerangeend, measurerangecancel.\n */\nfunction callMeasureRangeGesture(state, gesturesFns, gesturesParams, measureAxis) {\n const activeRangeBrush = gesturesParams.keys.dimRangeBrushKey ? 'majorrange' : 'arearange';\n\n return {\n type: 'Pan',\n options: {\n direction: gesturesParams.isHorizontal ? Hammer.DIRECTION_HORIZONTAL : Hammer.DIRECTION_VERTICAL,\n event: 'measurerange',\n enable(manager, e) {\n if (!gesturesParams.rangeSelStatus.isOpenMea) {\n return false;\n }\n\n if (state.measureSelecting) {\n return gesturesFns.isSelectionEnabled();\n }\n const targets =\n gesturesParams.active.gesture === 'measurerange'\n ? [measureAxis, gesturesParams.keys.componentKey]\n : [measureAxis];\n const hitComp = onComponentChecker.isOnComponentForRange(e, targets, this);\n\n state.measureSelecting = gesturesFns.isSelectionEnabled() && !!e && !!hitComp;\n return state.measureSelecting && !!gesturesParams.keys.measureRangeBrushKey;\n },\n },\n requireFailure: `lasso ${activeRangeBrush}`,\n recognizeWith: gesturesParams.handlers.scrollHandler ? 'drag' : null,\n events: {\n measurerangestart(e) {\n const targets =\n gesturesParams.active.gesture === 'measurerange'\n ? [measureAxis, gesturesParams.keys.componentKey]\n : [measureAxis];\n const hitComp = onComponentChecker.isOnComponentForRange(e, targets, this);\n if (!hitComp) {\n return;\n }\n\n state.measureSelecting = true;\n gesturesFns.switchTo('measurerange', this.chart, e);\n gesturesFns.doEmit(this.chart, 'rangeMeasure', 'rangeStart', e);\n gesturesParams.handlers.selectionHandler.pauseEngineCalls(gesturesParams.keys.measureRangeBrushKey);\n },\n measurerangemove(e) {\n if (!state.measureSelecting) {\n return;\n }\n gesturesFns.doEmit(this.chart, 'rangeMeasure', 'rangeMove', e);\n },\n measurerangeend(e) {\n if (!state.measureSelecting) {\n return;\n }\n gesturesParams.handlers.selectionHandler.resumeEngineCalls(gesturesParams.keys.measureRangeBrushKey, true);\n gesturesFns.doEmit(this.chart, 'rangeMeasure', 'rangeEnd', e);\n state.measureSelecting = false;\n },\n measurerangecancel() {\n gesturesParams.handlers.selectionHandler.resumeEngineCalls(gesturesParams.keys.measureRangeBrushKey, false);\n state.measureSelecting = false;\n },\n },\n };\n}\n\nexport default {\n callMeasureRangeGesture,\n};\n","import Hammer from 'hammerjs';\nimport onComponentChecker from './on-component-checker';\n\nfunction getAxisOrientation(axis, orientation) {\n let dir;\n if (axis === 'x-axis') {\n dir = orientation === 'horizontal' ? Hammer.DIRECTION_VERTICAL : Hammer.DIRECTION_HORIZONTAL;\n } else {\n dir = orientation === 'horizontal' ? Hammer.DIRECTION_HORIZONTAL : Hammer.DIRECTION_VERTICAL;\n }\n return dir;\n}\n\n/**\n * Handles area range selection events for picasso charts using HammerJS. When activating area range selection enable function is\n * triggered first. arearangestart is triggered on all areas specified by options.direction key. Only after arearangestart\n * is triggered, then the other events might be triggered as well. The different event\n * names must be appended as suffixes for options.event. In this case options.event is called arearange, then our\n * events must be named arearangestart, arearangemove, arearangeend, arearangecancel.\n */\nfunction callAreaRangeGesture(state, gesturesFns, gesturesParams, axis) {\n const activeRangeBrush = gesturesParams.keys.dimRangeBrushKey ? 'majorrange' : 'measurerange';\n\n return {\n // Area range select gesture\n type: 'Pan',\n options: {\n direction: getAxisOrientation(axis, gesturesParams.isHorizontal),\n event: 'arearange',\n enable(manager, e) {\n if (!gesturesParams.rangeSelStatus.isOpenDim) {\n return false;\n }\n\n if (state.minoring) {\n return gesturesFns.isSelectionEnabled();\n }\n const targets =\n gesturesParams.active.gesture === 'arearange' ? [axis, gesturesParams.keys.componentKey] : [axis];\n const hitComp = onComponentChecker.isOnComponentForRange(e, targets, this);\n\n state.minoring = gesturesFns.isSelectionEnabled() && !!e && !!hitComp;\n return state.minoring;\n },\n },\n requireFailure: `lasso ${activeRangeBrush}`,\n recognizeWith: gesturesParams.handlers.scrollHandler ? 'drag' : null,\n events: {\n arearangestart(e) {\n const targets =\n gesturesParams.active.gesture === 'arearange' ? [axis, gesturesParams.keys.componentKey] : [axis];\n const hitComp = onComponentChecker.isOnComponentForRange(e, targets, this);\n if (!hitComp) {\n return;\n }\n\n state.minoring = true;\n gesturesFns.switchTo('arearange', this.chart, e);\n gesturesFns.doEmit(this.chart, 'rangeMinor', 'areaStart', e);\n gesturesParams.handlers.selectionHandler.pauseEngineCalls(gesturesParams.keys.areaBrushKey);\n },\n arearangemove(e) {\n if (!state.minoring) {\n return;\n }\n // Behaves likes lasso, which adds all data points as soon as we hit the points, we only want to highlight the values within the range\n this.chart.brush(gesturesParams.keys.areaBrushKey).clear();\n gesturesFns.doEmit(this.chart, 'rangeMinor', 'areaMove', e);\n },\n arearangeend(e) {\n if (!state.minoring) {\n return;\n }\n gesturesParams.handlers.selectionHandler.resumeEngineCalls(gesturesParams.keys.areaBrushKey, true);\n gesturesFns.doEmit(this.chart, 'rangeMinor', 'areaEnd', e);\n state.minoring = false;\n },\n arearangecancel() {\n gesturesParams.handlers.selectionHandler.resumeEngineCalls(gesturesParams.keys.areaBrushKey, false);\n state.minoring = false;\n },\n },\n };\n}\n\nexport default {\n callAreaRangeGesture,\n};\n","import Hammer from 'hammerjs';\nimport onComponentChecker from './on-component-checker';\n\n/**\n * Handles dimension range selection events for picasso charts using HammerJS. When activating dimension range selection enable function is\n * triggered first. majorrangestart is triggered on all areas specified by options.direction key. Only after majorrangestart\n * is triggered, then the other events might be triggered as well. The different event\n * names must be appended as suffixes for options.event. In this case options.event is called majorrange, then our\n * events must be named majorrangestart, majorrangemove, majorrangeend, majorrangecancel.\n */\nfunction callDimensionRangeGesture(state, gesturesFns, gesturesParams, dimAxis) {\n const activeRangeBrush = gesturesParams.keys.measureRangeBrushKey ? 'measurerange' : 'arearange';\n return {\n type: 'Pan',\n options: {\n direction: gesturesParams.isHorizontal ? Hammer.DIRECTION_VERTICAL : Hammer.DIRECTION_HORIZONTAL,\n event: 'majorrange',\n enable(manager, e) {\n if (!gesturesParams.rangeSelStatus.isOpenDim) {\n return false;\n }\n if (state.majoring) {\n return gesturesFns.isSelectionEnabled();\n }\n const targets =\n gesturesParams.active.gesture === 'majorrange' ? [dimAxis, gesturesParams.keys.componentKey] : [dimAxis];\n const hitComp = onComponentChecker.isOnComponentForRange(e, targets, this);\n\n state.majoring = gesturesFns.isSelectionEnabled() && !!e && !!hitComp;\n return state.majoring && !!gesturesParams.keys.dimRangeBrushKey;\n },\n },\n requireFailure: `lasso ${activeRangeBrush}`,\n recognizeWith: gesturesParams.handlers.scrollHandler ? 'drag' : null,\n events: {\n majorrangestart(e) {\n const targets =\n gesturesParams.active.gesture === 'majorrange' ? [dimAxis, gesturesParams.keys.componentKey] : [dimAxis];\n const hitComp = onComponentChecker.isOnComponentForRange(e, targets, this);\n if (!hitComp) {\n return;\n }\n\n state.majoring = true;\n gesturesFns.switchTo('majorrange', this.chart, e);\n gesturesFns.doEmit(this.chart, 'rangeDim', 'rangeStart', e);\n gesturesParams.handlers.selectionHandler.pauseEngineCalls(gesturesParams.keys.dimRangeBrushKey);\n },\n majorrangemove(e) {\n if (!state.majoring) {\n return;\n }\n gesturesFns.doEmit(this.chart, 'rangeDim', 'rangeMove', e);\n },\n majorrangeend(e) {\n if (!state.majoring) {\n return;\n }\n gesturesParams.handlers.selectionHandler.resumeEngineCalls(gesturesParams.keys.dimRangeBrushKey, true);\n gesturesFns.doEmit(this.chart, 'rangeDim', 'rangeEnd', e);\n state.majoring = false;\n },\n majorrangecancel() {\n gesturesParams.handlers.selectionHandler.resumeEngineCalls(gesturesParams.keys.dimRangeBrushKey, false);\n state.majoring = false;\n },\n },\n };\n}\n\nexport default {\n callDimensionRangeGesture,\n};\n","import Hammer from 'hammerjs';\n\n/**\n * Handles dragging for picasso charts using HammerJS. When activating dragging the enable function is\n * triggered first. dragstart is triggered on all areas specified by options.direction key. The different event\n * names must be appended as suffixes for options.event. In this case options.event is called drag, then our\n * events must be named dragstart, dragmove, dragend, dragcancel.\n */\nfunction callDragGesture(state, gesturesFns, gesturesParams, hasSelections, isRtl) {\n let dragPoint = {};\n return {\n type: 'Pan',\n options: {\n direction: gesturesParams.isHorizontal ? Hammer.DIRECTION_VERTICAL : Hammer.DIRECTION_HORIZONTAL,\n event: 'drag',\n enable(manager, e) {\n if (state.dragging) {\n return gesturesFns.isNavigationEnabled();\n }\n\n state.dragging =\n gesturesFns.isNavigationEnabled() &&\n !!e &&\n !!this.chart\n .componentsFromPoint({ x: e.center.x, y: e.center.y })\n .filter((c) => c.settings.key === gesturesParams.keys.componentKey)[0];\n return state.dragging;\n },\n },\n requireFailure: hasSelections ? `lasso ${gesturesFns.getBrushConfig()}` : '',\n events: {\n dragstart(e) {\n dragPoint = { x: e.deltaX, y: e.deltaY };\n let change =\n -(gesturesParams.isHorizontal ? e.deltaY : e.deltaX) / gesturesParams.handlers.scrollHandler.getItemSize();\n if (!gesturesParams.isHorizontal && isRtl) {\n change = -change;\n }\n gesturesParams.handlers.scrollHandler.getScrollApi().move(change);\n },\n dragmove(e) {\n if (!state.dragging) {\n return;\n }\n let change =\n -(gesturesParams.isHorizontal ? e.deltaY - dragPoint.y : e.deltaX - dragPoint.x) /\n gesturesParams.handlers.scrollHandler.getItemSize();\n if (!gesturesParams.isHorizontal && isRtl) {\n change = -change;\n }\n gesturesParams.handlers.scrollHandler.getScrollApi().move(change);\n dragPoint = { x: e.deltaX, y: e.deltaY };\n },\n dragend() {\n if (!state.dragging) {\n return;\n }\n state.dragging = false;\n },\n dragcancel() {\n state.dragging = false;\n },\n },\n };\n}\n\nexport default {\n callDragGesture,\n};\n","import onComponentChecker from './on-component-checker';\n\n/**\n * Handles navigational button events for picasso charts using HammerJS. When pressing on a navigational button,\n * the enable function is triggered to check if the navigational button should be enabled or not.\n * For example, in edit mode it should be disabled.\n * @param isEnabledFn - Function that returns a boolean. In this case return false if in edit mode, true otherwise\n * @param legendBrushKey - String defining the legend brush key\n * @returns An object for reacting to tap events according to HammerJS API\n */\nfunction callNavBtnGesture(isEnabledFn, legendBrushKey) {\n return {\n type: 'Tap',\n options: {\n event: 'navBtnTap',\n enable(manager, e) {\n if (!e || !isEnabledFn()) {\n return false;\n }\n\n return onComponentChecker.isOnComponentForNavBtn(e, legendBrushKey, this);\n },\n },\n events: {\n navBtnTap(e) {\n // Invokes paging interaction on legend\n this.chart.componentsFromPoint(e.center).forEach((c) => {\n const btn = e.target;\n const attr = btn ? btn.getAttribute('data-action') : '';\n if (attr) {\n return c.emit(attr);\n }\n return undefined;\n });\n },\n },\n };\n}\n\nexport default {\n callNavBtnGesture,\n};\n","import lassoGesture from './gestures/lasso-gesture';\nimport measureRangeGesture from './gestures/measure-range-gesture';\nimport areaRangeGesture from './gestures/area-range-gesture';\nimport dimensionRangeGesture from './gestures/dimension-range-gesture';\nimport dragGesture from './gestures/drag-gesture';\nimport navBtnGesture from './gestures/navigational-button-gesture';\n\n/**\n * Creates Picasso components for interaction component that are dependent on eatchother\n */\n\nfunction DependentInteractions(handlers, orientation, isRtl, keys, rangeSelStatus) {\n const ret = {};\n\n orientation = orientation || 'vertical';\n\n const lassoBrushKey = keys.lassoBrushKey || 'select';\n const dimRangeBrushKey = keys.dimRangeBrushKey || null;\n const measureRangeBrushKey = keys.measureRangeBrushKey || null;\n const areaBrushKey = keys.areaBrushKey || null;\n const legendBrushKey = keys.legendBrushKey || null;\n\n const hasSelections = !!handlers.selectionHandler && handlers.selectionHandler.isOn();\n\n const state = {\n dragging: false,\n lassoing: false,\n majoring: false,\n minoring: false,\n measureSelecting: false,\n };\n\n const active = {\n gesture: '',\n type: '',\n };\n\n const isHorizontal = orientation === 'horizontal';\n\n const dimAxis = isHorizontal ? 'y-axis' : 'x-axis';\n const measureAxis = isHorizontal ? 'x-axis' : 'y-axis';\n\n function switchTo(gesture, chart, e) {\n if (active.gesture === gesture) {\n return;\n }\n let clearKey = lassoBrushKey;\n const activeChart = chart || active.chart;\n\n switch (active.gesture) {\n case 'majorrange':\n doEmit(activeChart, 'rangeDim', 'rangeClear', e);\n clearKey = dimRangeBrushKey;\n break;\n case 'measurerange':\n doEmit(activeChart, 'rangeMeasure', 'rangeClear', e);\n clearKey = measureRangeBrushKey;\n break;\n case 'arearange':\n doEmit(activeChart, 'rangeMinor', 'areaClear', e);\n clearKey = areaBrushKey;\n break;\n default:\n break;\n }\n\n active.gesture = gesture;\n const newType = gesture === 'range' ? 'range' : 'item';\n\n if (active.type && active.type !== newType) {\n activeChart.brush(clearKey).clear();\n }\n\n active.chart = chart;\n active.type = newType;\n }\n\n // Just added here to allow easy disabling of things while developing\n function doEmit(chart, comp, cont, e) {\n if (chart) {\n const inst = chart.component(comp);\n if (inst) {\n inst.emit(cont, e);\n }\n }\n }\n\n function getBrushConfig() {\n if (!dimRangeBrushKey) {\n return 'measurerange arearange';\n }\n if (!measureRangeBrushKey) {\n return 'majorrange arearange';\n }\n return 'majorrange measurerange';\n }\n\n let gestures = [];\n\n const gesturesFns = {\n isSelectionEnabled: () => handlers.selectionHandler && handlers.selectionHandler.isOn(),\n isNavigationEnabled: () => handlers.scrollHandler && handlers.scrollHandler.isOn(),\n doEmit,\n switchTo,\n getBrushConfig,\n };\n\n const gesturesParams = {\n handlers,\n keys,\n isHorizontal,\n active,\n rangeSelStatus,\n };\n\n if (hasSelections) {\n gestures = [\n {\n type: 'Tap',\n options: {\n event: 'rangeClearTap',\n },\n events: {\n rangeClearTap(e) {\n switchTo('none', this.chart, e);\n\n state.majoring = false;\n state.measureSelecting = false;\n state.minoring = false;\n },\n },\n },\n ];\n\n // Ordering matters here because the tap event, because the above gesture does not return anything\n // and we want don't want to call the navigational button enable function for all tap events\n gestures.unshift(navBtnGesture.callNavBtnGesture(gesturesFns.isNavigationEnabled, legendBrushKey));\n\n gestures.push(lassoGesture.callLassoGesture(state, gesturesFns, gesturesParams));\n\n // Only two of the axis range selection can exist at the same time\n if (!dimRangeBrushKey) {\n gestures.push(measureRangeGesture.callMeasureRangeGesture(state, gesturesFns, gesturesParams, measureAxis));\n // Register component to selections handler so it is cleared properly\n handlers.selectionHandler.addComponent(measureRangeBrushKey, { id: 'rangeMeasure', clear: 'rangeClear' });\n\n gestures.push(areaRangeGesture.callAreaRangeGesture(state, gesturesFns, gesturesParams, dimAxis));\n handlers.selectionHandler.addComponent(areaBrushKey, { id: 'rangeMinor', clear: 'areaClear' });\n } else if (!measureRangeBrushKey) {\n gestures.push(dimensionRangeGesture.callDimensionRangeGesture(state, gesturesFns, gesturesParams, dimAxis));\n handlers.selectionHandler.addComponent(dimRangeBrushKey, { id: 'rangeDim', clear: 'rangeClear' });\n\n gestures.push(areaRangeGesture.callAreaRangeGesture(state, gesturesFns, gesturesParams, measureAxis));\n handlers.selectionHandler.addComponent(areaBrushKey, { id: 'rangeMinor', clear: 'areaClear' });\n } else {\n gestures.push(dimensionRangeGesture.callDimensionRangeGesture(state, gesturesFns, gesturesParams, dimAxis));\n handlers.selectionHandler.addComponent(dimRangeBrushKey, { id: 'rangeDim', clear: 'rangeClear' });\n\n gestures.push(measureRangeGesture.callMeasureRangeGesture(state, gesturesFns, gesturesParams, measureAxis));\n handlers.selectionHandler.addComponent(measureRangeBrushKey, { id: 'rangeMeasure', clear: 'rangeClear' });\n }\n }\n\n if (handlers.scrollHandler) {\n gestures.push(dragGesture.callDragGesture(state, gesturesFns, gesturesParams, hasSelections, isRtl));\n\n // On scroll we need to switch of the major ranging, so that pan will work\n handlers.scrollHandler.getScrollApi().on('update', onScrollUpdate);\n }\n\n function onScrollUpdate() {\n switchTo('none');\n state.majoring = false;\n state.measureSelecting = false;\n state.minoring = false;\n }\n\n ret.gestures = gestures;\n ret.destroy = function () {\n if (handlers.scrollHandler) {\n handlers.scrollHandler.getScrollApi().removeListener('update', onScrollUpdate);\n }\n };\n\n return ret;\n}\n\nexport default {\n create: DependentInteractions,\n};\n","/**\n * Create a new tooltip action context\n *\n * @param {Object} chartInstance Picasso chart instance\n * @returns {Object} The tooltip actions handler instance\n */\nfunction TooltipActions(chartInstance, componentKey, data, context, tooltipKey) {\n let hasOpen = false;\n\n context = context || 'tooltip';\n data = data || ['self'];\n\n const brush = chartInstance.brush(context);\n\n const fn = {};\n\n // Exposed here for test stub purposes\n fn.isOpen = function () {\n return hasOpen;\n };\n\n function closeTooltip() {\n if (hasOpen) {\n const tooltip = chartInstance.component(tooltipKey);\n tooltip.emit('hide');\n }\n hasOpen = false;\n }\n\n function openTooltip(shapes) {\n hasOpen = true;\n const tooltip = chartInstance.component(tooltipKey);\n const e = {};\n const data = { nodes: shapes };\n tooltip.emit('show', e, data);\n }\n\n fn.closeTooltip = closeTooltip;\n\n /**\n * Updates the contents in tooltip. Requires an array of tooltipInfo.labelData and\n * an array of tooltipInfo.measureRows for the tooltip to display content, otherwise\n * it will show nothing. These key value mappings should be sent in from the charts.\n */\n function update() {\n const brushes = brush.brushes();\n\n // Fetches only the shapes that we are hovering over\n const shapes = chartInstance.getAffectedShapes(context, 'and', data, componentKey);\n\n if (brushes.length >= 1) {\n hasOpen = true;\n openTooltip(shapes);\n } else {\n closeTooltip();\n }\n }\n\n function toggleInterceptor(items) {\n // Remove duplicates if we have multiple dimensions to aoivd a toggle\n // ex: set(2006 ) ->2006 is on, followed by set(2006 ) ->2006 is off\n if (data.length > 1) {\n const check = {};\n const ret = [];\n items.forEach((item) => {\n if (!check[item.key]) {\n check[item.key] = {};\n }\n if (!check[item.key][item.value]) {\n check[item.key][item.value] = true;\n ret.push(item);\n }\n });\n return ret;\n }\n return items;\n }\n\n fn.update = update;\n fn.toggleInterceptor = toggleInterceptor;\n return fn;\n}\n\nexport default {\n create(...args) {\n return TooltipActions(...args);\n },\n};\n","export default {\n formatMeasureValue,\n};\n\nfunction formatMeasureValue(field, measureContent) {\n if (field.raw().isCustomFormatted) {\n return field.formatter()(measureContent.value.qText);\n }\n const value = measureContent.value.qNum !== undefined ? measureContent.value.qNum : measureContent.value.qValue;\n return field.formatter()(value);\n}\n","const MAX_VISIBLE_ITEMS = 5;\nconst OTHERS_ELEMNO = -3;\nconst NULL_ELEMNO = -2;\n\n// TODO: The function getAffectedShapes returns duplicate shapes.\n// Remove when this is fixed on picasso\nfunction filterDuplicateShapes(shapes) {\n const uniques = [];\n\n shapes.forEach((shape) => {\n if (uniques.indexOf(shape) === -1 && shape.type !== 'container') {\n uniques.push(shape);\n }\n });\n\n return uniques;\n}\n\nexport const createFilter = (filterShapes) => (shapes) =>\n filterShapes ? filterShapes(shapes) : filterDuplicateShapes(shapes);\n\nexport const createContent =\n (context) =>\n ({ h, data, style }) => {\n const content = extractContent(context, data);\n const renderSettings = {\n h,\n style,\n rtl: context.direction === 'rtl',\n translator: context.translator,\n };\n return context.renderer(renderSettings, content);\n };\n\nfunction extractContent(tooltipInfo, uniqueShapes) {\n const dataset = tooltipInfo.chartInstance.dataset(tooltipInfo.dataPath);\n\n // Create content + header\n const content = [];\n\n const numberInExcess = uniqueShapes.length - MAX_VISIBLE_ITEMS;\n const numItems = Math.min(MAX_VISIBLE_ITEMS, uniqueShapes.length);\n for (let j = 0; j < numItems; j++) {\n const shape = uniqueShapes[j];\n const localContent = {\n rows: [],\n };\n\n if (tooltipInfo.labelData) {\n const labels = [];\n const refPaths = tooltipInfo.labelData;\n let isNullValue = false;\n for (let i = 0; i < refPaths.length; i++) {\n const currentNode = shape.data[refPaths[i]].value;\n if (currentNode.qElemNo === NULL_ELEMNO || currentNode.qElemNumber === NULL_ELEMNO) {\n // The node is null\n isNullValue = true;\n break;\n }\n labels.push(shape.data[refPaths[i]].value.qText);\n }\n\n if (isNullValue) {\n return undefined;\n }\n\n localContent.header = tooltipInfo.headerResolver(labels);\n localContent.rows = tooltipInfo.measureRows\n .map((measureRow) => {\n const rowData = shape.data;\n return tooltipInfo.rowResolver(dataset.field(rowData[measureRow].source.field), rowData[measureRow], rowData);\n })\n .filter((row) => !!row);\n\n const colorByData = getColorByDimData(tooltipInfo, shape);\n if (colorByData) {\n localContent.rows.unshift(colorByData);\n }\n content.push(localContent);\n }\n }\n if (numberInExcess > 0) {\n content.numberInExcess = numberInExcess;\n }\n\n content.rowCount = content[0] ? content.length * content[0].rows.length : 0;\n return content;\n}\n\nfunction getOthersIndex(values) {\n let index = -1;\n for (let i = 0; i < values.length; i++) {\n if (values[i] === OTHERS_ELEMNO) {\n index = i;\n }\n }\n return index;\n}\n\n/**\n * Get the information of how the color by row should look like.\n * The data for color by is fetched directly from the shape and it's key value mapping called\n * colorByDim, which contains the label and the elemNo\n * @param tooltipInfo - an object containing the chart view\n * @param shape - an object representing the shape currently hovered upon\n * @returns {{label: string - legendTitle, value: (*|String) - color by value, template: string - html template}}\n */\nfunction getColorByDimData(tooltipInfo, shape) {\n const colorData = shape.data.color;\n const colorSettings = tooltipInfo.colorService?.getSettings?.();\n\n if (!colorSettings || colorSettings.type === 'color' || !colorData || !colorSettings.fieldType) {\n return undefined;\n }\n\n const ids = [];\n tooltipInfo.data.forEach((mapping) => {\n const elemNoObj = shape.data[mapping];\n if (elemNoObj) {\n ids.push(elemNoObj.value);\n }\n });\n const othersIndex = getOthersIndex(ids);\n\n const { translator } = tooltipInfo;\n const label = colorSettings.label;\n const color = shape.attrs?.fill;\n const value = othersIndex !== -1 ? translator.get('properties.dimensionLimits.others') : colorData.label;\n return { color, label, value };\n}\n","/* eslint no-underscore-dangle: 0 */\nconst TOOLTIP_CONTAINER_ID = 'dist-flow-tooltip';\nconst TOOLTIP_CONTAINER_SELECTOR = `#${TOOLTIP_CONTAINER_ID}`;\n\nfunction appendTooltipContainer() {\n if (!document.querySelector(TOOLTIP_CONTAINER_SELECTOR)) {\n const container = document.createElement('div');\n container.id = TOOLTIP_CONTAINER_ID;\n container.style.overflow = 'hidden';\n container.style.position = 'fixed';\n container.style.pointerEvents = 'none';\n container.style.left = '0px';\n container.style.top = '0px';\n container.style.width = '100%';\n container.style.height = '100%';\n container.style.zIndex = 1020;\n document.body.appendChild(container);\n }\n}\n\nfunction destroyTooltipContainer() {\n const elm = document.querySelector(TOOLTIP_CONTAINER_SELECTOR);\n if (elm && elm.parentElement && elm.childElementCount < 1) {\n elm.parentElement.removeChild(elm);\n }\n}\n\n/**\n * Base tooltip definition\n */\nexport default function tooltip({ key = 'tooltip', rtl, fontFamily, filter, content }) {\n return {\n show: true,\n key,\n type: 'tooltip',\n layout: {\n displayOrder: 3,\n },\n beforeMount() {\n appendTooltipContainer();\n },\n beforeUpdate() {\n appendTooltipContainer();\n },\n destroyed() {\n destroyTooltipContainer();\n },\n settings: {\n appendTo: () => document.querySelector(TOOLTIP_CONTAINER_SELECTOR),\n content,\n filter,\n extract: (context) => context.node,\n direction: rtl ? 'rtl' : 'ltr',\n placement: 'bounds',\n },\n style: {\n arrow: {\n color: '#404040',\n },\n content: {\n display: 'table',\n 'border-spacing': '4px',\n background: 'rgba(64, 64, 64, 0.9)',\n opacity: '1',\n fontSize: '13px',\n fontFamily,\n 'empty-cells': 'show',\n },\n cell: {\n 'max-width': '180px',\n 'word-break': 'break-word',\n 'word-wrap': 'break-word',\n 'overflow-wrap': 'break-word',\n hyphens: 'auto',\n },\n },\n };\n}\n","/** @jsx h */\nimport rtlUtils from '../../extra/rtl-util';\n\nconst { detectTextDirection: getDirection } = rtlUtils;\n\nexport default function render(settings, content) {\n const { h, style, translator, rtl } = settings;\n const result = [];\n const labelTextAlign = rtl ? 'right' : 'left';\n content.forEach((item) => {\n if (item.header) {\n const headerStyle = {\n ...style.cell,\n textAlign: labelTextAlign,\n fontWeight: 'bold',\n direction: getDirection(item.header),\n };\n result.push(\n <tr>\n <td style={headerStyle} colSpan={2}>\n {item.header}\n </td>\n </tr>\n );\n }\n item.rows.forEach((row) => {\n let valueContent = row.value;\n if (row.color) {\n const symbolStyle = {\n display: 'inline-block',\n width: 10,\n height: 10,\n 'background-color': row.color,\n margin: '0 8px',\n };\n const symbol = <div style={symbolStyle} />;\n valueContent = rtl ? [row.value, symbol] : [symbol, row.value];\n }\n const label = rtl ? [':', row.label] : [row.label, ':'];\n const labelStyle = { ...style.cell, textAlign: labelTextAlign, direction: getDirection(row.label) };\n const valueStyle = { ...style.cell, textAlign: rtl ? 'left' : 'right', direction: getDirection(row.value) };\n result.push(\n <tr>\n <td style={labelStyle}>{label}</td>\n <td style={valueStyle}>{valueContent}</td>\n </tr>\n );\n });\n });\n if (content.numberInExcess) {\n const moreText = translator.get('Object.ChartTooltip.NMore', content.numberInExcess);\n const moreStyle = { ...style.cell, textAlign: labelTextAlign, direction: getDirection(moreText) };\n result.push(\n <tr>\n <td style={moreStyle} colSpan={2}>\n {moreText}\n </td>\n </tr>\n );\n }\n return result;\n}\n","import extend from 'extend';\nimport TooltipAction from './tooltip-actions';\nimport formatting from '../formatting';\nimport { createFilter, createContent } from './tooltip-content';\nimport createTooltip from './tooltips-component';\nimport defaultTooltipRenderer from './tooltip-renderer';\n\nconst DEFAULT_OPTIONS = {\n tooltipKey: 'tooltip',\n data: [''],\n contexts: ['tooltip'],\n headerResolver(values) {\n return values.join(', ');\n },\n rowResolver(field, measureContent) {\n return {\n value: formatting.formatMeasureValue(field, measureContent),\n label: field.title(),\n };\n },\n direction: 'ltr',\n renderer: defaultTooltipRenderer,\n};\n\n/**\n * Create a new Tooltips handler\n *\n * @param {Object} model The backend model for the chart\n * @param {Object} chartInstance Picasso chart instance\n * @returns {Object} The selections handler instance\n */\nfunction Tooltips(chartInstance, $element, chartType) {\n if (!chartInstance) {\n throw Error('Tooltips-handler: Missing input');\n }\n\n let tooltipContexts = {};\n let on = false;\n\n // Not need for a function, so turned it into an object\n const fn = {};\n\n /**\n * Setup a tooltips context\n * @param {Object} options Tooltip context options\n * @returns {Object} The selections handler instance\n */\n fn.setUp = function (options) {\n const opts = extend(true, {}, DEFAULT_OPTIONS, options);\n\n if (!opts.componentKey) {\n throw Error('Tooltips-handler.setUp: Missing required input');\n }\n\n if (tooltipContexts[opts.contexts[0]] && on) {\n deRegContext(tooltipContexts[opts.contexts[0]]);\n }\n\n const context = createContext(opts, chartInstance);\n tooltipContexts[opts.contexts[0]] = context;\n\n if (on) {\n registerContext(context);\n }\n\n const component = createTooltip({\n key: opts.tooltipKey,\n rtl: context.direction === 'rtl',\n fontFamily: context.theme.getStyle(chartType, 'tooltip', 'fontFamily'),\n filter: createFilter(context.filterShapes),\n content: createContent(context, opts.dataPath),\n });\n\n const settings = opts.chartBuilder.getSettings();\n settings.components.push(component);\n\n return {\n trigger: {\n on: context.treatAsDesktop ? 'over' : 'tap',\n action: 'set',\n contexts: opts.contexts,\n data: opts.data,\n globalPropagation: 'stop',\n },\n consume: opts.contexts.map((c) => ({ context: c })),\n component,\n };\n };\n\n fn.tearDown = function () {\n if (on) {\n deregister();\n }\n tooltipContexts = [];\n };\n\n function register() {\n Object.keys(tooltipContexts).forEach((key) => {\n registerContext(tooltipContexts[key]);\n });\n }\n\n function registerContext(context) {\n context.listeners.update = function (added, removed) {\n context.action.update(added, removed, context);\n };\n context.listeners.end = function () {\n context.action.closeTooltip();\n };\n\n context.brush.on(context.treatAsDesktop ? 'update' : 'set-values', context.listeners.update);\n context.brush.on('end', context.listeners.end);\n // Intecept the set-values call to avoid a toggle in the second dimension.\n context.brush.intercept('set-values', context.action.toggleInterceptor);\n }\n\n function deregister() {\n Object.keys(tooltipContexts).forEach((key) => {\n deRegContext(tooltipContexts[key]);\n });\n }\n\n function deRegContext(context) {\n context.brush.removeListener(context.treatAsDesktop ? 'update' : 'set-values', context.listeners.update);\n context.brush.removeListener('end', context.listeners.end);\n context.brush.removeInterceptor('set-values', context.action.toggleInterceptor);\n }\n\n function closeTooltip() {\n Object.keys(tooltipContexts).forEach((key) => {\n tooltipContexts[key].action.closeTooltip();\n });\n }\n\n function mouseLeave() {\n closeTooltip();\n // eslint-disable-next-line guard-for-in, no-restricted-syntax\n for (const prop in tooltipContexts) {\n tooltipContexts[prop].brush.clear();\n }\n }\n\n fn.closeTooltip = closeTooltip;\n\n fn.isOn = () => on;\n fn.on = function () {\n if (on) {\n return;\n }\n on = true;\n\n register();\n\n if ($element) {\n $element.on('mouseleave', mouseLeave);\n }\n };\n\n fn.off = function () {\n if (!on) {\n return;\n }\n on = false;\n deregister();\n\n if ($element) {\n $element.off('mouseleave', mouseLeave);\n }\n closeTooltip();\n };\n\n return fn;\n}\n\nexport default {\n create(chartInstance, $element, chartType) {\n return Tooltips(chartInstance, $element, chartType);\n },\n};\n\nfunction createContext(options, chartInstance) {\n return {\n brush: chartInstance.brush(options.contexts[0]),\n action: TooltipAction.create(\n chartInstance,\n options.componentKey,\n options.data,\n options.contexts[0],\n options.tooltipKey\n ),\n listeners: {},\n chartInstance,\n dataPath: options.dataPath,\n renderer: options.renderer,\n data: options.data,\n headerResolver: options.headerResolver,\n rowResolver: options.rowResolver,\n colorService: options.colorService,\n attrDimPath: options.attrDimPath,\n measureRows: options.measureRows,\n labelData: options.labelData,\n filterShapes: options.filterShapes,\n\n direction: options.environment.options.direction,\n theme: options.environment.theme,\n translator: options.environment.translator,\n treatAsDesktop: options.environment.deviceType !== 'touch',\n };\n}\n","const namespace = '.scrollHandler';\n\nScrollHandler.prototype.getScrollApi = getScrollApi;\nScrollHandler.prototype.setDisabled = setDisabled;\nScrollHandler.prototype.getDisabled = getDisabled;\nScrollHandler.prototype.setItemSize = setItemSize;\nScrollHandler.prototype.getItemSize = getItemSize;\nScrollHandler.prototype.getScrollViewSizeInItem = getScrollViewSizeInItem;\nScrollHandler.prototype.on = on;\nScrollHandler.prototype.isOn = isOn;\nScrollHandler.prototype.off = off;\nScrollHandler.prototype.updateViewState = updateViewState;\nScrollHandler.prototype.onResize = onResize;\nScrollHandler.prototype.isDataSizeChanged = isDataSizeChanged;\nScrollHandler.prototype.resetScroll = resetScroll;\nScrollHandler.prototype.getViewData = getViewData;\nScrollHandler.prototype.setOptions = setOptions;\nScrollHandler.prototype.getScrollState = getScrollState;\nScrollHandler.prototype.setScrollState = setScrollState;\n\nexport default ScrollHandler;\n\n/**\n * Implementation details\n */\n\nfunction ScrollHandler(chartInstance, $chartElement, getSlicedDataFn, onScrollCallback, legendKey) {\n if (!chartInstance || !$chartElement || !getSlicedDataFn) {\n throw Error('Scroll-handler: Missing input');\n }\n this._chartInstance = chartInstance;\n this._$chartElement = $chartElement;\n this._getSlicedDataFn = getSlicedDataFn;\n this._on = false;\n this._itemSize = 30;\n this.options = {\n direction: 'vertical',\n };\n this._onScrollCallback = onScrollCallback;\n this._legendKey = legendKey;\n}\n\nfunction getScrollApi() {\n if (!this._scrollApi) {\n this._scrollApi = this._chartInstance.scroll('dimension');\n }\n return this._scrollApi;\n}\n\nfunction setDisabled(b) {\n this._disabled = b;\n}\n\nfunction getDisabled() {\n return this._disabled;\n}\n\nfunction setItemSize(s) {\n if (this._itemSize !== s) {\n this._itemSize = s;\n calculateScrollViewSizeInItem.call(this);\n }\n}\n\nfunction getItemSize() {\n return this._itemSize;\n}\n\nfunction getScrollViewSizeInItem() {\n if (!this._scrollViewSizeInItem) {\n calculateScrollViewSizeInItem.call(this);\n }\n return this._scrollViewSizeInItem;\n}\n\nfunction on() {\n if (this._on) {\n return;\n }\n if (this.getScrollApi()) {\n this._scrollApi.removeAllListeners();\n this._scrollApi.on('update', onScroll.bind(this));\n }\n this._$chartElement.on(`mousewheel${namespace} DOMMouseScroll${namespace}`, onMouseWheel.bind(this));\n // TODO: Picasso does not support pointer events therefore we need to remove preventDefault on pointer down to make it work for IE.\n // However, this will make paning on touch device to pan the object, so we need to prevent it.\n // This fix should be removed when Picasso support pointer events.\n this._$chartElement.on(`touchstart${namespace}`, (event) => {\n event.preventDefault();\n });\n this._on = true;\n}\nfunction isOn() {\n return this._on;\n}\nfunction off() {\n if (!this._on) {\n return;\n }\n if (this.getScrollApi()) {\n this._scrollApi.removeAllListeners();\n }\n this._$chartElement.off(namespace);\n this._on = false;\n}\n\nfunction updateViewState(max) {\n calculateScrollViewSizeInItem.call(this);\n if (this.getScrollApi()) {\n this._scrollApi.update({ viewSize: this._scrollViewSizeInItem, max });\n }\n}\n\nfunction onResize() {\n this._sizeChanged = true;\n calculateScrollViewSizeInItem.call(this);\n if (this.getScrollApi()) {\n this._scrollApi.update({ viewSize: this._scrollViewSizeInItem });\n }\n}\n\nfunction isDataSizeChanged(pageNumberOfRows, datasetNumberOfRows) {\n return Math.min(this.getScrollViewSizeInItem(), datasetNumberOfRows) !== pageNumberOfRows;\n}\n\nfunction resetScroll() {\n if (this.getScrollApi()) {\n this._scrollApi.moveTo(0);\n }\n}\n\nfunction getViewData() {\n let top = 0;\n let height = 0;\n if (this.getScrollApi()) {\n const state = this._scrollApi.getState();\n top = Math.round(state.start);\n height = state.viewSize;\n }\n return this._getSlicedDataFn(top, height);\n}\n\nfunction getScrollState() {\n return this.getScrollApi().getState().start;\n}\nfunction setScrollState(state) {\n this.getScrollApi().moveTo(state);\n}\n\nfunction setOptions(options) {\n if (this.options.direction !== options.direction) {\n this._scrollViewSizeInItem = undefined;\n }\n this.options = options;\n}\n\nfunction calculateScrollViewSizeInItem() {\n const scrollSize =\n (this.options.direction === 'horizontal' ? this._$chartElement.width() : this._$chartElement.height()) || 0;\n const n = Math.floor(scrollSize / this.getItemSize());\n this._scrollViewSizeInItem = Math.max(n, 1); // Number of visible items should be at least 1\n}\n\nfunction getMouseWheelData(orgEvent) {\n let delta = 0;\n let deltaX = 0;\n let deltaY = 0;\n const divider = 60;\n\n // Old school scrollwheel delta\n if (orgEvent.wheelDelta) {\n delta = orgEvent.wheelDelta / divider;\n }\n if (orgEvent.detail) {\n delta = -orgEvent.detail / 3;\n }\n\n // New school multidimensional scroll (touchpads) deltas\n deltaY = delta;\n\n // Gecko\n if (orgEvent.axis !== undefined && orgEvent.axis === orgEvent.HORIZONTAL_AXIS) {\n deltaY = 0;\n deltaX = -1 * delta;\n }\n\n // Webkit\n if (orgEvent.wheelDeltaY !== undefined) {\n deltaY = orgEvent.wheelDeltaY / divider;\n }\n if (orgEvent.wheelDeltaX !== undefined) {\n deltaX = (-1 * orgEvent.wheelDeltaX) / divider;\n }\n\n return {\n delta,\n deltaX,\n deltaY,\n x: orgEvent.pageX,\n y: orgEvent.pageY,\n };\n}\n\nfunction onLegendMouseWheel(e, event, chart, legendKey) {\n if (!!legendKey && chart.componentsFromPoint(event).some((c) => c.settings.key === legendKey)) {\n const legend = chart.component(legendKey);\n legend.emit(event.delta > 0 ? 'prev' : 'next');\n e.preventDefault();\n return true;\n }\n return false;\n}\n\nfunction onMouseWheel(e) {\n const event = getMouseWheelData(e.originalEvent);\n if (onLegendMouseWheel(e, event, this._chartInstance, this._legendKey) || this._disabled || !this.getScrollApi()) {\n return;\n }\n e.preventDefault();\n if (!event.delta) {\n return;\n }\n const scrollSpeed = 3;\n const value = event.delta < 0 ? scrollSpeed : -scrollSpeed;\n this._scrollApi.move(value);\n}\n\nfunction onScroll() {\n if (this._disabled || this._sizeChanged) {\n this._sizeChanged = false;\n return;\n }\n const self = this;\n this.getViewData()\n .then((layout) => {\n if (self._on && !self._disabled && self._onScrollCallback) {\n // Chart is updated with partial data\n self._onScrollCallback(layout, undefined, true);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') {\n if (typeof err !== 'undefined') {\n console.error(err);\n }\n }\n });\n}\n","/**\n * String validation util.\n *\n */\n\nconst CHARACTER_AVERAGE_WIDTH = 166 / 26;\nconst CHARACTER_MAX_WIDTH = 12;\nconst M_WIDTH = 11;\nconst CJK_AVERAGE_WIDTH = 12;\nconst CJK_OVER_LATIN_WIDTH_RATIO = CJK_AVERAGE_WIDTH / M_WIDTH;\n\nfunction startsWith(string, prefix) {\n return string.indexOf(prefix) === 0;\n}\n\nfunction endsWith(string, suffix) {\n return string.indexOf(suffix, string.length - suffix.length) !== -1;\n}\n\nfunction contains(haystack, needle) {\n if (!haystack) {\n throw new Error('Haystack is undefined.');\n }\n\n if (!needle) {\n throw new Error('Needle is undefined.');\n }\n\n return haystack.indexOf(needle) !== -1;\n}\n\nfunction stringWidthOverMWidth(len) {\n const n = 3; // For short strings with wide letters or numbers\n return (Math.min(len, n) * CHARACTER_MAX_WIDTH + Math.max(len - n, 0) * CHARACTER_AVERAGE_WIDTH) / M_WIDTH;\n}\n\nfunction getCharacterRatios(s) {\n if (!s) {\n return {\n latin: 0,\n cjk: 0,\n };\n }\n let CJK = s.match(/[\\u4E00-\\u9FFF]/g);\n let hiragana = s.match(/[\\u3040-\\u309F]/g);\n let katakana = s.match(/[\\u30A0-\\u30FF]/g);\n CJK = CJK ? CJK.length : 0;\n hiragana = hiragana ? hiragana.length : 0;\n katakana = katakana ? katakana.length : 0;\n const t = CJK + hiragana + katakana;\n return {\n latin: s.length - t,\n cjk: t,\n };\n}\n\nfunction getTotalCharacterRatios(qMatrix, columnIndex) {\n const total = { latin: 0, cjk: 0 };\n if (columnIndex === undefined) {\n qMatrix.forEach((row) => {\n const res = getCharacterRatios(row.qText);\n total.latin += res.latin;\n total.cjk += res.cjk;\n });\n } else {\n qMatrix.forEach((row) => {\n const res = getCharacterRatios(row[columnIndex].qText);\n total.latin += res.latin;\n total.cjk += res.cjk;\n });\n }\n const t = Math.max(1, total.latin + total.cjk);\n total.latinRatio = total.latin / t;\n total.cjkRatio = total.cjk / t;\n return total;\n}\n\nfunction getAdjustedMaxGlyphCount(maxGlyphCount, qMatrix, columnIndex) {\n const totalCharacterRatios = getTotalCharacterRatios(qMatrix, columnIndex);\n const latinGlyphCount = totalCharacterRatios.latinRatio * maxGlyphCount;\n const cjkGlyphCount = totalCharacterRatios.cjkRatio * maxGlyphCount;\n const adjustedMaxGlyphCount = Math.ceil(\n stringWidthOverMWidth(latinGlyphCount) + cjkGlyphCount * CJK_OVER_LATIN_WIDTH_RATIO\n );\n return adjustedMaxGlyphCount;\n}\n\n// TODO: Need to improve to make sure longer strings should have bigger width than shorter strings\nfunction estimateLatinLabelWidth(numLatins, maxLatinWidth, averageLatinWidth) {\n const latinWidth = numLatins <= 24 ? maxLatinWidth : averageLatinWidth;\n return numLatins * latinWidth;\n}\n\nfunction estimateLabelWidth(numCjks, numLatins, cjkWidth, maxLatinWidth, averageLatinWidth) {\n return numCjks * cjkWidth + estimateLatinLabelWidth(numLatins, maxLatinWidth, averageLatinWidth);\n}\n\nexport default {\n endsWith,\n startsWith,\n contains,\n stringWidthOverMWidth,\n getCharacterRatios,\n getTotalCharacterRatios,\n getAdjustedMaxGlyphCount,\n estimateLatinLabelWidth,\n estimateLabelWidth,\n};\n","const colorStruct = {\n aliceblue: { r: 240, g: 248, b: 255 },\n antiquewhite: { r: 250, g: 235, b: 215 },\n aqua: { r: 0, g: 255, b: 255 },\n aquamarine: { r: 127, g: 255, b: 212 },\n azure: { r: 240, g: 255, b: 255 },\n beige: { r: 245, g: 245, b: 220 },\n bisque: { r: 255, g: 228, b: 196 },\n black: { r: 0, g: 0, b: 0 },\n blanchedalmond: { r: 255, g: 235, b: 205 },\n blue: { r: 0, g: 0, b: 255 },\n blueviolet: { r: 138, g: 43, b: 226 },\n brown: { r: 165, g: 42, b: 42 },\n burlywood: { r: 222, g: 184, b: 135 },\n cadetblue: { r: 95, g: 158, b: 160 },\n chartreuse: { r: 127, g: 255, b: 0 },\n chocolate: { r: 210, g: 105, b: 30 },\n coral: { r: 255, g: 127, b: 80 },\n cornflowerblue: { r: 100, g: 149, b: 237 },\n cornsilk: { r: 255, g: 248, b: 220 },\n crimson: { r: 220, g: 20, b: 60 },\n cyan: { r: 0, g: 255, b: 255 },\n darkblue: { r: 0, g: 0, b: 139 },\n darkcyan: { r: 0, g: 139, b: 139 },\n darkgoldenrod: { r: 184, g: 134, b: 11 },\n darkgray: { r: 169, g: 169, b: 169 },\n darkgreen: { r: 0, g: 100, b: 0 },\n darkgrey: { r: 169, g: 169, b: 169 },\n darkkhaki: { r: 189, g: 183, b: 107 },\n darkmagenta: { r: 139, g: 0, b: 139 },\n darkolivegreen: { r: 85, g: 107, b: 47 },\n darkorange: { r: 255, g: 140, b: 0 },\n darkorchid: { r: 153, g: 50, b: 204 },\n darkred: { r: 139, g: 0, b: 0 },\n darksalmon: { r: 233, g: 150, b: 122 },\n darkseagreen: { r: 143, g: 188, b: 143 },\n darkslateblue: { r: 72, g: 61, b: 139 },\n darkslategray: { r: 47, g: 79, b: 79 },\n darkslategrey: { r: 47, g: 79, b: 79 },\n darkturquoise: { r: 0, g: 206, b: 209 },\n darkviolet: { r: 148, g: 0, b: 211 },\n deeppink: { r: 255, g: 20, b: 147 },\n deepskyblue: { r: 0, g: 191, b: 255 },\n dimgray: { r: 105, g: 105, b: 105 },\n dimgrey: { r: 105, g: 105, b: 105 },\n dodgerblue: { r: 30, g: 144, b: 255 },\n firebrick: { r: 178, g: 34, b: 34 },\n floralwhite: { r: 255, g: 250, b: 240 },\n forestgreen: { r: 34, g: 139, b: 34 },\n fuchsia: { r: 255, g: 0, b: 255 },\n gainsboro: { r: 220, g: 220, b: 220 },\n ghostwhite: { r: 248, g: 248, b: 255 },\n gold: { r: 255, g: 215, b: 0 },\n goldenrod: { r: 218, g: 165, b: 32 },\n gray: { r: 128, g: 128, b: 128 },\n green: { r: 0, g: 128, b: 0 },\n greenyellow: { r: 173, g: 255, b: 47 },\n grey: { r: 128, g: 128, b: 128 },\n honeydew: { r: 240, g: 255, b: 240 },\n hotpink: { r: 255, g: 105, b: 180 },\n indianred: { r: 205, g: 92, b: 92 },\n indigo: { r: 75, g: 0, b: 130 },\n ivory: { r: 255, g: 255, b: 240 },\n khaki: { r: 240, g: 230, b: 140 },\n lavender: { r: 230, g: 230, b: 250 },\n lavenderblush: { r: 255, g: 240, b: 245 },\n lawngreen: { r: 124, g: 252, b: 0 },\n lemonchiffon: { r: 255, g: 250, b: 205 },\n lightblue: { r: 173, g: 216, b: 230 },\n lightcoral: { r: 240, g: 128, b: 128 },\n lightcyan: { r: 224, g: 255, b: 255 },\n lightgoldenrodyellow: { r: 250, g: 250, b: 210 },\n lightgray: { r: 211, g: 211, b: 211 },\n lightgreen: { r: 144, g: 238, b: 144 },\n lightgrey: { r: 211, g: 211, b: 211 },\n lightpink: { r: 255, g: 182, b: 193 },\n lightsalmon: { r: 255, g: 160, b: 122 },\n lightseagreen: { r: 32, g: 178, b: 170 },\n lightskyblue: { r: 135, g: 206, b: 250 },\n lightslategray: { r: 119, g: 136, b: 153 },\n lightslategrey: { r: 119, g: 136, b: 153 },\n lightsteelblue: { r: 176, g: 196, b: 222 },\n lightyellow: { r: 255, g: 255, b: 224 },\n lime: { r: 0, g: 255, b: 0 },\n limegreen: { r: 50, g: 205, b: 50 },\n linen: { r: 250, g: 240, b: 230 },\n magenta: { r: 255, g: 0, b: 255 },\n maroon: { r: 128, g: 0, b: 0 },\n mediumaquamarine: { r: 102, g: 205, b: 170 },\n mediumblue: { r: 0, g: 0, b: 205 },\n mediumorchid: { r: 186, g: 85, b: 211 },\n mediumpurple: { r: 147, g: 112, b: 219 },\n mediumseagreen: { r: 60, g: 179, b: 113 },\n mediumslateblue: { r: 123, g: 104, b: 238 },\n mediumspringgreen: { r: 0, g: 250, b: 154 },\n mediumturquoise: { r: 72, g: 209, b: 204 },\n mediumvioletred: { r: 199, g: 21, b: 133 },\n midnightblue: { r: 25, g: 25, b: 112 },\n mintcream: { r: 245, g: 255, b: 250 },\n mistyrose: { r: 255, g: 228, b: 225 },\n moccasin: { r: 255, g: 228, b: 181 },\n navajowhite: { r: 255, g: 222, b: 173 },\n navy: { r: 0, g: 0, b: 128 },\n oldlace: { r: 253, g: 245, b: 230 },\n olive: { r: 128, g: 128, b: 0 },\n olivedrab: { r: 107, g: 142, b: 35 },\n orange: { r: 255, g: 165, b: 0 },\n orangered: { r: 255, g: 69, b: 0 },\n orchid: { r: 218, g: 112, b: 214 },\n palegoldenrod: { r: 238, g: 232, b: 170 },\n palegreen: { r: 152, g: 251, b: 152 },\n paleturquoise: { r: 175, g: 238, b: 238 },\n palevioletred: { r: 219, g: 112, b: 147 },\n papayawhip: { r: 255, g: 239, b: 213 },\n peachpuff: { r: 255, g: 218, b: 185 },\n peru: { r: 205, g: 133, b: 63 },\n pink: { r: 255, g: 192, b: 203 },\n plum: { r: 221, g: 160, b: 221 },\n powderblue: { r: 176, g: 224, b: 230 },\n purple: { r: 128, g: 0, b: 128 },\n red: { r: 255, g: 0, b: 0 },\n rosybrown: { r: 188, g: 143, b: 143 },\n royalblue: { r: 65, g: 105, b: 225 },\n saddlebrown: { r: 139, g: 69, b: 19 },\n salmon: { r: 250, g: 128, b: 114 },\n sandybrown: { r: 244, g: 164, b: 96 },\n seagreen: { r: 46, g: 139, b: 87 },\n seashell: { r: 255, g: 245, b: 238 },\n sienna: { r: 160, g: 82, b: 45 },\n silver: { r: 192, g: 192, b: 192 },\n skyblue: { r: 135, g: 206, b: 235 },\n slateblue: { r: 106, g: 90, b: 205 },\n slategray: { r: 112, g: 128, b: 144 },\n slategrey: { r: 112, g: 128, b: 144 },\n snow: { r: 255, g: 250, b: 250 },\n springgreen: { r: 0, g: 255, b: 127 },\n steelblue: { r: 70, g: 130, b: 180 },\n tan: { r: 210, g: 180, b: 140 },\n teal: { r: 0, g: 128, b: 128 },\n thistle: { r: 216, g: 191, b: 216 },\n tomato: { r: 255, g: 99, b: 71 },\n transparent: {\n r: 255,\n g: 255,\n b: 255,\n a: 0,\n },\n turquoise: { r: 64, g: 224, b: 208 },\n violet: { r: 238, g: 130, b: 238 },\n wheat: { r: 245, g: 222, b: 179 },\n white: { r: 255, g: 255, b: 255 },\n whitesmoke: { r: 245, g: 245, b: 245 },\n yellow: { r: 255, g: 255, b: 0 },\n yellowgreen: { r: 154, g: 205, b: 50 },\n};\n\nexport default colorStruct;\n","/* eslint-disable camelcase */\n/* eslint-disable no-bitwise */\n/* eslint-disable no-nested-ternary */\n/* eslint-disable no-cond-assign */\n/* eslint-disable prefer-rest-params */\n\n/**\n * Module which defines a color object\n * @exports objects.views/charts/representation/color\n * @expose module:objects.views/charts/representation/color~Color\n */\nimport Class from './class';\nimport CSSColors from './css-colors';\n\n// color formats\nconst rgb = /^rgb\\((\\d{1,3}),(\\d{1,3}),(\\d{1,3})\\)$/i;\n\nconst rgba = /^rgba\\((\\d{1,3}),(\\d{1,3}),(\\d{1,3}),(\\d(\\.\\d+)?)\\)$/i;\nconst hex = /^#([A-f0-9]{2})([A-f0-9]{2})([A-f0-9]{2})$/i;\nconst hexShort = /^#([A-f0-9])([A-f0-9])([A-f0-9])$/i;\nconst hsl = /^hsl\\(\\s*(\\d+(\\.\\d+)?)\\s*,\\s*(\\d+(\\.\\d+)?%?)\\s*,\\s*(\\d+(\\.\\d+)?%?)\\s*\\)$/i;\nconst hsla = /^hsla\\(\\s*(\\d+(\\.\\d+)?)\\s*,\\s*(\\d+(\\.\\d+)?%?)\\s*,\\s*(\\d+(\\.\\d+)?%?)\\s*,(\\d(\\.\\d+)?)\\)$/i;\nconst floor = Math.floor;\nconst round = Math.round;\n\n/**\n * @class\n * @classdesc Class which provides color transformation functionality\n * @description This is a constructor.\n * @param {object} - Parameters to create a color from different notations\n * @example\n * // a few ways of instantiating a red color\n * var red;\n * red = new Color(255, 0, 0, 1); // rgba as parameters\n * red = new Color('#ff0000'); // hex\n * red = new Color('rgb(255,0,0)');//rgb as string\n * red = new Color('hsl(0, 100, 50)');// hsl as string\n * red = new Color(16711680);// uint\n */\nconst Color = Class.extend(\n /** @lends module:objects.views/charts/representation/color~Color# */ {\n init() {\n let r = 0;\n let g = 0;\n let b = 0;\n let a = 1;\n let h;\n let s;\n let lcs;\n let l;\n let v;\n let c;\n let h_;\n let x;\n let rgb_;\n let m;\n let matches;\n let colorString;\n\n this._invalid = false;\n\n if (arguments[0] instanceof Color) {\n r = arguments[0]._r;\n g = arguments[0]._g;\n b = arguments[0]._b;\n a = arguments[0]._a;\n this._invalid = arguments[0]._invalid;\n } else if (arguments.length < 3) {\n if (typeof arguments[0] === 'string') {\n colorString = arguments[0];\n\n if ((matches = /^rgb\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*\\)$/i.exec(colorString))) {\n r = parseInt(matches[1], 10);\n g = parseInt(matches[2], 10);\n b = parseInt(matches[3], 10);\n } else if (\n (matches = /^rgba\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d(\\.\\d+)?)\\s*\\)$/i.exec(\n colorString\n ))\n ) {\n // rgba(1, 2, 3, 0.4)\n r = parseInt(matches[1], 10);\n g = parseInt(matches[2], 10);\n b = parseInt(matches[3], 10);\n a = parseFloat(matches[4]);\n } else if ((matches = /^#([A-f0-9]{2})([A-f0-9]{2})([A-f0-9]{2})$/i.exec(colorString))) {\n // #aBc123\n r = parseInt(matches[1], 16);\n g = parseInt(matches[2], 16);\n b = parseInt(matches[3], 16);\n a = 1;\n } else if ((matches = /^#([A-f0-9])([A-f0-9])([A-f0-9])$/i.exec(colorString))) {\n // #a5F\n r = parseInt(matches[1] + matches[1], 16);\n g = parseInt(matches[2] + matches[2], 16);\n b = parseInt(matches[3] + matches[3], 16);\n a = 1;\n } else if (\n (matches = /^hsl\\(\\s*(\\d+(\\.\\d+)?)\\s*,\\s*(\\d+(\\.\\d+)?%?)\\s*,\\s*(\\d+(\\.\\d+)?%?)\\s*\\)$/i.exec(colorString))\n ) {\n // hsl(1, 2, 3)\n h = parseFloat(matches[1]);\n s = parseFloat(matches[3]);\n l = parseFloat(matches[5]);\n\n h %= 360;\n s /= 100;\n l /= 100;\n\n h = h < 0 ? 0 : h > 360 ? 360 : h;\n s = s < 0 ? 0 : s > 1 ? 1 : s;\n l = l < 0 ? 0 : l > 1 ? 1 : l;\n\n c = l <= 0.5 ? 2 * l * s : (2 - 2 * l) * s;\n h_ = h / 60;\n x = c * (1 - Math.abs((h_ % 2) - 1));\n\n rgb_ = [];\n\n h_ = Math.floor(h_);\n switch (h_) {\n case 0:\n rgb_ = [c, x, 0];\n break;\n case 1:\n rgb_ = [x, c, 0];\n break;\n case 2:\n rgb_ = [0, c, x];\n break;\n case 3:\n rgb_ = [0, x, c];\n break;\n case 4:\n rgb_ = [x, 0, c];\n break;\n case 5:\n rgb_ = [c, 0, x];\n break;\n default:\n rgb_ = [0, 0, 0];\n }\n\n m = l - 0.5 * c;\n\n r = rgb_[0] + m;\n g = rgb_[1] + m;\n b = rgb_[2] + m;\n\n r = round(255 * r);\n g = round(255 * g);\n b = round(255 * b);\n a = 1.0;\n } else if (\n (matches = /^hsla\\(\\s*(\\d+(\\.\\d+)?)\\s*,\\s*(\\d+(\\.\\d+)?%?)\\s*,\\s*(\\d+(\\.\\d+)?%?)\\s*,(\\d(\\.\\d+)?)\\)$/i.exec(\n colorString\n ))\n ) {\n // hsla(1,2,3,0.4)\n h = parseFloat(matches[1]);\n s = parseFloat(matches[3]);\n l = parseFloat(matches[5]);\n a = parseFloat(matches[7]);\n\n h %= 360;\n s /= 100;\n l /= 100;\n\n h = h < 0 ? 0 : h > 360 ? 360 : h;\n s = s < 0 ? 0 : s > 1 ? 1 : s;\n l = l < 0 ? 0 : l > 1 ? 1 : l;\n\n c = l <= 0.5 ? 2 * l * s : (2 - 2 * l) * s;\n h_ = h / 60;\n x = c * (1 - Math.abs((h_ % 2) - 1));\n\n rgb_ = [];\n\n h_ = Math.floor(h_);\n switch (h_) {\n case 0:\n rgb_ = [c, x, 0];\n break;\n case 1:\n rgb_ = [x, c, 0];\n break;\n case 2:\n rgb_ = [0, c, x];\n break;\n case 3:\n rgb_ = [0, x, c];\n break;\n case 4:\n rgb_ = [x, 0, c];\n break;\n case 5:\n rgb_ = [c, 0, x];\n break;\n default:\n rgb_ = [0, 0, 0];\n }\n\n m = l - 0.5 * c;\n\n r = rgb_[0] + m;\n g = rgb_[1] + m;\n b = rgb_[2] + m;\n\n r = round(255 * r);\n g = round(255 * g);\n b = round(255 * b);\n } else if (\n (matches = /^hsv\\(\\s*(\\d+(\\.\\d+)?)\\s*,\\s*(\\d+(\\.\\d+)?%?)\\s*,\\s*(\\d+(\\.\\d+)?%?)\\s*\\)$/i.exec(colorString))\n ) {\n // hsv(1, 2, 3) {\n h = parseFloat(matches[1]);\n s = parseFloat(matches[3]);\n v = parseFloat(matches[5]);\n\n h %= 360;\n s /= 100;\n v /= 100;\n\n h = h < 0 ? 0 : h > 360 ? 360 : h;\n s = s < 0 ? 0 : s > 1 ? 1 : s;\n v = v < 0 ? 0 : v > 1 ? 1 : v;\n\n c = v * s;\n h_ = h / 60;\n x = c * (1 - Math.abs((h_ % 2) - 1));\n\n rgb_ = [];\n\n h_ = Math.floor(h_);\n switch (h_) {\n case 0:\n rgb_ = [c, x, 0];\n break;\n case 1:\n rgb_ = [x, c, 0];\n break;\n case 2:\n rgb_ = [0, c, x];\n break;\n case 3:\n rgb_ = [0, x, c];\n break;\n case 4:\n rgb_ = [x, 0, c];\n break;\n case 5:\n rgb_ = [c, 0, x];\n break;\n default:\n rgb_ = [0, 0, 0];\n }\n\n m = v - c;\n\n r = rgb_[0] + m;\n g = rgb_[1] + m;\n b = rgb_[2] + m;\n\n r = round(255 * r);\n g = round(255 * g);\n b = round(255 * b);\n a = 1.0;\n } else if (CSSColors[colorString.toLowerCase()]) {\n lcs = colorString.toLowerCase();\n r = CSSColors[lcs].r;\n g = CSSColors[lcs].g;\n b = CSSColors[lcs].b;\n a = typeof CSSColors[lcs].a === 'number' ? CSSColors[lcs].a : 1.0;\n } else {\n this._invalid = true;\n }\n } else if (typeof arguments[0] === 'number' && arguments[0] >= 0 && arguments[1] === 'argb') {\n a = (0xff000000 & arguments[0]) >>> 24;\n a /= 255;\n r = (0xff0000 & arguments[0]) >> 16;\n g = (0x00ff00 & arguments[0]) >> 8;\n b = 0x0000ff & arguments[0];\n } else if (typeof arguments[0] === 'number' && arguments[0] >= 0) {\n r = (0xff0000 & arguments[0]) >> 16;\n g = (0x00ff00 & arguments[0]) >> 8;\n b = 0x0000ff & arguments[0];\n } else {\n this._invalid = true;\n }\n } else if (arguments.length >= 3) {\n r = arguments[0];\n g = arguments[1];\n b = arguments[2];\n a = arguments.length >= 4 ? arguments[3] : 1;\n } else {\n this._invalid = true;\n }\n\n if (Number.isNaN(+r + g + b + a)) {\n this._invalid = true;\n }\n\n this._r = floor(r);\n this._g = floor(g);\n this._b = floor(b);\n this._a = a;\n\n // object to cache string representations in various color spaces\n this._spaces = {};\n },\n isInvalid() {\n return this._invalid;\n },\n /**\n * Sets alpha value of color\n * @param {number} a - Alpha value of the color\n */\n setAlpha(a) {\n this._a = a;\n this._spaces = {};\n },\n /**\n * Gets the alpha value of this color\n * @returns {number}\n */\n getAlpha() {\n return this._a;\n },\n /**\n * Returns an rgb string representation of this color.\n * @return {string} An rgb string representation of this color\n */\n toRGB: function toRGB() {\n if (!this._spaces.rgb) {\n this._spaces.rgb = Color.toRGB(this);\n }\n return this._spaces.rgb;\n },\n /**\n * Returns an rgba string representation of this color.\n * @return {string} An rgba string representation of this color.\n */\n toRGBA: function toRGBA() {\n if (!this._spaces.rgba) {\n this._spaces.rgba = Color.toRGBA(this);\n }\n return this._spaces.rgba;\n },\n toString() {\n if (!this._spaces.rgb) {\n this._spaces.rgb = Color.toRGB(this);\n }\n return this._spaces.rgb;\n },\n /**\n * Returns a hex string representation of this color.\n * @return {string}\n */\n toHex: function toHex() {\n if (!this._spaces.hex) {\n this._spaces.hex = Color.toHex(this);\n }\n return this._spaces.hex;\n },\n /**\n * Returns a hsl string representation of this color using \"bi-hexcone\" model for lightness\n * @param {boolean} luma - Whether to use luma calculation\n * @return {string} In format hsl(0,0,0)\n */\n toHSL: function toHSL(luma) {\n if (!this._spaces.hsl) {\n this._spaces.hsl = Color.toHSL(this, luma);\n }\n return this._spaces.hsl;\n },\n /**\n * Returns a hsla string representation of this color using \"bi-hexcone\" model for lightness\n * @param {boolean} luma - Whether to use luma calculation\n * @return {string} In format hsla(0,0,0,0)\n */\n toHSLA: function toHSLA(luma) {\n if (!this._spaces.hsla) {\n this._spaces.hsla = Color.toHSLA(this, luma);\n }\n return this._spaces.hsla;\n },\n /**\n * Return the color components in hsv space using \"hexcone\" model for value (lightness)\n * @param {Color|string} c\n * @returns {object} The color components in hsv space {h:0-360, s:0-100, v:0-100}\n */\n toHSV() {\n const hsvComp = this.toHSVComponents();\n return `hsv(${hsvComp.h},${hsvComp.s},${hsvComp.v})`;\n },\n /**\n * Return the color components in hsv space using \"hexcone\" model for value (lightness)\n * @param {Color|string} c\n * @returns {object} The color components in hsv space {h:0-360, s:0-100, v:0-100}\n */\n toHSVComponents: function toHSVComponents() {\n if (!this._spaces.hsvComp) {\n this._spaces.hsvComp = Color.toHSVComponents(this);\n }\n return this._spaces.hsvComp;\n },\n /**\n * Returns a uint representation of this color\n * @return {number}\n */\n toNumber: function toNumber() {\n if (!this._spaces.num) {\n this._spaces.num = Color.toNumber(this);\n }\n return this._spaces.num;\n },\n /**\n * Checks if this color is perceived as dark.\n * @return {string} True if the luminance is below 160, false otherwise.\n */\n isDark() {\n return this.isInvalid() || this.getLuminance() < 125; // luminace calc option #2\n // return this.getLuminance() < 160; //luminace calc option #3\n },\n /**\n * Calculates the perceived luminance of the color.\n * @return {number} A value in the range 0-255 where a low value is considered dark and vice versa.\n */\n getLuminance() {\n // alpha channel is not considered\n if (typeof this._lumi === 'undefined') {\n // calculate luminance\n // this._lumi = 0.2126 * this._r + 0.7152 * this._g + 0.0722 * this._b; // option 1\n this._lumi = 0.299 * this._r + 0.587 * this._g + 0.114 * this._b; // option 2\n // this._lumi = Math.sqrt( 0.241 * this._r * this._r + 0.691 * this._g * this._g + 0.068 * this._b * this._b ); // option 3\n }\n\n return this._lumi;\n },\n /**\n * Shifts the color towards a lighter or darker shade\n * @param {number} value - A value in the range -100-100 to shift the color with along the HSL lightness.\n * @return {string} The shifted color as hsla string.\n */\n shiftLuminance(value) {\n const chsla = this.toHSLA();\n const matches = /^hsla\\(\\s*(\\d+(\\.\\d+)?)\\s*,\\s*(\\d+(\\.\\d+)?%?)\\s*,\\s*(\\d+(\\.\\d+)?%?)\\s*,(\\d(\\.\\d+)?)\\)$/i.exec(\n chsla\n );\n\n const h = parseFloat(matches[1]);\n const s = parseFloat(matches[3]);\n let l = parseFloat(matches[5]);\n const a = parseFloat(matches[7]);\n // l *= 1 + value / 100;\n // l = Math.max( 0, l % 100 );\n l += value;\n l = Math.max(0, Math.min(l, 100));\n\n // if( value > 0 ){\n // s = s*0.2; //removing saturation to avoid the border from being too light\n // }\n\n return `hsla(${h},${s},${l},${a})`;\n },\n /**\n * Compares two colors.\n * @param {Color} c The color to compare with.\n * @return {boolean} True if the rgb channels are the same, false otherwise\n */\n isEqual(c) {\n if (c instanceof Color) {\n return this._r === c._r && this._g === c._g && this._b === c._b;\n }\n\n c = new Color(c);\n return this._r === c._r && this._g === c._g && this._b === c._b;\n },\n /**\n * Linearly interpolates each channel of two colors.\n * @param {Color} c2 The other color.\n * @param {number} t The interpolation value in the range (0-1).\n * @return {string} The blend as an rgb string.\n */\n blend(c2, t) {\n const r = floor(this._r + (c2._r - this._r) * t);\n const g = floor(this._g + (c2._g - this._g) * t);\n const b = floor(this._b + (c2._b - this._b) * t);\n const a = floor(this._a + (c2._a - this._a) * t);\n\n return `rgba(${[r, g, b, a].join(',')})`;\n },\n\n createShiftedColor(v) {\n if (v === undefined || Number.isNaN(+v)) {\n v = 1;\n }\n const lumi = this.getLuminance();\n const greenMultiplier = this._g < 126 ? 1 : 1 + this._g / 512;\n const hsla_string = this.shiftLuminance(\n (lumi * greenMultiplier < 220 ? 0.8 + 4 * (1 / (lumi + 1)) : -(0.8 + 1 * (lumi / 255))) * 20 * v\n );\n\n return new Color(hsla_string);\n },\n }\n);\n\n/**\n * Returns an rgb string representation of this color\n * @param {Color|string} c\n * @returns {string} An rgb string with channel values within range 0-255.\n */\nColor.toRGB = function toRGB(c) {\n if (c instanceof Color) {\n return `rgb(${[c._r, c._g, c._b].join(',')})`;\n }\n\n if (typeof c === 'string') {\n c = Color.toNumber(c);\n }\n\n const r = (c & 0xff0000) >> 16;\n const g = (c & 0x00ff00) >> 8;\n const b = c & 0x0000ff;\n\n return `rgb(${r},${g},${b})`;\n};\n/**\n *\n * @param c\n * @param a\n * @returns {string} The color rgb format.\n */\nColor.toRGBA = function toRGB(c, a) {\n if (c instanceof Color) {\n return `rgba(${[c._r, c._g, c._b, typeof a !== 'undefined' ? a : c._a].join(',')})`;\n }\n\n if (typeof c === 'string') {\n c = Color.toNumber(c);\n }\n\n const r = (c & 0xff0000) >> 16;\n const g = (c & 0x00ff00) >> 8;\n const b = c & 0x0000ff;\n\n return `rgba(${r},${g},${b},${typeof a !== 'undefined' ? a : c._a})`;\n};\n/**\n *\n * @param {Color|string} c\n * @returns {string} The color in hexadecimal space.\n */\nColor.toHex = function toHex(c) {\n let r;\n let g;\n let b;\n if (c instanceof Color) {\n r = c._r.toString(16);\n g = c._g.toString(16);\n b = c._b.toString(16);\n if (r.length === 1) {\n r = `0${r}`;\n }\n if (g.length === 1) {\n g = `0${g}`;\n }\n if (b.length === 1) {\n b = `0${b}`;\n }\n return `#${[r, g, b].join('')}`;\n }\n\n if (typeof c === 'string') {\n c = Color.toNumber(c);\n }\n\n r = ((c & 0xff0000) >> 16).toString(16);\n g = ((c & 0x00ff00) >> 8).toString(16);\n b = (c & 0x0000ff).toString(16);\n\n if (r.length === 1) {\n r = `0${r}`;\n }\n if (g.length === 1) {\n g = `0${g}`;\n }\n if (b.length === 1) {\n b = `0${b}`;\n }\n\n return `#${r}${g}${b}`;\n};\n/**\n * Return the color in hsl space using \"bi-hexcone\" model for lightness\n * @param {Color|string} c\n * @param {boolean} luma - Whether to use luma calculation\n * @returns {string} The color in hsl space.\n */\nColor.toHSL = function (c, luma) {\n let h = 0;\n let s;\n let l;\n let ch;\n if (typeof c === 'string') {\n c = new Color(c);\n }\n\n // red, green, blue, hue, saturation, lightness/luma, max, min, chroma\n const r = c._r / 255;\n const g = c._g / 255;\n const b = c._b / 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n if (luma) {\n // Y'709 http://en.wikipedia.org/wiki/Rec._709\n // Y′709 = 0.21R + 0.72G + 0.07B\n l = 0.21 * r + 0.72 * g + 0.07 * b;\n } else {\n l = (max + min) / 2;\n }\n\n if (max === min) {\n // greyscale\n s = 0;\n h = 0;\n } else {\n ch = max - min;\n s = l > 0.5 ? ch / (2 - max - min) : ch / (max + min);\n switch (max) {\n case r:\n h = (g - b) / ch + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / ch + 2;\n break;\n case b:\n h = (r - g) / ch + 4;\n break;\n default:\n break;\n }\n h /= 6;\n }\n\n return `hsl(${h * 360},${s * 100},${l * 100})`;\n};\n/**\n * Return the color in hsla space using \"bi-hexcone\" model for lightness\n * @param {Color|string} c\n * @param {boolean} luma - Whether to use luma calculation\n * @returns {string} The color in hsla space.\n */\nColor.toHSLA = function (c, luma) {\n let h = 0;\n let s;\n let l;\n let ch;\n if (typeof c === 'string') {\n c = new Color(c);\n }\n\n // red, green, blue, hue, saturation, lightness/luma, max, min, chroma\n const r = c._r / 255;\n const g = c._g / 255;\n const b = c._b / 255;\n const a = c._a;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n if (luma) {\n // Y'709 http://en.wikipedia.org/wiki/Rec._709\n // Y′709 = 0.21R + 0.72G + 0.07B\n l = 0.21 * r + 0.72 * g + 0.07 * b;\n } else {\n l = (max + min) / 2;\n }\n\n if (max === min) {\n // greyscale\n s = 0;\n h = 0;\n } else {\n ch = max - min;\n s = l > 0.5 ? ch / (2 - max - min) : ch / (max + min);\n switch (max) {\n case r:\n h = (g - b) / ch + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / ch + 2;\n break;\n case b:\n h = (r - g) / ch + 4;\n break;\n default:\n break;\n }\n h /= 6;\n }\n\n return `hsla(${h * 360},${s * 100},${l * 100},${a})`;\n};\n/**\n * Return the color components in hsv space using \"hexcone\" model for value (lightness)\n * @param {Color|string} c\n * @returns {object} The color components in hsv space {h:0-360, s:0-100, v:0-100}\n */\nColor.toHSVComponents = function (c) {\n let h = 0;\n let s;\n let ch;\n if (typeof c === 'string') {\n c = new Color(c);\n }\n\n // red, green, blue, hue, saturation, value/luma, max, min, chroma\n const r = c._r / 255;\n const g = c._g / 255;\n const b = c._b / 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n\n const v = max;\n\n if (max === min) {\n // greyscale\n s = 0;\n h = 0;\n } else {\n ch = max - min;\n s = ch === 0 ? 0 : ch / v;\n switch (max) {\n case r:\n h = (g - b) / ch + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / ch + 2;\n break;\n case b:\n h = (r - g) / ch + 4;\n break;\n default:\n break;\n }\n h /= 6;\n }\n\n return { h: (h * 360) % 360, s: s * 100, v: v * 100 };\n};\n/**\n * Returns an number representation of the color\n * @param {Color|string} c\n * @returns {Number} Unsigned integer in the range 0-16 777 216\n */\nColor.toNumber = function toNumber() {\n if (arguments.length === 1 && arguments[0] instanceof Color) {\n return (arguments[0]._r << 16) + (arguments[0]._g << 8) + arguments[0]._b;\n }\n\n let r = 0;\n let g = 0;\n let b = 0;\n let matches;\n let colorString;\n\n if (arguments.length === 1) {\n if (typeof arguments[0] === 'string') {\n colorString = arguments[0];\n\n if ((matches = /^rgb\\((\\d{1,3}),(\\d{1,3}),(\\d{1,3})\\)$/i.exec(colorString))) {\n r = parseInt(matches[1], 10);\n g = parseInt(matches[2], 10);\n b = parseInt(matches[3], 10);\n } else if ((matches = /^#([A-f0-9]{2})([A-f0-9]{2})([A-f0-9]{2})$/i.exec(colorString))) {\n r = parseInt(matches[1], 16);\n g = parseInt(matches[2], 16);\n b = parseInt(matches[3], 16);\n } else if ((matches = /^#([A-f0-9])([A-f0-9])([A-f0-9])$/i.exec(colorString))) {\n r = parseInt(matches[1] + matches[1], 16);\n g = parseInt(matches[2] + matches[2], 16);\n b = parseInt(matches[3] + matches[3], 16);\n }\n }\n }\n return (r << 16) + (g << 8) + b;\n};\nColor.blend = function blend(c1, c2, t) {\n c1 = Color.toNumber(c1);\n c2 = Color.toNumber(c2);\n\n const r1 = (c1 & 0xff0000) >> 16;\n const g1 = (c1 & 0x00ff00) >> 8;\n const b1 = c1 & 0x0000ff;\n const r2 = (c2 & 0xff0000) >> 16;\n const g2 = (c2 & 0x00ff00) >> 8;\n const b2 = c2 & 0x0000ff;\n const r = r1 + (r2 - r1) * t;\n const g = g1 + (g2 - g1) * t;\n const b = b1 + (b2 - b1) * t;\n\n return (r << 16) + (g << 8) + b;\n};\nColor.getBlend = function getBlend(c1, c2, t) {\n const r = c1._r + (c2._r - c1._r) * t;\n const g = c1._g + (c2._g - c1._g) * t;\n const b = c1._b + (c2._b - c1._b) * t;\n const a = c1._a + (c2._a - c1._a) * t;\n\n return new Color(r, g, b, a);\n};\nColor.isCSSColor = function (color) {\n if (arguments.length > 1 || typeof color !== 'string') {\n return false;\n }\n return (\n rgb.test(color) ||\n rgba.test(color) ||\n hex.test(color) ||\n hexShort.test(color) ||\n hsl.test(color) ||\n hsla.test(color) ||\n CSSColors[color.toLowerCase()]\n );\n};\n\nColor.getBestContrast = function (color, cl, cd) {\n const lum = color.getLuminance();\n return Math.abs(lum - cl.getLuminance()) > Math.abs(lum - cd.getLuminance()) ? cl : cd;\n};\n\nColor.getContrast = function (color1, color2) {\n if (!color1 || !color2) {\n return undefined;\n }\n\n const l1 = color1.getLuminance() / 100;\n const l2 = color2.getLuminance() / 100;\n\n if (l1 > l2) {\n return (l1 + 0.05) / (l2 + 0.05);\n }\n\n return (l2 + 0.05) / (l1 + 0.05);\n};\n\nColor.isDark = function () {\n const o = {\n getLuminance: Color.prototype.getLuminance,\n isInvalid: Color.prototype.isInvalid,\n };\n Color.prototype.init.apply(o, [].slice.call(arguments));\n return Color.prototype.isDark.call(o);\n};\n\nColor.useDarkLabel = function (areaColor, bgIsDark) {\n return areaColor._a > 0.5 ? !areaColor.isDark() : !bgIsDark;\n};\n\nexport default Color;\n","import Color from './color';\n\nconst chartUtils = {\n TRANSPARENT_BLACK: 'rgba( 0,0,0,0.2 )',\n TRANSPARENT_WHITE: 'rgba( 255,255,255,0.7 )',\n LIGHT_GREY: '#ccc',\n DARK_GREY: '#666',\n BLACK: '#000',\n WHITE: '#fff',\n\n getInverse(color) {\n const colorObj = new Color(color);\n const alpha = colorObj.getAlpha();\n\n if (alpha === 0) {\n return this.BLACK;\n }\n return colorObj.isDark() ? this.WHITE : this.BLACK;\n },\n\n getContrastingGrey(color) {\n const colorObj = new Color(color);\n const alpha = colorObj.getAlpha();\n\n if (alpha === 0) {\n return this.DARK_GREY;\n }\n return Color.getBestContrast(colorObj, new Color(chartUtils.LIGHT_GREY), new Color(chartUtils.DARK_GREY));\n },\n\n getBestContrast(color, color1, color2) {\n return Color.getBestContrast(new Color(color), new Color(color1), new Color(color2));\n },\n\n getContrastingTransparent(color) {\n const colorObj = new Color(color);\n const alpha = colorObj.getAlpha();\n\n if (alpha === 0 || color === 'none') {\n return this.TRANSPARENT_BLACK;\n }\n return colorObj.isDark() ? this.TRANSPARENT_WHITE : this.TRANSPARENT_BLACK;\n },\n};\n\nexport default chartUtils;\n","import { getValue } from 'qlik-chart-modules';\n\nfunction hasSecondDimension(layout, rootPath) {\n rootPath = rootPath ? `${rootPath}.` : '';\n return getValue(layout, `${rootPath}qHyperCube.qDimensionInfo.length`) > 1;\n}\n\nfunction hasSecondMeasure(layout, rootPath) {\n rootPath = rootPath ? `${rootPath}.` : '';\n return getValue(layout, `${rootPath}qHyperCube.qMeasureInfo.length`) > 1;\n}\n\nfunction getOuterDimensionSizeOfMax2Dims(layout, rootPath) {\n if (!hasSecondDimension(layout, rootPath)) {\n return 1;\n }\n return getStackedCubeSizeOf2Dims(layout, rootPath);\n}\n\nfunction getStackedCubeSizeOf1Dim(layout, rootPath) {\n rootPath = rootPath ? `${rootPath}.` : '';\n return getValue(layout, `${rootPath}qHyperCube.qSize.qcy`);\n}\n\nfunction getStackedCubeSizeOf2Dims(layout, rootPath) {\n rootPath = rootPath ? `${rootPath}.` : '';\n if (getValue(layout, `${rootPath}qHyperCube.qStackedDataPages.0.qData.length`)) {\n return (\n getValue(layout, `${rootPath}qHyperCube.qStackedDataPages.0.qData.0.qSubNodes.length`, 0) +\n getValue(layout, `${rootPath}qHyperCube.qStackedDataPages.0.qData.0.qDown`, 0) +\n getValue(layout, `${rootPath}qHyperCube.qStackedDataPages.0.qData.0.qUp`, 0)\n );\n }\n const index = getValue(layout, `${rootPath}qHyperCube.qEffectiveInterColumnSortOrder.0`);\n const dimInfo = getValue(layout, `${rootPath}qHyperCube.qDimensionInfo.${index}`);\n\n // Use the larger of the two possible values (depending on if the outer dimension contains any null value)\n // can cause some extra cache misses in the hypercube cache, but solves SUI-2065\n return getDimensionSize(dimInfo);\n}\n\nfunction getStackedCubeSizeOfMax2Dims(layout, rootPath) {\n if (!hasSecondDimension(layout, rootPath)) {\n return getStackedCubeSizeOf1Dim(layout, rootPath);\n }\n return getStackedCubeSizeOf2Dims(layout, rootPath);\n}\n\nfunction getHyperCube(layout, path) {\n if (!layout) {\n return null;\n }\n layout = path ? getValue(layout, path) : layout;\n return layout && layout.qHyperCube ? layout.qHyperCube : null;\n}\n\nfunction getDimensionSize(dimInfo) {\n return dimInfo.qCardinalities.qHypercubeCardinal;\n}\n\nexport default {\n getHyperCube,\n hasSecondDimension,\n hasSecondMeasure,\n getStackedCubeSizeOf2Dims,\n getStackedCubeSizeOfMax2Dims,\n getOuterDimensionSizeOfMax2Dims,\n getDimensionSize,\n};\n","/**\n * A tool for jittering positions of data points\n */\nimport hashFromString from '@qlik/common/extra/hash-from-string';\n\nconst JITTER_LEVELS = 10;\n\nconst Jitter = function () {\n this._maxJitter = 1;\n};\n\n/**\n * Sets _maxJitter relative to a given point size or limits to maximum available space specified\n * @param pointSize - Relative to chart rendering area\n * @param jitterParameter - Multiplier controlling how many points wide the jittering is going to be\n * @param availableWidth - Absolute max of jittering (relative to chart rendering area)\n */\nJitter.prototype.calcMaxJitter = function (pointSize, jitterParameter, availableWidth) {\n this._maxJitter = Math.min(pointSize * jitterParameter, availableWidth - pointSize);\n};\n\n/**\n * Calculates a jitter amount based on a number or string (CONSISTENT from time to time)\n * @param value - String or number used as a \"seed\" for calculating jitter amount\n * @returns {number} - fraction of chart rendering area (negative or positive)\n */\nJitter.prototype.getJitterValue = function (value) {\n const fraction = Math.abs(hashFromString(`${value}`) % JITTER_LEVELS) / (JITTER_LEVELS - 1);\n return this._maxJitter / 2 - fraction * this._maxJitter;\n};\n\nexport default Jitter;\n","// Adapt the layout to the new format after SUI-3119\nfunction toAfter(layout) {\n const hyperCube = layout.qUndoExclude.qHyperCube;\n if (hyperCube.qEffectiveInterColumnSortOrder.length === 2 && hyperCube.qEffectiveInterColumnSortOrder[0] === 1) {\n hyperCube.qEffectiveInterColumnSortOrder = [0, 1];\n hyperCube.qDimensionInfo.reverse();\n }\n}\n\n// Adapt the layout to the old format from before SUI-3119\nfunction toBefore(layout) {\n const hyperCube = layout.qUndoExclude.qHyperCube;\n if (hyperCube.qEffectiveInterColumnSortOrder.length === 2 && hyperCube.qEffectiveInterColumnSortOrder[0] === 0) {\n hyperCube.qEffectiveInterColumnSortOrder = [1, 0];\n hyperCube.qDimensionInfo.reverse();\n }\n}\n\nexport default {\n toBefore,\n toAfter,\n};\n","import extend from 'extend';\nimport { getValue } from 'qlik-chart-modules';\nimport AdvancedColorer from '@qlik/common/picasso/advanced-colorer';\nimport HyperCubeDefGenerator from '@qlik/common/picasso/hypercube-def-generator/hypercube-def-generator';\nimport attExpUtil from '@qlik/common/extra/attribute-expression-util';\n// import util from '../../../js/lib/util';\n\nimport distplotUtils from './distributionplot-utils';\nimport distplotSorter from './sorting/distributionplot-sorter';\nimport elementsRetriever from './sorting/distributionplot-sorting-elements-retriever';\n\nfunction generateHyperCube(layout, properties, app, translator) {\n if (!properties.qUndoExclude) {\n properties.qUndoExclude = {};\n }\n\n properties.qUndoExclude.qHyperCubeDef = extend(true, {}, properties.qHyperCubeDef);\n properties.qUndoExclude.qHyperCubeDef.qDimensions.reverse();\n\n AdvancedColorer.updateHypercubeAttributes(properties, 'qUndoExclude.qHyperCubeDef.', properties.color.point);\n\n let qAttributeExpressions = [];\n const numDims = properties.qUndoExclude.qHyperCubeDef.qDimensions.length;\n const colorByExpression =\n properties.color.point && !properties.color.point.auto && properties.color.point.mode === 'byExpression';\n if (numDims > 0 && colorByExpression) {\n const attrExps = attExpUtil.create(attExpUtil.IDMAP.COLOR_BY_EXPRESSION, {\n qExpression: getValue(properties, 'color.point.expression.qValueExpression.qExpr'),\n });\n qAttributeExpressions = [attrExps];\n }\n properties.qUndoExclude.qHyperCubeDef.qMeasures[0].qAttributeExpressions = qAttributeExpressions;\n\n if (distplotUtils.hasMultipleDimensions(properties)) {\n return HyperCubeDefGenerator.getAllHyperCubeExpressions(properties.qHyperCubeDef, layout.qHyperCube, app).then(\n (expressions) => {\n distplotSorter.applySorting(properties, layout, app, expressions, translator);\n\n // Box min max values\n const firstDimString = expressions.dimensions[0];\n\n const secondDimString = expressions.dimensions[1];\n const innerMeasureString = expressions.measures[0];\n const expMax = elementsRetriever.getFractileExpression(1, firstDimString, secondDimString, innerMeasureString);\n const expMin = elementsRetriever.getFractileExpression(0, firstDimString, secondDimString, innerMeasureString);\n const outerDimension = properties.qUndoExclude.qHyperCubeDef.qDimensions[0];\n outerDimension.qAttributeExpressions = [\n { qExpression: expMin, id: 'minBoxValue' },\n { qExpression: expMax, id: 'maxBoxValue' },\n ];\n }\n );\n }\n properties.qUndoExclude.qHyperCubeDef.qInterColumnSortOrder = [1, 0];\n\n return Promise.resolve();\n\n /* eslint-enable no-param-reassign */\n}\n\nexport default {\n generateHyperCube,\n};\n","import extend from 'extend';\nimport { colorService as createColorService } from 'qlik-chart-modules';\n\nconst hasBase = (i) => i.baseColor || (i.coloring && i.coloring.baseColor);\n\nfunction useBaseColors(layout) {\n const { qDimensionInfo, qMeasureInfo } = layout.qUndoExclude.qHyperCube;\n\n const hasDimensionBase = qDimensionInfo.some(hasBase);\n const hasMeasureBase = qMeasureInfo.some(hasBase);\n\n const base = layout.color.point.useBaseColors;\n\n if ((base === 'measure' && !hasMeasureBase) || (base === 'dimension' && !hasDimensionBase)) {\n return 'off';\n }\n\n return base;\n}\n\nfunction switchActiveDimIndex(byDimDef) {\n if (byDimDef?.activeDimensionIndex === 0) {\n byDimDef.activeDimensionIndex = 1;\n } else if (byDimDef?.activeDimensionIndex === 1) {\n byDimDef.activeDimensionIndex = 0;\n }\n}\n\nfunction needMigrateOldSnapshotColorData(layout) {\n if (!layout.snapshotData) {\n return false;\n }\n if (layout.snapshotData.content?.chartData?.legendDataPage) {\n return false;\n }\n if (!layout.qUndoExclude?.legendData) {\n return false;\n }\n return true;\n}\nfunction migrateOldSnapshotColorData(layout) {\n // avoid modifying the existing layout object\n layout = extend({}, layout);\n layout.snapshotData = extend({}, layout.snapshotData);\n layout.snapshotData.content = extend({}, layout.snapshotData.content);\n layout.snapshotData.content.chartData = extend({}, layout.snapshotData.content.chartData);\n\n layout.snapshotData.content.chartData.legendDataPage = layout.qUndoExclude.legendData.qDataPages;\n return layout;\n}\n\nexport default function create({ layout, localeInfo, model, picasso, environment }) {\n const { app, theme, translator } = environment;\n const colorSettings = extend(true, {}, layout.color.point);\n if (layout.qHyperCube.qDimensionInfo.length === 2) {\n switchActiveDimIndex(colorSettings.byDimDef); // compensate for that the distribution plot dimension are in an different order\n }\n if (needMigrateOldSnapshotColorData(layout)) {\n layout = migrateOldSnapshotColorData(layout);\n }\n if (!colorSettings.mode) {\n colorSettings.mode = 'primary';\n }\n\n return createColorService({\n app,\n model,\n picasso,\n translator,\n config: {\n localeInfo,\n theme,\n key: 'color',\n definitionPath: '/qUndoExclude/qHyperCubeDef',\n },\n createConfig: () => ({\n layout,\n hc: layout.qUndoExclude.qHyperCube,\n legendProps: layout.legend,\n colorProps: {\n ...colorSettings,\n useBaseColors: useBaseColors(layout),\n },\n }),\n });\n}\n","import extend from 'extend';\nimport { getValue } from 'qlik-chart-modules';\nimport ChartView from '@qlik/common/picasso/chart-view';\nimport ChartBuilder from '@qlik/common/picasso/chart-builder/chart-builder';\nimport DerivedProperties from '@qlik/common/picasso/derived-properties/derived-properties';\nimport SelectionHandler from '@qlik/common/picasso/selections/selections-handler';\nimport DependentInteractions from '@qlik/common/picasso/selections/dependent-interactions';\nimport TooltipHandler from '@qlik/common/picasso/tooltip/tooltips-handler';\nimport ScrollHandler from '@qlik/common/picasso/scroll/scroll-handler';\n\nimport stringUtil from '@qlik/common/extra/string-util';\nimport chartStyleUtils from '@qlik/common/extra/chart-style-utils';\nimport hypercubeUtil from '@qlik/common/extra/hypercube-util';\n\nimport Jitter from './jitter';\nimport columnOrderAdapter from './distributionplot-column-order-adapter';\nimport CONSTANTS from './distributionplot-constants';\nimport distributionPlotCubeGenerator from './distributionplot-cube-generator';\nimport createColorService from './create-color-service';\n\nconst DATA_PATH = CONSTANTS.DATA_PATH;\nconst HYPERCUBE_PATH = CONSTANTS.HYPERCUBE_PATH;\nconst HYPERCUBE_DEF_PATH = CONSTANTS.HYPERCUBE_DEF_PATH;\n\nfunction getHashData(properties) {\n return {\n cube: properties[HYPERCUBE_DEF_PATH],\n sorting: properties.sorting,\n color: {\n point: properties.color.point,\n },\n };\n}\n\nfunction getSelectionSettingsArray(setting) {\n if (Array.isArray(setting)) {\n return setting;\n }\n return setting ? [setting] : [];\n}\n\nfunction getDataSize(layout) {\n return Math.min(hypercubeUtil.getOuterDimensionSizeOfMax2Dims(layout, DATA_PATH), CONSTANTS.MAX_STACKED_VALUES);\n}\n\nfunction getPicassoScrollSettings(layout, viewSize) {\n return {\n viewSize,\n max: getDataSize(layout),\n };\n}\n\nfunction getMaxGlyphCountForDimAxis(layout) {\n const qDimensionInfo = layout[DATA_PATH][HYPERCUBE_PATH].qDimensionInfo;\n const qApprMaxGlyphCount = hypercubeUtil.hasSecondDimension(layout, DATA_PATH)\n ? qDimensionInfo[0].qApprMaxGlyphCount\n : 0;\n return Math.min(CONSTANTS.MAX_GLYPH_COUNT, qApprMaxGlyphCount);\n}\n\nfunction updateCacheSize() {\n const k = CONSTANTS.MAX_STACKED_VALUES >= this.layout.qUndoExclude.qHyperCube.qSize.qcy ? 3 : 1; // To fix QLIK-87944\n this.backendApi.setCacheOptions({ height: k * this._scrollHandler.getScrollViewSizeInItem(), width: 3 });\n}\n\nfunction updateOnScrollViewChanged() {\n if (this.layout && hypercubeUtil.hasSecondDimension(this.layout, DATA_PATH)) {\n // Only run this if there are 2 dimensions\n this._scrollHandler.onResize();\n const isSnapshot = !!this.layout.snapshotData;\n if (!isSnapshot) {\n updateCacheSize.call(this);\n }\n }\n}\n\n/**\n * Checks whether the dimensions is locked or not\n * @param layout - layout for distributionplot\n * @returns {bool} - true is the dimension is locked, otherwise false\n */\nfunction getLockedDims(layout) {\n const lockedDims = [];\n const dimInfos =\n layout.qUndoExclude && layout.qUndoExclude.qHyperCube && layout.qUndoExclude.qHyperCube.qDimensionInfo\n ? layout.qUndoExclude.qHyperCube.qDimensionInfo\n : undefined;\n if (!dimInfos) {\n return false;\n }\n for (let i = 0; i < dimInfos.length; i++) {\n if (dimInfos[i].qLocked) {\n lockedDims.push(dimInfos[i].qLocked);\n } else {\n lockedDims.push(false);\n }\n }\n return lockedDims;\n}\n\n/**\n * Disables/Enables measure- dimension range selection depending if the field is locked or not.\n * Example:\n * Inner dim locked, outer dim opened -> Dimension range selection available, measure range selection unavailable\n * Inner dim opened, outer dim locked -> Dimension range selection unavailable, measure range selection available\n * @param lockedDims - Array of booleans determining which dimensions are locked or not\n * @returns {object} that gives the status of measure and dimension range selection\n */\nfunction retrieveRangeSelStatus(lockedDims, isInnerDimSingleSelect, isOuterDimSingleSelect) {\n const rangeSelStatus = {};\n\n if (lockedDims.length === 1) {\n // One dim case\n rangeSelStatus.isOpenDim = false;\n\n if (lockedDims[0]) {\n rangeSelStatus.isOpenMea = false;\n } else {\n rangeSelStatus.isOpenMea = true;\n }\n } else if (lockedDims[0] && !lockedDims[1]) {\n rangeSelStatus.isOpenDim = false;\n rangeSelStatus.isOpenMea = true;\n } else if (!lockedDims[0] && lockedDims[1]) {\n rangeSelStatus.isOpenDim = true;\n rangeSelStatus.isOpenMea = false;\n } else if (lockedDims[0] && lockedDims[1]) {\n rangeSelStatus.isOpenDim = false;\n rangeSelStatus.isOpenMea = false;\n } else {\n rangeSelStatus.isOpenDim = true;\n rangeSelStatus.isOpenMea = true;\n }\n\n if (isInnerDimSingleSelect) {\n rangeSelStatus.isOpenMea = false;\n }\n if (isOuterDimSingleSelect) {\n rangeSelStatus.isOpenDim = false;\n }\n return rangeSelStatus;\n}\n\nfunction sliderEnabled(layout) {\n return layout.dataPoint && layout.dataPoint.bubbleScales;\n}\n\nfunction resetCategoricalLegendScroll() {\n const catLegend = this.chartInstance.component('legend');\n if (catLegend && catLegend.emit) {\n catLegend.emit('resetindex');\n }\n}\n\nfunction isSingleSelect(layout, index) {\n return getValue(layout, `qHyperCube.qDimensionInfo.${index}.qIsOneAndOnlyOne`) || false;\n}\n\nconst DistributionPlot = ChartView.extend('DistributionPlot', {\n namespace: '.distributionPlot',\n\n init({ lasso, environment, flags, picasso, $element, backendApi, selectionsApi }) {\n this._super(picasso, $element, environment, backendApi, selectionsApi);\n this.flags = flags;\n this.picasso = picasso;\n\n this.picassoElement.__do_not_use_findShapes = this.chartInstance.findShapes.bind(this.chartInstance); // to allow access to renderered content via DOM\n\n this._derivedProperties = new DerivedProperties();\n\n this._selectionHandler = SelectionHandler.create({\n model: backendApi.model,\n chartInstance: this.chartInstance,\n selectionsApi,\n isLassoDisabled: this.isLassoDisabled.bind(this),\n selectPaths: ['/qUndoExclude/qHyperCubeDef'],\n lasso,\n });\n this._tooltipHandler = TooltipHandler.create(this.chartInstance, $element, CONSTANTS.CHART_ID);\n this._scrollHandler = new ScrollHandler(\n this.chartInstance,\n $element,\n this.getSlicedData.bind(this),\n this.onScrollCallback.bind(this),\n 'colorLegend-cat'\n );\n\n this._maxBubbleScale = CONSTANTS.BUBBLE_SCALES_MAX;\n\n this._jitterTool = new Jitter();\n\n this.setDataPaths([`${DATA_PATH}/${HYPERCUBE_PATH}`]);\n },\n\n onScrollCallback(layout, settings, isPartialData) {\n const self = this;\n this._updateColorMapData(layout).then(() => {\n self.updateChart(layout, settings, isPartialData);\n });\n },\n\n getSlicedData(top, height) {\n const self = this;\n return this.getData(this.backendApi, this.layout[DATA_PATH][HYPERCUBE_PATH], { top, height }).then(\n () => self.layout\n );\n },\n\n updateScrollHandlerState(b) {\n if (b !== undefined) {\n this._disableScrolling = !!b;\n }\n this._scrollHandler.setDisabled(\n !hypercubeUtil.hasSecondDimension(this.layout, DATA_PATH) || this._disableScrolling\n );\n },\n\n updateConstraints(constraints) {\n const navigation = !constraints.active;\n const tooltip = !constraints.passive;\n const selection = !constraints.select && !constraints.active;\n\n this._scrollHandler[navigation ? 'on' : 'off']();\n this._tooltipHandler[tooltip ? 'on' : 'off']();\n this._selectionHandler[selection ? 'on' : 'off']();\n },\n off() {\n this._scrollHandler.off();\n this._tooltipHandler.off();\n this._selectionHandler.off();\n },\n\n _getPointScale() {\n return sliderEnabled(this.layout) ? this.layout.dataPoint.bubbleScales / this._maxBubbleScale : 1;\n },\n\n _calcBandwidth(chartAreaSize, chart) {\n const dimScale = chart.scales().dimension;\n this._bandwidthRatio = dimScale ? dimScale.pxScale(chartAreaSize).bandwidth() : 1;\n this._bandwidthPx = chartAreaSize * this._bandwidthRatio;\n },\n\n _calcPointMaxSize(pointScale, bandwidthPx) {\n const maxPointSize =\n Math.min(CONSTANTS.MAX_POINT_BASE_SIZE_PX, bandwidthPx * CONSTANTS.POINT_BANDWIDTH_BASE_RATIO) * pointScale;\n\n this._pointMaxSizePx = Math.max(CONSTANTS.MIN_POINT_PIXELS, maxPointSize);\n },\n\n _calcPointSize(pointMaxSizePx, bandwidthPx) {\n this._pointSize = pointMaxSizePx / bandwidthPx;\n },\n\n _getDimAxisSettings(layout, selectionSettings) {\n const brushTrigger = getSelectionSettingsArray(selectionSettings.trigger);\n const brushConsume = getSelectionSettingsArray(selectionSettings.consume);\n const containerSize =\n this.picassoElement.getBoundingClientRect()[layout.orientation === 'vertical' ? 'height' : 'width'];\n const adjustedMaxGlyphCount = stringUtil.getAdjustedMaxGlyphCount(\n getMaxGlyphCountForDimAxis(this.layout || layout),\n layout[DATA_PATH][HYPERCUBE_PATH].qStackedDataPages[0].qData[0].qSubNodes\n );\n\n const maxLengthPx = containerSize / 4; // Label size should not be more than 25% of the container size\n return {\n brush: {\n trigger: brushTrigger,\n consume: brushConsume,\n },\n settings: {\n labels: {\n mode: layout.orientation === 'vertical' ? layout.dimensionAxis.label : 'auto',\n maxGlyphCount: adjustedMaxGlyphCount, // To mitigate SUI-1445 and SUI-4401\n maxLengthPx, // Picasso version 0.5.3 does not support function here\n },\n paddingEnd: 4,\n },\n };\n },\n\n _getBoxMarkerSettings(layout, selectionSettings) {\n const { theme } = this.environment;\n\n const boxFillColor = layout.color.point.auto\n ? theme.getStyle(CONSTANTS.CHART_ID, 'box', 'fill')\n : theme.getColorPickerColor(layout.color.box.paletteColor);\n const brushTrigger = getSelectionSettingsArray(selectionSettings.trigger);\n const brushConsume = getSelectionSettingsArray(selectionSettings.consume);\n\n const obj = this;\n\n let startField = 'qMeasureInfo/0';\n let endField = 'qMeasureInfo/0';\n if (\n hypercubeUtil.hasSecondDimension(layout, DATA_PATH) &&\n layout.qUndoExclude.qHyperCube.qDimensionInfo[0].qAttrExprInfo.length\n ) {\n startField = 'qDimensionInfo/0/qAttrExprInfo/0';\n endField = 'qDimensionInfo/0/qAttrExprInfo/1';\n }\n\n const boxSettings = {\n require: ['chart'],\n displayOrder: 1000,\n settings: {\n chart: this,\n box: {\n fill: boxFillColor,\n stroke: theme.getStyle(CONSTANTS.CHART_ID, 'box', 'stroke'),\n strokeWidth: 0,\n width: CONSTANTS.POINT_BANDWIDTH_BASE_RATIO,\n maxWidthPx: CONSTANTS.MAX_POINT_BASE_SIZE_PX,\n minWidthPx: CONSTANTS.MIN_POINT_PIXELS + CONSTANTS.BOX_PADDING * 2,\n },\n minor: { scale: 'measure' },\n orientation: layout.orientation,\n },\n beforeRender() {\n const hasVisibleComponentsProps = obj.layout.presentation && obj.layout.presentation.visibleComponents;\n const showPoints =\n hasVisibleComponentsProps && obj.layout.presentation.visibleComponents.indexOf('point') !== -1;\n\n const chartAreaSize = obj.layout.orientation === 'horizontal' ? this.rect.height : this.rect.width;\n\n obj._calcBandwidth(chartAreaSize, this.chart);\n obj._calcPointMaxSize(showPoints ? obj._getPointScale() : 1, obj._bandwidthPx);\n\n let jitterExpansion = 0;\n\n if (obj._jitter) {\n obj._calcPointSize(obj._pointMaxSizePx, obj._bandwidthPx);\n jitterExpansion = obj._pointSize * obj._bandwidthPx * CONSTANTS.JITTER_PARAMETER;\n }\n\n const maxWidthPx = obj._pointMaxSizePx + jitterExpansion + CONSTANTS.BOX_PADDING * 2;\n const width = maxWidthPx / obj._bandwidthPx;\n\n this.settings.settings.box.maxWidthPx = Math.min(obj._bandwidthPx - 2, maxWidthPx);\n this.settings.settings.box.width = width;\n },\n brush: {\n trigger: brushTrigger,\n consume: brushConsume,\n },\n data: {\n extract: {\n field: 'qDimensionInfo/0',\n trackBy() {\n return -1; // In 1 dimension case, we only want to draw one box\n },\n props: {\n start: { field: startField, reduce: 'min' },\n end: { field: endField, reduce: 'max' },\n elemNo: { field: 'qDimensionInfo/0' },\n },\n },\n },\n };\n\n if (hypercubeUtil.hasSecondDimension(layout, DATA_PATH)) {\n boxSettings.data.extract.field = 'qDimensionInfo/0';\n boxSettings.data.extract.trackBy = function (cell) {\n return cell.qElemNo; // Here we want to draw one box per outer dimension value\n };\n boxSettings.settings.major = { scale: 'dimension' };\n }\n\n return boxSettings;\n },\n\n _getPointMarkerSettings(layout, selectionSettings, tooltipSettings) {\n let strokeWidth = 1; // For old objects - without the dataPoint.border property\n\n if (layout.dataPoint && layout.dataPoint.border === false) {\n strokeWidth = 0;\n }\n\n const brushTrigger = getSelectionSettingsArray(selectionSettings.trigger);\n const brushConsume = getSelectionSettingsArray(selectionSettings.consume);\n if (this._tooltipHandler.isOn()) {\n brushTrigger.push(tooltipSettings.point.trigger);\n brushConsume.push.apply(brushConsume, tooltipSettings.point.consume);\n }\n const obj = this;\n\n const fillFn = this.colorService.getColor();\n const pointMarkerSettings = {\n require: ['chart'],\n displayOrder: 1100,\n settings: {\n chart: this,\n fill: fillFn,\n stroke: (d) => {\n const fill = fillFn(d);\n return chartStyleUtils.getContrastingTransparent(fill);\n },\n size: 0.3,\n strokeWidth,\n sizeLimits: {\n maxRelExtent: 10, // need to override default in order to allow the maximum size of the points to be much higher\n maxPx: CONSTANTS.MAX_POINT_BASE_SIZE_PX,\n minPx: CONSTANTS.MIN_POINT_PIXELS,\n },\n orientation: layout.orientation,\n },\n beforeRender() {\n const chartAreaSize = obj.layout.orientation === 'horizontal' ? this.rect.height : this.rect.width;\n obj._calcBandwidth(chartAreaSize, this.chart);\n obj._calcPointMaxSize(obj._getPointScale(), obj._bandwidthPx);\n obj._calcPointSize(obj._pointMaxSizePx, obj._bandwidthPx);\n if (obj._jitter) {\n const boxPaddingRelative = (CONSTANTS.BOX_PADDING * 2) / chartAreaSize;\n obj._jitterTool.calcMaxJitter(\n obj._pointSize * obj._bandwidthRatio,\n CONSTANTS.JITTER_PARAMETER,\n obj._bandwidthRatio - boxPaddingRelative\n );\n }\n this.settings.settings.sizeLimits.maxPx = obj._pointMaxSizePx;\n this.settings.settings.size = obj._pointSize;\n },\n brush: {\n trigger: brushTrigger,\n consume: brushConsume,\n },\n data: {\n extract: {\n field: 'qDimensionInfo/0',\n props: {\n innerElemNo: { field: 'qDimensionInfo/0' },\n elemNo: { field: 'qDimensionInfo/0' },\n inner: {\n field: 'qDimensionInfo/0',\n value(v) {\n return v;\n },\n },\n row: {\n field: 'qDimensionInfo/0',\n value(v) {\n return v.qRow;\n },\n },\n measure: {\n field: 'qMeasureInfo/0',\n reduce: 'first',\n value(v) {\n return v;\n },\n reduceLabel: 'none',\n },\n ...this.colorService.getDatumProps(),\n },\n },\n },\n };\n\n if (hypercubeUtil.hasSecondDimension(layout, DATA_PATH)) {\n pointMarkerSettings.data.extract.props.inner.field = 'qDimensionInfo/1';\n pointMarkerSettings.data.extract.props.innerElemNo.field = 'qDimensionInfo/1';\n pointMarkerSettings.data.extract.props.row.field = 'qDimensionInfo/1';\n pointMarkerSettings.data.extract.field = 'qDimensionInfo/1';\n pointMarkerSettings.data.extract.props.outer = {\n field: 'qDimensionInfo/0',\n value(v) {\n return v;\n },\n };\n }\n\n this.setDataPaths([`${DATA_PATH}/${HYPERCUBE_PATH}`]);\n\n // TODO: This code should be enabled when data limitation problem for stacked hyper cube is fixed(QLIK-80557)\n /*\n if( hypercubeUtil.hasSecondMeasure( layout, DATA_PATH ) ) {\n pointMarkerSettings.settings.size = { scale: { source: '/' + HYPERCUBE_PATH + '/qMeasureInfo/1', ref: 'size' } };\n pointMarkerSettings.settings.sizeLimits.maxRelDiscrete = pointSizeOverBandwidth;\n pointMarkerSettings.data.mapTo.size = { source: '/' + HYPERCUBE_PATH + '/qMeasureInfo/1' };\n }\n */\n\n return pointMarkerSettings;\n },\n\n _getPointSelectionLayerSettings(pointMarkerSettings) {\n const pointSelectionLayerSettings = extend(true, {}, pointMarkerSettings, {\n key: 'selection-point-marker',\n settings: {\n opacity: 0,\n },\n });\n pointSelectionLayerSettings.brush.consume.pop();\n pointSelectionLayerSettings.brush.consume.forEach((consume) => {\n consume.style.inactive = undefined;\n consume.style.active.opacity = 1;\n });\n pointSelectionLayerSettings.brush.trigger = [];\n return pointSelectionLayerSettings;\n },\n\n createChartSettings(layout) {\n const isRtl = this.isRtl();\n const { theme } = this.environment;\n const isSnapshot = !!layout.snapshotData;\n const hasVisibleComponentsProps = layout.presentation && layout.presentation.visibleComponents;\n const showPoints = hasVisibleComponentsProps && layout.presentation.visibleComponents.indexOf('point') !== -1;\n const showBox = hasVisibleComponentsProps && layout.presentation.visibleComponents.indexOf('box') !== -1;\n this._jitter = showPoints && layout.dataPoint && layout.dataPoint.displacement === 'jitter';\n\n const hyperCube = layout[DATA_PATH][HYPERCUBE_PATH];\n const dimInfo = hyperCube.qDimensionInfo;\n\n const measureDirection = layout.orientation !== 'horizontal' ? 'y' : 'x';\n const dimensionDirection = layout.orientation !== 'horizontal' ? 'x' : 'y';\n\n const chartBuilder = ChartBuilder.create({\n chartID: CONSTANTS.CHART_ID,\n theme,\n isRtl,\n });\n\n if (hyperCube.qStackedDataPages[0].qData.length === 0) {\n return chartBuilder.getSettings();\n }\n\n let dimAxisSelectionSettings = {};\n let boxSelectionSettings = {};\n let pointSelectionSettings = {};\n let legendSelectionSettings = {};\n if (this._selectionHandler.isOn()) {\n const allowSelectBoxes = !showPoints && hypercubeUtil.hasSecondDimension(layout, DATA_PATH);\n\n this._selectionHandler.setUpStart();\n const innerSelectionSettings = this._selectionHandler.setUpBrush(\n {\n contexts: ['select-inner'],\n data: ['innerElemNo'],\n isSingleSelect: isSingleSelect(layout, 0),\n },\n true\n );\n const outerSelectionSettings = this._selectionHandler.setUpBrush(\n {\n contexts: ['select-outer'],\n data: ['elemNo'],\n isSingleSelect: isSingleSelect(layout, 1),\n },\n true\n );\n const colorSelectionSettings = this._selectionHandler.setUpBrush(\n {\n dataPath: DATA_PATH,\n contexts: ['select-color'],\n data: ['color'],\n startOnEmptySelection: false,\n },\n true\n );\n const measureSelectionSettings = this._selectionHandler.setUpBrush(\n {\n contexts: ['select-measure'],\n data: [measureDirection],\n },\n true\n );\n this._selectionHandler.setUpDone();\n\n dimAxisSelectionSettings = {\n trigger: extend(true, {}, outerSelectionSettings.trigger, { data: [''] }),\n consume: [extend(true, {}, outerSelectionSettings.consume, { data: [''] })],\n };\n boxSelectionSettings = {\n trigger: allowSelectBoxes ? outerSelectionSettings.trigger : null,\n consume: [innerSelectionSettings.consume, outerSelectionSettings.consume, measureSelectionSettings.consume],\n };\n pointSelectionSettings = {\n trigger: innerSelectionSettings.trigger,\n consume: [\n innerSelectionSettings.consume,\n outerSelectionSettings.consume,\n measureSelectionSettings.consume,\n colorSelectionSettings.consume,\n ],\n };\n legendSelectionSettings = {\n trigger: [extend(true, {}, colorSelectionSettings.trigger, { data: [''] })],\n consume: [\n extend(true, {}, colorSelectionSettings.consume, { data: [''] }),\n innerSelectionSettings.consume,\n outerSelectionSettings.consume,\n ],\n };\n }\n const tooltipSettings = { point: {}, box: {} };\n if (this._tooltipHandler.isOn()) {\n tooltipSettings.point = this._tooltipHandler.setUp({\n chartBuilder,\n colorService: this.colorService,\n data: hypercubeUtil.hasSecondDimension(layout, DATA_PATH) ? ['innerElemNo', 'elemNo'] : ['innerElemNo'],\n contexts: ['pointTip'],\n componentKey: 'point-marker',\n environment: this.environment,\n attrDimPath: `/${HYPERCUBE_PATH}/qDimensionInfo/${\n hypercubeUtil.hasSecondDimension(layout, DATA_PATH) ? 1 : 0\n }/qAttrDimInfo/0`,\n measureRows: ['measure'], // Should be a mapped path under extract, mandatory to display tooltip\n labelData: hypercubeUtil.hasSecondDimension(layout, DATA_PATH) ? ['inner', 'outer'] : ['inner'], // Should be a mapped path under extract, mandatory to display tooltip\n });\n }\n\n const lockedDims = getLockedDims(layout);\n const isInnerDimSingleSelect = isSingleSelect(layout, 0);\n const isOuterDimSingleSelect = isSingleSelect(layout, 1);\n const rangeSelStatus = retrieveRangeSelStatus(lockedDims, isInnerDimSingleSelect, isOuterDimSingleSelect);\n const handlers = {\n scrollHandler: this._scrollHandler,\n selectionHandler: this._selectionHandler,\n };\n const keys = {\n componentKey: showPoints ? 'point-marker' : 'box-marker',\n lassoBrushKey: 'select-inner',\n dimRangeBrushKey: 'select-outer',\n measureRangeBrushKey: 'select-measure',\n areaBrushKey: null,\n legendBrushKey: 'legend',\n };\n\n if (this._dependentActions) {\n this._dependentActions.destroy();\n }\n this._dependentActions = DependentInteractions.create(handlers, layout.orientation, isRtl, keys, rangeSelStatus);\n\n chartBuilder.addPreset('dimension-measure-chart', {\n // common\n isRtl,\n includeDimensionAxis: hypercubeUtil.hasSecondDimension(layout, DATA_PATH),\n orientation: layout.orientation,\n selectionsEnabled: this._selectionHandler.isOn(),\n theme,\n\n // measure scale\n measureSource: ['qMeasureInfo/0'],\n\n // dimension scale\n dimensionSource: 'qDimensionInfo/0',\n\n // measure axis and title\n measureAxisProperties: layout.measureAxis, // used by both\n measureTitleText: hyperCube.qMeasureInfo[0].qFallbackTitle,\n\n // dimension axis and title\n dimensionAxisProperties: layout.dimensionAxis, // used by both\n dimensionAxisSettings: this._getDimAxisSettings(layout, dimAxisSelectionSettings),\n dimensionTitleText: (dimInfo && dimInfo[0] && dimInfo[0].qFallbackTitle) || '',\n\n // grid lines\n gridlines: layout.gridlines,\n\n // scroll\n hasNavigation: !isSnapshot,\n isNavigationEnabledFn: () => this._scrollHandler.isOn(),\n scrollSettings: getPicassoScrollSettings(layout, this._scrollHandler.getScrollViewSizeInItem()),\n\n // Lasso\n enableLasso: true,\n lasso: {\n brushKey: showPoints ? 'select-inner' : 'select-outer',\n brushComponents: showPoints ? ['point-marker'] : ['box-marker'],\n brushData: showPoints ? ['innerElemNo'] : ['elemNo'],\n },\n\n // Dim range\n enableDimRange: true,\n dimRange: {\n brushKey: 'select-outer',\n brushAxis: layout.orientation === 'horizontal' ? 'y-axis' : 'x-axis',\n brushArea: showBox ? 'box-marker' : 'point-marker',\n brushScale: 'dimension',\n },\n\n // Measure range\n enableMeasureRange: showPoints,\n measureRange: {\n brushKey: 'select-measure',\n brushAxis: layout.orientation === 'horizontal' ? 'x-axis' : 'y-axis',\n brushArea: showPoints ? 'point-marker' : 'box-marker',\n brushScale: 'measure',\n multiple: true,\n },\n\n brushActions: this._dependentActions.gestures,\n\n // ref-lines\n refLines: layout.refLine && layout.refLine.refLines,\n });\n\n // Box marker\n if (showBox) {\n const boxMarkerSettings = this._getBoxMarkerSettings(layout, boxSelectionSettings);\n chartBuilder.addComponent('box-marker', boxMarkerSettings);\n }\n\n // Point marker\n if (showPoints) {\n const pointMarkerSettings = this._getPointMarkerSettings(layout, pointSelectionSettings, tooltipSettings);\n pointMarkerSettings.data.extract.props[measureDirection] = { field: 'qMeasureInfo/0' };\n pointMarkerSettings.settings[measureDirection] = { scale: 'measure' };\n if (hypercubeUtil.hasSecondDimension(layout, DATA_PATH)) {\n pointMarkerSettings.data.extract.props[dimensionDirection] = { field: 'qDimensionInfo/0', type: 'qual' };\n pointMarkerSettings.settings[dimensionDirection] = { scale: 'dimension' };\n }\n\n if (this._jitter) {\n pointMarkerSettings.settings[dimensionDirection] = pointMarkerSettings.settings[dimensionDirection] || {};\n\n const jitterTool = this._jitterTool;\n\n pointMarkerSettings.settings[dimensionDirection].fn = function (d) {\n let basePosition;\n if (typeof d.scale === 'function') {\n // No scale when there is only one dimension\n basePosition = d.scale(d.datum[dimensionDirection].value) + d.scale.bandwidth() * 0.5;\n } else {\n basePosition = 0.5;\n }\n\n return basePosition + jitterTool.getJitterValue(d.datum.value, CONSTANTS.JITTER_PARAMETER);\n };\n }\n\n chartBuilder.addComponent('point-marker', pointMarkerSettings);\n chartBuilder.addComponent('point-marker', this._getPointSelectionLayerSettings(pointMarkerSettings));\n\n const showLegend = layout.legend\n ? layout.legend.show !== false\n : !layout.color.point.auto && layout.color.point.mode === 'byDimension'; // For old apps without layout.legend\n if (showLegend) {\n this.addLegend(chartBuilder, isRtl, legendSelectionSettings);\n }\n }\n\n // Add snapshot settings\n const settings = chartBuilder.getSettings();\n this.addSnapshotChartSettings(settings, layout);\n settings.scales = { ...settings.scales, ...this.colorService.getScales() };\n settings.palettes = this.colorService.getPalettes();\n\n return settings;\n },\n\n /**\n * Configure and add a legend to Picasso's chart config\n * @param chartBuilder {ChartBuilder}\n * @param legend {Object} A pointer to layout.legend\n * @param isRtl {Boolean}\n * @returns {void}\n */\n addLegend(chartBuilder, isRtl, legendSelectionSettings) {\n const LEGEND_DISPLAY_OREDER = 200;\n const LEGEND_PRIO_ORDER = 50; // should be between axis (30) and refline (60) to be removed before axis but after refline\n const config = {\n eventName: 'legend-c',\n key: 'colorLegend',\n styleReference: 'object.comboChart',\n rtl: isRtl,\n settings: {\n item: {\n shape: {\n type: 'circle',\n size: 10,\n },\n },\n },\n };\n const legend = this.colorService.getLegend(config, {\n actions: {\n interact: {\n enabled: () => this._scrollHandler.isOn(),\n },\n },\n });\n\n let { components } = legend;\n components = components.filter((c) => !!c);\n if (components.length > 0) {\n if (this._selectionHandler.isOn()) {\n components[0].brush = {\n consume: legendSelectionSettings.consume.map((c) => extend(true, c, { style: { active: null } })),\n trigger: legendSelectionSettings.trigger,\n };\n }\n components[0].layout.displayOrder = LEGEND_DISPLAY_OREDER;\n components[0].layout.prioOrder = LEGEND_PRIO_ORDER;\n }\n\n chartBuilder.settings.components.push(...components);\n chartBuilder.settings.interactions[0].gestures.unshift(...legend.interactions);\n },\n\n resize() {\n if (!this.layout) {\n return;\n }\n updateOnScrollViewChanged.call(this);\n this._super();\n },\n\n hasValidData() {\n const layout = this.layout;\n return (\n layout[DATA_PATH] &&\n layout[DATA_PATH][HYPERCUBE_PATH] &&\n layout[DATA_PATH][HYPERCUBE_PATH].qStackedDataPages.length &&\n layout[DATA_PATH][HYPERCUBE_PATH].qStackedDataPages[0].qData\n );\n },\n\n paint() {\n const isSnapshot = !!this.layout.snapshotData;\n if (!isSnapshot && !this.environment.options.viewState) {\n this.updateScrollHandlerState(false);\n }\n\n if (!this._orientation) {\n this._orientation = this.layout.orientation;\n }\n if (this._orientation !== this.layout.orientation) {\n updateOnScrollViewChanged.call(this);\n this._orientation = this.layout.orientation;\n }\n const layout = this.layout;\n\n if (!this.hasValidData()) {\n // Data not fetched yet - wait for next paint\n return Promise.resolve();\n }\n\n const self = this;\n const _super = this._super;\n if (\n !isSnapshot &&\n hypercubeUtil.hasSecondDimension(layout, DATA_PATH) &&\n this._scrollHandler.isDataSizeChanged(\n getValue(layout, `${DATA_PATH}.${HYPERCUBE_PATH}.qStackedDataPages.0.qData.0.qSubNodes.length`),\n hypercubeUtil.getOuterDimensionSizeOfMax2Dims(layout, DATA_PATH)\n )\n ) {\n return this._scrollHandler\n .getViewData()\n .finally(() => self._updateColorMapData(layout).then(() => _super.call(self)));\n }\n return this._updateColorMapData(layout).then(() => _super.call(self));\n },\n\n async setSnapshotData(snapshotLayout) {\n this._super(snapshotLayout);\n\n const colorData = await this.colorService.getSnapshotData();\n snapshotLayout.snapshotData.content.chartData = {\n ...snapshotLayout.snapshotData.content.chartData,\n ...colorData,\n };\n\n snapshotLayout[DATA_PATH][HYPERCUBE_PATH].qStackedDataPages =\n this.layout[DATA_PATH][HYPERCUBE_PATH].qStackedDataPages;\n columnOrderAdapter.toBefore(snapshotLayout);\n return snapshotLayout;\n },\n getViewState() {\n return {\n scroll: Math.round(this._scrollHandler.getScrollState()),\n };\n },\n\n getDisclaimerAttributes(layout) {\n const showDisclaimer = this.flags.isEnabled('SHOW_DISCLAIMER') ? !(layout.showDisclaimer === false) : true;\n const limitedData =\n (!hypercubeUtil.hasSecondDimension(layout, DATA_PATH) && layout.qHyperCube.qSize.qcy > 10000) ||\n (hypercubeUtil.hasSecondDimension(layout, DATA_PATH) && layout.qHyperCube.qSize.qcy > 3000);\n const explicitLimitedData = showDisclaimer && limitedData;\n const scrollSettings = getPicassoScrollSettings(layout, this._scrollHandler.getScrollViewSizeInItem());\n\n return {\n data: layout && layout.qUndoExclude,\n supportedDisclaimers: {\n LimitedData: showDisclaimer && explicitLimitedData,\n },\n options: {\n paddingBottom: explicitLimitedData && scrollSettings && scrollSettings.viewSize < scrollSettings.max,\n supportNegative: true,\n explicitLimitedData,\n },\n };\n },\n\n async _updateColorMapData(layout) {\n this.colorService = createColorService({\n layout,\n localeInfo: this.localeInfo,\n model: this.backendApi.model,\n picasso: this.picasso,\n environment: this.environment,\n });\n await this.colorService.initialize();\n const colorField = this.colorService.getSettings().field;\n const brush = this.chartInstance.brush('select-color');\n if (/qAttrDimInfo/.test(colorField)) {\n brush.addKeyAlias('attrDim/qDimensionInfo/0', `${DATA_PATH}/${HYPERCUBE_PATH}/${colorField}`);\n }\n },\n _createColorLegendCube(dataPages) {\n const dimIndex = hypercubeUtil.hasSecondDimension(this.layout, DATA_PATH) ? 1 : 0;\n const attrDimInfo = this.layout[DATA_PATH][HYPERCUBE_PATH].qDimensionInfo[dimIndex].qAttrDimInfo[0];\n return {\n qDimensionInfo: [attrDimInfo],\n qMeasureInfo: [],\n qDataPages: dataPages,\n qMode: 'S',\n qSize: {\n qcx: 1,\n qcy: dataPages[0].qMatrix.length,\n },\n };\n },\n _updateColorData() {\n return this._updateColorMapData(this.layout);\n },\n\n updateDerivedProperties(properties, layout) {\n const { app, translator } = this.environment;\n const self = this;\n const model = self.backendApi.model;\n\n return self._derivedProperties\n .addDefaultHyperCubeHash(properties.qHyperCubeDef, layout.qHyperCube, app, getHashData(properties))\n .then((hashData) => {\n const derivedSettings = {\n layout,\n properties,\n model,\n hashData,\n generateDerivedProperties(layout, properties) {\n return distributionPlotCubeGenerator.generateHyperCube(layout, properties, app, translator);\n },\n };\n\n return self._derivedProperties.updateDerivedProperties(derivedSettings);\n });\n },\n\n updateData(layout) {\n const self = this;\n const isSnapshot = !!layout.snapshotData;\n\n return self._super(layout).then(() => {\n if (self._destroyed) {\n return Promise.reject();\n }\n layout = self.layout; // eslint-disable-line no-param-reassign\n\n self._scrollHandler.setOptions({ direction: layout.orientation === 'horizontal' ? 'vertical' : 'horizontal' }); // the scroll orientation is inverted to the chart orientation\n\n if (isSnapshot) {\n columnOrderAdapter.toAfter(layout);\n\n // TODO: migrate? legend color data for old snapshots\n return self._updateColorMapData(layout);\n }\n self.updateScrollHandlerState(true); // No need to run it in snapshot mode\n const { viewState } = self.environment.options;\n if (viewState) {\n self._scrollHandler.updateViewState(getDataSize(layout));\n self._scrollHandler.setScrollState(viewState.scroll);\n } else {\n self._scrollHandler.resetScroll();\n resetCategoricalLegendScroll.call(self);\n }\n\n if (self._scrollHandler.getScrollViewSizeInItem() && !self._cacheSizeInitialized) {\n updateCacheSize.call(self);\n self._cacheSizeInitialized = true;\n }\n\n let promise;\n if (hypercubeUtil.hasSecondDimension(layout, DATA_PATH)) {\n promise = self.getSlicedData(\n self._scrollHandler.getScrollState(),\n self._scrollHandler.getScrollViewSizeInItem()\n );\n } else {\n promise = self.getData(self.backendApi, layout[DATA_PATH][HYPERCUBE_PATH], {\n height: layout[DATA_PATH][HYPERCUBE_PATH].qSize.qcy || 1,\n });\n }\n return promise.then(() => {\n if (self._destroyed) {\n return Promise.reject();\n }\n return self._updateColorData();\n });\n });\n },\n\n isLassoDisabled() {\n const layout = this.layout;\n const isInnerDimSingleSelect = !!(\n layout.qHyperCube.qDimensionInfo &&\n layout.qHyperCube.qDimensionInfo.length > 1 &&\n isSingleSelect(layout, 0)\n );\n\n return isInnerDimSingleSelect;\n },\n});\n\nexport default DistributionPlot;\n","/* eslint-disable prefer-arrow-callback */\nimport extend from 'extend';\n\nconst defaultOptions = {\n enabled: true,\n delay: 50,\n};\n\nfunction deferred() {\n const dfd = {};\n dfd.promise = new Promise((resolve, reject) => {\n dfd.resolve = resolve;\n dfd.reject = reject;\n });\n return dfd;\n}\n\nclass Throttle {\n constructor({ onSend }) {\n this.options = {};\n this.ongoingRequests = []; // requests being processed\n this.queuedRequests = []; // requests waiting to be processed\n\n this.recentRequests = [];\n\n this.resolvedRequests = [];\n\n this._debounceTimer = null;\n this._latestResolvedRequestedAt = -1;\n\n this.onSend = onSend;\n\n this.setOptions({});\n }\n\n destroy() {\n this.clear();\n this.recentRequests = [];\n this.resolvedRequests = [];\n this.onSend = null;\n this.onCancel = null;\n }\n\n setOptions(opts) {\n this.options = extend(true, {}, defaultOptions, this.options, opts);\n\n this.enabled = this.options.enabled || false;\n this.delay = this.options.delay || -1;\n }\n\n clear() {\n clearTimeout(this._debounceTimer); // do not send queued request\n\n let request;\n\n // reject queued requests\n while (this.queuedRequests.length) {\n request = this.queuedRequests.pop();\n request.dfd.reject();\n }\n\n // reject ongoing requests\n while (this.ongoingRequests.length) {\n request = this.ongoingRequests.pop();\n request.dfd.reject();\n }\n }\n\n queue(data) {\n const debounceDelay = this.enabled ? this.delay : -1;\n const now = Date.now();\n\n const requestObject = {\n data,\n dfd: deferred(),\n wrapper: deferred(),\n requestedAt: now,\n };\n\n const avgResponseTime = Math.max(this._getAvgResolutionTime(), debounceDelay);\n const disabled = debounceDelay < 1;\n const notAnyRecentRequests = this.recentRequests.length < 1;\n const lastRequestIsOld =\n notAnyRecentRequests || now - this.recentRequests.slice(-1)[0].requestedAt > avgResponseTime;\n const lastResponseIsOld = now > this._latestResolvedRequestedAt + debounceDelay;\n\n if (disabled || notAnyRecentRequests || lastRequestIsOld || lastResponseIsOld) {\n throttleQueue.apply(this, [requestObject, 0]);\n } else {\n throttleQueue.apply(this, [requestObject, Math.min(debounceDelay, 1000)]);\n }\n\n this.recentRequests.push(requestObject);\n if (this.recentRequests.length > 10) {\n this.recentRequests = this.recentRequests.slice(-10);\n }\n\n return requestObject.dfd.promise;\n }\n\n updateResolutionTime() {\n this._latestResolvedRequestedAt = Date.now();\n }\n\n _getAvgResolutionTime() {\n let avgResponseTime;\n if (this.resolvedRequests.length) {\n avgResponseTime = 0;\n this.resolvedRequests.forEach((q) => {\n avgResponseTime += q.respondedAt - q.sentAt;\n });\n avgResponseTime /= this.resolvedRequests.length;\n }\n return avgResponseTime;\n }\n}\n\nfunction throttleQueue(q, t) {\n const self = this;\n this.queuedRequests.push(q);\n\n clearTimeout(this._debounceTimer);\n\n if (t >= 10) {\n this._debounceTimer = setTimeout(() => {\n sendLastThrottledRequest.call(self);\n }, t);\n } else {\n sendLastThrottledRequest.call(self);\n }\n}\n\nfunction sendLastThrottledRequest() {\n if (this.ongoingRequests.length) {\n this.waitingForResponse = true;\n return;\n }\n let req = this.queuedRequests.pop();\n\n if (req) {\n sendRequest.call(this, req);\n }\n\n // reject all other requests\n while (this.queuedRequests.length) {\n req = this.queuedRequests.shift();\n req.dfd.reject();\n }\n}\n\nfunction sendRequest(q) {\n this.waitingForResponse = false;\n this.ongoingRequests.push(q);\n const self = this;\n const wrapper = q.wrapper;\n\n q.sentAt = Date.now();\n wrapper.promise\n .then(\n function (...args) {\n self.ongoingRequests.splice(self.ongoingRequests.indexOf(q), 1);\n q.respondedAt = Date.now();\n\n self.resolvedRequests.push({\n sentAt: q.sentAt,\n respondedAt: q.respondedAt,\n requestedAt: q.requestedAt,\n });\n if (self.resolvedRequests.length > 10) {\n self.resolvedRequests = self.resolvedRequests.slice(-10);\n }\n\n // maintain order in queue\n if (q.requestedAt > self._latestResolvedRequestedAt) {\n q.dfd.resolve(...args);\n } else {\n q.dfd.reject();\n }\n self._latestResolvedRequestedAt = q.requestedAt;\n },\n function (...args) {\n self.ongoingRequests.splice(self.ongoingRequests.indexOf(q), 1);\n q.respondedAt = Date.now();\n q.dfd.reject(...args);\n }\n )\n .finally(() => {\n if (self.waitingForResponse) {\n sendLastThrottledRequest.call(self);\n }\n });\n\n this.onSend(q.data, wrapper);\n}\n\nexport default Throttle;\n","import Rect from './rect';\n\nconst areaRect = new Rect(0, 0, 0, 0);\nconst pageRect = new Rect(0, 0, 0, 0);\n\nclass StackedCubeSlicer {\n constructor() {\n this.pages = [];\n }\n\n get(areas) {\n return areas.map((area) => this.getPage(area));\n }\n\n getPage(area) {\n const coverage = [];\n // try to extract the entire requested set\n for (let i = 0; i < this.pages.length; i++) {\n const storage = this.pages[i].qArea;\n areaRect.set(area.qLeft, area.qTop, area.qWidth, area.qHeight);\n pageRect.set(storage.qLeft, storage.qTop, storage.qWidth, storage.qHeight);\n const cover = pageRect.intersection(areaRect, true);\n coverage.push({ coverage: cover ? cover.clone() : new Rect(0, 0, 0, 0), idx: i });\n\n if (\n storage.qLeft <= area.qLeft &&\n storage.qLeft + storage.qWidth >= area.qLeft + area.qWidth &&\n storage.qTop <= area.qTop &&\n storage.qTop + storage.qHeight >= area.qTop + area.qHeight\n ) {\n return this._extract(area, this.pages[i]);\n }\n }\n\n // find the page containing the largest amount of requested data\n coverage.sort((a, b) => b.coverage.width * b.coverage.height - a.coverage.width * a.coverage.height);\n\n if (coverage[0].coverage.height > 0 && coverage[0].coverage.width > 0) {\n return this._extract(area, this.pages[coverage[0].idx]);\n }\n\n return {\n qArea: {\n qTop: area.qTop,\n qLeft: area.qLeft,\n qWidth: 0,\n qHeight: 0,\n },\n qData: [],\n };\n }\n\n destroy() {\n this.clear();\n }\n\n isEmpty() {\n return !this.pages || !this.pages[0] || !this.pages[0].qArea.qHeight || !this.pages[0].qArea.qWidth;\n }\n\n clear() {\n this.pages = [];\n }\n\n store(pages) {\n this.pages = pages;\n }\n\n containsArea(area) {\n for (let i = 0; i < this.pages.length; i++) {\n const a = this.pages[i].qArea;\n if (\n a.qLeft <= area.qLeft &&\n a.qLeft + a.qWidth >= area.qLeft + area.qWidth &&\n a.qTop <= area.qTop &&\n a.qTop + a.qHeight >= area.qTop + area.qHeight\n ) {\n return true;\n }\n }\n\n return false;\n }\n\n contains(areas) {\n if (!this.pages || !this.pages.length) {\n return false;\n }\n return areas.filter((a) => !this.containsArea(a)).length === 0;\n }\n\n // eslint-disable-next-line class-methods-use-this\n _extract(area, fromPage) {\n areaRect.set(area.qLeft, area.qTop, area.qWidth, area.qHeight);\n pageRect.set(fromPage.qArea.qLeft, fromPage.qArea.qTop, fromPage.qArea.qWidth, fromPage.qArea.qHeight);\n\n const intersection = areaRect.intersection(pageRect, true);\n\n if (!intersection) {\n return {\n qArea: {\n qTop: area.qTop,\n qLeft: area.qLeft,\n qWidth: 0,\n qHeight: 0,\n },\n qData: [],\n };\n }\n\n const y = Math.max(0, area.qTop - fromPage.qArea.qTop);\n\n const source = fromPage.qData[0];\n const nodes = source.qSubNodes;\n\n const data = {};\n // eslint-disable-next-line no-restricted-syntax\n for (const key in source) {\n // eslint-disable-next-line no-prototype-builtins\n if (source.hasOwnProperty(key)) {\n if (key === 'qSubNodes') {\n data[key] = nodes.slice(y, y + intersection.height);\n } else {\n data[key] = source[key];\n }\n }\n }\n\n data.qUp += y;\n data.qDown += fromPage.qArea.qHeight - intersection.height - y;\n\n return {\n qArea: {\n qTop: intersection.y,\n qLeft: intersection.x,\n qWidth: intersection.width,\n qHeight: intersection.height,\n },\n qData: [data],\n };\n }\n}\n\nexport default StackedCubeSlicer;\n","/**\n * @exports assets/objects/backend-api/cache-cube\n * @expose module:assets/objects/cache-cube/cache-cube~CacheCube\n *\n */\nimport extend from 'extend';\nimport Class from '../class';\nimport EngineThrottle from './engine-throttle';\nimport CubeSlicer from './cube-slicer';\nimport StackedCubeSlicer from './stacked-cube-slicer';\nimport PivotCubeSlicer from './pivot-cube-slicer';\n\nconst defaultOptions = {\n mode: 'S',\n enabled: true,\n debouncing: {\n enabled: true,\n delay: 50,\n },\n height: 250,\n width: 250,\n maxTotalArea: 10000,\n};\n\nconst Cache = Class.extend(\n 'CacheCube',\n /** @lends module:assets/objects/cache-cube/cache-cube~CacheCube */ {\n /**\n * @constructs\n * @param {module:assets/objects/backend-api/backend-api~BackendApi} model\n * @param {String} responseProperty\n * @param {String} path\n */\n init(model, responseProperty, path, opts) {\n this.model = model;\n this.responseProperty = responseProperty;\n this.options = {};\n\n this.cubeHeight = 0;\n this.cubeWidth = 0;\n\n this.setOptions(opts || {});\n\n this.setPath(path);\n if (this.options.mode === 'K') {\n this.cube = new StackedCubeSlicer();\n } else if (this.options.mode === 'P') {\n this.cube = new PivotCubeSlicer();\n } else {\n this.cube = new CubeSlicer();\n }\n this.throttle = new EngineThrottle({\n onSend: (areas, dfd) => {\n const directions = this._getDirections(\n this.throttle.recentRequests.map((q) => ({ top: q.data[0].qTop, left: q.data[0].qLeft }))\n );\n const areasToCache = this._getAreasToCache(areas, directions.vertical, directions.horizontal);\n this.cacheData(areasToCache, areas).then(\n (subset) => {\n if (this.cube) {\n dfd.resolve(subset);\n } else {\n dfd.reject();\n }\n },\n () => {\n dfd.reject();\n }\n );\n },\n });\n\n this._modelBinding = () => {\n this.clear();\n };\n\n this.model.on('changed', this._modelBinding);\n },\n destroy() {\n this.cube.destroy();\n this.throttle.destroy();\n if (this.model && this.model.removeListener) {\n this.model.removeListener('changed', this._modelBinding);\n }\n this._modelBinding = null;\n delete this.model;\n delete this.throttle;\n delete this.cube;\n },\n setMethodName(s) {\n this.method = s;\n },\n setPath(s) {\n this.path = s;\n },\n setCubeSize(size) {\n this.cubeHeight = size.qcy;\n this.cubeWidth = size.qcx;\n },\n setOptions(opts) {\n if (!opts) {\n return;\n }\n this.options = extend(true, {}, defaultOptions, this.options, opts);\n\n this.cacheHeight = this.options.height;\n this.cacheWidth = this.options.width;\n this.enabled = this.options.enabled || false;\n this.debouncing = {\n enabled: this.options.debouncing.enabled || false,\n delay: this.options.debouncing.delay || -1,\n };\n },\n clear() {\n if (this.cube) {\n this.cube.clear();\n }\n if (this.throttle) {\n this.throttle.clear();\n }\n },\n set(dataPages) {\n this.clear();\n if (!dataPages || !dataPages.length) {\n return;\n }\n this.cube.store(dataPages);\n },\n cacheData(areasToCache, subset) {\n const fn = function (pages) {\n if (this.cube) {\n this.cube.store(pages);\n return this.cube.get(subset);\n }\n return pages;\n };\n if (this.method === 'getHyperCubeStackData' && this.options.maxStackedValues) {\n return this.model[this.method](this.path, areasToCache, this.options.maxStackedValues).then(fn.bind(this));\n }\n\n return this.model[this.method](this.path, areasToCache).then(fn.bind(this));\n },\n getData(srcAreas) {\n if (!this.model) {\n return Promise.reject();\n }\n if (!this.enabled || !this.cubeHeight || !this.cubeWidth) {\n if (this.method === 'getHyperCubeStackData' && this.options.maxStackedValues) {\n return this.model[this.method](this.path, srcAreas, this.options.maxStackedValues);\n }\n return this.model[this.method](this.path, srcAreas);\n }\n let i;\n let area;\n const areas = [];\n for (i = 0; i < srcAreas.length; ++i) {\n area = srcAreas[i];\n areas.push({\n // areas objects must be unique -> copy page values into new object\n qTop: Math.max(Math.floor(area.qTop), 0),\n qLeft: Math.max(area.qLeft, 0),\n qHeight: Math.min(area.qHeight, this.cubeHeight - Math.floor(area.qTop)),\n qWidth: Math.min(area.qWidth, this.cubeWidth - area.qLeft),\n });\n }\n if (this.cube.contains(areas)) {\n this.throttle.updateResolutionTime();\n return Promise.resolve(this.cube.get(areas));\n }\n if (\n areas[0].qTop === 0 &&\n this.cube.isEmpty() &&\n this.throttle.ongoingRequests.length + this.throttle.queuedRequests.length === 0\n ) {\n // to avoid caching on first call to getData\n this.throttle.updateResolutionTime();\n return this.cacheData(areas, areas);\n }\n\n return this.throttle.queue(areas);\n },\n _getDirections(lastRequests) {\n if (!lastRequests || lastRequests.length < 2) {\n return { vertical: 0, horizontal: 0 };\n }\n\n const lastCouple = lastRequests.slice(-2);\n const diffY = lastCouple[1].top - lastCouple[0].top;\n const diffX = lastCouple[1].left - lastCouple[0].left;\n return {\n vertical: diffY < 0 ? -1 : diffY > 0 ? 1 : 0,\n horizontal: diffX < 0 ? -1 : diffX > 0 ? 1 : 0,\n };\n },\n _getAreasToCache(areas, h, w) {\n let i;\n let wiggleHeight;\n let wiggleWidth;\n let offsetTop;\n let offsetLeft;\n let height;\n let width;\n let top;\n let left;\n const cacheAreas = [];\n let adjustedCacheHeight = this.cacheHeight;\n if (typeof h === 'undefined') {\n h = 0;\n }\n if (typeof w === 'undefined') {\n w = 0;\n }\n\n // Adjust the cache height if needed to keep the amount of data we request inside the limits of the\n // engine. If the height*width*length exceeds the engine limit, adjust height down to the largest\n // valid value it can be.\n if (this.cacheHeight * this.cacheWidth * areas.length > this.options.maxTotalArea) {\n adjustedCacheHeight = Math.floor(this.options.maxTotalArea / (areas.length * this.cacheWidth));\n }\n\n for (i = 0; i < areas.length; ++i) {\n wiggleHeight = h !== 0 ? Math.floor(Math.max(0, adjustedCacheHeight - areas[i].qHeight) * 0.5) : 0;\n wiggleWidth = w !== 0 ? Math.floor(Math.max(0, this.cacheWidth - areas[i].qWidth) * 0.5) : 0;\n offsetTop = wiggleHeight * h - wiggleHeight;\n offsetLeft = wiggleWidth * w - wiggleWidth;\n height =\n h !== 0\n ? Math.max(0, Math.min(Math.max(areas[i].qHeight, adjustedCacheHeight), this.cubeHeight))\n : areas[i].qHeight;\n width =\n w !== 0 ? Math.max(0, Math.min(Math.max(areas[i].qWidth, this.cacheWidth), this.cubeWidth)) : areas[i].qWidth;\n top = Math.max(0, Math.min(areas[i].qTop + offsetTop, this.cubeHeight - height));\n left = Math.max(0, Math.min(areas[i].qLeft + offsetLeft, this.cubeWidth - width));\n\n cacheAreas.push({\n qTop: top,\n qHeight: height,\n qLeft: left,\n qWidth: width,\n });\n }\n\n // console.log( \"directions x:\" + w + \" y:\" + h + \", cacheAerea: t:\" + cacheAreas[0].qTop + \", l:\" + cacheAreas[0].qLeft + \", w:\" + cacheAreas[0].qWidth + \", h:\" + cacheAreas[0].qHeight );\n\n return cacheAreas;\n },\n }\n);\n\nexport default Cache;\n","import CacheCube from '@qlik/common/extra/backend-api/cache-cube';\nimport hypercubeUtil from '@qlik/common/extra/hypercube-util';\nimport CONSTANTS from './distributionplot-constants';\n\nconst DATA_PATH = CONSTANTS.DATA_PATH;\nconst HYPERCUBE_DEF_PATH = CONSTANTS.HYPERCUBE_DEF_PATH;\n\nexport default class BackednAPi {\n constructor(model) {\n this.model = model;\n this.path = `/${DATA_PATH}/${HYPERCUBE_DEF_PATH}`;\n this.cacheCube = new CacheCube(model, 'qDataPages', this.path, { mode: 'K' });\n this.cacheCube.setMethodName('getHyperCubeStackData');\n this.cacheCube.setOptions({ maxStackedValues: CONSTANTS.MAX_STACKED_VALUES });\n }\n\n setPath(path) {\n this.path = path;\n }\n\n setCacheOptions(opts) {\n this.cacheCube.setOptions(opts);\n }\n\n updateCache(layout) {\n let hyperCube;\n let hyperCubeContainerPath;\n if (this.dataPath === 'qHyperCube') {\n hyperCube = layout && layout.qHyperCube;\n } else {\n hyperCubeContainerPath = this.dataPath.slice(0, this.dataPath.indexOf('qHyperCube') - 1);\n hyperCube = layout && layout[hyperCubeContainerPath] && layout[hyperCubeContainerPath].qHyperCube;\n }\n if (!layout.qSelectionInfo.qInSelections) {\n this.cacheCube.setCubeSize({\n qcx: hyperCube.qSize.qcx,\n qcy: hypercubeUtil.getStackedCubeSizeOfMax2Dims(layout, hyperCubeContainerPath),\n });\n }\n this.backendStackThrottle.clear();\n }\n\n getData(pages, path) {\n const cacheCube = this.cacheCube;\n if (path) {\n return this.model.getHyperCubeData(path, pages);\n }\n return this.cacheCube.getData(pages).then((data) => {\n const isReduced = data[0] && data[0].qData[0] && data[0].qData[0].qSubNodes.some((node) => node.qDown > 0);\n if (isReduced) {\n cacheCube.clear();\n }\n return data;\n });\n }\n}\n","import {\n useConstraints,\n useEffect,\n useElement,\n useModel,\n usePromise,\n useRenderState,\n useSelections,\n useState,\n useStaleLayout,\n} from '@nebula.js/stardust';\nimport $ from 'jquery';\nimport locale from '@qlik/common/locale';\nimport picassoSetup from '@qlik/common/picasso/picasso-setup';\nimport useLasso from '@qlik/common/nebula/use-lasso';\nimport useResize from '@qlik/common/nebula/resize';\nimport useEnvironment from '@qlik/common/nebula/use-environment';\nimport setupSnapshot from '@qlik/common/nebula/snapshot';\nimport SnapshotAPI from '@qlik/common/extra/backend-api/snapshot-api';\n\nimport qae from './distributionplot-qae';\nimport ext from './ext';\nimport ChartView from './distributionplot-view';\nimport BackednAPI from './backend-api';\n\nfunction getBackedApi(model, layout) {\n const isSnapshot = !!layout.snapshotData;\n if (isSnapshot) {\n return new SnapshotAPI(layout, 'qUndoExclude.qHyperCube', 'qStackedDataPages');\n }\n return new BackednAPI(model);\n}\n\nexport default function supernova(env) {\n locale(env.translator);\n const picasso = picassoSetup();\n\n return {\n qae: qae(env),\n ext: ext(env),\n component() {\n const element = useElement();\n const environment = useEnvironment();\n const selections = useSelections();\n const layout = useStaleLayout();\n const model = useModel();\n const constraints = useConstraints();\n const lasso = useLasso();\n const renderState = useRenderState();\n\n const [instance, setInstance] = useState();\n\n useEffect(() => {\n const $element = $(element);\n const backendApi = getBackedApi(model, layout);\n const selectionsApi = selections;\n const view = new ChartView({\n environment,\n lasso,\n flags: env.flags,\n picasso,\n $element,\n backendApi,\n selectionsApi,\n });\n setInstance(view);\n\n return () => {\n view.destroy();\n };\n }, []);\n\n const [, error] = usePromise(async () => {\n if (!instance) {\n return;\n }\n instance.updateEnvironment(environment);\n instance.updateConstraints(constraints);\n\n const isSnapshot = !!layout.snapshotData;\n if (!isSnapshot) {\n const properties = await model.getEffectiveProperties();\n const updatingDerivedProperties = await instance.updateDerivedProperties(properties, layout);\n if (updatingDerivedProperties) {\n renderState.pending();\n return;\n }\n renderState.restore();\n }\n\n // TODO: confim selection if triggered from engine (another websocket to the same session (browser tab))\n\n await instance.updateData(layout);\n await instance.paint();\n }, [layout, instance, environment]);\n if (error) {\n throw error;\n }\n\n useResize(instance);\n setupSnapshot(instance);\n },\n };\n}\n","import all from './all.json';\n\nexport default function autoRegister(translator) {\n if (translator && translator.get && translator.add) {\n const t = 'Object.Disclaimer.LimitedData';\n const g = translator.get(t);\n // if translated string is different from its id\n // assume translations already exists for current locale\n if (g !== t) {\n return;\n }\n\n Object.keys(all).forEach((key) => {\n translator.add(all[key]);\n });\n }\n}\n","import picassojs from 'picasso.js';\nimport PicassoQ from 'picasso-plugin-q';\nimport PicassoHammer from 'picasso-plugin-hammer';\nimport Hammer from 'hammerjs';\nimport eventArea from './plugins/event-area';\nimport disclaimer from './disclaimer/disclaimer-component.jsx';\n\nexport default function setup() {\n const picasso = picassojs();\n // default to use canvas renderer\n picasso.renderer.prio(['canvas']);\n\n // TODO: investigate picasso warnings\n // if (DebugFlags.DEVELOPER) {\n // picasso.logger.level(picassojs.logger.LOG_LEVEL.WARN);\n // }\n\n picasso.use(PicassoQ);\n picasso.use(PicassoHammer(Hammer));\n picasso.use(eventArea);\n picasso.component('disclaimer', disclaimer);\n return picasso;\n}\n","import { useApp, useAppLayout, useTranslator, useOptions, useMemo, useTheme, useDeviceType } from '@nebula.js/stardust';\n\nexport default function useEnvironment() {\n const app = useApp();\n const appLayout = useAppLayout();\n const deviceType = useDeviceType();\n const options = useOptions();\n const theme = useTheme();\n const translator = useTranslator();\n\n const environment = useMemo(\n () => ({\n app,\n appLayout,\n deviceType,\n options,\n theme,\n translator,\n }),\n [app, appLayout, options.direction, options.freeResize, translator.language(), theme.name(), deviceType]\n );\n\n return environment;\n}\n","import { useAction, useConstraints, useEffect, useLayout, useState } from '@nebula.js/stardust';\nimport lassoIcon from './lasso-icon';\n\nexport default function useSelect() {\n const constraints = useConstraints();\n const [enabled, setEnabled] = useState(false);\n const [active, setActive] = useState(false);\n const isInSelections = !!useLayout().qSelectionInfo.qInSelections;\n const [lasso] = useState(() => ({\n toggle() {\n setActive((a) => !a);\n },\n }));\n\n useEffect(() => {\n if (!constraints) {\n return;\n }\n\n setEnabled(!constraints.select && !constraints.active);\n }, [constraints]);\n\n useAction(\n () => ({\n key: 'lasso',\n label: 'Lasso',\n icon: lassoIcon,\n hidden: !enabled || !isInSelections,\n active,\n action() {\n setActive((a) => !a);\n },\n }),\n [isInSelections, active, enabled]\n );\n\n lasso.enabled = () => enabled;\n lasso.active = () => active;\n return lasso;\n}\n","import { onTakeSnapshot, useImperativeHandle } from '@nebula.js/stardust';\n\nconst setupSnapshot = (chartInstance) => {\n onTakeSnapshot((layout) => {\n if (!chartInstance) {\n return undefined;\n }\n\n return chartInstance.setSnapshotData(layout);\n });\n\n useImperativeHandle(\n () => ({\n getViewState() {\n if (!chartInstance) {\n return undefined;\n }\n return chartInstance.getViewState();\n },\n }),\n [chartInstance]\n );\n};\n\nexport default setupSnapshot;\n","import { useConstraints, useOptions, usePromise, useRect } from '@nebula.js/stardust';\n\nexport default function useResize(chartInstance) {\n const rect = useRect();\n const options = useOptions();\n const constraints = useConstraints();\n\n const [, error] = usePromise(async () => {\n if (!chartInstance) {\n return;\n }\n chartInstance.updateConstraints(constraints);\n chartInstance.options = options;\n await chartInstance.resize();\n }, [rect.width, rect.height]);\n\n if (error) {\n throw error;\n }\n}\n"],"names":["init","Picasso","component","mounted","element","classList","add","style","pointerEvents","zIndex","render","disclaimer","renderer","disableTriggers","preferredSize","h","settings","label","rtl","layout","dock","this","dir","rect","display","justifyContent","alignItems","color","fontStyle","fontSize","width","height","transform","transformOrigin","textAlign","getStyle","modifiedLabel","spanStyle","overflow","whiteSpace","textOverflow","ref","alignToRef","title","lassoIcon","shapes","type","attrs","d","e","t","n","Object","keys","getOwnPropertySymbols","r","filter","getOwnPropertyDescriptor","enumerable","push","apply","arguments","length","forEach","a","getOwnPropertyDescriptors","defineProperties","defineProperty","Symbol","iterator","constructor","prototype","value","configurable","writable","c","Array","isArray","f","from","toString","call","slice","name","test","s","TypeError","hasOwnProperty","p","v","m","y","g","newValue","b","x","o","i","u","l","q","range","resources","data","theme","palette","items","map","valueAccessor","w","row","M","byRow","byElemNo","input","persistent","hc","qDimensionInfo","activeDimensionIndex","qSize","qcy","qDataPages","qArea","qHeight","raw","qCardinal","pic","extract","field","key","trackBy","k","byDimDef","coloring","colorMapRef","C","fields","id","S","D","create","I","E","O","A","N","P","L","RegExp","T","j","F","R","H","V","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","z","rgb","formatHex","_","formatRgb","B","trim","toLowerCase","exec","parseInt","Y","W","U","Z","NaN","K","opacity","G","$","J","X","isNaN","Math","max","min","round","ee","Q","te","copy","assign","displayable","hex","formatHsl","brighter","pow","darker","ne","PI","re","oe","ie","ae","ue","le","he","me","de","ce","se","fe","pe","atan2","sqrt","cos","sin","ye","be","xe","ge","gamma","qe","we","limits","limitType","colors","resolveUIColor","concat","breakTypes","indexOf","domain","Me","floor","Number","ke","mode","fieldType","reverse","reverseScheme","invalid","qMode","qStackedDataPages","qTreeDataPages","qGroupSize","props","num","exclude","autoMinMax","measureMin","measureMax","measureScheme","palettes","quant","getDataColorScales","some","Ce","activeMeasureIndex","matchMeasure","Se","cm","defaults","index","on","primary","paletteColor","startsWith","nil","De","measureOverrides","every","Ie","splice","Oe","auto","getCField","byMeasureDef","labelExpRef","altLabel","useMeasureGradient","gradient","auxiliary","getCDef","getCByField","getPersistence","qError","qHasOtherValues","isFieldLocked","qLocked","dimensionScheme","categorical","useDimColVal","translator","qFallbackTitle","colorExpression","isFinite","qMin","qMax","expressionIsColor","expressionLabel","get","useBaseColors","qMeasureInfo","baseColor","getDataColorPalettes","explicit","singleColor","Ee","Ae","colorProps","getDimensionColorMap","Promise","reject","getMeasure","getAttributeDimension","set","Error","picasso","config","localeInfo","getDataColorPickerPalettes","getAuxiliaryData","resolve","catch","replace","all","getAuxiliarySettings","then","others","colorMap","qInterColumnSortOrder","legendDataset","external","nul","oth","usePal","pal","autoFill","single","text","uiPalette","getDataColorSpecials","Ne","measureGradient","legendDataPage","dimValsData","Pe","isHandled","Le","app","snapshotData","content","chartData","getObject","getLayout","Te","je","model","session","getHyperCubeData","qLeft","qTop","qWidth","Fe","source","expando","reduce","qText","Re","datum","He","isNull","Ve","ze","getBoundingClientRect","_e","show","Be","styleReference","chart","legendProps","minimumLayoutMode","childNodes","showTitle","wordBreak","maxLines","lineHeight","fill","fontFamily","Ye","viewState","scaleKey","scales","up","down","left","right","scale","scrollOffset","size","direction","horizontal","item","navigation","disabled","button","textTransform","verticalAlign","textRendering","margin","xmlns","viewBox","brush","consume","context","inactive","major","tick","anchor","padding","parseFloat","Ue","navigationDisabled","requireFailure","recognizeWith","actions","options","event","interval","pointers","enable","interact","enabled","componentsFromPoint","center","srcEvent","target","hasAttribute","nodeName","events","legendtap","preventDefault","getAttribute","emit","eventName","threshold","started","interactions","components","Ke","join","Ge","getSnapshotData","console","warn","auxiliarySettings","settingsForMeasure","isSelectionLocked","isMeasureSelectionLocked","metric","override","qElemNumber","amend","othersLabel","invert","includes","datumProps","addMeasureIx","qNum","legend","We","$e","qHyperCube","Xe","Je","Ze","Qe","ft","split","dt","St","Dt","It","Et","Zt","children","Qt","rn","en","pop","parent","depth","eachBefore","nn","tn","count","eachAfter","each","sum","sort","path","ancestors","descendants","leaves","links","In","En","On","exports","search","substring","charAt","match","toFixed","lastIndexOf","An","Nn","Pn","Ln","Tn","jn","Fn","Rn","Hn","Vn","zn","_n","toUpperCase","Yn","Un","pattern","abbreviate","substr","prefix","postfix","maxPrecision","percentage","numericPattern","numericRegex","groupTemp","decTemp","temp","thousandDelimiter","decimalDelimiter","patternSeparator","abbreviations","qNumericalAbbreviation","prepare","subtype","formatValue","_prepared","positive","isFunctional","negative","zero","String","toExponential","Bn","abs","toPrecision","ceil","log","$n","Qn","er","tr","nr","rr","or","qCalendarStrings","qLongDayNames","qDayNames","qLongMonthNames","qMonthNames","locale_days","locale_days_abbr","locale_months","locale_months_abbr","qTimeFmt","qDateFmt","qTimestampFmt","Date","getUTCHours","getUTCDay","year","getUTCFullYear","month","getUTCMonth","day","date","getUTCDate","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","UTC","getTime","getDay","ir","YY","YYY","def","MM","MMM","WW","WWW","fnTest","Class","Rect","extend","className","proto","_super","fn","tmp","ret","ctor","Function","clone","setLTRB","equal","combineWith","getRight","getBottom","intersectsWith","intersectsRect","intersection","strict","union","pointInside","rectInside","points","getPoints","getCenterPoint","getBoundingRect","dw","dh","hasNaN","areaRect","pageRect","CubeSlicer","pages","areas","area","getPage","storage","coverage","cover","idx","_extract","qMatrix","destroy","clear","isEmpty","store","containsArea","contains","fromPage","matrix","deepCount","addNode","node","slicedTrunk","newNode","getSlicedTreeRecursive","offset","subNodes","qixNode","subSlicedTree","qUp","qDown","qSubNodes","undefined","getSlicedTree","PivotCubeSlicer","requestedAreas","qData","prepareCubeSlicer","visualization","responseProperty","slicer","object","origDataPages","page","SnapshotApi","dataPath","getData","rects","sliceDataPages","prop","getValue","setCacheOptions","updateCache","properties","version","qHyperCubeDef","qDimensions","qMeasures","qAlwaysFullyExpanded","qSuppressZero","qSuppressMissing","box","point","dataPoint","bubbleScales","displacement","dimensionAxis","measureAxis","minMax","spacing","gridlines","orientation","presentation","visibleComponents","refLine","refLines","sorting","autoSort","showTitles","subtitle","footnote","fixInterColumnSortOrder","setColorVars","env","dimensions","description","translationProperty","added","dimension","moved","removed","measures","window","toStringTag","__esModule","bind","default","updated","previous","qLibraryId","qInfo","qId","dimensionList","info","qTags","qName","qDerivedFieldData","qDerivedFieldLists","qFieldDefs","qDef","fieldList","fullAccumulation","fullRange","crossAllDimensions","modifier","dimensionAndFieldList","funcComp","valueComp","showExcludedValues","isFullRange","getNumDimensions","getExpressionWithExcludedComp","expression","treatMissingAsNull","getRowNoComp","getNumStepComp","steps","getAboveCompPrefix","getAboveCompSuffix","getAboveComp","getFunctionPrefix","getFunctionSuffix","getRangeComp","getAggrComp","getExcludedComp","needDimension","primaryDimension","accumulationDimension","getDimComp","qSortCriterias","qSortByExpression","qSortByNumeric","qSortByAscii","simplifyExpression","extractInputExpression","outputExpression","initModifier","isNumeric","isApplicable","minDimensions","maxDimensions","getExpressionWithMarkers","canExtract","getDimDefWithWrapper","getFieldWithWrapper","generate","val","op","createPatch","updateObject","qOp","qValue","JSON","stringify","qPath","applyPatches","translationKey","generateExpression","numDimensions","enableTotalsFunction","propertyPanelDef","translation","refFn","primaryDimensionTooltip","schemaIgnore","defaultValue","qGroupFallbackTitles","crossAllDimensionsTooltip","rangeFull","rangeCustom","rangeSteps","change","ext","support","modifiers","nullSuppression","showNull","inverted","CURRENT_SELECTION","SELECT_FIELD_VALUE","DISREGARD_SELECTION","ONE_DIMENSION","ALL_DIMENSIOANS","DISREGARD_ALL_DIMENSIONS","dimensionalScopeOneDimension","tooltipTranslation","dimensionalScopeOneDimensionTooltip","dimensionalScopeAllDimensions","dimensionalScopeAllDimensionsTooltip","dimensionalScopeDisregardAllDimensions","dimensionalScopeDisregardAllDimensionsTooltip","selectionScope","selectionScopeCurrentSelection","selectionScopeSpecificValue","selectionScopeTotal","dimensionalScope","updateModifier","modifierSelectionScope","modifierSelectionScopeTooltip","dropdownOnly","getFieldList","modifierDimensionalScope","modifierDimensionalScopeTooltip","supportTooltip","getDisregardSelectionComp","getFieldSelectionComp","getTotalComp","getSelectedDimComp","getExpression","getExpressionRef","getLibraryIdRef","getLibraryId","getLabelRef","getLabelExpressionRef","initBase","isValid","restoreBase","base","accumulation","movingAverage","difference","normalization","applyModifiers","cleanUpMeasure","masterItemSubscriber","unsubscribe","hasActiveModifiers","getActiveModifier","isSupportedModifiers","isApplicableSupportedModifiers","modifierTypes","measureBase","limitedSorting","ifEnableTotalsFunction","ve","isSnapshot","masterItem","isFirstTime","lastReloadTime","measure","getEffectiveProperties","libraryIds","oldProperties","runUpdateIfChange","libraryItemsProps","newProperties","libraryId","qMeasure","qLabel","qLabelExpression","quarantine","qNumFormat","isCustomFormatted","qAggrFunc","getDimensionList","measureLibraryIds","dimensionLibraryIds","getProperties","getDimension","qHasSoftPatches","qExtendsId","setProperties","callback","listener","layoutSubscribe","subscribe","dispose","clearUndoBuffer","charCodeAt","fromCharCode","setValue","isAtomicValue","generateId","random","isOrderedSubset","indexAdded","indexRemoved","findItemByPropertyValue","findIndexByPropertyValue","addDimensions","exportFormat","excludedDimensions","addMeasures","excludedMeasures","setInterColumnSortOrder","interColumnSortOrder","copyProperties","updateLayoutExclude","qLayoutExclude","changed","to","storeMeasuresModifiers","parse","qv","importCommonProperties","copyPropertyIfExist","copyPropertyOrSetDefault","getDefaultDimension","cId","qNullSuppression","qOtherLabel","qOtherTotalSpec","qOtherLimitMode","qOtherMode","qOtherSortMode","qSuppressOther","getDefaultMeasure","numFormatFromTemplate","qTrendLines","newHyperCubeDef","defaultDimension","maxMeasures","minMeasures","defaultMeasure","getMaxMinDimensionMeasure","dataDefinition","createNewProperties","initialProperties","hypercubePath","shouldInitLayoutExclude","initLayoutExclude","updateDimensionsOnAdded","updateMeasuresOnAdded","restoreMeasuresModifiers","exportProperties","propertyTree","viewDataMode","qProperty","filters","qContextSetExpression","qDynamicScript","importProperties","defaultPropertyValues","extension","supportedFilters","isHCModifierSupported","qChildren","cellBackgroundColor","cellForegroundColor","colorByAlternative","colorByExpression","tooltip","urlLabel","url","qAttribute","moveByIdFromGroup","IDMAP","CELL_BACKGROUND_COLOR","CELL_FOREGROUND_COLOR","COLOR_BY_ALTERNATIVE","COLOR_BY_EXPRESSION","TOOLTIP","CELL_LINK_LABEL","CELL_LINK_URL","getNumMeasures","wrapFieldName","getItemLabel","colorModeOptions","multiColor","scatterplot","piechart","linechart","distributionplot","qStringExpression","qExpr","isDimension","attributeExpression","qExpression","qSortBy","qAttributeDimensions","qAttributeExpressions","qFieldLabels","useMasterNumberFormat","formatting","changeProperty","getCanColorBy","byDimension","byMeasure","byMultiple","byExpression","shouldUpdateColorBy","canColorBy","autoColor","colorMode","updateColorBy","deleteTotalMode","qTotalMode","shouldAddColorByExpression","addColorByExpression","switchToAutoColor","shouldSwitchToColorPersistent","handleAutoMinMax","handleMeasuresAxis","measureType","measureAxes","series","axis","line","marker","bar","total","supportedAutoMinMax","arrayPath","quarantineName","arrayName","itemPath","unquarantine","quarantineAlternative","unquarantineAlternative","hypercube","colorChart","axisChart","quarantineProperty","unquarantineProperty","quarantineArrayProp","unquarantineArrayProp","conditionalColoring","conditionalShow","COMMON_COLOR_PROPS","move","list","distributionPlotColorBy","importColors","qValueExpression","exportColors","propTree","conversion","qae","targets","ExpressionWrapper","wrapExpression","result","ExpressionReplacer","replaceExpressionTokens","tokenMappings","tokenIdentifiers","identifiers","start","end","tokenExpression","tokenString","returnExpression","createRegExp","string","isGlobal","isGrouped","escapedString","regexpString","ExpressionGenerator","template","mappings","explicitMappings","mapping","wrap","variations","variation","variationExpressions","assembleVariation","regExp","stringArray","HyperCubeGenerator","generateHyperCubeDef","hyperCubeDef","hyperCube","knownMappings","dimensionIndices","measureIndices","dfds","returnPromise","spliceIdentifiedMatches","getMappingRegExp","getExpressionFromDimension","getExpressionFromMeasure","getKnownMappings","allMappings","generatedHyperCubeDef","dimensionTemplate","measureTemplate","getAllHyperCubeExpressions","async","getExpressionFromLibraryItem","drillIndex","qGroupPos","qDim","matches","enumConvertFunctions","isReverseSortFn","getFn","reverseSortMultiplier","setFn","reverseSort","convertFunctions","booleanConvertFunctions","defaultSort","intValue","invertedEnumConvertFunctions","sortDropdownOptions","getSortByPropertyDefinition","convertFuncs","toggled","order","itemData","sortOrderBuilder","state","ascii","numeric","cFuncs","propDef","expressionType","frequency","CONSTANTS","DATA_PATH","HYPERCUBE_DEF_PATH","HYPERCUBE_PATH","CHART_ID","AUTO_SORT","SORT_CRITERIA","SORTING_ELEMENT_ID","SORTING_ELEMENT_MIN_ID","SORTING_ELEMENT_MAX_ID","SORTING_EXPRESSION","MAX_GLYPH_COUNT","MAX_STACKED_VALUES","HORIZONTAL","BOX_PADDING","POINT_BANDWIDTH_BASE_RATIO","MAX_POINT_BASE_SIZE_PX","MIN_POINT_PIXELS","JITTER_PARAMETER","BUBBLE_SCALES_MAX","hasMultipleDimensions","container","freeze","distplotUtils","getOuterDimensionCardinality","isAutoSort","isSortByExpression","isSortByNumeric","isSortByAscii","reverseMap","attExpUtil","getById","attributeExpressions","idProp","aE","getIndexById","moveById","fromArray","toArray","expsIndex","targetIndex","attribExps","moveAllById","fromAttribExps","obj","toAttribExps","newAttribExps","fromObj","toObj","fromGroup","attributeProp","clean","LogicHelper","getColorByDefinition","columnType","isAttribute","hasLabelExpression","hasLabel","NumberFormatUtil","useLocalFormat","_formatting$quarantin","_formatting$quarantin2","isUsingMasterNumberFormat","_formatting$quarantin3","_formatting$quarantin4","baseNotSupported","baseDimSupported","AdvancedColorer","isSupported","isDimSupported","colorBy","colorByUpdater","markerSettings","srcPath","updateColorDef","updateHypercubeAttributes","dim","attrDim","colorByDefinition","setAltLabel","setColorByPropertyDef","attributeExpsUtil","exclDimensions","resolveColorByPropertyDef","clearColorByItem","cleanAttributeByType","attribute","keepMode","itemType","isDim","customLabel","inIndex","mea","isExpression","getBaseColor","isDimensionLibraryItem","isMeasureLibraryItem","isColorAuto","isColorByDimension","isColorByMeasure","propsLogic","measuresHasBaseColors","handler","dimensionsHasBaseColors","onGlobalChangeColors","onChangeCalcCond","_data$qUndoExclude","baseCube","generatedCube","qUndoExclude","qCalcCond","qCalcCondition","isColorByExpression","isColorBySingle","showLegend","showColorByLabel","isDimAndNotLibraryItem","isMeasureAndNotLibraryItem","hasActiveDimensionIndex","hasDimValueColors","activeDimId","_handler$layout$qHype","_handler$layout$qHype2","_handler$layout$qHype3","hasValueColors","Sorter","getSettingsFn","getElementsFn","getSettings","getElements","applyAutoSorting","sortCriterias","sortCriteria","SORT_BY_EXPRESSION","SORT_BY_ASCII","SORT_BY_NUMERIC","SORT_BY_LOAD_ORDER","defaultElement","getDefaultElement","exp","elements","matchingElements","isDefault","applyDefaultCustomSorting","chartSorting","elementId","qSortByLoadOrder","applyCustomSorting","sortByExpression","sortByAscii","sortByNumeric","sortByLoadOrder","message","throwError","getMatchingElement","sorterFactory","elementsRetriever","sorterFacade","applySorting","sorter","hasCachedSortCriteria","SORTER_BASE_SORTING_SETTINGS","ASCII","ELEMENT","SORTING_SETTINGS","DIST_MAX","BASE_SORTING_SETTINGS","settingsRetriever","SETTINGS","getFractileExpression","percentile","innerDim","outerDim","innerMeasureString","fnName","wrappedInnerDim","wrappedOuterDim","distplotSortingElementsRetriever","getElementIds","distributionPlotConstants","measureExpressions","dimensionExpressions","innerDimString","outerDimString","expMin","expMax","setSorting","expressions","outerDimension","distplotSorter","exps","validate","HyperCubeDefGenerator","SORT_BY_EXPRESSION_REF","expressionSortOrderer","updateSortOrder","prevProperties","currentSortByExpression","currentSortingElement","prevSortingElement","currentSortingElementIsMax","wasChangedFromMaxToMin","wasChangedFromMinToMax","prevSortByExpression","sortByExpressionToggledOnWithMaxElementAndAscendingSet","getStylingPanelDefinition","bkgOptionsEnabled","chartTitle","useGeneral","useBackground","persistentColorsShowFunc","propertyDefinition","flags","anything","sense","stylingPanelEnabled","isEnabled","lookupColorInPalette","pointColor","grouped","boxColor","dualOutput","general","showDisclaimer","styleEditor","icon","labelPlacement","showDistBackground","gridLines","snapshot","tid","showGridLines","gridSpacing","bubbleScaleItems","step","jitter","uses","startAt","readOnly","getter","definition","args","setter","classification","section","tags","exclusive","dimensionAxisTitle","othersGroup","updateAltLabel","byDefRef","byDef","getLabel","_data$color$point$byD","_data$color$point$byD4","_data$color$point$byD5","_data$color$point$byD2","_data$color$point$byD3","_args$handler$layout$","_args$handler$layout$2","_args$handler$layout$3","libId","qAttrDimInfo","byDimensionOptions","_data$qHyperCubeDef","_data$qHyperCubeDef$q","_data$qHyperCubeDef2","_data$color$point$byD6","_data$color","_data$color$point","_data$color$point$byD7","showPointPaletteColor","useMeasureBaseColor","useDimensionBaseColor","simpleColors","simpleItems","undefinedValue","globalChange","colorByDimension","baseColors","useBaseColor","_data$color$point$byD8","_data$color$point2","_data$color$point2$by","colorsAndLegend","colorByMeasure","colorByLabel","measureColor","persistentColors","colorSchemeMeasure","colorSchemeDimension","customRange","simpleLabels","labels","header","_props$qHyperCubeDef$","_props$qHyperCubeDef$2","dimensionTitle","_props$qHyperCubeDef$3","_props$qHyperCubeDef$4","measureTitle","_props$qHyperCubeDef$5","_props$qHyperCubeDef$6","addons","dataHandling","calcCond","colorBackground","defaultExpressionItem","expressionItem","sortByElement","expressionRef","elementRef","reset","simpleSorting","sortCriteriasRef","sortingItems","defaultSortMessage","noData","explorePropertiesSortingDefinitionBuilder","buildDefinition","baseHyperCubeDefPath","chartSortingPath","sortedDimensionPath","getElementIdsFn","dimensionSortCriteriaPath","sortingDefinition","sortingOptions","diffs","setPropertyValue","currentChartSortProperty","getCurrentSortPropertyInfo","elementIds","cleanChartSorting","currentDimensionSortProperty","currentSortPropertyInfo","sortingDefinitionBuilder","colorScheme","sequential","_env$anything","pp","softDefinition","cssScaling","export","exportData","sharing","viewData","usingDerivedProperties","colorByPath","onSoftPropertyChange","nextProperties","mapProperties","getDefaultDimensionProperties","getDefaultMeasureProperties","hyperCubePath","idGen","getChar","charCode","base62","chr","SCROLLBAR_KEY","getAxisDock","isRtl","getYAxisDock","getXAxisDock","yDockNearFar","axisDockUtil","getOppositeAxisDock","rangesOfLRgExp","rangesOfRRgExp","rangesOfALRgExp","isLtrChar","isRtlChar","rtlUtils","lrm","rlm","detectTextDirection","refLineUtil","lineSettings","_options$style","defaultSettings","stroke","getColorPickerColor","strokeDasharray","lineType","lineLabelSettings","chartID","labelColor","labelFontSize","labelFontFamily","align","vAlign","maxWidthPx","isVisible","refLineExpr","getRefLineTitle","valueString","showValue","showLabel","RtlUtil","constants","SHOW_AXIS_LABELS_OPTIONS","SHOW_TITLE_OPTIONS","VERTICAL","LAYOUTSETTINGS","lasso","displayOrder","rangeDim","rangeMeasure","rangeMinor","scrollBar","prioOrder","measureAxisTitle","refLinesLabels","DEFAULT_CHART_ORIENTATION","DimensionMeasureChart","chartBuilder","opts","measureAxisProperties","dimensionAxisProperties","chartOrientation","isChartHorizontal","measureDirection","dimensionDirection","includeMeasureAxisComponent","includeMeasureAxisTitleComponent","measureTitleText","includeDimensionAxisComponent","includeDimensionAxis","includeDimensionAxisTitleComponent","dimensionTitleText","includeGridlines","includeRefLines","interactionActions","measureAxisSettings","forceBounds","showBounds","measureAxisOptions","getMeasureAxisOptions","addComponent","addMeasureAxisComponent","measureTitleSettings","getMeasureAxisTitleOptions","addMeasureAxisTitleComponent","measureScaleSettings","measureScaleOptions","measureSource","ticks","distance","addScale","addMeasureScale","dimensionAxisSettings","dimensionAxisOptions","getDimensionAxisOptions","addDimensionAxisComponent","dimensionAxisTitleSettings","dimensionAxisTitleOptions","getDimensionAxisTitleOptions","addDimensionAxisTitleComponent","dimensionScaleOptions","dimensionSource","dimensionScaleSettings","addDimensionScale","gridlinesOptions","gridlinesSettings","minorTicks","addGridlinesComponent","hasNavigation","scroll","viewSize","scrollSettings","scrollbarOptions","isHorizontal","scrollBarSettings","addInteractionActions","isEnabledFn","targetIsScrollbar","manager","startPoint","deltaX","deltaY","tap","pan","panstart","panend","pancancel","getScrollActions","isNavigationEnabledFn","addScrollbarComponent","axisDock","refLinesSettings","oob","lines","refLinesLabelsSettings","require","measureText","formatter","labelWidths","formattedValue","minimumText","wanted","required","maxLabelWidth","labelPadding","expressionValue","lineOptions","addRefLineComponent","enableLasso","selectionsEnabled","lassoOptions","brushKey","brushComponents","brushData","addLassoComponent","enableDimRange","rangeDimSettings","rangeDimOptions","brushAxis","brushArea","brushScale","addRangeDimComponent","dimRange","enableMeasureRange","rangeMeasureSettings","rangeMeasureOptions","multiple","addRangeMeasureComponent","measureRange","enableAreaRange","rangeMinorSettings","chartInstance","addRangeAreaComponent","areaRange","brushActions","addInteraction","gestures","addInteractionComponent","axisLineStroke","titleFontSize","titleFill","labelsFill","labelsFontSize","titleFontFamily","labelsFontFamily","trigger","strokeWidth","tiltAngle","maxEdgeBleed","maxSize","axisSettings","active","measureScale","expand","scaleSettings","dimensionScale","xAxis","yAxis","xAxisTitle","yAxisTitle","rangeUtil","getBublesAlign","isAlignStart","getDock","dockTargets","dockT","layoutModes","SPARK","XSMALL","SMALL","MEDIUM","FULL","LayoutModes","dataset","getLayoutModeKeys","layoutModeKeys","modeKey","directions","createComponent","minor","boxMarker","pointMarker","backgroundColor","scrollbar","comp","contexts","fillActive","bubbles","isStartBorder","binStart","binEnd","action","rangeArea","chartHeight","chartWidth","itemFill","itemFontSize","vertical","class","top","bottom","shape","categoricalLegend","tickFill","tickFontSize","tickFontFamily","getAlignValue","word","sequentialLegend","gridLine","interaction","oobColor","oobBackgroundColor","eventArea","sources","selector","strategy","placements","position","justify","ChartBuilder","dockLayout","getComponent","addPreset","ChartPresets","validateComponentKeys","msg","ALIGNMENT","CENTER","BOTTOM","DisclaimersConfig","DISCLAIMERS","alignment","util","getNoDataExistAttribute","qcx","getLimitedDataAttribute","maxNbrOfDimensions","stackedDataPages","explicitLimitedData","paging","getNegativeOrZeroValuesAttribute","supportNegative","getOnlyNegativeOrZeroValuesAttribute","getOnlyNanDataAttribute","explicitOnlyNanData","getDataRangeIncludingZeroAttribute","supportRangeOverZero","measureInfo","len","explicitMinOn","explicitMaxOn","MAX_VALUE","hasDataRangeIncludingZero","applyAttributes","dataAttributes","NoDataExist","RequireNumericDimension","explicitRequireNumericDimension","LimitedData","NegativeOrZeroValues","OnlyNegativeOrZeroValues","OnlyNanData","DataRangeIncludingZero","Helper","disclaimersConfig","supportedDisclaimers","Disclaimer","environment","isValidAndSupported","isAnyValidDisclaimer","self","getMessage","str","ERRORS","SET","DISPLAY","_applyDefaultSupport","supported","getComponentSettings","_this$environment","_this$environment$opt","vizAttributes","helper","DisclaimerComponentHelper","attributes","AttributesUtil","ChartView","$element","backendApi","selectionsApi","_selectionsApi","_on","_disclaimer","_dataPaths","picassoElement","dataAreaElem","updateEnvironment","setDataPaths","dataPaths","dataPagesPath","maxHeight","hasValidData","paint","_disclaimerComponent$","getDisclaimerAttributes","disclaimerComponent","isSuppressingDisc","chartSettings","createChartSettings","errorMsg","error","updateChart","_painted","resize","addSnapshotChartSettings","freeResize","logicalSize","preserveAspectRatio","updateData","_destroyed","permissions","isPartialData","_this$environment$app","_this$environment$app2","appLayout","qLocaleInfo","colorService","update","partialData","setAttribute","off","getViewState","isLassoDisabled","setSnapshotData","snapshotLayout","hashFromString","hash","generateHash","hashData","updateHash","hashCode","hashBuilder","getDefaultHashDataForHyperCube","getMeasureDataFromLibraryItem","getMeasureExpressions","drillLevel","getDrillIndices","getDimensionExpressions","dimensionInfo","qGroupFieldDefs","getDimensions","JSONPatch","originalExtend","isObject","isUndef","isSpecialProperty","isFunction","getParent","parts","numPart","part","compare","original","newData","basePath","patches","generateValue","oldVal","tmpPath","newA","oldA","tmpIdx","findIndex","patchArray","patch","newValues","oldParent","SoftPropertyHandler","_model","setModel","saveSoftProperties","prevEffectiveProperties","effectiveProperties","propertiesPromise","effectivePromise","effective","clearSoftPatches","hardPropertiesChecker","canModifyHardProperties","qMeta","privileges","Save","saveDerivedProperties","InputValidator","generateDerivedProperties","DerivedProperties","_generationInProgress","isDerivedUpToDate","Hash","updateDerivedProperties","layoutIsUpdated","addDefaultHyperCubeHash","HashBuilder","hasOwn","toStr","gOPD","arr","isPlainObject","hasOwnConstructor","hasIsPrototypeOf","setProperty","getProperty","src","copyIsArray","deep","getFieldAccessor","deps","cache","origin","fieldIdx","attrIdx","attrDimIdx","wrappedFields","attrDims","instance","attrExps","qAttrDims","qValues","qAttrExps","datumExtract","propCfg","cell","_ref","cellToValue","_ref2","mainCell","rowIdx","sourceKey","targetProp","propCell","propCellFn","qRow","cfgs","dataItems","cube","_typeof","normalizeConfig","main","propsArr","track","trackType","tracker","trackedItems","fieldValues","fieldLabels","cfg","collect","node_count","node_each","current","next","node_eachBefore","nodes","node_eachAfter","node_sum","node_sort","node_path","ancestor","leastCommonAncestor","aNodes","bNodes","node_ancestors","node_descendants","node_leaves","node_links","root","hierarchy","child","childs","Node","valued","defaultChildren","computeHeight","node_copy","copyData","keyPrefix","preroot","ambiguous","defaultId","defaultParentId","parentId","stratify","nodeId","nodeKey","nodeByKey","subpath","carr","_toConsumableArray","flattenTree","arrIndexAtTargetDepth","treeAccessor","sourceDepth","targetDepth","findField","query","allFields","DIM_RX","M_RX","ATTR_EXPR_RX","ATTR_DIM_RX","getColumnOrder","qColumnOrder","getDimensionColumnOrder","ii","getFieldDepth","isFieldDimension","pseudoMeasureIndex","measureIdx","remainder","treeOrder","qEffectiveInterColumnSortOrder","columnOrder","fieldDepth","sourceDepthObject","targetDepthObject","valueFn","attrFn","nodeFn","_data$qAttrDims","_data$qAttrExps","doIt","_ref3","pCfg","coll","collStr","_loop","cells","accessor","attrAccessor","reduceLabel","getHierarchy","rootPath","picker","tree","getHierarchyForSMode","__root","__id","isNew","_cell$qElemNumber","qElemNo","_objectSpread","__parent","attachPropsAccessors","_ref4","itemDepthObject","accessors","augment","propDefs","_util$normalizeConfig","replicaDescendants","isTree","_getFieldAccessor","mapped","module","escapeRegExp","SIprefixes","radix","oct","dec","bin","rom","functional","prec","formatRadix","fradix","decimal","formatRoman","nThousands","numeral","formatFunctional","escape","justStr","thousand","getAbbreviations","listSeparator","abbreviation","abbreviationTuple","preparePattern","lastPart","regex","matchPrecisionResult","splitPattern","NumberFormatter","_classCallCheck","_createClass","prep","exponent","absValue","decimalPartPattern","abbr","sciValue","lowerAbbreviation","suggestedAbbrExponent","abbrArray","upperAbbreviation","wholePart","wholePartPattern","nDecimals","nZeroes","decimalPart","numberFormatFactory","_len","_key","memoize","func","cacher","_opts$size","_opts$multipleArgumen","multipleArguments","_opts$toKey","toKey","arg","counter","fifo","has","qType","qformat","memoized","format","TYPES","AUTO","INTEGER","NUMBER","FIXED_TO","MONEY","DATE","TIME","DATE_TIME","INTERVAL","DAYS","DAYS_ABBR","MONTHS","MONTHS_ABBR","SECONDS_PER_DAY","pad","parseDate","twelveFormat","getRemainder","parseIntervalDays","days","ms","parseInterval","units","someT","getMasks","inst","DateFormatter","qtype","_patternMap","_defineProperty","parsedDate","hasTwelveFlag","masks","masksArr","mask","dateTimeRegex","submask","dateFormatFactory","MS_PER_DAY","QlikTimeToDate","locale","li","nqt","createFromMetaInfo","meta","timeFormat","qFmt","qThousandSep","qDecimalSep","isAuto","qIsAutoFormat","qThou","qDec","numberFormat","qField","values","fieldExtractor","sourceField","labelFn","createFields","parentKey","fieldKey","_cache$wrappedFields","_cache$wrappedFields2","_cache$allFields","_ref$config","virtualFields","extractionConfig","extractor","hierarchyConfig","_cache","qNodesOnDim","TExtractor","augmentTree","SExtractor","dimAcc","measAcc","traverse","ff","LAYOUT_TO_PROP","HC_RX","TD_RX","SHORTEN_HC","SHORTEN_TD","extractFieldFromId","dimensionIdx","pathToCube","shortenizer","shortenPath","attrCol","qAttrExprInfo","meas","_slicedToArray","qBrush","_opts$orMode","byCells","primarySource","selections","methods","isActive","hasValues","brushes","ranges","multiRangeSelectTreeDataValues","qMeasureIx","qDimensionIx","qRange","qMinInclEq","qMaxInclEq","rangeSelectHyperCubeValues","selectHyperCubeContinuousRange","qDimIx","noOfLeftDims","qNoOfLeftDims","dimInterColSortIdx","selectPivotCells","validValues","qCol","selectHyperCubeCells","cols","params","method","orMode","initialize","qBrushHelper","selectionUtils","brushInterceptors","DIM_VALUE_NULL","DIM_VALUE_TOTAL","brushOnlyOne","activeBrushes","toggleOff","filterValues","lockedFields","lockedItems","brushItems","splitIndex","datasetName","fieldName","itemsAreLocked","DEFAULT_OPTIONS","startOnEmptySelection","Selections","selectPaths","selectionContexts","selectionsApiRestoreHelper","propertiesToRestore","paths","begin","PicassoQ","select","toggleValues","filterResult","itms","Actions","lastShift","shiftToggle","keyCode","shiftKey","toggle","confirmOrCancelSelection","cancel","confirm","register","listeners","sleep","deregister","removeListener","dependentComponents","setUp","tearDown","setUpBrush","selectionTrigger","ctrlKey","isSingleSelect","globalPropagation","selectionConsumer","createContext","fieldsLocked","dimFields","areAllFieldsLocked","getFieldsLocked","intercept","setUpStart","setUpDone","removeInterceptor","pauseEngineCalls","resumeEngineCalls","run","document","addEventListener","onDeactivated","removeEventListener","unbindDeactivated","onActivated","unbindActivated","isOn","lassoState","allFieldsLocked","NoSelections","SelectionHandler","onComponentChecker","isOnComponentForRange","selectionGesture","isOnComponentForLasso","gesturesParams","lassoGesture","componentKey","isOnComponentForNavBtn","legendBrushKey","navBtnGesture","callLassoGesture","gesturesFns","Hammer","DIRECTION_ALL","lassoing","isSelectionEnabled","hitComp","handlers","selectionHandler","scrollHandler","lassostart","switchTo","lassoBrushKey","clientX","clientY","doEmit","lassomove","lassoend","lassocancel","measureRangeGesture","callMeasureRangeGesture","activeRangeBrush","dimRangeBrushKey","DIRECTION_HORIZONTAL","DIRECTION_VERTICAL","rangeSelStatus","isOpenMea","measureSelecting","gesture","measureRangeBrushKey","measurerangestart","measurerangemove","measurerangeend","measurerangecancel","getAxisOrientation","areaRangeGesture","callAreaRangeGesture","isOpenDim","minoring","arearangestart","areaBrushKey","arearangemove","arearangeend","arearangecancel","dimensionRangeGesture","callDimensionRangeGesture","dimAxis","majoring","majorrangestart","majorrangemove","majorrangeend","majorrangecancel","dragGesture","callDragGesture","hasSelections","dragPoint","dragging","isNavigationEnabled","getBrushConfig","dragstart","getItemSize","getScrollApi","dragmove","dragend","dragcancel","callNavBtnGesture","navBtnTap","btn","attr","DependentInteractions$1","clearKey","activeChart","newType","cont","onScrollUpdate","rangeClearTap","unshift","TooltipActions","tooltipKey","hasOpen","closeTooltip","isOpen","getAffectedShapes","openTooltip","toggleInterceptor","check","TooltipAction","formatMeasureValue","measureContent","createContent","tooltipInfo","uniqueShapes","numberInExcess","numItems","localContent","rows","labelData","refPaths","isNullValue","currentNode","headerResolver","measureRows","measureRow","rowData","rowResolver","colorByData","getColorByDimData","rowCount","extractContent","renderSettings","_tooltipInfo$colorSer","_tooltipInfo$colorSer2","_shape$attrs","colorData","colorSettings","ids","elemNoObj","othersIndex","getOthersIndex","TOOLTIP_CONTAINER_ID","TOOLTIP_CONTAINER_SELECTOR","appendTooltipContainer","querySelector","createElement","body","appendChild","beforeMount","beforeUpdate","destroyed","elm","parentElement","childElementCount","removeChild","destroyTooltipContainer","appendTo","placement","arrow","background","hyphens","getDirection","labelTextAlign","headerStyle","fontWeight","colSpan","valueContent","symbolStyle","symbol","labelStyle","valueStyle","moreText","moreStyle","Tooltips","chartType","tooltipContexts","registerContext","treatAsDesktop","deRegContext","mouseLeave","attrDimPath","filterShapes","deviceType","createTooltip","uniques","filterDuplicateShapes","TooltipHandler","namespace","ScrollHandler","$chartElement","getSlicedDataFn","onScrollCallback","legendKey","_chartInstance","_$chartElement","_getSlicedDataFn","_itemSize","_onScrollCallback","_legendKey","calculateScrollViewSizeInItem","scrollSize","_scrollViewSizeInItem","onMouseWheel","orgEvent","delta","wheelDelta","detail","HORIZONTAL_AXIS","wheelDeltaY","wheelDeltaX","pageX","pageY","getMouseWheelData","originalEvent","onLegendMouseWheel","_disabled","_scrollApi","onScroll","_sizeChanged","getViewData","err","setDisabled","getDisabled","setItemSize","getScrollViewSizeInItem","removeAllListeners","updateViewState","onResize","isDataSizeChanged","pageNumberOfRows","datasetNumberOfRows","resetScroll","moveTo","getState","setOptions","getScrollState","setScrollState","stringWidthOverMWidth","getCharacterRatios","latin","cjk","CJK","hiragana","katakana","getTotalCharacterRatios","columnIndex","res","latinRatio","cjkRatio","estimateLatinLabelWidth","numLatins","maxLatinWidth","averageLatinWidth","stringUtil","endsWith","suffix","haystack","needle","getAdjustedMaxGlyphCount","maxGlyphCount","totalCharacterRatios","latinGlyphCount","cjkGlyphCount","CJK_AVERAGE_WIDTH","estimateLabelWidth","numCjks","cjkWidth","colorStruct","transparent","rgba","hexShort","hsl","hsla","Color","lcs","h_","rgb_","colorString","_invalid","_r","_g","_b","_a","CSSColors","_spaces","isInvalid","setAlpha","getAlpha","toRGB","toRGBA","toHex","toHSL","luma","toHSLA","toHSV","hsvComp","toHSVComponents","toNumber","isDark","getLuminance","_lumi","shiftLuminance","chsla","isEqual","blend","c2","createShiftedColor","lumi","greenMultiplier","hsla_string","ch","c1","r1","g1","b1","getBlend","isCSSColor","getBestContrast","cl","cd","lum","getContrast","color1","color2","l1","l2","useDarkLabel","areaColor","bgIsDark","chartUtils","TRANSPARENT_BLACK","TRANSPARENT_WHITE","LIGHT_GREY","DARK_GREY","BLACK","WHITE","getInverse","colorObj","getContrastingGrey","getContrastingTransparent","hasSecondDimension","getStackedCubeSizeOf2Dims","getDimensionSize","dimInfo","qCardinalities","qHypercubeCardinal","hypercubeUtil","getHyperCube","hasSecondMeasure","getStackedCubeSizeOfMax2Dims","getStackedCubeSizeOf1Dim","getOuterDimensionSizeOfMax2Dims","Jitter","_maxJitter","calcMaxJitter","pointSize","jitterParameter","availableWidth","getJitterValue","fraction","columnOrderAdapter","toBefore","toAfter","distributionPlotCubeGenerator","generateHyperCube","numDims","firstDimString","secondDimString","hasBase","hasDimensionBase","hasMeasureBase","_layout$snapshotData$","_layout$snapshotData$2","_layout$qUndoExclude","legendData","needMigrateOldSnapshotColorData","migrateOldSnapshotColorData","layoutService","createConfig","custom","definitionPath","getLayoutValue","defaultAuto","getColor","getPaletteColor","getDatumProps","getSettingsForMeasure","getLegend","getScales","getPalettes","isInitialized","getUseBaseColors","createColorService","getSelectionSettingsArray","setting","getDataSize","getPicassoScrollSettings","updateCacheSize","_scrollHandler","updateOnScrollViewChanged","resetCategoricalLegendScroll","catLegend","DistributionPlot","__do_not_use_findShapes","findShapes","_derivedProperties","_selectionHandler","_tooltipHandler","getSlicedData","_maxBubbleScale","_jitterTool","_updateColorMapData","updateScrollHandlerState","_disableScrolling","updateConstraints","constraints","passive","selection","_getPointScale","_calcBandwidth","chartAreaSize","dimScale","_bandwidthRatio","pxScale","bandwidth","_bandwidthPx","_calcPointMaxSize","pointScale","bandwidthPx","maxPointSize","_pointMaxSizePx","_calcPointSize","pointMaxSizePx","_pointSize","_getDimAxisSettings","selectionSettings","brushTrigger","brushConsume","containerSize","adjustedMaxGlyphCount","qApprMaxGlyphCount","getMaxGlyphCountForDimAxis","maxLengthPx","paddingEnd","_getBoxMarkerSettings","boxFillColor","startField","endField","boxSettings","minWidthPx","beforeRender","showPoints","jitterExpansion","_jitter","elemNo","_getPointMarkerSettings","tooltipSettings","border","fillFn","pointMarkerSettings","chartStyleUtils","sizeLimits","maxRelExtent","maxPx","minPx","boxPaddingRelative","innerElemNo","inner","outer","_getPointSelectionLayerSettings","pointSelectionLayerSettings","hasVisibleComponentsProps","showBox","dimAxisSelectionSettings","boxSelectionSettings","pointSelectionSettings","legendSelectionSettings","allowSelectBoxes","innerSelectionSettings","outerSelectionSettings","colorSelectionSettings","measureSelectionSettings","lockedDims","dimInfos","getLockedDims","isInnerDimSingleSelect","isOuterDimSingleSelect","retrieveRangeSelStatus","_dependentActions","DependentInteractions","boxMarkerSettings","jitterTool","basePosition","addLegend","_orientation","finally","limitedData","paddingBottom","colorField","addKeyAlias","_createColorLegendCube","dataPages","dimIndex","_updateColorData","getHashData","derivedSettings","promise","_cacheSizeInitialized","defaultOptions","delay","deferred","dfd","Throttle","onSend","ongoingRequests","queuedRequests","recentRequests","resolvedRequests","_debounceTimer","_latestResolvedRequestedAt","onCancel","request","clearTimeout","queue","debounceDelay","now","requestObject","wrapper","requestedAt","avgResponseTime","_getAvgResolutionTime","notAnyRecentRequests","lastRequestIsOld","lastResponseIsOld","throttleQueue","updateResolutionTime","respondedAt","sentAt","setTimeout","sendLastThrottledRequest","waitingForResponse","req","sendRequest","shift","StackedCubeSlicer","debouncing","maxTotalArea","Cache","cubeHeight","cubeWidth","setPath","throttle","EngineThrottle","_getDirections","areasToCache","_getAreasToCache","cacheData","subset","_modelBinding","setMethodName","setCubeSize","cacheHeight","cacheWidth","maxStackedValues","srcAreas","lastRequests","lastCouple","diffY","diffX","wiggleHeight","wiggleWidth","offsetTop","offsetLeft","cacheAreas","adjustedCacheHeight","BackednAPi","cacheCube","CacheCube","hyperCubeContainerPath","qSelectionInfo","qInSelections","backendStackThrottle","supernova","picassojs","prio","use","PicassoHammer","picassoSetup","useElement","useApp","useAppLayout","useDeviceType","useOptions","useTheme","useTranslator","useMemo","language","useEnvironment","useSelections","useStaleLayout","useModel","useConstraints","setEnabled","useState","setActive","isInSelections","useLayout","useEffect","useAction","hidden","useLasso","renderState","useRenderState","setInstance","SnapshotAPI","BackednAPI","getBackedApi","view","usePromise","pending","restore","useRect","useResize","onTakeSnapshot","useImperativeHandle"],"mappings":"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"}
|