@nebula.js/sn-distributionplot 0.38.0 → 0.39.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.
@@ -0,0 +1 @@
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","../../../../chart-modules/common/extra/chart-style-component.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/find.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/iterator.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.56.0\n* Copyright (c) 2023 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=Object.defineProperty||function(e,t,n){e[t]=n.value},i=\"function\"==typeof Symbol?Symbol:{},a=i.iterator||\"@@iterator\",l=i.asyncIterator||\"@@asyncIterator\",u=i.toStringTag||\"@@toStringTag\";function c(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},\"\")}catch(e){c=function(e,t,n){return e[t]=n}}function s(e,t,n,r){var i=t&&t.prototype instanceof p?t:p,a=Object.create(i.prototype),l=new C(r||[]);return o(a,\"_invoke\",{value:w(e,n,l)}),a}function f(e,t,n){try{return{type:\"normal\",arg:e.call(t,n)}}catch(e){return{type:\"throw\",arg:e}}}e.wrap=s;var d={};function p(){}function h(){}function m(){}var v={};c(v,a,(function(){return this}));var y=Object.getPrototypeOf,g=y&&y(y(D([])));g&&g!==t&&r.call(g,a)&&(v=g);var b=m.prototype=p.prototype=Object.create(v);function x(e){[\"next\",\"throw\",\"return\"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function q(e,t){function n(o,i,a,l){var u=f(e[o],e,i);if(\"throw\"!==u.type){var c=u.arg,s=c.value;return s&&\"object\"==typeof s&&r.call(s,\"__await\")?t.resolve(s.__await).then((function(e){n(\"next\",e,a,l)}),(function(e){n(\"throw\",e,a,l)})):t.resolve(s).then((function(e){c.value=e,a(c)}),(function(e){return n(\"throw\",e,a,l)}))}l(u.arg)}var i;o(this,\"_invoke\",{value:function(e,r){function o(){return new t((function(t,o){n(e,r,t,o)}))}return i=i?i.then(o,o):o()}})}function w(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 I()}for(n.method=o,n.arg=i;;){var a=n.delegate;if(a){var l=M(a,n);if(l){if(l===d)continue;return l}}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 u=f(e,t,n);if(\"normal\"===u.type){if(r=n.done?\"completed\":\"suspendedYield\",u.arg===d)continue;return{value:u.arg,done:n.done}}\"throw\"===u.type&&(r=\"completed\",n.method=\"throw\",n.arg=u.arg)}}}function M(e,t){var n=t.method,r=e.iterator[n];if(void 0===r)return t.delegate=null,\"throw\"===n&&e.iterator.return&&(t.method=\"return\",t.arg=void 0,M(e,t),\"throw\"===t.method)||\"return\"!==n&&(t.method=\"throw\",t.arg=new TypeError(\"The iterator does not provide a '\"+n+\"' method\")),d;var o=f(r,e.iterator,t.arg);if(\"throw\"===o.type)return t.method=\"throw\",t.arg=o.arg,t.delegate=null,d;var i=o.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,\"return\"!==t.method&&(t.method=\"next\",t.arg=void 0),t.delegate=null,d):i:(t.method=\"throw\",t.arg=new TypeError(\"iterator result is not an object\"),t.delegate=null,d)}function k(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 S(e){var t=e.completion||{};t.type=\"normal\",delete t.arg,e.completion=t}function C(e){this.tryEntries=[{tryLoc:\"root\"}],e.forEach(k,this),this.reset(!0)}function D(e){if(e){var t=e[a];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:I}}function I(){return{value:void 0,done:!0}}return h.prototype=m,o(b,\"constructor\",{value:m,configurable:!0}),o(m,\"constructor\",{value:h,configurable:!0}),h.displayName=c(m,u,\"GeneratorFunction\"),e.isGeneratorFunction=function(e){var t=\"function\"==typeof e&&e.constructor;return!!t&&(t===h||\"GeneratorFunction\"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,m):(e.__proto__=m,c(e,u,\"GeneratorFunction\")),e.prototype=Object.create(b),e},e.awrap=function(e){return{__await:e}},x(q.prototype),c(q.prototype,l,(function(){return this})),e.AsyncIterator=q,e.async=function(t,n,r,o,i){void 0===i&&(i=Promise);var a=new q(s(t,n,r,o),i);return e.isGeneratorFunction(n)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},x(b),c(b,u,\"Generator\"),c(b,a,(function(){return this})),c(b,\"toString\",(function(){return\"[object Generator]\"})),e.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},e.values=D,C.prototype={constructor:C,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(S),!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 l=r.call(i,\"catchLoc\"),u=r.call(i,\"finallyLoc\");if(l&&u){if(this.prev<i.catchLoc)return n(i.catchLoc,!0);if(this.prev<i.finallyLoc)return n(i.finallyLoc)}else if(l){if(this.prev<i.catchLoc)return n(i.catchLoc,!0)}else{if(!u)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,d):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),d},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),S(n),d}},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;S(n)}return o}}throw new Error(\"illegal catch attempt\")},delegateYield:function(e,t,n){return this.delegate={iterator:D(e),resultName:t,nextLoc:n},\"next\"===this.method&&(this.arg=void 0),d}},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 l=e[i](a),u=l.value}catch(e){return void n(e)}l.done?t(u):Promise.resolve(u).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 l(e){o(a,r,i,l,u,\"next\",e)}function u(e){o(a,r,i,l,u,\"throw\",e)}l(void 0)}))}}function a(e,t,n){return(t=function(e){var t=function(e,t){if(\"object\"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||\"default\");if(\"object\"!=typeof r)return r;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===t?String:Number)(e)}(e,\"string\");return\"symbol\"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(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 u(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){var r,o,i,a,l=[],u=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);u=!0);}catch(e){c=!0,o=e}finally{try{if(!u&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(c)throw o}}return l}}(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}function d(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,\"default\")?e.default:e}var p=Object.prototype.hasOwnProperty,h=Object.prototype.toString,m=Object.defineProperty,v=Object.getOwnPropertyDescriptor,y=function(e){return\"function\"==typeof Array.isArray?Array.isArray(e):\"[object Array]\"===h.call(e)},g=function(e){if(!e||\"[object Object]\"!==h.call(e))return!1;var t,n=p.call(e,\"constructor\"),r=e.constructor&&e.constructor.prototype&&p.call(e.constructor.prototype,\"isPrototypeOf\");if(e.constructor&&!n&&!r)return!1;for(t in e);return void 0===t||p.call(e,t)},b=function(e,t){m&&\"__proto__\"===t.name?m(e,t.name,{enumerable:!0,configurable:!0,value:t.newValue,writable:!0}):e[t.name]=t.newValue},x=function(e,t){if(\"__proto__\"===t){if(!p.call(e,t))return;if(v)return v(e,t).value}return e[t]},q=function e(){var t,n,r,o,i,a,l=arguments[0],u=1,c=arguments.length,s=!1;for(\"boolean\"==typeof l&&(s=l,l=arguments[1]||{},u=2),(null==l||\"object\"!=typeof l&&\"function\"!=typeof l)&&(l={});u<c;++u)if(null!=(t=arguments[u]))for(n in t)r=x(l,n),l!==(o=x(t,n))&&(s&&o&&(g(o)||(i=y(o)))?(i?(i=!1,a=r&&y(r)?r:[]):a=r&&g(r)?r:{},b(l,{name:n,newValue:e(s,a,o)})):void 0!==o&&b(l,{name:n,newValue:o}));return l},w=d(q);function M(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 k(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 S(e,t,n,r,o){var i,a,l=o.byRow,u=o.byElemNo;if(r&&(t.input.persistent||e.hc.qDimensionInfo.length>1||void 0===n.activeDimensionIndex&&e.hc.qSize.qcy>(i=e.hc,(null===(a=i.qDataPages[0]||i.qStackedDataPages[0])||void 0===a?void 0:a.qArea.qHeight)||0)))return u(r,r.raw().qCardinal);if(r){var c=t.pic.extract({field:r.key(),trackBy:r.value}).length;return l(r,c)}return{}}function C(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 D(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 I(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function O(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function E(){}var A=1/.7,N=\"\\\\s*([+-]?\\\\d+)\\\\s*\",L=\"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",T=\"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",P=/^#([0-9a-f]{3,8})$/,j=new RegExp(`^rgb\\\\(${N},${N},${N}\\\\)$`),F=new RegExp(`^rgb\\\\(${T},${T},${T}\\\\)$`),H=new RegExp(`^rgba\\\\(${N},${N},${N},${L}\\\\)$`),R=new RegExp(`^rgba\\\\(${T},${T},${T},${L}\\\\)$`),z=new RegExp(`^hsl\\\\(${L},${T},${T}\\\\)$`),V=new RegExp(`^hsla\\\\(${L},${T},${T},${L}\\\\)$`),_={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 B(){return this.rgb().formatHex()}function Y(){return this.rgb().formatRgb()}function $(e){var t,n;return e=(e+\"\").trim().toLowerCase(),(t=P.exec(e))?(n=t[1].length,t=parseInt(t[1],16),6===n?U(t):3===n?new X(t>>8&15|t>>4&240,t>>4&15|240&t,(15&t)<<4|15&t,1):8===n?K(t>>24&255,t>>16&255,t>>8&255,(255&t)/255):4===n?K(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=j.exec(e))?new X(t[1],t[2],t[3],1):(t=F.exec(e))?new X(255*t[1]/100,255*t[2]/100,255*t[3]/100,1):(t=H.exec(e))?K(t[1],t[2],t[3],t[4]):(t=R.exec(e))?K(255*t[1]/100,255*t[2]/100,255*t[3]/100,t[4]):(t=z.exec(e))?ne(t[1],t[2]/100,t[3]/100,1):(t=V.exec(e))?ne(t[1],t[2]/100,t[3]/100,t[4]):_.hasOwnProperty(e)?U(_[e]):\"transparent\"===e?new X(NaN,NaN,NaN,0):null}function U(e){return new X(e>>16&255,e>>8&255,255&e,1)}function K(e,t,n,r){return r<=0&&(e=t=n=NaN),new X(e,t,n,r)}function G(e){return e instanceof E||(e=$(e)),e?new X((e=e.rgb()).r,e.g,e.b,e.opacity):new X}function W(e,t,n,r){return 1===arguments.length?G(e):new X(e,t,n,null==r?1:r)}function X(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}function Z(){return`#${te(this.r)}${te(this.g)}${te(this.b)}`}function J(){const e=Q(this.opacity);return`${1===e?\"rgb(\":\"rgba(\"}${ee(this.r)}, ${ee(this.g)}, ${ee(this.b)}${1===e?\")\":`, ${e})`}`}function Q(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function ee(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function te(e){return((e=ee(e))<16?\"0\":\"\")+e.toString(16)}function ne(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new oe(e,t,n,r)}function re(e){if(e instanceof oe)return new oe(e.h,e.s,e.l,e.opacity);if(e instanceof E||(e=$(e)),!e)return new oe;if(e instanceof oe)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,l=i-o,u=(i+o)/2;return l?(a=t===i?(n-r)/l+6*(n<r):n===i?(r-t)/l+2:(t-n)/l+4,l/=u<.5?i+o:2-i-o,a*=60):l=u>0&&u<1?0:a,new oe(a,l,u,e.opacity)}function oe(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}function ie(e){return(e=(e||0)%360)<0?e+360:e}function ae(e){return Math.max(0,Math.min(1,e||0))}function le(e,t,n){return 255*(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)}I(E,$,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:B,formatHex:B,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return re(this).formatHsl()},formatRgb:Y,toString:Y}),I(X,W,O(E,{brighter(e){return e=null==e?A:Math.pow(A,e),new X(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=null==e?.7:Math.pow(.7,e),new X(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new X(ee(this.r),ee(this.g),ee(this.b),Q(this.opacity))},displayable(){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:Z,formatHex:Z,formatHex8:function(){return`#${te(this.r)}${te(this.g)}${te(this.b)}${te(255*(isNaN(this.opacity)?1:this.opacity))}`},formatRgb:J,toString:J})),I(oe,(function(e,t,n,r){return 1===arguments.length?re(e):new oe(e,t,n,null==r?1:r)}),O(E,{brighter(e){return e=null==e?A:Math.pow(A,e),new oe(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=null==e?.7:Math.pow(.7,e),new oe(this.h,this.s,this.l*e,this.opacity)},rgb(){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 X(le(e>=240?e-240:e+120,o,r),le(e,o,r),le(e<120?e+240:e-120,o,r),this.opacity)},clamp(){return new oe(ie(this.h),ae(this.s),ae(this.l),Q(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=Q(this.opacity);return`${1===e?\"hsl(\":\"hsla(\"}${ie(this.h)}, ${100*ae(this.s)}%, ${100*ae(this.l)}%${1===e?\")\":`, ${e})`}`}}));const ue=Math.PI/180,ce=180/Math.PI,se=4/29,fe=6/29,de=3*fe*fe;function pe(e){if(e instanceof he)return new he(e.l,e.a,e.b,e.opacity);if(e instanceof qe)return we(e);e instanceof X||(e=G(e));var t,n,r=ge(e.r),o=ge(e.g),i=ge(e.b),a=me((.2225045*r+.7168786*o+.0606169*i)/1);return r===o&&o===i?t=n=a:(t=me((.4360747*r+.3850649*o+.1430804*i)/.96422),n=me((.0139322*r+.0971045*o+.7141733*i)/.82521)),new he(116*a-16,500*(t-a),200*(a-n),e.opacity)}function he(e,t,n,r){this.l=+e,this.a=+t,this.b=+n,this.opacity=+r}function me(e){return e>.008856451679035631?Math.pow(e,1/3):e/de+se}function ve(e){return e>fe?e*e*e:de*(e-se)}function ye(e){return 255*(e<=.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055)}function ge(e){return(e/=255)<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function be(e){if(e instanceof qe)return new qe(e.h,e.c,e.l,e.opacity);if(e instanceof he||(e=pe(e)),0===e.a&&0===e.b)return new qe(NaN,0<e.l&&e.l<100?0:NaN,e.l,e.opacity);var t=Math.atan2(e.b,e.a)*ce;return new qe(t<0?t+360:t,Math.sqrt(e.a*e.a+e.b*e.b),e.l,e.opacity)}function xe(e,t,n,r){return 1===arguments.length?be(e):new qe(e,t,n,null==r?1:r)}function qe(e,t,n,r){this.h=+e,this.c=+t,this.l=+n,this.opacity=+r}function we(e){if(isNaN(e.h))return new he(e.l,0,0,e.opacity);var t=e.h*ue;return new he(e.l,Math.cos(t)*e.c,Math.sin(t)*e.c,e.opacity)}I(he,(function(e,t,n,r){return 1===arguments.length?pe(e):new he(e,t,n,null==r?1:r)}),O(E,{brighter(e){return new he(this.l+18*(null==e?1:e),this.a,this.b,this.opacity)},darker(e){return new he(this.l-18*(null==e?1:e),this.a,this.b,this.opacity)},rgb(){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 X(ye(3.1338561*(t=.96422*ve(t))-1.6168667*(e=1*ve(e))-.4906146*(n=.82521*ve(n))),ye(-.9787684*t+1.9161415*e+.033454*n),ye(.0719453*t-.2289914*e+1.4052427*n),this.opacity)}})),I(qe,xe,O(E,{brighter(e){return new qe(this.h,this.c,this.l+18*(null==e?1:e),this.opacity)},darker(e){return new qe(this.h,this.c,this.l-18*(null==e?1:e),this.opacity)},rgb(){return we(this).rgb()}}));var Me=e=>()=>e;function ke(e){return 1==(e=+e)?Se: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):Me(isNaN(t)?n:t)}}function Se(e,t){var n=t-e;return n?function(e,t){return function(n){return e+n*t}}(e,n):Me(isNaN(e)?t:e)}var Ce=function e(t){var n=ke(t);function r(e,t){var r=n((e=W(e)).r,(t=W(t)).r),o=n(e.g,t.g),i=n(e.b,t.b),a=Se(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),De=/^class(-pyramid)?/,Ie=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,l=i,u=t.limits,s={},f=\"percent\"===t.limitType?u.map((function(e){return o+(i-o)*e})):u,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 l=0;l<r.length;l++)if(t<r[l]){i.push(o[l]);break}}for(var u=0;u<r.length;u++)t<r[u]&&r[u]<n&&(a.push(r[u]),i.push(o[u]));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:l,range:d,limits:\"percent\"===t.limitType?f:u}));else if(t.breakTypes){var p=t.breakTypes;s.type=\"continuous\",s.domain=[o],s.range=[d[0]];for(var h=0;h<f.length;h+=1)if(p[h]){var m=d[h],v=d[h+1],y=Ce(m,v)(.5);s.range.push(y),s.domain.push(f[h]),h<f.length-1&&p[h+1]&&(s.range.push(d[h+1]),s.domain.push((f[h]+f[h+1])/2))}else s.range.push(d[h]),s.range.push(d[h+1]),s.domain.push(f[h]),s.domain.push(f[h]+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 Oe(e,t,n,r,o){var i,a,l,u=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),l=n[i]>e?Math.floor(e/s):n[i]<t?0:Math.floor(a/s),Number.isNaN(l)||(c[l]?c[l]+=1:c[l]=1);for(i=0;i<c.length;i+=1)c[i]&&(u+=1);return u<=r||u>=o?Math.max(u,r):Oe(e,t,n,r+1,o)}var Ee=function(e,t,n,r){var o,i,a=t.theme,l=t.hc,u=r.f,s={mode:\"field\",fieldType:\"measure\",field:u?u.key():void 0,reverse:n.input.reverseScheme||!1,type:\"continuous\",range:function(e){return e.resources.theme.palette(\"quant\")}},f=[],d=!0;if(u){if(Number.isNaN(+u.min())||Number.isNaN(+u.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:u.key()},exclude:{fields:l.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(u&&!d)s.min=u.min(),s.max=u.max();else if(u){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&&De.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 h=d?Oe(s.max,s.min,f,1,i):i,m=(s.max-s.min)/h,v=[],y=0;y<h+1;y+=1)v.push(s.min+m*y);s.domain=v,s.range=function(e){for(var t=e.resources.theme.palette(\"quant\",h),n=Math.max(1,Math.floor(t.length/h)),r=[],o=0;o<h;o+=1)r.push(t[o*n]);return[r[0]].concat(r,[r[r.length-1]])}}return s};function Ae(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 Ne(e){var n,r=e.cm,o=e.defaults,i=e.index,a=e.input,l=e.pic;if(!a||!a.on)return null;var u=null!==(n=a.mode)&&void 0!==n?n:\"primary\";return\"primary\"===u?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\"===u?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,l,o):null}function Le(e){e.measureOverrides.every((function(e){return!e}))&&(e.measureOverrides=null)}function Te(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 l=n.indexOf(i);-1===l?(n.push(i),r.push(a.primary)):r[l]=a.primary,e[i]=null}else if(a){o.push(i);var u=n.indexOf(i);-1!==u&&(n.splice(u,1),r.splice(u,1))}}return{domain:n,range:r,exclude:o}}function Pe(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?Ae:i,l=n.input.byMeasureDef||{activeMeasureIndex:0},u=a(n,l),c=Ee(0,{theme:r,hc:o},n,{f:u});if(c.invalid)return c;\"expression\"===l.type&&(l.activeMeasureIndex<0||void 0===l.activeMeasureIndex)&&(c.label=l.label,u&&\"color.altLabel\"===u.raw().labelExpRef&&(c.label=n.input.altLabel)),!c.label&&u&&(c.label=u.title());var s=l.activeMeasureIndex>=0?u:null;if(!s&&u&&void 0!==u.raw().matchMeasure&&u.raw().matchMeasure>-1&&(s=n.pic.fields().filter((function(e){return\"measure\"===e.type()}))[u.raw().matchMeasure]),n.input.useMeasureGradient&&\"libraryItem\"===l.type)if(s){var f=s.raw().coloring;f&&f.gradient&&w(c,Ie(e,f.gradient,c,s))}else c.auxiliary=l;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?C:o,a=r.getCByField,l=void 0===a?D:a,u=r.getPersistence,c=void 0===u?S:u,s=i(t,n),f=l(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 h={mode:\"field\",fieldType:\"dimension\",type:\"categorical\",field:f?f.key():void 0,isFieldLocked:d.qLocked};return(\"expression\"===s.type||s.activeDimensionIndex<0)&&(h.label=s.label,\"color.altLabel\"===d.labelExpRef&&(h.label=n.input.altLabel)),!h.label&&f&&(h.label=f.title()),n.input.dimensionScheme&&(h.palettes={categorical:n.input.dimensionScheme}),n.input.useDimColVal&&\"libraryItem\"===s.type&&(h.auxiliary=s),w(h,c(t,n,s,f,{byRow:k,byElemNo:M})),h}(e,n,t);if(\"byExpression\"===t.input.mode)return function(e,t,n,r){var o=t.hc,i=t.theme,a=t.translator,l=n.pic.field((function(e){return\"colorByExpression\"===e.raw().id}));if(!l||!l.raw().qFallbackTitle&&!n.input.colorExpression||!(Number.isFinite(l.raw().qMin)&&Number.isFinite(l.raw().qMax)||n.input.expressionIsColor))return{mode:\"constant\",type:\"constant\",primary:r.nil};if(n.input.expressionIsColor)return{mode:\"field\",fieldType:\"expression\",field:l?l.key():void 0,type:\"color\"};var u=Ee(0,{hc:o,theme:i},n,{f:l});return u.invalid||(u.label=n.input.expressionLabel||a.get(\"Object.ChartTooltip.ColorExpression\")),u}(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,l=n.input.useBaseColors;if((\"byMultiple\"===n.input.mode||\"primary\"===n.input.mode&&\"measure\"===n.input.useBaseColors)&&o.qMeasureInfo.length>1&&(l=\"measure\"),\"measure\"===l){var u=[],c=[];\"measure\"===n.input.useBaseColors&&o.qMeasureInfo.forEach((function(t,n){if(t.baseColor||t.coloring&&t.coloring.baseColor){u.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:u.length?{domain:u,range:c}:void 0}}if(\"dimension\"===l){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 h=r.primary;if(void 0!==n.input.paletteColor)n.input.paletteColor&&(h=e.resolveUIColor(n.input.paletteColor));else{var m=n.input.singleColor;\"number\"!=typeof m||Number.isNaN(m)||(h=[\"#b0afae\",\"#7b7a78\",\"#545352\",\"#4477aa\",\"#7db8da\",\"#b6d7ea\",\"#46c646\",\"#f93f17\",\"#ffcf02\",\"#276e27\",\"#ffffff\",\"#000000\"][m])}return{mode:\"constant\",type:\"constant\",primary:h}}(e,n,t,r)}return{}}function je(e,t,n,r){var o,i=Pe(e,t,n,r);return null!==(o=t.input)&&void 0!==o&&o.measureOverrides?(i.measureOverrides=t.input.measureOverrides.map((function(n,o){return Ne({cm:e,input:n,defaults:r,index:o,pic:t.pic})})),function(e,t){var n,r,o,i=t.translator;if(Le(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=Te(e.measureOverrides,e.explicit),Le(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=Te(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 Fe(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(w(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=w(!0,{},r.input,i,{auto:!1});var a=n.theme?n.theme.getDataColorPalettes():[];a[0]&&(r.input.dimensionScheme=a[0].key);var l=0;r.input.byDimDef&&+r.input.byDimDef.activeDimensionIndex>=0&&(l=+r.input.byDimDef.activeDimensionIndex),n.hc&&n.hc.qDimensionInfo[l]&&n.hc.qDimensionInfo[l].coloring&&n.hc.qDimensionInfo[l].coloring.colorMapRef&&r.input.byDimDef&&(r.input.byDimDef.type=\"libraryItem\",r.input.byDimDef.key=n.hc.qDimensionInfo[l].coloring.colorMapRef)}null!==(t=r.input.measureOverrides)&&void 0!==t&&t.every((function(e){return!e||!e.on}))&&(r.input=w(!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 Ie(i,o.coloring.gradient,e,a)}return{}}if(\"dimension\"===e.fieldType){var l={nil:e.nil,others:e.others},u=o[0],c=o[1]?o[1].colorMap:null;if(u){var s=n.picasso.data(\"q\")({data:{qDimensionInfo:[r.pic.field(e.field).raw(),r.pic.field(e.field).raw()],qMeasureInfo:[],qDataPages:u,qInterColumnSortOrder:[0,1],qMode:\"S\"}});l.legendDataset=s}return c?function(e,n,r,o){var i=o.external,a=o.field,l=t({},e);w(l,M(a,a.raw().qCardinal));var u=i.theme?i.theme.getDataColorPalettes()[0]:null;return n.nul&&(l.nil=r.resolveUIColor(n.nul)),n.oth&&(l.others=r.resolveUIColor(n.oth)),n.usePal?(l.palettes={categorical:n.pal},u&&!n.pal&&(l.palettes.categorical=u.key,w(l,M(a)))):!1===n.autoFill&&n.single?l.range=[r.resolveUIColor(n.single)]:n.autoFill&&(u&&(l.palettes={categorical:u.key}),w(l,M(a))),n.colors&&n.colors.length&&(l.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 l=0;l<o.items.length;l++){var u=o.items[l],c=(u.text||u).label;r[c]&&-1===a.indexOf(u.value)&&(a.push(u.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,l)),l}(l,c,i,{external:n,field:r.pic.field(e.field)}):l}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=w(e,je(this,r,n,e))}return r.settings}};return i}var He=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},Re=function(e){throw e.isHandled=!0,e},ze=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()},Ve=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()},_e=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(Re)}return Promise.reject()};function Be(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 Ye(e){return function(t){return\"object\"===r(t.datum[e])?t.datum[e].value:void 0}}function $e(e){return\"object\"===r(e.datum.isNull)?e.datum.isNull.value:-2===e.datum.value}function Ue(e){return-3===e.datum.value}var Ke={TITLE:{COLOR:void 0,FONT_SIZE:\"16px\",FONT_FAMILY:\"'Source Sans Pro', 'Arial', 'sans-serif'\"},LABEL:{COLOR:void 0,FONT_SIZE:void 0,FONT_FAMILY:\"'Source Sans Pro', 'Arial', 'sans-serif'\"}};function Ge(e){var t=e.theme,n=e.key,r=e.styleOverrides,o={title:{color:Ke.TITLE.COLOR,fontSize:Ke.TITLE.FONT_SIZE,fontFamily:Ke.TITLE.FONT_FAMILY},label:{color:Ke.LABEL.COLOR,fontSize:Ke.LABEL.FONT_SIZE,fontFamily:Ke.LABEL.FONT_FAMILY}};if(!t&&!r)return o;var i=r||{},a=i.title,l=i.label,u=function(e){var t=e.theme,n=e.key;return function(e,r,o,i){return void 0!==e?e:t?t.getStyle(n,r,o):i}}({theme:t,key:n});return o.title.color=u(null==a?void 0:a.color,\"legend.title\",\"color\",Ke.TITLE.COLOR),o.title.fontSize=u(null==a?void 0:a.fontSize,\"legend.title\",\"fontSize\",Ke.TITLE.FONT_SIZE),o.title.fontFamily=u(null==a?void 0:a.fontFamily,\"legend.title\",\"fontFamily\",Ke.TITLE.FONT_FAMILY),o.label.color=u(null==l?void 0:l.color,\"legend.label\",\"color\",Ke.LABEL.COLOR),o.label.fontSize=u(null==l?void 0:l.fontSize,\"legend.label\",\"fontSize\",Ke.LABEL.FONT_SIZE),o.label.fontFamily=u(null==l?void 0:l.fontFamily,\"legend.label\",\"fontFamily\",Ke.LABEL.FONT_FAMILY),o}var We=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\"},Xe=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 Ze(e,t){var n=e.styleReference,r=e.styleOverrides,o=e.chart,i=e.rtl,a=t.legendProps,l=t.coloring,u=t.theme,c=t.hc,s=Ge({theme:u,key:n,styleOverrides:r});return{layout:{minimumLayoutMode:\"MEDIUM\",dock:We(a,o,i)},show:\"function\"==typeof a.show?function(){return Xe(a,c,l)}:Xe(a,c,l),renderer:\"svg\",mounted:function(e){e.childNodes[0].style.pointerEvents=\"none\",e.style.overflow=\"hidden\"},settings:{title:{show:!1!==a.showTitle,wordBreak:\"break-word\",maxLines:2,lineHeight:1.2,text:l.label||\"\",fill:s.title.color,fontSize:s.title.fontSize,fontFamily:s.title.fontFamily}}}}function Je(e,n,r){return\"categorical\"===n.coloring.type?function(e,n,r){var o=Ze(e,n);if(!o.show)return!1;var i,a=e.key,l=e.styleReference,u=e.styleOverrides,c=e.viewState,s=e.rtl,f=e.settings,d=e.style,p=n.scaleKey,h=n.theme,m=n.scales,v=Ge({theme:h,key:l,styleOverrides:u}),y=o.layout.dock,g=\"left\"===y||\"right\"===y?{maxLines:2,wordBreak:\"break-word\"}:{},b={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 x=\"\".concat(p,\"Legend\");return w(!0,o,{type:\"legend-cat\",key:\"\".concat(a,\"-cat\"),scale:x in m?x:p,settings:{layout:{scrollOffset:function(){return c?c.get(\"legendScrollOffset\"):void 0},size:-1!==[\"top\",\"bottom\"].indexOf(o.layout.dock)?2:1,direction:s?\"rtl\":\"ltr\",horizontal:20},item:{show:i,label:t({fill:v.label.color,fontSize:v.label.fontSize,fontFamily:v.label.fontFamily},g)},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:b[n]})])])}}}},brush:{consume:[{context:\"selection\",data:[\"\",a],style:{inactive:{opacity:.3}}}]}},{settings:f,style:d})}(e,n,r):\"continuous\"===n.coloring.type&&function(e,t){var n,r=e.key,o=e.styleReference,i=e.styleOverrides,a=e.rtl,l=e.settings,u=e.style,c=t.scaleKey,s=t.theme,f=\"\".concat(c,\"Range\"),d=Ze(e,t);if(!d.show)return!1;var p=Ge({theme:s,key:o,styleOverrides:i}),h=d.layout.dock,m=\"right\"===h||\"left\"===h,v=null===(n=t.scales)||void 0===n?void 0:n[f];return m&&v&&(v.invert=!0),w(!0,d,{type:\"legend-seq\",key:\"\".concat(r,\"-seq\"),settings:{fill:c,major:f,length:1,tick:{fill:p.label.color,fontSize:p.label.fontSize,fontFamily:p.label.fontFamily},title:{anchor:!a||\"top\"!==d.layout.dock&&\"bottom\"!==d.layout.dock?void 0:\"right\",padding:parseFloat(d.settings.title.fontSize)||16}}},{settings:l,style:u})}(e,n)}function Qe(e,t,n){var r=[],o=[],i=Je(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,l=(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!=l&&null!==(o=l.interact)&&void 0!==o&&o.enabled&&!l.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 et=function(e){return\"rgba(\".concat([(16711680&e)>>16,(65280&e)>>8,255&e,((4278190080&e)>>>24)/255].join(\",\"),\")\")};function tt(e){var n=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.auto,n=Fe(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 ze(e,{layout:n,app:r})})).getMeasure((function(e,t){var n=t.layout,r=t.app;return Ve(e,{layout:n,app:r})})).getAttributeDimension((function(e,t){var n=t.layout,r=t.model,o=t.app;return _e(e,{layout:n,model:r,app:o})}));return n.getSnapshotData=He,n}({resources:e}),r={},o={},i=function(e){return o.settings||(e||console.warn(\"settings() called before auxiliarySettings()\"),o.settings=n.settings()),o.settings},l={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),l):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 l=n.palettes.metric||t.measureScheme,u=r.getDataColorScales().filter((function(e){return e.key===l}))[0];if(u){var s=u.colors[0]?u.colors:[[]].concat(c(u.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,l=e.picasso,u={},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=Be({hc:n,source:a,coloring:r}).data;if(r.legendDataset){var h=0,m={};l.data(\"q\")({data:n}).extract({field:r.field,trackBy:r.valueAccessor,reduce:function(e){var t=e[0];return m[t]=h++,e[0]}}),d={source:\"attrDim\",extract:{field:\"qDimensionInfo/0\",filter:function(e){return e.qElemNumber>=0},props:{row:{value:function(e){return m[e.qElemNumber]}}}}}}var v={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}};u[s]=v,d&&(u[\"\".concat(s,\"Legend\")]=t(t({},v),{},{data:d})),n&&n.qHasOtherValues&&d&&((d||v.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};u[s]=w({},y,{type:\"categorical\"===r.type?\"threshold-color\":\"sequential-color\",range:r.range,domain:r.domain,invert:r.reverse}),\"sequential-color\"===u[s].type&&(u[\"\".concat(s,\"Range\")]=w({},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\"};u[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\"};u[s]=b}}return u}({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=Ye(r),i=Ye(\"\".concat(r,\"IsAnOther\")),a=function(e,t){var r=e.fieldType,a=e.invalid,l=e.mode,u=e.nil,c=e.others,s=e.primary,f=e.type;return a?function(e){return Ue(e)||i(e)?c:u}:n[t]?function(e){return Ue(e)?c:$e(e)||-2===o(e)&&\"dimension\"===r||\"NaN\"===o(e)?u:i(e)?c:e.resources.scale(t)(o(e))||c}:\"constant\"===l?function(e){return Ue(e)||i(e)?c:$e(e)?u:s}:\"color\"===f?function(e){return Ue(e)||i(e)?c:$e(e)?u:o(e)||c}:null},l=a(t,r);if(t.measureOverrides){var u=Ye(\"\".concat(r,\"MeasureIdx\")),c=t.measureOverrides.map((function(e){return e&&a(e)}));return function(e){var t=u(e);return c[t]?c[t](e):l(e)}}return l}({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,l=e.key,u=e.addMeasureIx,c=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,s=l,f=o.nil;\"field\"===o.mode&&o.field?t=o.field:i[l]&&\"field\"===o.mode&&(t=i[l].data.field||o.field),t?(n={field:t,reduce:\"first\"},\"color\"===o.type&&(n.value=function(e){return\"NaN\"!==e.qNum?et(e.qNum):e.qText&&$(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)}}),u&&(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,l=e.rtl,u=e.styleReference,c=void 0===u?\"object.legend\":u,s=e.styleOverrides,f=e.settings,d=void 0===f?{}:f,p=e.style,h=void 0===p?{}:p,m=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Qe({eventName:t,key:n,rtl:l,viewState:o,chart:a,styleReference:c,styleOverrides:s,settings:d,style:h},{legendProps:r.legendProps,scaleKey:r.key,coloring:i(),theme:r.theme,hc:r.hc,scales:this.scales()},m)}};return l}var nt=function(e){return e.baseColor||e.coloring&&e.coloring.baseColor};function rt(e){var t=e.qHyperCube,n=t.qDimensionInfo,r=t.qMeasureInfo,o=n.some(nt),i=r.some(nt),a=e.color.useBaseColors;return\"measure\"===a&&!i||\"dimension\"===a&&!o?\"off\":a}function ot(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 it=function(e){return e.baseColor||e.coloring&&e.coloring.baseColor};function at(e){var t,n=e.qHyperCube.qDimensionInfo.some(it),r=e.qHyperCube.qMeasureInfo.some(it),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 lt=function(){};function ut(e){var n,r,o,i,a=e.picasso,l=e.model,u=e.app,c=e.translator,s=e.layoutService,f=void 0===s?void 0:s,d=e.createConfig,p=void 0===d?lt:d,h=e.config,m=void 0===h?{}:h,v=e.custom,y=void 0===v?{}:v,g=m.localeInfo,b=m.key,x=m.theme,q=void 0===x?void 0:x,w=m.auto,M=void 0===w?void 0:w,k=m.definitionPath,S=null==f||null===(n=f.getLayout)||void 0===n?void 0:n.call(f),C={theme:q,key:b,localeInfo:g,layout:S,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:S?rt(S):void 0})},D=tt({picasso:a,model:l,app:u,translator:c,auto:M});!1!==M&&D.auto((function(e){return M?M({layout:e,defaultAuto:at}):at(e)}));var I=!1,O={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:rt}),o=ot(C,r);D.config(o);var i=D.getAuxiliarySettings(k).then((function(){I=!0}));return i}};return O}function ct(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 st=[{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 ft(e){var t=e.width,n=e.height,r=st.filter((function(e){return t>=e.size.width&&n>=e.size.height})).shift();return r?r.key:\"SPARK\"}var dt={left:\"right\",right:\"left\",top:\"bottom\",bottom:\"top\",near:\"far\",far:\"near\"};function pt(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?dt[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:dt[i],start:a,end:dt[a]}}function ht(e){var n=e.chart,r=e.layoutService,o=e.config,i=void 0===o?{}:o,a=i.logicalSize,l=void 0!==a&&a,u=i.rtl,c=void 0!==u&&u,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=ft(e);var t=pt({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=pt({orientation:\"vertical\",dock:r.getLayoutValue(\"yAxis.dock\"),btt:!0,rtl:c}),a=i.current,l=i.opposite;s.y.dock=a,s.y.opposite=l,s.y.size=e.height}};return f.update(ct({chart:n,logicalSize:l})),f}var mt=\"vertical\",vt=\"horizontal\";function yt(e){var n=e.chart,r=e.layoutService,o=e.config,i=void 0===o?{}:o,a=e.typeConfig,l=void 0===a?{}:a,u=i.logicalSize,c=void 0!==u&&u,s=i.rtl,f=void 0!==s&&s,d=l.fallback===mt?mt:vt,p=!!l.invert,h=l.measureAxes||[{ref:\"measureAxis\",name:\"minor\"}],m={chart:{orientation:void 0,size:void 0,mode:void 0},major:{orientation:void 0,dock:void 0,opposite:void 0,size:void 0}},v={type:\"major-minor\",config:t({},i),meta:m,update:function(e){m.chart.orientation=r.getLayoutValue(\"orientation\",d),m.chart.size={width:e.width,height:e.height},m.chart.mode=ft(e),m.major.orientation=function(e){var t=e.layoutService,n=e.chartOrientation,r=e.invert;return t.meta.isContinuous?vt:r?n===mt?vt:mt:n}({layoutService:r,chartOrientation:m.chart.orientation,invert:p});var t=pt({orientation:m.major.orientation,dock:r.getLayoutValue(\"dimensionAxis.dock\"),btt:!1,rtl:f}),n=t.current,o=t.opposite;m.major.dock=n,m.major.opposite=o,m.major.size=m.major.orientation===mt?e.height:e.width,h.forEach((function(t){var n={};n.orientation=m.major.orientation===mt?vt:mt;var o=pt({orientation:n.orientation,dock:r.getLayoutValue(\"\".concat(t.ref,\".dock\")),btt:!0,rtl:f}),i=o.current,a=o.opposite,l=o.start,u=o.end;n.dock=i,n.opposite=a,n.start=l,n.end=u,n.size=n.orientation===mt?e.height:e.width,m[t.name]=n}))}};return v.update(ct({chart:n,logicalSize:c})),v}function gt(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?ht:yt)({chart:t,layoutService:n,config:o,typeConfig:a})}function bt(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}var xt=[\"__proto__\",\"constructor\"];function qt(e,t,n){if(void 0!==e&&void 0!==t){var r=t.split(\".\"),o=r[r.length-1];if(!xt.some((function(e){return r.includes(e)}))){for(var i=e,a=0;a<r.length-1;++a){var l=r[a];void 0===i[l]&&(i[l]=Number.isNaN(+r[a+1])?{}:[]),i=i[l]}void 0!==n?i[o]=n:delete i[o]}}}function wt(){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 Mt(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(e){return e},n=wt();return function(r){var o=t(r);return n.has(o)?n.get(o):n.set(o,e(r))}}function kt(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 St(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 l=function(){return e.apply(r,i)};clearTimeout(t),t=setTimeout(l,n)}}function Ct(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,l=new Array(a),u=0;u<a;u++)l[u]=arguments[u];n=l;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 Dt={ERROR_CODES:[7005],DIMENSION:\"qDimensionInfo\",MEASURE:\"qMeasureInfo\"},It=function(e,t){return e[t].reduce((function(e,t,n){var r;return(r=t,Dt.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 Ot(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,l=void 0===a?0:a,u=r.qSelected;return i+l+(void 0===u?0:u)}))}function Et(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:Ot(e)}}}(e);case\"K\":return function(e){var t=Ot(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=Ot(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 At(e){var n=e.source,r=e.metaAdditionsFn,o=e.experimental,i=void 0===o?{filter:!1}:o,a=w(!0,{},n),l=i.filter?function(e){var t=e.qHyperCube,n=It(t,Dt.DIMENSION),r=n.reduced,o=n.filtered;t[Dt.DIMENSION]=r;var i=It(t,Dt.MEASURE),a=i.reduced,l=i.filtered;return t[Dt.MEASURE]=a,{dimensions:o,measures:l}}(a):{dimensions:[],measures:[]},u=Et(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,l=n.qHyperCube,u=l.qDimensionInfo,c=l.qMeasureInfo,s=l.qMode,f=u.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:u.size}});return e.filteredFields=l,e},s={refs:t({},u.refs),meta:c(),getLayout:function(){return a},getLayoutValue:function(e,t){return bt(a,e,t)},setLayoutValue:function(e,t){qt(a,e,t),u=Et(a),s.meta=c()},getHyperCube:function(){return a.qHyperCube},getHyperCubeValue:function(e,t){return bt(a.qHyperCube,e,t)},setHyperCubeValue:function(e,t){qt(a.qHyperCube,e,t),u=Et(a),s.meta=c()},getDataPages:function(){return bt(a,u.refs.dataPages)},setDataPages:function(e){qt(a,u.refs.dataPages,e),s.meta=c()}};return s}function Nt(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 Lt(e){var o=e.picassoInstance,a=e.plugins,l=e.pluginArgs,s=void 0===l?{}:l,f={initialized:!1,definitions:[]};return{initialize:function(){return i(n().mark((function e(){var l,u,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 u=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([u,d]);case 6:p=e.sent,f.initialized=!0,(l=f.definitions).push.apply(l,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=u(e.filter((function(e){return e.key&&e.key===t.key})),1)[0];if(n){var o=w(!0,{},n.brush);w(!0,n,t),t.brush&&(n.brush=function(e,t){return\"object\"===r(e)&&Object.keys(e).length?(Array.isArray(t.consume)&&(e.consume=Nt({originalArray:e.consume,newArray:t.consume,matchKey:\"context\"})),Array.isArray(t.trigger)&&(e.trigger=Nt({originalArray:e.trigger,newArray:t.trigger,matchKey:\"on\"})),e):t}(o,t.brush))}else e.push(t)})),e):e}}}function Tt(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 Pt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Tt(Object(n),!0).forEach((function(t){jt(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Tt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function jt(e,t,n){return(t=function(e){var t=function(e,t){if(\"object\"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||\"default\");if(\"object\"!=typeof r)return r;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===t?String:Number)(e)}(e,\"string\");return\"symbol\"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Ft=Object.prototype.hasOwnProperty,Ht=Object.prototype.toString,Rt=Object.defineProperty,zt=Object.getOwnPropertyDescriptor,Vt=function(e){return\"function\"==typeof Array.isArray?Array.isArray(e):\"[object Array]\"===Ht.call(e)},_t=function(e){if(!e||\"[object Object]\"!==Ht.call(e))return!1;var t,n=Ft.call(e,\"constructor\"),r=e.constructor&&e.constructor.prototype&&Ft.call(e.constructor.prototype,\"isPrototypeOf\");if(e.constructor&&!n&&!r)return!1;for(t in e);return void 0===t||Ft.call(e,t)},Bt=function(e,t){Rt&&\"__proto__\"===t.name?Rt(e,t.name,{enumerable:!0,configurable:!0,value:t.newValue,writable:!0}):e[t.name]=t.newValue},Yt=function(e,t){if(\"__proto__\"===t){if(!Ft.call(e,t))return;if(zt)return zt(e,t).value}return e[t]},$t=function e(){var t,n,r,o,i,a,l=arguments[0],u=1,c=arguments.length,s=!1;for(\"boolean\"==typeof l&&(s=l,l=arguments[1]||{},u=2),(null==l||\"object\"!=typeof l&&\"function\"!=typeof l)&&(l={});u<c;++u)if(null!=(t=arguments[u]))for(n in t)r=Yt(l,n),l!==(o=Yt(t,n))&&(s&&o&&(_t(o)||(i=Vt(o)))?(i?(i=!1,a=r&&Vt(r)?r:[]):a=r&&_t(r)?r:{},Bt(l,{name:n,newValue:e(s,a,o)})):void 0!==o&&Bt(l,{name:n,newValue:o}));return l};function Ut(e,t,n,r){if(!e)return-1;const o=n.cache,i=e.origin?e.origin():null;i&&(e=i);let a=o.fields.indexOf(e),l=-1,u=-1;if(-1===a)for(let t=0;t<o.wrappedFields.length;t++)if(u=o.wrappedFields[t].attrDims.map((e=>e.instance)).indexOf(e),l=o.wrappedFields[t].attrExps.map((e=>e.instance)).indexOf(e),-1!==u||-1!==l){a=t;break}if(Array.isArray(r)&&r.some(((e,t)=>e!==t))){const e=r.indexOf(a);-1!==e&&(a=e)}return a-=t.qArea.qLeft,a<0||a>=t.qArea.qWidth?-1:u>=0?e=>e[a].qAttrDims.qValues[u]:l>=0?e=>e[a].qAttrExps.qValues[l]:e=>e[a]}function Kt(e,t,n){let{key:r}=n;const 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 Gt(e){let{cache:t,f:n,mainCell:r,p:o,prop:i,page:a,rowIdx:l,row:u,sourceKey:c,target:s,targetProp:f,columnOrder:d}=e,p=r;if(o.field&&o.field!==n){const e=Ut(o.field,a,{cache:t},d);if(-1===e)return;p=$t({qRow:l},e(u))}s[f]=Kt(o,p,{key:c})}function Wt(e,t,n,r){const o=Array.isArray(e)?e:[e];let i=[];for(let e=0;e<o.length;e++)if(void 0!==o[e].field){const a=t.raw(),l=t.key(),u=\"object\"==typeof o[e].field?o[e].field:t.field(o[e].field),{props:c,main:s}=r.normalizeConfig(o[e],t),f=Object.keys(c),d=!!o[e].trackBy,p=typeof o[e].trackBy,h={},m=[],v=[];for(let t=0;t<a.qDataPages.length;t++){const i=Ut(u,a.qDataPages[t],{cache:n},a.qColumnOrder);if(-1!==i)for(let y=0;y<a.qDataPages[t].qMatrix.length;y++){const g=a.qDataPages[t].qArea.qTop+y,b=$t({qRow:g},i(a.qDataPages[t].qMatrix[y])),x=Kt(s,b,{key:l});if(!(s.filter&&!s.filter(b))){for(let e=0;e<f.length;e++){const r=c[f[e]];let o=r.fields||[r];r.fields&&(x[f[e]]=[]);for(let i=0;i<o.length;i++)Gt({cache:n,f:u,mainCell:b,p:o[i],prop:f[e],props:c,page:a.qDataPages[t],rowIdx:g,row:a.qDataPages[t].qMatrix[y],sourceKey:l,target:r.fields?x[f[e]]:x,targetProp:r.fields?i:f[e],columnOrder:a.qColumnOrder});if(r.fields){const t=x[f[e]].map((e=>e.value)),n=x[f[e]].map((e=>e.label));x[f[e]]={value:\"function\"==typeof r.value?r.value(t):void 0!==r.value?r.value:t,label:\"function\"==typeof r.label?r.label(n):void 0!==r.label?String(r.label):String(x[f[e]].value)}}}d&&r.track({cfg:o[e],itemData:b,obj:x,target:m,tracker:h,trackType:p}),v.push(x)}}}const y=d?r.collect(m,{main:s,propsArr:f,props:c}):v;i=[...i,...y]}return i}function Xt(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 Zt(e,t){e instanceof Map?(e=[void 0,e],void 0===t&&(t=Qt)):void 0===t&&(t=Jt);for(var n,r,o,i,a,l=new nn(e),u=[l];n=u.pop();)if((o=t(n.data))&&(a=(o=Array.from(o)).length))for(n.children=o,i=a-1;i>=0;--i)u.push(r=o[i]=new nn(o[i])),r.parent=n,r.depth=n.depth+1;return l.eachBefore(tn)}function Jt(e){return e.children}function Qt(e){return Array.isArray(e)?e[1]:null}function en(e){void 0!==e.data.value&&(e.value=e.data.value),e.data=e.data.data}function tn(e){var t=0;do{e.height=t}while((e=e.parent)&&e.height<++t)}function nn(e){this.data=e,this.depth=this.height=0,this.parent=null}function rn(e){return null==e?null:function(e){if(\"function\"!=typeof e)throw new Error;return e}(e)}nn.prototype=Zt.prototype={constructor:nn,count:function(){return this.eachAfter(Xt)},each:function(e,t){let n=-1;for(const r of this)e.call(t,r,++n,this);return this},eachAfter:function(e,t){for(var n,r,o,i=this,a=[i],l=[],u=-1;i=a.pop();)if(l.push(i),n=i.children)for(r=0,o=n.length;r<o;++r)a.push(n[r]);for(;i=l.pop();)e.call(t,i,++u,this);return this},eachBefore:function(e,t){for(var n,r,o=this,i=[o],a=-1;o=i.pop();)if(e.call(t,o,++a,this),n=o.children)for(r=n.length-1;r>=0;--r)i.push(n[r]);return this},find:function(e,t){let n=-1;for(const r of this)if(e.call(t,r,++n,this))return r},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(){return Array.from(this)},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 Zt(this).eachBefore(en)},[Symbol.iterator]:function*(){var e,t,n,r,o=this,i=[o];do{for(e=i.reverse(),i=[];o=e.pop();)if(yield o,t=o.children)for(n=0,r=t.length;n<r;++n)i.push(t[n])}while(i.length)}};var on={depth:-1},an={},ln={};function un(e){return e.id}function cn(e){return e.parentId}function sn(){var e,t=un,n=cn;function r(r){var o,i,a,l,u,c,s,f,d=Array.from(r),p=t,h=n,m=new Map;if(null!=e){const t=d.map(((t,n)=>function(e){let t=(e=`${e}`).length;dn(e,t-1)&&!dn(e,t-2)&&(e=e.slice(0,-1));return\"/\"===e[0]?e:`/${e}`}(e(t,n,r)))),n=t.map(fn),o=new Set(t).add(\"\");for(const e of n)o.has(e)||(o.add(e),t.push(e),n.push(fn(e)),d.push(ln));p=(e,n)=>t[n],h=(e,t)=>n[t]}for(a=0,o=d.length;a<o;++a)i=d[a],c=d[a]=new nn(i),null!=(s=p(i,a,r))&&(s+=\"\")&&(f=c.id=s,m.set(f,m.has(f)?an:c)),null!=(s=h(i,a,r))&&(s+=\"\")&&(c.parent=s);for(a=0;a<o;++a)if(s=(c=d[a]).parent){if(!(u=m.get(s)))throw new Error(\"missing: \"+s);if(u===an)throw new Error(\"ambiguous: \"+s);u.children?u.children.push(c):u.children=[c],c.parent=u}else{if(l)throw new Error(\"multiple roots\");l=c}if(!l)throw new Error(\"no root\");if(null!=e){for(;l.data===ln&&1===l.children.length;)l=l.children[0],--o;for(let e=d.length-1;e>=0&&(c=d[e],c.data===ln);--e)c.data=null}if(l.parent=on,l.eachBefore((function(e){e.depth=e.parent.depth+1,--o})).eachBefore(tn),l.parent=null,o>0)throw new Error(\"cycle\");return l}return r.id=function(e){return arguments.length?(t=rn(e),r):t},r.parentId=function(e){return arguments.length?(n=rn(e),r):n},r.path=function(t){return arguments.length?(e=rn(t),r):e},r}function fn(e){let t=e.length;if(t<2)return\"\";for(;--t>1&&!dn(e,t););return e.slice(0,t)}function dn(e,t){if(\"/\"===e[t]){let n=0;for(;t>0&&\"\\\\\"===e[--t];)++n;if(0==(1&n))return!0}return!1}function pn(e,t){\"/\"===e.charAt(0)&&(e=e.substring(1));const n=e.split(\"/\");let r,o=t;for(let e=0;e<n.length;e++){if(\"*\"===n[e]&&Array.isArray(o)){const t=[];r=n.slice(e+1).join(\"/\");for(let e=0;e<o.length;e++){let n=pn(r,o[e]);Array.isArray(n)?t.push(...n):t.push(n)}return t}if(!n[e]&&Array.isArray(o)){const t=new Array(o.length);r=n.slice(e+1).join(\"/\");for(let e=0;e<o.length;e++)t[e]=pn(r,o[e]);return t}n[e]in o&&(o=o[n[e]])}return o}function hn(e,t,n){let r=[];if(!e||!e.length)return r;if(t<=0){const t=n>=0?[e[n]]:e;r=[...r,...t]}else for(let o=0;o<e.length;o++)e[o].children&&e[o].children.length&&(r=[...r,...hn(e[o].children,t-1,n)]);return r}function mn(e,t,n){if(e===t)return e=>e;if(e>t){const n=Math.max(0,Math.min(100,e-t));return e=>{let t=e;for(let e=0;e<n;++e)t=t.parent;return t}}if(t>e){const r=Math.max(0,Math.min(100,t-e));return e=>hn(e.children,r-1,n)}return!1}function vn(e,t){let{cache:n}=t;if(\"number\"==typeof e)return n.fields[e];const r=n.allFields;if(\"function\"==typeof e){for(let t=0;t<r.length;t++)if(e(r[t]))return r[t];return!1}if(\"string\"==typeof e){for(let t=0;t<r.length;t++)if(r[t].key()===e||r[t].title()===e)return r[t]}else if(e&&-1!==r.indexOf(e))return e;throw Error(\"Field not found: \".concat(e))}const yn=/^qDimensionInfo(?:\\/(\\d+))?/,gn=/^\\/?qMeasureInfo\\/(\\d+)/,bn=/\\/qAttrExprInfo\\/(\\d+)/,xn=/\\/qAttrDimInfo\\/(\\d+)/;function qn(e){return(e.qColumnOrder&&e.qColumnOrder.length?e.qColumnOrder:e.qDimensionInfo.map(((e,t)=>t))).filter((t=>t<e.qDimensionInfo.length))}function wn(e,t){let{cube:n}=t;if(!e)return-1;let r=e.origin&&e.origin()?e.origin().key():e.key(),o=!1,i=-1,a=-1,l=-1,u=-1,c=-1,s=-1,f=r;const d=n.qEffectiveInterColumnSortOrder,p=qn(n);return yn.test(f)&&(o=!0,i=+yn.exec(f)[1],f=r.replace(yn,\"\")),gn.test(f)&&(\"K\"===n.qMode?c=+gn.exec(f)[1]:d&&-1!==d.indexOf(-1)?(c=+gn.exec(f)[1],s=0):s=+gn.exec(f)[1],f=f.replace(gn,\"\")),f&&(xn.exec(f)?l=+xn.exec(f)[1]:bn.exec(f)&&(a=+bn.exec(f)[1])),u=o?\"S\"===n.qMode?p[i]:d?d.indexOf(i):i:d&&-1!==d.indexOf(-1)?d.indexOf(-1):n.qDimensionInfo.length-(\"K\"===n.qMode?0:1),{fieldDepth:u+1,pseudoMeasureIndex:c,measureIdx:s,attrDimIdx:l,attrIdx:a}}function Mn(e,t){let n,r,o=mn(e.fieldDepth,t.fieldDepth,t.pseudoMeasureIndex);return n=t.measureIdx>=0?e=>e.data.qValues[t.measureIdx]:e=>e.data,t.attrDimIdx>=0?r=e=>{var n;return null==e||null===(n=e.qAttrDims)||void 0===n?void 0:n.qValues[t.attrDimIdx]}:t.attrIdx>=0&&(r=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 kn(e,t,n){let{key:r}=n;const 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 Sn(e){let{propsArr:t,props:n,item:r,itemData:o,ret:i,sourceKey:a}=e;for(let e=0;e<t.length;e++){const l=n[t[e]],u=l.fields||[l];let c,s;l.fields&&(c=[],s=[]);for(let n=0;n<u.length;n++){const f=u[n];let d,p,h,m,v,y;if(\"primitive\"===f.type?(h=f.value,y=String(f.value)):(\"function\"==typeof f.value&&(d=e=>f.value(e,r)),\"function\"==typeof f.label&&(p=e=>f.label(e,r)),f.accessor?(m=f.accessor(r),Array.isArray(m)?(v=m.map(f.valueAccessor),f.attrAccessor&&(v=v.map(f.attrAccessor)),d&&(h=v.map(d),d=null),p&&(y=v.map(p),p=null),h=f.reduce?f.reduce(h):h,y=f.reduceLabel?f.reduceLabel(y,h):String(h)):(h=f.attrAccessor?f.attrAccessor(f.valueAccessor(m)):f.valueAccessor(m),y=h)):(h=o,y=o)),l.fields){const e=d?d(h):h;c.push(e),s.push(p&&null!=y?p(y):null!=y?y:String(e))}else{const n=d?d(h):h;i[t[e]]={value:n,label:p?p(y):null!=y?y:String(n)},f.field&&(i[t[e]].source={field:f.field.key(),key:a})}}c&&(i[t[e]]={value:\"function\"==typeof l.value?l.value(c,r):c,label:\"function\"==typeof l.label?l.label(s,r):s})}}const Cn=(e,t,n)=>{const r=\"K\"===e.qMode?\"/qStackedDataPages/*/qData\":\"/qTreeDataPages/*\",o=\"K\"===e.qMode?\"qSubNodes\":\"qNodes\",i=pn(r,e);return i&&i[0]?(t.tree=Zt(i[0],n.children||(e=>e[o])),t.tree):null};function Dn(e){const t=e.raw().qDataPages.length?e.raw().qDataPages[0].qMatrix:[],n=function(e){const t=e.raw().qColumnOrder,n=e.fields();return t&&t.length===n.length?t:n.map(((e,t)=>t))}(e),r=e.fields(),o=e.fields().filter((e=>\"dimension\"===e.type())).map((e=>n.indexOf(r.indexOf(e)))),i=e.fields().filter((e=>\"measure\"===e.type())).map((e=>n.indexOf(r.indexOf(e)))),a={__root:{__id:\"__root\",qValues:[]}};for(let e=0;e<t.length;e++){const n=t[e];let r=\"__root\",u=!1;for(let e=0;e<o.length;e++){var l;const t=n[o[e]],i=\"\".concat(r,\"__\").concat(null!==(l=t.qElemNumber)&&void 0!==l?l:t.qElemNo);a[i]||(a[i]=Pt({__id:i,__parent:r,qValues:[]},t),u=!0),r=i}if(u)for(let e=0;e<i.length;e++){const t=n[i[e]];a[r].qValues.push(t)}}const u=Object.keys(a).map((e=>a[e]));return sn().id((e=>e.__id)).parentId((e=>e.__parent))(u)}const In=e=>{let{propsArr:t,props:n,cube:r,cache:o,itemDepthObject:i,f:a}=e;for(let e=0;e<t.length;e++){const l=n[t[e]],u=l.fields?l.fields:[l];for(let e=0;e<u.length;e++){const t=u[e];if(t.field!==a){const e=Mn(i,wn(t.field,{cube:r,cache:o}));t.accessor=e.nodeFn,t.valueAccessor=e.valueFn,t.attrAccessor=e.attrFn}}}};function On(){let 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;const o=t.raw(),i=t.key(),a=\"S\"===o.qMode?Dn(t):Cn(o,n,e);if(!a)return null;const l=a.height,u=[];for(let i=0;i<=l;i++){let a=null;if(i>0)if(\"S\"===o.qMode){let e=qn(o)[i-1];a=n.fields[e]}else{let e=o.qEffectiveInterColumnSortOrder[i-1];i>o.qEffectiveInterColumnSortOrder.length&&(e=o.qDimensionInfo.length),a=n.fields[e]}const{props:l,main:c}=r.normalizeConfig(Pt(Pt({},e),{},{field:a?a.key():void 0}),t),s=Object.keys(l);u[i]={propsArr:s,props:l,main:c};const f=a?wn(a,{cube:o,cache:n}):{fieldDepth:0};In({propsArr:s,props:l,cube:o,cache:n,itemDepthObject:f,f:a})}const c=a.copy(),s=c.descendants(),f=a.descendants();for(let e=0;e<f.length;e++){const t=u[f[e].depth].propsArr,n=u[f[e].depth].props,r=u[f[e].depth].main,o=s[e],a=o.data,l=kn(r,a,{key:i});Sn({propsArr:t,props:n,item:o,itemData:a,ret:l,sourceKey:i,isTree:!0}),f[e].data=l}return a}function En(e,t,n,r){const o=Array.isArray(e)?e:[e];let i=[];for(let a=0;a<o.length;a++)if(void 0!==o[a].field){const l=t.raw(),u=t.key();if(!Cn(l,n,e))continue;const c=\"object\"==typeof o[a].field?o[a].field:t.field(o[a].field),{props:s,main:f}=r.normalizeConfig(o[a],t),d=Object.keys(s),p=wn(c,{cube:l,cache:n}),{nodeFn:h,attrFn:m,valueFn:v}=Mn({fieldDepth:0},p);In({propsArr:d,props:s,cube:l,cache:n,itemDepthObject:p,f:c});const y=!!o[a].trackBy,g=typeof o[a].trackBy,b={},x=[],q=h(n.tree),w=[];for(let e=0;e<q.length;e++){const t=q[e],n=m?m(v(t)):v(t);if(f.filter&&!f.filter(n))continue;const i=kn(f,n,{key:u});Sn({propsArr:d,props:s,item:t,itemData:n,ret:i,sourceKey:u}),y&&r.track({cfg:o[a],itemData:n,obj:i,target:x,tracker:b,trackType:g}),w.push(i)}const M=y?r.collect(x,{main:f,propsArr:d,props:s}):w;i=[...i,...M]}return i}\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self&&self;var An,Nn,Ln=(An=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,l,u,c,s,f,d=e.length,p=e.search(/[0-9\\-\\+#]/),h=p>0?e.substring(0,p):\"\",m=e.split(\"\").reverse().join(\"\"),v=m.search(/[0-9\\-\\+#]/),y=d-v,g=e.substring(y,y+1),b=y+(\".\"===g||\",\"===g?1:0),x=v>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))+\"\",l=e[1]&&e[1].lastIndexOf(\"0\"),(!(c=t.split(\".\"))[1]||c[1]&&c[1].length<=l)&&(t=(+t).toFixed(l+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],u=s[1]&&s[s.length-1].length){for(m=\"\",y=(f=t[0]).length%u,d=f.length,b=0;b<d;b++)m+=f.charAt(b),!((b-y+1)%u)&&b<d-u&&(m+=i);t[0]=m}return t[1]=e[1]&&t[1]?o+t[1]:\"\",\"0\"!==(r=t.join(\"\"))&&\"\"!==r||(n=!1),h+(n?\"-\":\"\")+r+x}},An(Nn={exports:{}},Nn.exports),Nn.exports);function Tn(e){return e.replace(/[-[\\]/{}()*+?.\\\\^$|]/g,\"\\\\$&\")}const Pn={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\"},jn=/%\\)?$/,Fn=/^\\(r(0[2-9]|[12]\\d|3[0-6])\\)/i,Hn=/^\\(oct\\)/i,Rn=/^\\(dec\\)/i,zn=/^\\(hex\\)/i,Vn=/^\\(bin\\)/i,_n=/^\\(rom\\)/i,Bn=/^(\\(rom\\)|\\(bin\\)|\\(hex\\)|\\(dec\\)|\\(oct\\)|\\(r(0[2-9]|[12]\\d|3[0-6])\\))/i,Yn=/#|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 Un(e,t,n){let r;return Fn.test(t)?e=$n(e,Number(/\\d{2}/.exec(t)[0]),t,n):Hn.test(t)?e=$n(e,8,t,n):Rn.test(t)?e=$n(e,10,t,n):zn.test(t)?e=$n(e,16,t,n):Vn.test(t)?e=$n(e,2,t,n):_n.test(t)&&(r=\"\",e<0&&(r=\"-\",e=-e),0===(e=Math.floor(e))?e=\"0\":e<=5e5?(e=function(e,t){let 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(),l=[\"0\",\"I\",\"IV\",\"V\",\"IX\",\"X\",\"XL\",\"L\",\"XC\",\"C\",\"CD\",\"D\",\"CM\"].reverse();for(;o>0;)for(n=0;n<a.length;n++)if(a[n]<=o){r+=l[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 Kn(e,t,n){const r=Tn(e);return n?r:new RegExp(r||\"\",t)}function Gn(e,t,n,r){let o,i,a,l,u,c,s,f,d,p=e.pattern;var h,m;r&&(e.abbreviate=!0),h=t,(m=n)&&(m=Tn(m)),h&&(h=Tn(h)),d=new RegExp(\"(?:[#0]+\".concat(h,\")?[#0]+(?:\").concat(m,\"[#0]+)?\")),a=p.match(d),a=a?a[0]:\"\",l=a?p.substr(0,p.indexOf(a)):p,u=a?p.substring(p.indexOf(a)+a.length):\"\",a||(a=p?\"#\":\"##########\"),t&&t===n&&(o=a.split(n),i=o.pop(),a=o.join(\"\")+n+i,t=\"\"),c=t,t=/,/.test(n)?\"¤\":\",\",c&&(a=a.replace(Kn(c,\"g\"),t)),s=n,n=\".\",s&&(a=a.replace(Kn(s,\"g\"),n)),f=a.match(/#/g),f=f?f.length:0;const v=p.split(s);let y;v[1]&&(y=v[1].match(Yn)),e.prefix=l||\"\",e.postfix=u||\"\",e.pattern=p,e.maxPrecision=y?y.length:2,e.percentage=jn.test(p),e.numericPattern=a||\"\",e.numericRegex=new RegExp(\"\".concat(Kn(t,null,!0),\"|\").concat(Kn(n,null,!0)),\"g\"),e.groupTemp=c,e.decTemp=s,e.t=t,e.d=n,e.temp=f}class Wn{constructor(e,t,n,r,o){this.localeInfo=e,this.pattern=t,this.thousandDelimiter=n||\",\",this.decimalDelimiter=r||\".\",this.type=o||\"numeric\",this.patternSeparator=\";\",this.abbreviations=function(e,t){if(!e||!e.qNumericalAbbreviation)return Pn;const n={};return e.qNumericalAbbreviation.split(t).forEach((e=>{let t=e.split(\":\");2===t.length&&(n[t[0]]=t[1])})),n}(e,this.patternSeparator),this.prepare()}clone(){const e=new Wn(this.localeInfo,this.pattern,this.thousandDelimiter,this.decimalDelimiter,this.type);return e.subtype=this.subtype,e}format(e,t,n,r){return this.prepare(t,n,r),this.formatValue(e)}prepare(e,t,n){let r;if(void 0===e&&(e=this.pattern),void 0===t&&(t=this.thousandDelimiter),void 0===n&&(n=this.decimalDelimiter),!e)return void(this._prepared={pattern:!1});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],Bn.test(e[0])&&(r.positive.isFunctional=!0),e[1]?Bn.test(e[1])&&(r.negative.isFunctional=!0):r.negative=!1,e[2]?Bn.test(e[2])&&(r.zero.isFunctional=!0):r.zero=!1;const o=\"U\"===this.type;r.positive.isFunctional||Gn(r.positive,t,n,o),r.negative&&!r.negative.isFunctional&&Gn(r.negative,t,n,o),r.zero&&!r.zero.isFunctional&&Gn(r.zero,t,n,o)}formatValue(e){let t,n,r,o,i,a,l,u,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,s.pattern;if(e<0&&s.negative?(s=s.negative,e=-e):s=s.positive,i=s.d,a=s.t,s.isFunctional)e=Un(e,s.pattern,i);else{if(s.percentage&&(e*=100),s.abbreviate){const t=Object.keys(this.abbreviations).map((e=>parseInt(e,10))).sort(((e,t)=>e-t));let r,o,i=t[0];for(l=0,n=Number(Number(e).toExponential().split(\"e\")[1]);i<=n&&l<t.length;)l++,i=t[l];l>0&&(r=t[l-1]),r&&n>0&&r>0?o=r:(n<0&&r<0||!r)&&(i<0&&i-n<=s.maxPrecision?o=i:r<=n&&!(i>0&&-n<=s.maxPrecision)&&(o=r)),o&&(f=this.abbreviations[o],e/=10**o)}if(r=Math.abs(e),t=s.temp,u=s.numericPattern,c=u.split(i)[1],\"I\"===this.type&&(e=Math.round(e)),o=e,c||\"#\"!==u.slice(-1)[0])if(r>=1e15||r>0&&r<=1e-14)e=r?r.toExponential(15).replace(/\\.?0+(?=e)/,\"\"):\"0\";else{const t=Number(e.toFixed(Math.min(20,c?c.length:0)).split(\".\")[0]);let n=u.split(i)[0];if(n+=i,e=Ln(n,t)||\"0\",c){const t=Math.max(0,Math.min(14,c.length)),n=c.replace(/#+$/,\"\").length;let o=(\"I\"===this.type?0:r%1).toFixed(t).slice(2).replace(/0+$/,\"\");for(l=o.length;l<n;l++)o+=\"0\";o&&(e+=i+o)}else 0===t&&(o=0)}else if(r>=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(u+=i,t=Math.max(0,Math.min(20,t-Math.ceil(Math.log(r)/Math.log(10)))),l=0;l<t;l++)u+=\"#\";e=Ln(u,e)}e=e.replace(s.numericRegex,(e=>e===a?s.groupTemp:e===i?s.decTemp:\"\")),o<0&&!/^-/.test(e)&&(e=\"-\".concat(e))}return s.prefix+e+d+f+s.postfix}static getStaticFormatter(){return{prepare(){},formatValue:e=>\"\".concat(e)}}}function Xn(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{size:n=5e3,multipleArguments:r=!1,toKey:o=(e=>e)}=t;let i,a,l=Object.create(null),u=Object.create(null),c=0,s=0;return i=r?function(){return a=o(...arguments),i.has(a)?i.get(a):i.set(a,e(...arguments))}:t=>(a=o(t),i.has(a)?i.get(a):i.set(a,e(t))),i.set=(e,t)=>(c>=n&&(delete l[u[s]],delete u[s],c--,s++),l[e]=t,u[c]=e,c++,t),i.get=e=>l[e],i.has=e=>e in l,i.clear=()=>{l=Object.create(null),u=Object.create(null),c=0,s=0},i.size=()=>c,i}function Zn(e,t,n,r,o){const i=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return new Wn(...t)}(o,e,t,n,r),a=Xn(i.formatValue.bind(i),{toKey:e=>isNaN(e)?e:+e});function l(e){return a(e)}return l.format=function(e,t,n,r){return a.clear(),i.format(t,e,n,r)},l.pattern=function(e){return e&&(a.clear(),i.pattern=e,i.prepare()),i.pattern},l}const Jn=\"D\",Qn=\"T\",er=\"TS\",tr=\"IV\",nr=[\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\",\"Sunday\"],rr=[\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\",\"Sun\"],or=[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],ir=[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"];function ar(e,t){for(let n=e.length;n<t;n++)e=\"0\".concat(e);return e}function lr(e){let t=e.toString().split(\".\");return t[1]?(t=Number(\"0.\".concat(t[1])),t):0}function ur(e,t){let n,r=function(e){const t=e,n=24*lr(t),r=60*lr(n),o=60*lr(r),i=1e3*lr(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,l=r.s,u=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)||(l+=60*a),/w+/gi.test(t)&&(c=n?n.getDay()-1:0,c<0&&(c=6));let s=\"\";return n&&(s=n.getUTCHours()>=12?\"pm\":\"am\"),{year:0,month:0,day:c,date:o,h:i,m:a,s:l,f:u,t:s}}class cr{constructor(e,t,n){const r=e||{};if(r.qCalendarStrings||(r.qCalendarStrings={qLongDayNames:nr,qDayNames:rr,qLongMonthNames:or,qMonthNames:ir}),this.localeInfo=r,this.locale_days=r.qCalendarStrings.qLongDayNames.slice(),this.locale_days_abbr=r.qCalendarStrings.qDayNames.slice(),this.locale_months=r.qCalendarStrings.qLongMonthNames.slice(),this.locale_months_abbr=r.qCalendarStrings.qMonthNames.slice(),!t){t={[Qn]:r.qTimeFmt||\"hh:mm:ss\",[Jn]:r.qDateFmt||\"YYYY-MM-DD\",[er]:r.qTimestampFmt||\"YYYY-MM-DD hh:mm:ss\"}[n]}this.pattern=t}clone(){const e=new cr(this.localeInfo,this.pattern);return e.subtype=this.subtype,e}format(e,t){t||(t=this.pattern?this.pattern:\"YYYY-MM-DD hh:mm:ss\"),t=t.replace(/\\[.+]|\\[|]/g,\"\");const n=/t+/gi.test(t);let r;e instanceof Date?r=function(e,t){let n=e.getUTCHours(),r=e.getUTCDay()-1;return t&&(n%=12,n||(n=12)),r<0&&(r=6),{year:e.getUTCFullYear(),month:e.getUTCMonth(),day:r,date:e.getUTCDate(),h:n,m:e.getUTCMinutes(),s:e.getUTCSeconds(),f:e.getUTCMilliseconds(),t:e.getUTCHours()>=12?\"pm\":\"am\"}}(e,n):(e<0&&(e=-e,t=\"-\".concat(t)),r=ur(e,t));const o=(i=this,a=r,{\"Y+|y+\":{Y:\"\".concat(Number(\"\".concat(a.year).slice(-2))),YY:ar(\"\".concat(a.year).slice(-2),2),YYY:ar(\"\".concat(a.year).slice(-3),3),def:e=>ar(\"\".concat(a.year),e.length)},\"M+\":{M:a.month+1,MM:ar(\"\".concat(a.month+1),2),MMM:i.locale_months_abbr[a.month],def:i.locale_months[a.month]},\"W+|w+\":{W:a.day,WW:ar(\"\".concat(a.day),2),WWW:i.locale_days_abbr[a.day],def:i.locale_days[a.day]},\"D+|d+\":{D:a.date,def:e=>ar(\"\".concat(a.date),e.length)},\"h+|H+\":{h:a.h,def:e=>ar(\"\".concat(a.h),e.length)},\"m+\":{m:a.m,def:e=>ar(\"\".concat(a.m),e.length)},\"s+|S+\":{s:a.s,def:e=>ar(\"\".concat(a.s),e.length)},\"f+|F+\":{def(e){let t=\"\".concat(a.f),n=e.length-t.length;if(n>0)for(let e=0;e<n;e++)t+=\"0\";else n<0&&(t=t.slice(0,e.length));return t}},\"t{1,2}|T{1,2}\":{def(e){let t=a.t;return e[0].toUpperCase()===e[0]&&(t=t.toUpperCase()),t=t.slice(0,e.length),t}}});var i,a;const l=[];for(const e in o)Object.prototype.hasOwnProperty.call(o,e)&&l.push(e);const u=new RegExp(l.join(\"|\"),\"g\");return t.replace(u,(e=>{let t,n,r;for(n in o)if(Object.prototype.hasOwnProperty.call(o,n)&&(t=new RegExp(n),t.test(e)))break;if(!t)return\"\";for(const t in o[n])if(t===e||t.toLowerCase()===e){r=o[n][t],void 0===r&&(r=o[n][t.toLowerCase()]);break}return void 0===r&&(r=o[n].def),\"function\"==typeof r&&(r=r(e)),r}))}}function sr(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return new cr(...t)}function fr(e){return new Date(Date.UTC(1899,11,30+Math.floor(e),0,0,0,Math.round(864e5*(e-Math.floor(e)))))}function dr(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"TS\",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=sr(n,e,t),o=Xn(r.format.bind(r),{toKey:e=>\"object\"==typeof e&&\"function\"==typeof e.getTime?e.getTime():e});function i(e){return t!==tr?fr(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=sr(n,e,t),o=Xn(r.format.bind(r),{toKey:e=>\"object\"==typeof e?e.getTime():e}),this},a.qtype=function(e){return void 0!==e&&(t=e,o.clear()),t},a}function pr(e,t){if(e&&e.qNumFormat&&-1!==[\"D\",\"T\",\"TS\",\"IV\"].indexOf(e.qNumFormat.qType))return dr(e.qNumFormat.qFmt,e.qNumFormat.qType,t);let 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,\"##\"),i=\"U\"),Zn(n,r,o,i,t)}function hr(){let e,{meta:t,id:n,key:r,localeInfo:o,fieldExtractor:i,value:a,type:l,sourceField:u}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const c=a||(\"dimension\"===l?e=>null==e?void 0:e.qElemNo:e=>null==e?void 0:e.qValue),s=e=>(null==e?void 0:e.qText)||\"\",f=\"dimension\"===l?\"first\":\"avg\",d=pr(t,o),p=\"dimension\"===l?\"first\":(e,t)=>d(t),h={id:()=>n,key:()=>r,raw:()=>t,title:()=>t.qFallbackTitle||t.label,type:()=>l,origin:()=>u,items:()=>(e||(e=i(h)),e),min:()=>t.qMin,max:()=>t.qMax,value:c,label:s,reduce:f,reduceLabel:p,formatter:()=>d,tags:()=>t.qTags};return h}function mr(e,t,n,r,o){return(t[e]||[]).map(((t,i)=>{const a=\"\".concat(r?\"\".concat(r,\"/\"):\"\").concat(e,\"/\").concat(i),l={instance:hr($t({id:\"\".concat(n?\"\".concat(n,\"/\"):\"\").concat(a),key:a,meta:t},o))};return l.attrDims=mr(\"qAttrDimInfo\",t,n,a,$t({},o,{value:e=>null==e?void 0:e.qElemNo,type:\"dimension\"})),l.attrExps=mr(\"qAttrExprInfo\",t,n,a,$t({},o,{value:e=>null==e?void 0:e.qNum,type:\"measure\"})),l.measures=mr(\"qMeasureInfo\",t,n,a,$t({},o,{value:e=>null==e?void 0:e.qValue,type:\"measure\"})),l}))}function vr(){let{key:e,data:t,config:n={}}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const r={fields:[],wrappedFields:[],allFields:[],virtualFields:[]},o=t;if(!o)throw new Error('Missing \"data\" input');if(!o.qDimensionInfo)throw new Error('The \"data\" input is not recognized as a hypercube');const i=vr.util,a={cache:r,cube:o,localeInfo:n.localeInfo,fieldExtractor:null,pages:null,hierarchy:()=>null,virtualFields:n.virtualFields},l={key:()=>e,raw:()=>o,field:e=>vn(e,a),fields:()=>r.fields.slice(),extract:e=>a.extractor(e,l,r,i),hierarchy:e=>a.hierarchy(e,l,r,i),_cache:()=>r};\"K\"===o.qMode||\"T\"===o.qMode||!o.qMode&&o.qNodesOnDim?(a.extractor=En,a.hierarchy=On,a.pages=\"K\"===o.qMode?o.qStackedDataPages:o.qTreeDataPages):\"S\"===o.qMode?(a.extractor=Wt,a.pages=o.qDataPages,a.hierarchy=On):a.extractor=()=>[],a.fieldExtractor=e=>a.extractor({field:e},l,r,i);const u=\"S\"===o.qMode?e=>e.qElemNumber:void 0,c=\"S\"===o.qMode?e=>e.qNum:void 0;r.wrappedFields.push(...mr(\"qDimensionInfo\",o,e,\"\",$t({},a,{value:u,type:\"dimension\"}))),r.wrappedFields.push(...mr(\"qMeasureInfo\",o,e,\"\",$t({},a,{value:c,type:\"measure\"}))),r.fields=r.wrappedFields.map((e=>e.instance));const s=e=>{e.forEach((e=>{r.allFields.push(e.instance),s(e.measures),s(e.attrDims),s(e.attrExps)}))};return s(r.wrappedFields),(n.virtualFields||[]).forEach((t=>{const n=l.field(t.from),o=hr(Pt({meta:n.raw(),id:\"\".concat(e,\"/\").concat(t.key),sourceField:n,fieldExtractor:e=>a.extractor({field:e},l,r,i),key:t.key,type:n.type(),localeInfo:a.localeInfo,value:n.value},t.override||{}));r.virtualFields.push(o)})),r.allFields.push(...r.virtualFields),l}const yr=[[\"qHyperCube\",\"qHyperCubeDef\"],[\"qTreeData\",\"qTreeDataDef\"],[\"qDimensionInfo\",\"qDimensions\"],[\"qMeasureInfo\",\"qMeasures\"],[\"qAttrDimInfo\",\"qAttributeDimensions\"],[\"qAttrExprInfo\",\"qAttributeExpressions\"]],gr=/\\/qDimensionInfo(?:\\/(\\d+))?/,br=/\\/qMeasureInfo\\/(\\d+)/,xr=/\\/qAttrDimInfo\\/(\\d+)(?:\\/(\\d+))?/,qr=/\\/qAttrExprInfo\\/(\\d+)/,wr=/\\/?qHyperCube/,Mr=/\\/?qTreeData/,kr=e=>\"\".concat(e.substr(0,e.indexOf(\"/qHyperCubeDef\")+14)),Sr=e=>\"\".concat(e.substr(0,e.indexOf(\"/qTreeDataDef\")+13));function Cr(e,t){let n=e,r=-1,o=-1,i=\"\",a=e=>e;wr.test(e)?(i=\"\".concat(n.substr(0,n.indexOf(\"qHyperCube\")+10)),a=kr):Mr.test(e)&&(i=\"\".concat(n.substr(0,n.indexOf(\"qTreeData\")+9)),a=Sr);let l=!0;if(gr.test(e)&&(r=+gr.exec(e)[1]),br.test(e)&&(o=+br.exec(e)[1]),xr.test(e)){o=-1,r=0;const e=+xr.exec(n)[2];isNaN(e)||(r=e,n=n.replace(/\\/\\d+$/,\"\")),l=!1}if(qr.test(e)){const e=o;if(t){o=0;const a=pn(i,t);o+=(a.qMeasureInfo||[]).length,r>-1?(o=a.qDimensionInfo.slice(0,r).reduce(((e,t)=>e+t.qAttrExprInfo.length),o),r=-1):(o=a.qDimensionInfo.reduce(((e,t)=>e+t.qAttrExprInfo.length),o),o=a.qMeasureInfo.slice(0,e).reduce(((e,t)=>e+t.qAttrExprInfo.length),o)),o+=+qr.exec(n)[1]}else r>-1?(r=-1,o=+qr.exec(n)[1]):o+=+qr.exec(n)[1]+1}return yr.forEach((e=>{let[t,r]=e;n=n.replace(t,r)})),l&&(n=a(n)),n&&\"/\"!==n[0]&&(n=\"/\".concat(n)),{measureIdx:o,dimensionIdx:r,path:n}}function Dr(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;const r=t.byCells,o=t.primarySource,i=[],a={},l=e.isActive();let u=!1;if(e.brushes().forEach((e=>{const t=Cr(e.id,n);if(\"range\"===e.type&&t.measureIdx>-1&&t.dimensionIdx>-1){const n=e.brush.ranges();n.length&&(u=!0,a.multiRangeSelectTreeDataValues||(a.multiRangeSelectTreeDataValues={path:t.path,ranges:[]}),n.forEach((e=>a.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){const n=e.brush.ranges();n.length&&(u=!0,a.rangeSelectHyperCubeValues||(a.rangeSelectHyperCubeValues={path:t.path,ranges:[]}),n.forEach((e=>a.rangeSelectHyperCubeValues.ranges.push({qMeasureIx:t.measureIdx,qRange:{qMin:e.min,qMax:e.max,qMinInclEq:!0,qMaxInclEq:!0}}))))}if(\"range\"===e.type&&t.dimensionIdx>-1){const n=e.brush.ranges();n.length&&(u=!0,a.selectHyperCubeContinuousRange||(a.selectHyperCubeContinuousRange={path:t.path,ranges:[]}),n.forEach((e=>a.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(r)if(n&&n.qHyperCube&&(\"P\"===n.qHyperCube.qMode||\"T\"===n.qHyperCube.qMode||\"K\"===n.qHyperCube.qMode)){const r=n.qHyperCube,i=r.qNoOfLeftDims,l=r.qEffectiveInterColumnSortOrder.indexOf(t.dimensionIdx);if(a.selectPivotCells||(a.selectPivotCells={path:t.path,cells:[]}),e.id===o||!o){const n=e.brush.values().map((e=>+e)).filter((e=>!isNaN(e)));(0===i||l>=i)&&i>-1?n.forEach((e=>{a.selectPivotCells.cells.push({qType:\"T\",qCol:e,qRow:l-i})})):n.forEach((e=>{a.selectPivotCells.cells.push({qType:\"L\",qCol:t.dimensionIdx,qRow:e})})),u=!!a.selectPivotCells.cells.length}}else a.selectHyperCubeCells||(a.selectHyperCubeCells={path:t.path,cols:[]}),a.selectHyperCubeCells.cols.push(t.dimensionIdx),e.id!==o&&(o||a.selectHyperCubeCells.values)||(a.selectHyperCubeCells.values=e.brush.values().map((e=>+e)).filter((e=>!isNaN(e))),u=!!a.selectHyperCubeCells.values.length);else{const n=e.brush.values().map((e=>+e)).filter((e=>!isNaN(e)));u=!!n.length,i.push({params:[t.path,t.dimensionIdx,n,!1],method:\"selectHyperCubeValues\"})}}})),!u&&l)return[{method:\"resetMadeSelections\",params:[]}];var c;a.rangeSelectHyperCubeValues&&i.push({method:\"rangeSelectHyperCubeValues\",params:[a.rangeSelectHyperCubeValues.path,a.rangeSelectHyperCubeValues.ranges,[],null===(c=t.orMode)||void 0===c||c]});return a.selectHyperCubeContinuousRange&&i.push({method:\"selectHyperCubeContinuousRange\",params:[a.selectHyperCubeContinuousRange.path,a.selectHyperCubeContinuousRange.ranges]}),a.selectHyperCubeCells&&i.push({method:\"selectHyperCubeCells\",params:[a.selectHyperCubeCells.path,a.selectHyperCubeCells.values,a.selectHyperCubeCells.cols]}),a.selectPivotCells&&i.push({method:\"selectPivotCells\",params:[a.selectPivotCells.path,a.selectPivotCells.cells]}),a.multiRangeSelectTreeDataValues&&i.push({method:\"multiRangeSelectTreeDataValues\",params:[a.multiRangeSelectTreeDataValues.path,a.multiRangeSelectTreeDataValues.ranges]}),i}function Ir(e){vr.util=e.data(\"matrix\").util,e.data(\"q\",vr),e.formatter(\"q-number\",Zn),e.formatter(\"q-time\",dr)}function Or(e){var t=bt(e.layout||{},e.path.split(\"/\").join(\".\"));if(!t)return!1;var n=t.qIsOneAndOnlyOne;return void 0!==n&&n}function Er(e){var t,n,r,o=e.selections,i=e.picassoSelections,a=e.layout,l={lockedDimensions:[],singleSelectDimensions:[]};null!=o&&null!==(t=o.isModal)&&void 0!==t&&t.call(o)&&o.confirm(),i.layout(a);var u=(null!==(n=null==a?void 0:a.qHyperCube)&&void 0!==n?n:{}).qDimensionInfo,c=void 0===u?[]:u;return l.lockedDimensions=c.map((function(e){return!!e.qLocked})),l.singleSelectDimensions=c.map((function(e,t){return Or({layout:a,path:\"qHyperCube/qDimensionInfo/\".concat(t)})})),l.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),l.canSelect=0===c.length||c.some((function(e){return!e.qLocked})),l.dimensionLocked=!(null===(r=c[0])||void 0===r||!r.qLocked),l}function Ar(){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 Nr(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))}Ir.qBrushHelper=Dr,Ir.selections=Dr;var Lr=\"Enter\",Tr=\"Escape\",Pr=\"Esc\",jr=\"Shift\";function Fr(e){var t=e.brush,n=e.getConfig;return{interceptor:function(e){var r=t.brushes(),o=n(),i=o.allowSimultaneous,a=o.layout,l=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 u=e.filter((function(e){return-2!==e.value}));if(u.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=Or({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:l,values:u});return s}return u},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 Hr=function e(t,n){return n[t]?e(t+1,n):t},Rr=function(e,t){var n=t.reduce((function(e,t){return e[t]=!0,e}),{});return e.reduce((function(e,t,r){var o=Hr(r,n);return n[o]=!0,e[r]=o,e}),{})};function zr(){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,l=o.qMeasureInfo,u=void 0===l?[]:l;return{dimensions:Rr(a,r.dimensions||[]),measures:Rr(u,r.measures||[])}}var Vr=\"selectHyperCubeValues\",_r=\"selectHyperCubeContinuousRange\";function Br(e){var t=e.selection,n=e.fieldMap,r=t.method,o=t.params;if(r===Vr){var i=n.dimensions[o[1]];void 0!==i&&(o[1]=i)}r===_r&&o[1].forEach((function(e){var t=n.dimensions[e.qDimIx];void 0!==t&&(e.qDimIx=t)}));return t}var Yr=[],$r=0,Ur=function(e){var t=Yr.filter((function(e){var t;return null===(t=e.selections)||void 0===t?void 0:t.isActive()}));t.length&&(e.key===Lr?t.forEach((function(e){return e.selections.confirm()})):e.key!==Tr&&e.key!==Pr||t.forEach((function(e){return e.selections.cancel()})))},Kr=function(){document.addEventListener(\"keyup\",Ur)},Gr=function(){document.removeEventListener(\"keyup\",Ur)},Wr=function(e,t){Object.keys(t).forEach((function(n){e.on(n,t[n])}))},Xr=function(e,t){Object.keys(t).forEach((function(n){e.removeListener(n,t[n])}))};function Zr(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 Jr(e){var t=e.chart,n=e.document,r=e.selectionInfo,o=e.eventName,i=e.componentName,a=e.brushName,l=void 0===a?\"selection\":a,u=e.emit,c=void 0===u?\"rangeClear\":u,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 l&&t.brush(l).clear(),d)}function Qr(e){var t=e.selectionInfo,n=e.chart,r=e.document,o=e.eventName,i=void 0===o?\"discreteRange\":o,a=e.componentName,l=void 0===a?\"discrete-range-brush\":a,u=e.cleared;return Jr({selectionInfo:t,chart:n,document:r,eventName:void 0!==u&&u?void 0:i,componentName:l,emit:\"areaClear\",brushName:e.brushName})}function eo(e){var t=e.selectionInfo,n=e.chart,r=e.document,o=e.eventName,i=void 0===o?\"continuousRange\":o,a=e.componentName,l=void 0===a?\"continuous-range-brush\":a,u=e.cleared;return Jr({selectionInfo:t,chart:n,document:r,eventName:void 0!==u&&u?void 0:i,componentName:l,brushName:e.brushName})}function to(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,l=void 0===a?\"minorRange\":a,u=e.cleared,c=void 0!==u&&u,s=e.brushName,f=Jr({selectionInfo:t,chart:n,document:r,eventName:c?void 0:l,componentName:i,brushName:void 0!==s&&s});if(f){var d=f.settings.settings,p=d.scale,h=d.brush,m=n.scale(p).data().fields.map((function(e){return e.id()})),v=n.brush(h),y=v.brushes().filter((function(e){return\"range\"===e.type&&m.some((function(t){return t===e.id}))}));v&&y.length&&y.forEach((function(e){v.removeRanges(e.brush.ranges().map((function(t){return{key:e.id,range:t}})))}))}}function no(e){var t=e.selectionInfo,n=e.chart,r=e.document,o=e.selections,i=e.eventName,a=void 0===i?\"xAxis\":i,l=e.cleared;Jr({selectionInfo:t,chart:n,document:r,eventName:void 0!==l&&l?void 0:a,componentName:\"\".concat(a,\"-range-brush\"),emit:\"areaClear\",brushName:!1})&&o.clear()}function ro(e){var t=e.chart,n=e.selectionInfo,r=e.selections,o=e.events,i=void 0===o?[\"tap\"]:o,a=e.brushNames,l=void 0===a?[]:a;if(n&&i.includes(n.event)){var u=n.currentComponent;n.previousComponent!==u&&(r.clear(),l.forEach((function(e){return t.brush(e).end()})))}}function oo(e){var t=e.selectionInfo,n=e.chart,r=e.document,o=e.selections,i=e.eventName,a=void 0===i?\"legendRange\":i,l=e.componentName,u=void 0===l?\"legend-range-brush\":l,c=e.cleared,s=void 0!==c&&c,f=e.brushName;Jr({selectionInfo:t,chart:n,document:r,eventName:s?void 0:a,componentName:u,brushName:void 0!==f&&f})&&o.clear()}var io=[\"chart\",\"document\",\"selections\",\"selectionInfo\"],ao=function(e){e.chart,e.document,e.selections,e.selectionInfo;var t=l(e,io);t.clearDiscrete(),t.clearContinuous(),t.clearMinor(),t.clearRange(),t.clearTap(),t.clearLegend()};function lo(e){var n=e.selectionEvents,r=e.selections,o=e.selectionInfo,i=e.clear,a=e.chart,l=e.document,u=n.start,c={selections:r,selectionInfo:o,chart:a,document:l},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,l=e.components,u=void 0===l?[]:l;o(t(t({},r),{},{event:a,components:u.map((function(e){return e.key})).filter(Boolean)})),i()}({event:n,components:r,clear:i,chart:a,selectionInfo:o,setSelectionInfo:s})}};return\"function\"==typeof u?function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];u(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 uo(e){var t,n=e.lasso;null!=n&&null!==(t=n.active)&&void 0!==t&&t.call(n)&&(null==n||n.action(!1))}function co(e){var n,r=e.chart,o=e.selectionInfo,i=e.selectionActions,a=e.actions,l=void 0===a?{}:a,c=e.selections,s=e.selectionEvents;if(!1===i||!1===s)return function(){};var f=i.reset,d=void 0===f?uo:f,p=i.clear,h=!1!==p&&function(e){var n=e.clear,r=void 0===n?ao: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 Qr(t(t({},n),e))},clearContinuous:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return eo(t(t({},n),e))},clearMinor:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return to(t(t({},n),e))},clearRange:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return no(t(t({},n),e))},clearTap:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return ro(t(t({},n),e))},clearLegend:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return oo(t(t({},n),e))}},n))}}({clear:p,selections:c,selectionInfo:o,chart:r}),m=function(e){var t=e.chart,n=e.actions,r=e.reset,o=e.clear,i=!1,a={deactivated:function(e){var t=(n||{}).lasso;r({e:e,lasso:void 0!==t&&t})},canceled:function(e){var i=(n||{}).lasso;r({e:e,lasso:void 0!==i&&i}),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:h,reset:d,actions:l}),v={};Object.entries(m).forEach((function(e){var t=u(e,2),n=t[0],r=t[1];v[n]=function(e,t){return t?function(n){return t({event:n,defaultFunc:e})}:e}(r,s[n])}));var y=lo({selectionEvents:s,selections:c,selectionInfo:o,clear:h,chart:r,document:document});return null==l||null===(n=l.select)||void 0===n||n.on(\"start\",y),Object.entries(v).forEach((function(e){var t=u(e,2),n=t[0],r=t[1];null==c||c.on(n,r)})),function(){var e;null==l||null===(e=l.select)||void 0===e||e.removeListener(\"start\",y),Object.entries(v).forEach((function(e){var t=u(e,2),n=t[0],r=t[1];null==c||c.removeListener(n,r)}))}}function so(e){var t=e.chart,n=e.selectionActions,r=e.brush,o=e.actions,i=e.selectionInfo,a=e.selections,l=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=u(e,2),i=o[0],a=o[1],l=function(){return a({chart:n,selectionInfo:r})};return t.on(i,l),[i,l]}));return function(){a.forEach((function(e){var n=u(e,2),r=n[0],o=n[1];t.removeListener(r,o)}))}}({brush:r,chart:t,selectionInfo:i,brushEvents:e.brushEvents}),s=co({chart:t,selectionInfo:i,selectionActions:n,actions:o,selections:a,selectionEvents:l}),f=function(e){var t=e.actions;if(null==t||!t.lasso)return function(){};var n=!1,r=function(e){n||e.key!==jr||(t.lasso.action(!0),n=!0)},o=function(e){e.key===jr&&(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 fo=[{key:\"qHyperCube/qDimensionInfo/0:numeric\",includeMax:!1}];function po(e){var t=e.chart,n=e.actions,r=e.selections,o=e.picassoQ,i=e.config,a=i.allowSimultaneous,l=void 0!==a&&a,s=i.majorScale,f=void 0===s?void 0:s,d=i.selectionActions,p=void 0===d?{}:d,h=p.clear,m=p.reset,v=i.selectionEvents,y=void 0===v?{deactivated:void 0,canceled:void 0,cleared:void 0,start:void 0}:v,g=i.brushEvents,b=void 0===g?{}:g,x=i.brushName,q=void 0===x?\"selection\":x,w=i.brushMaxListeners,M=void 0===w?20:w,k=i.brushRanges,S=void 0!==k&&k,C=i.interceptors,D=void 0===C?{}:C,I=i.selectionsFn,O=void 0===I?o.selections:I,E=t.brush(q);if(\"number\"==typeof M&&E.setMaxListeners(M),S){var A=!0===S?fo:S;E.configure({ranges:A})}var N={canSelect:!0,getIsSelectionLocked:!1,isInnerDimensionLocked:!1,lockedDimensions:[],singleSelectIndex:0,selectionInfo:{colorField:void 0,components:[],event:void 0,currentComponent:void 0,previousComponent:void 0}},L=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,l=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).path,u=void 0===l?\"/qHyperCubeDef\":l;if(!n)return{layout:function(){},filteredFields:function(){},allowSimultaneous:function(){},release:function(){}};var c=++$r,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 h=Fr({brush:r,getConfig:function(){return{layout:s,allowSimultaneous:d}}}),m=h.rangeInterceptor,v=h.interceptor;r.intercept(\"set-ranges\",m),r.intercept(\"toggle-ranges\",m),r.intercept(\"toggle-values\",v),r.intercept(\"set-values\",v),r.intercept(\"add-values\",v),r.on(\"start\",(function(){return n.begin(u)}));var y={activate:function(){},deactivated:function(){return r.end()},cleared:function(){return r.clear()},canceled:function(){return r.end()}};Wr(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=zr({layout:s,filtered:f});e.forEach((function(e){var r=Br({selection:e,fieldMap:t});Zr(r,i.select.brushSelectionIncludeMax,g),n.select(r)}))}))):r.on(\"update\",(function(){var e=a(r,p,s),t=zr({layout:s,filtered:f});e.forEach((function(e){n.select(Br({selection:e,fieldMap:t}))}))})),0===Yr.length&&Kr(),Yr.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=Yr.indexOf(Yr.filter((function(e){return e.key===c}))[0]);-1!==e&&Yr.splice(e,1),Yr.length||Gr(),Xr(n,y)}}}({brush:E,majorScale:f,actions:n,selections:r,picassoQ:o,selectionsFn:O});!function(e){var t=e.brush,n=e.interceptors,r=void 0===n?{}:n;Object.entries(r).forEach((function(e){var n=u(e,2),r=n[0],o=n[1];(Array.isArray(o)?o:[o]).forEach((function(e){t.intercept(r,e)}))}))}({brush:E,interceptors:D});var T=so({chart:t,brush:E,actions:n,selections:r,selectionInfo:N.selectionInfo,selectionActions:{clear:h,reset:m},selectionEvents:y,brushEvents:b});if(l){var P=!0===l?c(Array(15)).map((function(e,t){return\"qHyperCube/qMeasureInfo/\".concat(t)})):l;L.allowSimultaneous(P)}return{unbindEvents:T,state:N,picassoSelections:L,brush:E}}var ho=[\"colorField\",\"useLegendCube\"];function mo(e){var n=e.chart,r=e.selections,o=e.actions,i=void 0!==o&&o,a=e.config,u=void 0===a?{}:a,c=po({chart:n,actions:i,selections:r,picassoQ:Ir,config:u}),s=c.unbindEvents,f=c.state,d=c.picassoSelections,p=c.brush,h=u.custom,m=void 0===h?{}:h,v=u.legendAlias,y=void 0===v?void 0:v,g=u.setBrushAliases,b=void 0===g?Nr: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:Ar(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=Er({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=l(e,ho),a=t({useLegendCube:o,colorField:n,brush:p,legendAlias:y},i);b(t(t({},a),{},{defaultFunc:function(){return Nr(a)}}))},destroy:function(){s(),d.release()},custom:t({},m)}}var vo=\"'Source Sans Pro', 'Arial', 'sans-serif'\",yo=\"#333333\",go=\"#595959\",bo=\"#737373\",xo=\"#cccccc\",qo=\"#e6e6e6\";function wo(e){var t={};return[].concat(c(e),c([[\"\",\"\",\"color\"],[\"object\",\"\",\"fontFamily\"],[\"object\",\"axis.label.name\",\"color\",go],[\"object\",\"axis.label.name\",\"fontFamily\",vo],[\"object\",\"axis.label.name\",\"fontSize\",\"12px\"],[\"object\",\"axis.line.major\",\"color\",xo],[\"object\",\"axis.line.minor\",\"color\",qo],[\"object\",\"axis.title\",\"color\"],[\"object\",\"axis.title\",\"fontFamily\",vo],[\"object\",\"axis.title\",\"fontSize\",\"13px\"],[\"object\",\"grid.line.highContrast\",\"color\",qo],[\"object\",\"grid.line.major\",\"color\",xo],[\"object\",\"grid.line.minor\",\"color\",qo],[\"object\",\"label.value\",\"color\",go],[\"object\",\"label.value\",\"fontFamily\",vo],[\"object\",\"label.value\",\"fontSize\",\"12px\"],[!1,\"label.value\",\"darkColor\",go],[!1,\"label.value\",\"lightColor\",qo],[\"object\",\"outOfRange\",\"color\",\"#999\"],[\"object\",\"legend.title\",\"color\",yo],[\"object\",\"legend.title\",\"fontFamily\",vo],[\"object\",\"legend.title\",\"fontSize\",\"15px\"],[\"object\",\"legend.label\",\"color\",go],[\"object\",\"legend.label\",\"fontFamily\",vo],[\"object\",\"legend.label\",\"fontSize\",\"13px\"],[\"object\",\"referenceLine.label.name\",\"color\",yo],[\"object\",\"referenceLine.label.name\",\"fontFamily\",vo],[\"object\",\"referenceLine.label.name\",\"fontSize\",\"12px\"],[\"object\",\"referenceLine.outOfBounds\",\"color\",qo],[\"object\",\"referenceLine.outOfBounds\",\"fontFamily\",vo],[\"object\",\"referenceLine.outOfBounds\",\"fontSize\",\"12px\"],[\"object\",\"referenceLine.outOfBounds\",\"backgroundColor\",bo,function(e){return\"transparent\"===e?bo: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 Mo=function(e){return e};function ko(e){var t=e.theme,n=e.id,r=e.transform,o=e.extend,i=e.matrix,a={},l=r.reduce((function(e,t){var n=u(t,2),r=n[0],o=n[1];return e[r]=o,e}),{});return i.forEach((function(e){var r=u(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 l=t.getStyle(n,r,o);return void 0===l?a:l}({theme:t,base:\"object\"===o&&n?\"\".concat(\"object\",\".\").concat(n):o,path:i,attribute:c,defaultValue:s}),h=(l[\"\".concat(i,\".\").concat(c)]||Mo)(d(p));qt(a,[i,c].filter(Boolean).join(\".\"),h)})),o.forEach((function(e){var t=u(e,2),n=t[0],r=t[1];qt(a,n,r)})),a}function So(e){var t=e.theme,n=e.config,r=void 0===n?{}:n,o=r.id,i=r.resolve,a=void 0===i?[]:i,l=r.transform,u=void 0===l?[]:l,c=r.extend,s=void 0===c?[]:c,f={theme:t,matrix:wo(a),styles:void 0};return f.styles=ko({theme:t,id:o,transform:u,extend:s,matrix:f.matrix}),{getStyles:function(){return f.styles},getTheme:function(){return f.theme},setTheme:function(e){f.theme=e,f.styles=ko({theme:e,id:o,transform:u,extend:s,matrix:f.matrix})}}}var Co={NOOP:function(){},FALSE:function(){return!1},ARRAY:function(){return[]},OBJECT:function(){return{}}};var Do=\"chart-modules-tooltip\",Io=\"#\".concat(Do);function Oo(){if(!document.querySelector(Io)){var e=document.createElement(\"div\");e.id=Do,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 Eo(e){return{show:!0,key:e.key,type:\"tooltip\",layout:{displayOrder:3},beforeMount:function(){Oo()},beforeUpdate:function(){Oo()},destroyed:function(){var e;null!=(e=document.querySelector(Io))&&e.parentElement&&e.childElementCount<1&&e.parentElement.removeChild(e)},settings:{appendTo:function(){return document.querySelector(Io)},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 Ao=\"position\";var No={bar:\"rect\",diamond:\"path\",point:\"circle\",square:\"rect\",triangle:\"path\",\"n-polygon\":\"path\",slice:\"path\"},Lo=function(e){return e.data.value},To=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,l=o.from,s={chart:t,expando:n,nodes:r,collectConfig:o,collectibles:i,meta:a};switch(\"function\"==typeof l?\"custom\":l){case\"single\":return function(e){var t=u(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=u(n,1)[0],a=r.filter,l=\"function\"==typeof a?a:function(){return!0},s=r.by,f=void 0===s?Lo:s;return o.reduce((function(e,n){var r=n.major,o=void 0===r?To:r,a=No[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(l)}(s);case\"radius\":return function(e){var t=e.chart,n=e.nodes,r=e.collectConfig,o=e.collectibles,i=e.meta,a=u(n,1)[0].localBounds,l=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:l||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 jo=Number.MAX_VALUE;function Fo(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:jo,xMax:-jo,yMin:jo,yMax:-jo}),n=t.xMin,r=t.xMax,o=t.yMin;return{x:n,y:o,width:r-n,height:t.yMax-o}}function Ho(e){var t=e.chart,n=e.config,r=e.expando,o=e.placementConfig,i=e.hovered,a=e.collected,l=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,l=e.meta,s=u(i,1)[0],f=Array.isArray(o)?o:[o],d={bounds:s.bounds,key:s.key},p=Fo({nodes:a}),h=0;h<f.length;h++){var m=f[h];if(\"function\"==typeof m){var v=m({chart:t,expando:r,hovered:i,collected:c(a),meta:l,collectedBounds:p,combineBounds:Fo});if(v)return v}if(\"trigger\"===m)return d;if(\"collectible\"===m){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:l}),f=s.bounds,d=s.key,p=u(a,1)[0].desc;return[{bounds:f,nodes:a,data:a.map((function(e){return e.data})),key:d,meta:l,desc:p}]}function Ro(e){var t=e.chart,n=e.config,r=e.expando,o=e.internal,i=e.nodes;if(!i.length)return[];var a=u(i,1)[0].key,l=n.main.collectibles;if(!l.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(Ao)},p=(Po({chart:t,expando:r,nodes:i,collectConfig:s,collectibles:l,meta:d})||[]).map((function(e){return e.children.length?e.children[0]:e}));return p.length?Ho({chart:t,config:n,expando:r,placementConfig:f,hovered:i,collected:p,meta:d}):[]}var zo=\"[־׀׃׆א-״߀-ߪߴ-ߵߺ-ࠕࠚࠤࠨ࠰-ࡘ࡞‏יִײַ-ﬨשׁ-ﭏ]\",Vo=\"[؈؋؍؛-ي٭-ٯٱ-ەۥ-ۦۮ-ۯۺ-܍ܐܒ-ܯݍ-ޥޱﭐ-ﴽﵐ-﷼ﹰ-ﻼ]\",_o=new RegExp(\"[A-Za-zªµºÀ-ÖØ-öø-ʸʻ-ˁː-ˑˠ-ˤˮͰ-ͳͶ-ͽΆΈ-ϵϷ-҂Ҋ-։ः-हऻऽ-ीॉ-ौॎ-ॐक़-ॡ।-ॿং-হঽ-ীে-ৌৎ-ৡ০-ৱ৴-৺ਃ-ਹਾ-ੀਖ਼-੯ੲ-ੴઃ-હઽ-ીૉ-ૌૐ-ૡ૦-૯ଂ-ହଽ-ାୀେ-ୌୗ-ୡ୦-୷ஃ-ிு-ௌௐ-௲ఁ-ఽు-ౄౘ-ౡ౦-౯౿-ಹಽ-ೋೕ-ೡ೦-ീെ-ൌൎ-ൡ൦-ෆා-ෑෘ-ะา-ำเ-ๆ๏-ະາ-ຳຽ-ໆ໐-༗༚-༴༶༸༾-ཬཿ྅ྈ-ྌ྾-࿅࿇-ာေးျ-ြဿ-ၗၚ-ၝၡ-ၰၵ-ႁႃ-ႄႇ-ႌႎ-ႜ႞-ፚ፠-ᎏᎠ-Ᏼᐁ-ᙿᚁ-ᚚᚠ-ᜑᜠ-ᜱ᜵-ᝑᝠ-ᝰក-ាើ-ៅះ-ៈ។-៚ៜ០-៩᠐-ᢨᢪ-ᤜᤣ-ᤦᤩ-ᤱᤳ-ᤸ᥆-᧚ᨀ-ᨖᨙ-ᩕᩗᩡᩣ-ᩤᩭ-ᩲ᪀-᪭ᬄ-ᬳᬵᬻᬽ-ᭁᭃ-᭪᭴-᭼ᮂ-ᮡᮦ-ᮧ᮪-ᯥᯧᯪ-ᯬᯮ᯲-ᰫᰴ-ᰵ᰻-᱿᳓᳡ᳩ-ᳬᳮ-ᶿḀ-ᾼιῂ-ῌῐ-Ίῠ-Ῥῲ-ῼ‎ⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎ-⅏Ⅰ-ↈ⌶-⍺⎕⒜-ⓩ⚬⠀-⣿Ⰰ-ⳤⳫ-ⳮⴀ-⵰ⶀ-ⷞ々-〇〡-〩〱-〵〸-〼ぁ-ゖゝ-ゟァ-ヺー-ㆺㇰ-㈜㈠-㉏㉠-㉻㉿-㊰㋀-㋋㋐-㍶㍻-㏝㏠-㏾㐀-䶵一-ꒌꓐ-ꘌꘐ-ꙮꚀ-ꛯ꛲-꛷Ꜣ-ꞇ꞉-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠤꠧ꠰-꠷ꡀ-ꡳꢀ-ꣃ꣎-꣙ꣲ-ꤥ꤮-ꥆꥒ-ꥼꦃ-ꦲꦴ-ꦵꦺ-ꦻꦽ-ꨨꨯ-ꨰꨳ-ꨴꩀ-ꩂꩄ-ꩋꩍ-ꪯꪱꪵ-ꪶꪹ-ꪽꫀꫂ-ꯤꯦ-ꯧꯩ-꯬꯰-ﬗA-Za-zヲ-ᅵ]\"),Bo=new RegExp(zo),Yo=new RegExp(Vo),$o=function(e){return _o.test(e)},Uo=function(e){return Bo.test(e)||Yo.test(e)};function Ko(e){for(var t=e?e.length:0,n=0;n<t;n++){var r=e[n];if($o(r))return\"ltr\";if(Uo(r))return\"rtl\"}return\"ltr\"}function Go(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 Wo(e){var n=e.config,r=e.h,o=e.context,i=e.nodes,a=e.property,l=e.filter,c=e.visibility,s=e.fillColor,f=n.rtl,d={type:\"color\",label:void 0,value:void 0,content:[],filter:l,visibility:t(t({},{count:!0}),c)},p=n.getColorSettings();if(\"color\"===p.type||!p.fieldType)return d;var h=u(i,1)[0];if(d.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(),l=i.value,u=i.label,c=t.getColorSettings();if(a&&\"measure\"===c.fieldType)return Number.isNaN(+l)?\"-\":a(i.value);var s=u||l;return void 0===s||Number.isNaN(s)||\"NaN\"===s?\"-\":s}}({config:n,context:o,property:a,node:h}),void 0===d.value)return d;d.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 l=n.resources.dataset,u=a.source,c=u.key,s=u.field;return l(c).field(s).title()}}({config:n,context:o,property:a,node:h});var m=null!=s?s:function(e){var t=e.node.attrs;return(null==t?void 0:t.fill)||\"#ddd\"}({node:h}),v=r(\"div\",{style:{display:\"inline-block\",width:10,height:10,\"background-color\":m,margin:\"0 8px\"}});return d.content.push({content:f?[\":\",d.label]:[d.label,\":\"],style:{\"text-align\":f?\"right\":\"left\",direction:Ko(d.label)}},{content:f?[d.value,v]:[v,d.value],style:{\"text-align\":f?\"left\":\"right\",\"vertical-align\":\"middle\",direction:Ko(d.value)}}),d}function Xo(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=void 0===o?{}:o,a=i.bold,l=void 0!==a&&a,u=i.italic,c=void 0!==u&&u,s=e.visibility;return{type:\"text\",content:[{content:r,style:{\"font-weight\":l?\"bold\":\"normal\",\"font-style\":c?\"italic\":\"normal\",\"text-align\":n.rtl?\"right\":\"left\",direction:Ko(r)},colspan:2}],visibility:t(t({},{count:!0}),s)}}({config:n,value:r,style:o,visibility:i})},measure:function(e){var o=e.label,i=e.value,a=e.color,l=e.style,u=e.survive,c=e.visibility;return function(e){var n,r,o,i,a=e.config,l=e.h,u=e.label,c=e.value,s=e.color,f=e.style,d=e.survive,p=e.visibility,h=a.rtl,m=l(\"div\",{style:{display:\"inline-block\",width:10,height:10,\"background-color\":s,margin:\"0 8px\"}});return{type:\"measure\",label:u,value:c,content:[{content:h?[\":\",u]:[u,\":\"],style:{\"text-align\":h?\"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:Ko(u)}},{content:s?h?[c,m]:[m,c]:c,style:{\"text-align\":h?\"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:Ko(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:l,survive:u,visibility:c})},divider:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.visibility;return Go({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,l=void 0===a||a,u=e.visibility,c=e.fillColor;return Wo({config:n,h:r,context:o,nodes:t,property:i,filter:l,visibility:u,fillColor:c})}};return i}function Zo(e){var t=e.translator,n=e.config,r=e.context,o=e.templates,i=n.main.layout,a=i.rows,l=i.grouping,u=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:l,single:\"function\"==typeof u?u({meta:r.node.meta,sections:o}):u}),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=Ko(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 Jo(e){var n=e.chart,r=e.translator,o=e.config,i=e.expando,a=e.h,l=e.data,s=e.style,f=u(l,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,l=i.node.meta,u=i.resources,s=u.dataset,f=u.formatter,d=Xo({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}),h=a.map((function(e){var t=d.section({content:c((n.main.section({expando:r,h:o,nodes:e,dataset:s,formatter:f,meta:l,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:l,create:d,util:p,sections:h}),h.filter(Boolean)}({chart:n,config:o,expando:i,h:a,context:f,groups:d}),h=Zo({translator:r,config:o,h:a,context:f,templates:p});return h.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:h}):function(e){var t=e.h;return t(\"tr\",{},t(\"td\",{style:{fontStyle:\"italic\",opacity:.75}},\"Empty\"))}({h:a})}function Qo(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=wt(),l=Eo({key:r.main.key,rtl:r.rtl,duration:r.duration}),u=r.main.events.tooltip,c=u.afterShow,s=u.afterHide,f=function(){var e=a.get(\"collected\");return{expando:o,nodes:e.nodes,meta:e.meta}};return w(!0,l,{settings:{filter:function(e){return Ro({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,l=e.style;return Jo({chart:t,translator:n,config:r,expando:o,h:i,data:a,style:l})},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 ei(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=Eo({key:r.tooltip,rtl:n.rtl,duration:n.duration});return w(!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 ti(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 ni=function(){return!0};function ri(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:ni})),e}),{});return function(e){var n=t[e.key];return!n||n(e)}}function oi(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,l=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)-l;var u=t.component(r);if(u){var c=u.rect.computedInner;o.relative.x=o.absolute.x-c.x,o.relative.y=o.absolute.y-c.y}return o}function ii(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 ai(e){var t=e.chart,n=e.config,r=e.expando,o=e.internal,i=e.facade,l=n.delay.tap,s=ti({config:n}),f=ri({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=u(d.components,1)[0],h=oi({chart:t,event:e,component:p});o.set(Ao,h);var m=ii({chart:t,filter:f,hits:d,position:h});if(m.length){var v=m[0].key;n.main.events.tooltip.beforeShow({expando:r,event:e,collectNodes:function(){return i.collectNodes({nodes:m})},meta:{triggerer:v,position:h}}).then((function(){a.emit(\"show\",e,{nodes:m,delay:l})})).catch((function(){}))}else a.emit(\"hide\")}else a.emit(\"hide\")}}}))}}function li(e){var t=e.config,n=e.expando,r=e.internal,o=e.facade,i=t.main.events.tooltip.beforeShow,a=t.delay.hover,l={ongoing:{},latest:void 0};return function(e){var t=e.event,u=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(!l.ongoing[s]){l.ongoing[s]=!0,l.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(Ao)}}).then((function(){s===l.latest&&u.emit(\"show\",t,{nodes:c,delay:a})})).catch((function(){u.emit(\"show\")})).finally((function(){delete l.ongoing[s],s===l.latest&&(l.latest=void 0)}))}}}function ui(e){var t=e.chart,n=e.config,r=e.expando,o=e.internal,i=e.facade,a=ti({config:n}),l=ri({config:n}),c=li({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=u(s.components,1)[0],d=oi({chart:t,event:e,component:f});o.set(Ao,d);var p=ii({chart:t,filter:l,hits:s,position:d});if(!p.length)return void i.emit(\"hide\");c({event:e,tooltip:i,nodes:p})}else i.emit(\"hide\")}var h=n.legend;if(h.keys.tooltip&&h.keys.component){var m=t.component(h.keys.tooltip);m&&m.show&&(r.some((function(e){return e.key===h.keys.component}))?m.emit(\"show\",e):m.emit(\"hide\"))}}},mouseup:function(e){2===e.button&&f()},mouseleave:function(){n.main.events.interaction.mouseleave({expando:r}),f()},wheel:function(){f()}}}}function ci(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=u(Ro({chart:t,config:n,expando:r,internal:o,nodes:i}),1)[0];return(void 0===a?{nodes:[]}:a).nodes}}}({chart:t,config:n,expando:r,internal:o});return{gestures:[ai({chart:t,config:n,expando:r,internal:o,facade:i})],native:ui({chart:t,config:n,expando:r,internal:o,facade:i})}}function si(e){var t=e.chart,n=e.translator,r=function(e){var t=e.config;return w(!0,{},{rtl:!1,enable:Co.FALSE,getColorSettings:Co.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:Co.FALSE,getGroupByValue:Co.NOOP,collectibles:[],triggers:[],placement:function(){return{type:\"bounds\"}},placements:{collectible:\"combine\"},showDuplicateMeasures:!1,layout:{rows:7,grouping:!1,single:!1},section:Co.ARRAY,sections:Co.NOOP,events:{tooltip:{beforeShow:function(){return Promise.resolve()},afterShow:Co.NOOP,afterHide:Co.NOOP},interaction:{mouseleave:Co.NOOP}}},legend:{keys:{tooltip:void 0,component:void 0}}},void 0===t?{}:t)}({config:e.config}),o=wt(),i=wt(),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[Qo({chart:t,translator:n,config:r,expando:e.expando,internal:e.internal}),ei({config:r})].filter(Boolean)}({chart:t,translator:n,config:r,expando:o,internal:i})),a.components},getInteractions:function(){return a.interactions||(a.interactions=ci({chart:t,config:r,expando:o,internal:i})),a.interactions},expando:o}}var fi=\"AVERAGE\",di=\"LINEAR\",pi=\"POLYNOMIAL2\",hi=\"POLYNOMIAL3\",mi=\"POLYNOMIAL4\",vi=\"EXPONENTIAL\",yi=\"LOG\",gi=\"POWER\";function bi(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){case pi:return a;case hi:return a.y+=i[3]*Math.pow(n,3),a;case mi:return a.y+=i[4]*Math.pow(n,4)+i[3]*Math.pow(n,3),a;default:return a}}var xi={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:bi,polynomial3:bi,polynomial4:bi,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 qi(e,t){for(var n=xi[t.qType.toLowerCase()],r=Math.max(1,e/500),o=1/0,i=-1/0,a=0;a<e;a+=r){var l=n({dimValue:null,value:a+1,qTrendLine:t}).y;o=Math.min(l,o),i=Math.max(l,i)}return{min:o,max:i}}function wi(e){return xi[e.qType.toLowerCase()]}function Mi(e,t){return e.meta.isContinuous?function(e,t){return{generate:function(e,n,r){var o=[],i=wi(e),a=t({qTrendLine:e,measureIndex:r}),l=a.min,u=a.max,c=(u-l)/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 l=a.x;a.x=a.y,a.y=l,a.dimValue=a.x}o.push(a)},f=l,d=l;d<=u;d+=c)s(d),f=d;f!==u&&s(u)}return o},calculate:function(e,t){return wi(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,l=i.qArea.qTop,u=xi[t.qType.toLowerCase()],c=0;c<a.length;c++){var s=a[c],f=u({dimValue:s.qElemNo,value:c+l+1,qTrendLine:t});f.layerId=n,f.measureIndex=r,f.dimValue=s.qText,o.push(f)}return o},findMinMax:qi}}(e):function(e){return{generate:function(t,n,r){for(var o=[],i=e.getDataPages()[0],a=i.qMatrix,l=i.qArea.qTop,u=xi[t.qType.toLowerCase()],c=0;c<a.length;c++){var s=a[c][0],f=c+l+1,d=u({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,xi[e.qType.toLowerCase()])({dimValue:n,value:t,qTrendLine:e})},findMinMax:qi}}(e)}var ki={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\"},Si={color:\"#f93f17\",index:9},Ci={x:NaN,y:NaN,dimValue:NaN,layerId:NaN,measureIndex:NaN},Di=function(e){var t=e.layoutService,n=e.getMinMax,r=e.colorModel,o=e.chart,i=e.translator,a=e.keys.colorScale,l=e.isEnabled,u=void 0===l?function(){return!0}:l,s=[Ci],f=[],d=[],p=Mi(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 h=Mt((function(e){var t=(f[e]||{}).style,n=r.settings();if(t.autoColor){if(\"measure\"===n.mode){var i=d[e],l=o.scale(a)(i);return function(e){return xe(e).l<70}(l)?function(e){var t=xe(e);return t.l<30?t.l+=15:t.l<50?t.l+=10:t.l+=5,t.toString()}(l):function(e){var t=xe(e);return t.l-=5,t.toString()}(l)}return r.resolveUIColor(Si)}return t.paletteColor?r.resolveUIColor(t.paletteColor):\"none\"}));return{query:{hasTrendLines:function(){return!!f.length&&u()},getData:function(){return s},getStroke:h,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(ki.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))}))}}}},Ii={source:\"trend\",extract:{field:\"x\",props:{minor:{field:\"y\"},layer:{field:\"layerId\"},measureIndex:{field:\"measureIndex\"},dimValue:{field:\"dimValue\"}}}},Oi=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}},Ei=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,l=t.layoutService,u=t.orientation,c=Oi(l);return{key:n,type:\"line\",layout:{dock:\"center\"},data:Ii,animations:i,settings:{connect:!0,orientation:u,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}),l=[a];if(e.tooltipOverlay){var u=function(e,t){var n=e.majorScale,r=e.minorScale,o=e.tooltipOverlay,i=t.layoutService,a=\"horizontal\"===t.orientation,l={scale:n,fn:Oi(i)},u={scale:r,ref:\"minor\"};return{key:o,type:\"point\",layout:{dock:\"center\"},data:Ii,settings:{x:a?l:u,y:a?u:l,opacity:0,size:1,sizeLimits:{maxPx:8,minPx:8}}}}(e,{layoutService:r,orientation:i});l.push(u)}return l},Ai=function(e){e.style.dashed?e.style.lineDash=\"8, 4\":e.style.lineDash=\"\"},Ni=function(e){Ai(e),e.qMultiDimMode=\"Sum\",e.qXColIx=0};function Li(e,t){return{x:e.x-t.x,y:e.y-t.y}}function Ti(e){return Math.pow(e.x,2)+Math.pow(e.y,2)}function Pi(e,t,n){var r=Li(n,e),o=Li(t,e),i=Ti(o);if(0===i)return e;var a,l,u,c,s=(l=o,((a=r).x*l.x+a.y*l.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:(u=o).x*c,y:u.y*c}))}function ji(e){var t,n,r=e.keys,o=e.model,i=e.chart,a=e.pos,l=e.lineNode,u=o,c=i.component(r.trendlines),s=i.scale(r.majorScale),f=i.scale(r.minorScale),d=l.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=Ti(Li(i,t));a<n&&(n=a,r=i)}return r}(l.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 u.query.isFlipped(d)?(n=f.invert(p.y/c.rect.computed.height),t=u.query.getCalculatedValue(d,n).y,p.x=s(t)*c.rect.computed.width):(t=s.invert(p.x/c.rect.computed.width),n=u.query.getCalculatedValue(d,t).y,p.y=f(n)*c.rect.computed.height),{key:l.key,children:[],data:{layer:d,x:t,y:n},bounds:{x:p.x,y:p.y,width:0,height:0}}}function Fi(e){var t=e.animations,n=e.chart,r=e.colorService,o=e.isEnabled,i=e.keys,a=void 0===i?{}:i,l=e.layoutService,u=e.orientation,c=e.translator,s=e.getMinMax;a.trendlines||(a.trendlines=\"trend-lines\");var f=Di({layoutService:l,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 Ei(a,{animations:t,layoutService:l,trendLineModel:f,orientation:u})},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?[ji({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()}}}Fi.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(ki.TYPES[e.qType])};return{type:\"array\",ref:\"qTrendLines\",titleTranslation:ki.HEADER,itemTitleRef:n,max:8,allowAdd:!0,allowRemove:!0,allowMove:!1,addTranslation:ki.ADD_BUTTON,add:Ni,items:{label:{ref:\"label\",type:\"string\",expression:\"optional\",translation:\"Common.Label\",defaultValue:\"\"},type:{ref:\"qType\",type:\"string\",component:\"dropdown\",translation:ki.TYPE,options:[{value:fi,translation:ki.TYPES.AVERAGE},{value:di,translation:ki.TYPES.LINEAR},{value:pi,translation:ki.TYPES.POLYNOMIAL2},{value:hi,translation:ki.TYPES.POLYNOMIAL3},{value:mi,translation:ki.TYPES.POLYNOMIAL4},{value:vi,translation:ki.TYPES.EXPONENTIAL},{value:yi,translation:ki.TYPES.LOG},{value:gi,translation:ki.TYPES.POWER}],defaultValue:fi},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:Si,show:function(e){return!e.style.autoColor}},dashed:{ref:\"style.dashed\",translation:ki.STYLE.DASHED,type:\"boolean\",defaultValue:!0,change:Ai}}}};var Hi=[\"American Typewriter, serif\",\"Andalé Mono, monospace\",\"Arial Black, sans-serif\",\"Arial, sans-serif\",\"Bradley Hand, cursive\",\"Brush Script MT, cursive\",\"Comic Sans MS, cursive\",\"Courier, monospace\",\"Didot, serif\",\"Georgia, serif\",\"Impact, sans-serif\",\"Lucida Console, monospace\",\"Luminari, fantasy\",\"Monaco, monospace\",\"QlikView Sans, sans-serif\",\"Source Sans Pro, sans-serif\",\"Tahoma, sans-serif\",\"Times New Roman, serif\",\"Trebuchet MS, sans-serif\",\"Verdana, sans-serif\"],Ri=[\"Abril Fatface, serif\",\"Bangers, fantasy\",\"EB Garamond, serif\",\"Fredoka One, fantasy\",\"Graduate, fantasy\",\"Gravitas One, serif\",\"Nixie One, sans-serif\",\"Noto Sans, sans-serif\",\"PT Serif, serif\",\"Permanent Marker, fantasy\",\"Rammetto One, fantasy\",\"Roboto, sans-serif\",\"QlikView Sans, sans-serif\",\"Source Sans Pro, sans-serif\",\"Titan One, fantasy\",\"Open Sans, sans-serif\",\"Montserrat, sans-serif\",\"Raleway, sans-serif\",\"Bebas Neue, sans serif\",\"Lobster, fantasy\",\"Pacifico, cursive\",\"Inter, sans-serif\",\"Indie Flower, fantasy\",\"Yanone Kaffeesatz, sans-serif\"];var zi=function(e){return{value:e,label:e.charAt(0).toUpperCase()+e.slice(1),groupHeader:!1,disabled:!1}};function Vi(e){var t=e.theme,n=e.translator,r=e.defaultValue,o=e.flags,i=[],a=t.getStyle(\"\",\"\",\"fontFamilies\");return Array.isArray(a)&&a.length?i.push.apply(i,c(new Set([r].concat(c(a.map((function(e){return e.split(\",\").map((function(e){return e.trim()})).map((function(e){return e.replace(/\\s+/g,\" \").trim()})).filter(Boolean).join(\", \")}))))))):i.push(r),[{value:\"ThemeHeader\",label:n.get(\"properties.themeFonts\"),metaText:n.get(\"properties.theme\"),groupHeader:!0}].concat(c(i.map((function(e){return zi(e)}))),[{value:\"DefaultHeader\",label:n.get(\"properties.allFonts\"),metaText:n.get(\"properties.default\"),groupHeader:!0}],c(function(e){return null!=e&&e.isEnabled(\"PS_20852_WYSIWYG_FONT_SUPPORT\")?Ri:Hi}(o).map((function(e){return zi(e)}))))}function _i(e){var t=e.theme,n=e.translator,r=e.id,o=e.path,i=e.flags,a=function(){return t.getStyle(r,o,\"fontFamily\")};return{getDefaultValue:function(){return a()},getOptions:function(){return Vi({theme:t,translator:n,defaultValue:a(),flags:i})}}}var Bi=[\"10px\",\"11px\",\"12px\",\"13px\",\"14px\",\"15px\",\"16px\",\"17px\",\"18px\",\"19px\",\"20px\",\"21px\",\"22px\",\"23px\",\"24px\"],Yi=function(e){return{value:e,label:e,groupHeader:!1,disabled:!1}};function $i(e){var t=e.theme,n=e.translator,r=e.id,o=e.path,i=function(){return t.getStyle(r,o,\"fontSize\")};return{getDefaultValue:function(){return i()},getOptions:function(){return function(e){var t=e.theme,n=e.translator,r=e.defaultValue,o=[],i=t.getStyle(\"\",\"\",\"fontSizes\");return Array.isArray(i)&&i.length?o.push.apply(o,c(new Set([r].concat(c(i))))):o.push(r),[{value:\"ThemeHeader\",label:n.get(\"properties.themeFontSizes\"),metaText:n.get(\"properties.theme\"),groupHeader:!0}].concat(c(o.map((function(e){return Yi(e)}))),[{value:\"DefaultHeader\",label:n.get(\"properties.allFontSizes\"),metaText:n.get(\"properties.default\"),groupHeader:!0}],c(Bi.map((function(e){return Yi(e)}))))}({theme:t,translator:n,defaultValue:i()})}}}function Ui(e){var t=e.theme,n=e.translator,r=e.id,o=e.path;return{fontFamily:_i({theme:t,translator:n,id:r,path:o,flags:e.flags}),fontSize:$i({theme:t,translator:n,id:r,path:o})}}function Ki(e){var t=e.theme,n=e.translator,r=e.config,o=void 0===r?{}:r,i=e.flags,a=function(e){var t=e.config,n=void 0===t?{}:t,r=n.id,o=n.paths;return{id:void 0===r?\"object\":\"\".concat(\"object\",\".\").concat(r),paths:Array.isArray(o)?o:[]}}({config:o}),l=a.id,u=a.paths,c={};u.forEach((function(e){for(var r=e.split(\".\"),o=c,a=0;a<r.length;a++){var u=r[a];a===r.length-1?o[u]=Ui({theme:t,translator:n,id:l,path:e,flags:i}):void 0===o[u]&&(o[u]={}),o=o[u]}}));var s=function(e){for(var t=e.split(\".\"),n=c,r=0;r<t.length;r++){var o=t[r];if(void 0===n[o])throw new Error(\"font-resolver: Path '\".concat(e,\"' could not be resolved.\"));n=n[o]}return n};return c.getDefaultValue=function(e){return s(e).getDefaultValue()},c.getOptions=function(e){return s(e).getOptions()},c}export{wt as cache,ut as colorService,St as debouncer,gt as dockService,Ki as fontResolver,bt as getValue,At as layoutService,Mt as memoize,Lt as pluginService,mo as selectionService,qt as setValue,kt as storage,So as themeService,Ct as throttler,si as tooltipService,Fi 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&&null!=e[Symbol.iterator]||null!=e[\"@@iterator\"])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&&null!=e[Symbol.iterator]||null!=e[\"@@iterator\"])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&&null!=e[Symbol.iterator]||null!=e[\"@@iterator\"])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&&null!=e[Symbol.iterator]||null!=e[\"@@iterator\"])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),p.qHyperCubeDef.qColumnOrder=[],p.qHyperCubeDef.columnOrder=[],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 ChartStyleComponent = (fontResolver, theme, chartId) => {\n const propertyDefs = {};\n propertyDefs.getOptions = (key, ref) => {\n const getFontFamilyComponent = () => ({\n ref: `${ref}.fontFamily`,\n component: 'dropdown',\n options: () => fontResolver.getOptions(`${ref}.fontFamily`),\n defaultValue: () => fontResolver.getDefaultValue(`${ref}.fontFamily`),\n });\n\n const getFontSizeComponent = () => ({\n ref: `${ref}.fontSize`,\n component: 'dropdown',\n width: true,\n options: () => fontResolver.getOptions(`${ref}.fontSize`),\n defaultValue: () => fontResolver.getDefaultValue(`${ref}.fontSize`),\n });\n\n const getColorComponent = (theme, chartId) => ({\n ref: `${ref}.fontColor`,\n component: 'color-picker',\n width: false,\n defaultValue: () => {\n const color = theme.getStyle(chartId, `${ref}.color`, 'color');\n const palette = theme.getDataColorPickerPalettes()[0].colors;\n const index = palette.indexOf(color);\n return { color, index };\n },\n });\n\n const getFontWrapperComponent = (theme, chartId) => ({\n fontWrapper: {\n component: 'inline-wrapper',\n items: {\n fontSize: {\n ...getFontSizeComponent(),\n },\n fontColor: {\n ...getColorComponent(theme, chartId),\n },\n },\n },\n });\n return {\n labelSection: {\n component: 'items',\n ref: 'components',\n key,\n items: {\n fontFamily: {\n ...getFontFamilyComponent(),\n },\n ...getFontWrapperComponent(theme, chartId),\n },\n },\n };\n };\n return propertyDefs;\n};\n\nexport const getChartFontResolver = (theme, translator, chartId, createFontResolver) =>\n createFontResolver({\n theme,\n translator,\n config: {\n id: chartId,\n paths: ['axis.title', 'axis.label.name', 'label.value', 'legend.title', 'legend.label'],\n },\n });\n\nconst overrides = (key, layout) => (layout.components || []).find((c) => c.key === key);\n\nexport const getAxisTitleStyle = (chartId, theme, layout, flags) => {\n const axis = flags.isEnabled('CLIENT_IM_3364') ? overrides('axis', layout)?.axis : {};\n return {\n text: {\n fontFamily: axis?.title?.fontFamily || theme.getStyle(chartId, 'axis.title', 'fontFamily'),\n fontSize: axis?.title?.fontSize || theme.getStyle(chartId, 'axis.title', 'fontSize'),\n fill: axis?.title?.fontColor?.color || theme.getStyle(chartId, 'axis.title', 'color'),\n },\n };\n};\nexport const getAxisLabelStyle = (chartId, theme, layout, flags) => {\n const axis = flags.isEnabled('CLIENT_IM_3364') ? overrides('axis', layout)?.axis : {};\n return {\n labels: {\n fontFamily: axis?.label?.name?.fontFamily || theme.getStyle(chartId, 'axis.label.name', 'fontFamily'),\n fontSize: axis?.label?.name?.fontSize || theme.getStyle(chartId, 'axis.label.name', 'fontSize'),\n fill: axis?.label?.name?.fontColor?.color || theme.getStyle(chartId, 'axis.label.name', 'color'),\n },\n };\n};\n\nexport const getValueLabelStyle = (chartId, theme, layout, flags) => {\n const value = flags.isEnabled('CLIENT_IM_3364') ? overrides('value', layout)?.label : {};\n const fontFamily = value?.value?.fontFamily || theme.getStyle(chartId, 'label.value.name', 'fontFamily');\n let fontSize = value?.value?.fontSize || theme.getStyle(chartId, 'label.value.size', 'fontSize');\n fontSize = parseFloat(fontSize);\n const fill = value?.value?.fontColor?.color || theme.getStyle(chartId, 'label.value.color', 'color');\n return {\n fontFamily,\n fontSize,\n fill,\n };\n};\n\nexport const getLegendTitleStyle = (chartId, theme, layout, flags) => {\n const legend = flags.isEnabled('CLIENT_IM_3051') ? overrides('legend', layout)?.legend : {};\n return {\n fontFamily: legend?.title?.fontFamily || theme.getStyle(chartId, 'legend.title', 'fontFamily'),\n fontSize: legend?.title?.fontSize || theme.getStyle(chartId, 'legend.title', 'fontSize'),\n color: legend?.title?.fontColor?.color || theme.getStyle(chartId, 'legend.title', 'color'),\n };\n};\n\nexport const getLegendLabelStyle = (chartId, theme, layout, flags) => {\n const legend = flags.isEnabled('CLIENT_IM_3051') ? overrides('legend', layout)?.legend : {};\n return {\n fontFamily: legend?.label?.fontFamily || theme.getStyle(chartId, 'legend.label', 'fontFamily'),\n fontSize: legend?.label?.fontSize || theme.getStyle(chartId, 'legend.label', 'fontSize'),\n color: legend?.label?.fontColor?.color || theme.getStyle(chartId, 'legend.label', 'color'),\n };\n};\n\nexport default ChartStyleComponent;\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","/**\n * Gets definition of items that should be in the styling panel for the chart.\n * @param {*} flags\n * @param {*} styleOptions\n * @returns definition or undefined if nothing is toggled on by feature flags\n */\nconst getStylingItems = (flags, styleOptions) => {\n const items = {};\n\n if (flags?.isEnabled('CLIENT_IM_3364')) {\n items.axisTitleSection = {\n translation: 'properties.axis.title',\n component: 'panel-section',\n items: styleOptions.getOptions('axis', 'axis.title'),\n };\n items.axisLabelSection = {\n translation: 'properties.axis.label',\n component: 'panel-section',\n items: styleOptions.getOptions('axis', 'axis.label.name'),\n };\n }\n\n if (flags?.isEnabled('CLIENT_IM_3051')) {\n items.legendTitleSection = {\n translation: 'properties.legend.title',\n component: 'panel-section',\n items: styleOptions.getOptions('legend', 'legend.title'),\n };\n items.legendLabelSection = {\n translation: 'properties.legend.label',\n component: 'panel-section',\n items: styleOptions.getOptions('legend', 'legend.label'),\n };\n }\n\n return Object.keys(items).length > 0 ? items : undefined;\n};\n\nconst getStylingPanelDefinition = (bkgOptionsEnabled, styleOptions, flags) => ({\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 items: getStylingItems(flags, styleOptions),\n});\n\nexport default getStylingPanelDefinition;\n","import { fontResolver as createFontResolver, 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 ChartStyleComponent, { getChartFontResolver } from '@qlik/common/extra/chart-style-component';\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 fontResolver = getChartFontResolver(theme, translator, CONSTANTS.CHART_ID, createFontResolver);\n const styleOptions = ChartStyleComponent(fontResolver, theme, CONSTANTS.CHART_ID);\n const presentation = {\n type: 'items',\n translation: 'properties.presentation',\n items: {\n styleEditor: stylingPanelEnabled && getStylingPanelDefinition(bkgOptionsEnabled, styleOptions, flags),\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 layout: {\n minimumLayoutMode: 'SPARK',\n prioOrder: 60,\n displayOrder: 1110,\n },\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 settings: options.axisLabelStyle || {},\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 style: options.axisTitleStyle || {},\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 settings: options.axisLabelStyle || {},\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 style: options.axisTitleStyle || {},\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, columnOrder) {\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 if (Array.isArray(columnOrder) && columnOrder.some((el, i) => el !== i)) {\n const correctIndex = columnOrder.indexOf(fieldIdx);\n if (correctIndex !== -1) {\n fieldIdx = correctIndex;\n }\n }\n\n fieldIdx -= page.qArea.qLeft;\n\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, columnOrder }) {\n let propCell = mainCell;\n if (p.field && p.field !== f) {\n const propCellFn = getFieldAccessor(p.field, page, { cache }, columnOrder);\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 }, cube.qColumnOrder);\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 columnOrder: cube.qColumnOrder,\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, that) {\n let index = -1;\n for (const node of this) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}\n","export default function(callback, that) {\n var node = this, nodes = [node], children, i, index = -1;\n while (node = nodes.pop()) {\n callback.call(that, node, ++index, this);\n if (children = node.children) {\n for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n }\n return this;\n}\n","export default function(callback, that) {\n var node = this, nodes = [node], next = [], children, i, n, index = -1;\n while (node = nodes.pop()) {\n next.push(node);\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n }\n while (node = next.pop()) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}\n","export default function(callback, that) {\n let index = -1;\n for (const node of this) {\n if (callback.call(that, node, ++index, this)) {\n return node;\n }\n }\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 return Array.from(this);\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","export default function*() {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n yield node;\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n }\n } while (next.length);\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_find from \"./find.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\";\nimport node_iterator from \"./iterator.js\";\n\nexport default function hierarchy(data, children) {\n if (data instanceof Map) {\n data = [undefined, data];\n if (children === undefined) children = mapChildren;\n } else if (children === undefined) {\n children = objectChildren;\n }\n\n var root = new Node(data),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n while (node = nodes.pop()) {\n if ((childs = children(node.data)) && (n = (childs = Array.from(childs)).length)) {\n node.children = childs;\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = childs[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 objectChildren(d) {\n return d.children;\n}\n\nfunction mapChildren(d) {\n return Array.isArray(d) ? d[1] : null;\n}\n\nfunction copyData(node) {\n if (node.data.value !== undefined) node.value = node.data.value;\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 find: node_find,\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 [Symbol.iterator]: node_iterator\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 {optional} from \"./accessors.js\";\nimport {Node, computeHeight} from \"./hierarchy/index.js\";\n\nvar preroot = {depth: -1},\n ambiguous = {},\n imputed = {};\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 path;\n\n function stratify(data) {\n var nodes = Array.from(data),\n currentId = id,\n currentParentId = parentId,\n n,\n d,\n i,\n root,\n parent,\n node,\n nodeId,\n nodeKey,\n nodeByKey = new Map;\n\n if (path != null) {\n const I = nodes.map((d, i) => normalize(path(d, i, data)));\n const P = I.map(parentof);\n const S = new Set(I).add(\"\");\n for (const i of P) {\n if (!S.has(i)) {\n S.add(i);\n I.push(i);\n P.push(parentof(i));\n nodes.push(imputed);\n }\n }\n currentId = (_, i) => I[i];\n currentParentId = (_, i) => P[i];\n }\n\n for (i = 0, n = nodes.length; i < n; ++i) {\n d = nodes[i], node = nodes[i] = new Node(d);\n if ((nodeId = currentId(d, i, data)) != null && (nodeId += \"\")) {\n nodeKey = node.id = nodeId;\n nodeByKey.set(nodeKey, nodeByKey.has(nodeKey) ? ambiguous : node);\n }\n if ((nodeId = currentParentId(d, i, data)) != null && (nodeId += \"\")) {\n node.parent = nodeId;\n }\n }\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (nodeId = node.parent) {\n parent = nodeByKey.get(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 } else {\n if (root) throw new Error(\"multiple roots\");\n root = node;\n }\n }\n\n if (!root) throw new Error(\"no root\");\n\n // When imputing internal nodes, only introduce roots if needed.\n // Then replace the imputed marker data with null.\n if (path != null) {\n while (root.data === imputed && root.children.length === 1) {\n root = root.children[0], --n;\n }\n for (let i = nodes.length - 1; i >= 0; --i) {\n node = nodes[i];\n if (node.data !== imputed) break;\n node.data = null;\n }\n }\n\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 = optional(x), stratify) : id;\n };\n\n stratify.parentId = function(x) {\n return arguments.length ? (parentId = optional(x), stratify) : parentId;\n };\n\n stratify.path = function(x) {\n return arguments.length ? (path = optional(x), stratify) : path;\n };\n\n return stratify;\n}\n\n// To normalize a path, we coerce to a string, strip the trailing slash if any\n// (as long as the trailing slash is not immediately preceded by another slash),\n// and add leading slash if missing.\nfunction normalize(path) {\n path = `${path}`;\n let i = path.length;\n if (slash(path, i - 1) && !slash(path, i - 2)) path = path.slice(0, -1);\n return path[0] === \"/\" ? path : `/${path}`;\n}\n\n// Walk backwards to find the first slash that is not the leading slash, e.g.:\n// \"/foo/bar\" ⇥ \"/foo\", \"/foo\" ⇥ \"/\", \"/\" ↦ \"\". (The root is special-cased\n// because the id of the root must be a truthy value.)\nfunction parentof(path) {\n let i = path.length;\n if (i < 2) return \"\";\n while (--i > 1) if (slash(path, i)) break;\n return path.slice(0, i);\n}\n\n// Slashes can be escaped; to determine whether a slash is a path delimiter, we\n// count the number of preceding backslashes escaping the forward slash: an odd\n// number indicates an escaped forward slash.\nfunction slash(path, i) {\n if (path[i] === \"/\") {\n let k = 0;\n while (i > 0 && path[--i] === \"\\\\\") ++k;\n if ((k & 1) === 0) return true;\n }\n return false;\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';\nimport {\n getAxisLabelStyle,\n getAxisTitleStyle,\n getLegendLabelStyle,\n getLegendTitleStyle,\n} from '@qlik/common/extra/chart-style-component';\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 axisTitleStyle: getAxisTitleStyle(CONSTANTS.CHART_ID, theme, layout, this.flags),\n axisLabelStyle: getAxisLabelStyle(CONSTANTS.CHART_ID, theme, layout, this.flags),\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 const styleOverrides = {\n title: getLegendTitleStyle(CONSTANTS.CHART_ID, theme, layout, this.flags),\n label: getLegendLabelStyle(CONSTANTS.CHART_ID, theme, layout, this.flags),\n };\n\n this.addLegend(chartBuilder, isRtl, legendSelectionSettings, styleOverrides);\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, styleOverrides) {\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 styleOverrides,\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","toPrimitive","call","TypeError","String","value","configurable","writable","c","Array","isArray","f","from","toString","slice","name","test","s","p","hasOwnProperty","m","v","y","g","b","newValue","x","w","__esModule","default","o","i","l","u","M","range","resources","data","theme","palette","items","map","valueAccessor","k","row","S","byRow","byElemNo","input","persistent","hc","qDimensionInfo","activeDimensionIndex","qSize","qcy","qDataPages","qStackedDataPages","qArea","qHeight","raw","qCardinal","pic","extract","field","key","trackBy","C","byDimDef","coloring","colorMapRef","D","fields","id","I","O","create","E","A","N","L","T","P","j","RegExp","F","H","R","z","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","B","rgb","formatHex","Y","formatRgb","$","trim","toLowerCase","exec","parseInt","U","X","K","ne","NaN","G","opacity","W","Z","te","J","Q","ee","isNaN","Math","max","min","round","oe","re","ie","ae","le","copy","assign","displayable","hex","formatHex8","formatHsl","brighter","pow","darker","clamp","ue","PI","ce","se","fe","de","pe","he","qe","we","ge","me","ve","ye","cos","sin","atan2","sqrt","be","Me","Se","Ce","ke","gamma","De","Ie","limits","limitType","colors","resolveUIColor","concat","breakTypes","indexOf","domain","Oe","floor","Number","Ee","mode","fieldType","reverse","reverseScheme","invalid","qMode","qTreeDataPages","qGroupSize","props","num","exclude","autoMinMax","measureMin","measureMax","measureScheme","palettes","quant","getDataColorScales","some","Ae","activeMeasureIndex","matchMeasure","Ne","cm","defaults","index","on","primary","paletteColor","startsWith","nil","Le","measureOverrides","every","Te","splice","je","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","Pe","Fe","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","He","measureGradient","legendDataPage","dimValsData","Re","isHandled","ze","app","snapshotData","content","chartData","getObject","getLayout","Ve","_e","model","session","getHyperCubeData","qLeft","qTop","qWidth","Ye","datum","$e","isNull","Ue","Ke","TITLE","COLOR","FONT_SIZE","FONT_FAMILY","LABEL","Ge","styleOverrides","fontFamily","We","getBoundingClientRect","Xe","show","Ze","styleReference","chart","legendProps","minimumLayoutMode","childNodes","showTitle","wordBreak","maxLines","lineHeight","fill","Je","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","invert","major","tick","anchor","padding","parseFloat","Qe","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","et","join","tt","getSnapshotData","console","warn","auxiliarySettings","settingsForMeasure","isSelectionLocked","isMeasureSelectionLocked","metric","source","override","expando","reduce","qText","Be","qElemNumber","amend","othersLabel","includes","datumProps","addMeasureIx","qNum","legend","nt","rt","qHyperCube","ot","it","at","lt","bt","split","An","xt","qt","Xt","children","Zt","Map","Qt","Jt","nn","pop","parent","depth","eachBefore","tn","en","count","eachAfter","each","find","sum","sort","path","ancestors","descendants","leaves","links","exports","search","substring","charAt","match","toFixed","lastIndexOf","Hi","Ri","zi","toUpperCase","groupHeader","_i","flags","getDefaultValue","getOptions","defaultValue","Set","Boolean","metaText","isEnabled","Vi","Bi","Yi","$i","Ui","Ki","paths","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","bind","updated","previous","qLibraryId","qInfo","qId","dimensionList","info","qTags","qName","qDerivedFieldData","qDerivedFieldLists","qFieldDefs","qDef","fieldList","fullAccumulation","fullRange","crossAllDimensions","q","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","qGroupFallbackTitles","crossAllDimensionsTooltip","rangeFull","rangeCustom","rangeSteps","change","abs","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","isSnapshot","masterItem","isFirstTime","lastReloadTime","measure","getEffectiveProperties","libraryIds","oldProperties","runUpdateIfChange","libraryItemsProps","newProperties","libraryId","qMeasure","qLabel","qLabelExpression","quarantine","qNumFormat","isCustomFormatted","qAggrFunc","xe","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","substr","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","qColumnOrder","columnOrder","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","ChartStyleComponent","fontResolver","chartId","propertyDefs","getColorComponent","labelSection","getFontWrapperComponent","fontWrapper","fontColor","getChartFontResolver","createFontResolver","overrides","getAxisTitleStyle","_overrides","_axis$title","_axis$title2","_axis$title3","_axis$title3$fontColo","getAxisLabelStyle","_overrides2","_axis$label","_axis$label$name","_axis$label2","_axis$label2$name","_axis$label3","_axis$label3$name","_axis$label3$name$fon","labels","getLegendTitleStyle","_overrides4","_legend$title","_legend$title2","_legend$title3","_legend$title3$fontCo","getLegendLabelStyle","_overrides5","_legend$label","_legend$label2","_legend$label3","_legend$label3$fontCo","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","hasPrevSortingElement","currentSortingElementIsMin","currentSortingElementIsMax","prevSortingElementIsMin","prevSortingElementIsMAx","wasChangedFromMaxToMin","wasChangedFromMinToMax","prevSortByExpression","sortByExpressionToggledOnWithMaxElementAndAscendingSet","getStylingItems","styleOptions","axisTitleSection","axisLabelSection","legendTitleSection","legendLabelSection","getStylingPanelDefinition","bkgOptionsEnabled","chartTitle","useGeneral","useBackground","persistentColorsShowFunc","propertyDefinition","anything","sense","stylingPanelEnabled","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","header","_props$qHyperCubeDef$","_props$qHyperCubeDef$2","dimensionTitle","_props$qHyperCubeDef$3","_props$qHyperCubeDef$4","def","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","SENSE_PICASSO_SPACING_COEFFICIENT","DimensionMeasureChart","chartBuilder","opts","measureAxisProperties","dimensionAxisProperties","chartOrientation","isChartHorizontal","measureDirection","dimensionDirection","includeMeasureAxisComponent","includeMeasureAxisTitleComponent","measureTitleText","includeDimensionAxisComponent","includeDimensionAxis","includeDimensionAxisTitleComponent","dimensionTitleText","includeGridlines","includeRefLines","interactionActions","measureAxisSettings","axisLabelStyle","forceBounds","showBounds","measureAxisOptions","getMeasureAxisOptions","addComponent","addMeasureAxisComponent","measureTitleSettings","axisTitleStyle","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","isFunction","isSpecialProperty","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","el","correctIndex","qAttrDims","qValues","qAttrExps","datumExtract","propCfg","cell","_ref","cellToValue","_ref2","mainCell","rowIdx","sourceKey","targetProp","propCell","propCellFn","qRow","cfgs","dataItems","cube","main","normalizeConfig","propsArr","track","trackType","tracker","trackedItems","fieldValues","fieldLabels","cfg","collect","node_count","node_each","that","node_eachBefore","nodes","node_eachAfter","next","node_find","node_sum","node_sort","node_path","ancestor","leastCommonAncestor","aNodes","bNodes","node_ancestors","node_descendants","node_leaves","node_links","root","node_iterator","current","hierarchy","mapChildren","objectChildren","child","childs","Node","computeHeight","node_copy","copyData","optional","preroot","ambiguous","imputed","defaultId","defaultParentId","parentId","stratify","nodeId","nodeKey","currentId","currentParentId","nodeByKey","normalize","parentof","has","slash","subpath","carr","flattenTree","arrIndexAtTargetDepth","treeAccessor","sourceDepth","targetDepth","findField","query","allFields","DIM_RX","M_RX","ATTR_EXPR_RX","ATTR_DIM_RX","getColumnOrder","getDimensionColumnOrder","ii","getFieldDepth","isFieldDimension","fieldDepth","pseudoMeasureIndex","measureIdx","remainder","treeOrder","qEffectiveInterColumnSortOrder","sourceDepthObject","targetDepthObject","valueFn","attrFn","nodeFn","_data$qAttrDims","_data$qAttrExps","doIt","_ref3","pCfg","coll","collStr","cells","accessor","attrAccessor","reduceLabel","getHierarchy","rootPath","picker","tree","getHierarchyForSMode","__root","__id","isNew","_cell$qElemNumber","qElemNo","_objectSpread","__parent","attachPropsAccessors","_ref4","itemDepthObject","accessors","augment","propDefs","replicaDescendants","isTree","mapped","module","escapeRegExp","SIprefixes","percentage","radix","oct","dec","bin","rom","functional","prec","formatRadix","fradix","pattern","decimal","formatRoman","nThousands","numeral","formatFunctional","temp","toExponential","escape","justStr","thousand","getAbbreviations","listSeparator","qNumericalAbbreviation","abbreviations","abbreviation","abbreviationTuple","preparePattern","abbreviate","lastPart","numericPattern","prefix","postfix","groupTemp","decTemp","regex","splitPattern","matchPrecisionResult","maxPrecision","numericRegex","NumberFormatter","thousandDelimiter","decimalDelimiter","patternSeparator","prepare","subtype","format","formatValue","prep","_prepared","positive","isFunctional","negative","zero","exponent","absValue","decimalPartPattern","abbr","sciValue","abbrArray","lowerAbbreviation","suggestedAbbrExponent","upperAbbreviation","wholePart","wholePartPattern","nDecimals","nZeroes","decimalPart","toPrecision","ceil","log","static","numberFormatFactory","_len","_key","memoize","func","multipleArguments","toKey","arg","cacher","counter","fifo","qType","qformat","memoized","TYPES","AUTO","INTEGER","NUMBER","FIXED_TO","MONEY","DATE","TIME","DATE_TIME","INTERVAL","DAYS","DAYS_ABBR","MONTHS","MONTHS_ABBR","SECONDS_PER_DAY","pad","parseDate","twelveFormat","getUTCHours","day","getUTCDay","year","getUTCFullYear","month","getUTCMonth","date","getUTCDate","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","getRemainder","parseIntervalDays","days","ms","parseInterval","units","Date","UTC","getTime","getDay","someT","getMasks","inst","YY","YYY","MM","MMM","locale_months_abbr","locale_months","WW","WWW","locale_days_abbr","locale_days","DateFormatter","qtype","qCalendarStrings","qLongDayNames","qDayNames","qLongMonthNames","qMonthNames","qTimeFmt","qDateFmt","qTimestampFmt","hasTwelveFlag","parsedDate","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","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","qBrush","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","_opts$orMode","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","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","OTHERS_ELEMNO","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","CHARACTER_AVERAGE_WIDTH","CHARACTER_MAX_WIDTH","M_WIDTH","CJK_OVER_LATIN_WIDTH_RATIO","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","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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","x_google_ignoreList":[3,11,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117]}