@marimo-team/frontend 0.9.15-dev4 → 0.9.15-dev41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/dist/assets/ConnectedDataExplorerComponent-D1Kw4KDz.js +28 -0
  2. package/dist/assets/{VegaLite-B5_DJZXD.js → VegaLite-xXcz7EKO.js} +2 -2
  3. package/dist/assets/{_baseEach-G31WMqSC.js → _baseEach-DgJQ47v8.js} +1 -1
  4. package/dist/assets/_baseMap-MHjDnc_O.js +1 -0
  5. package/dist/assets/{_baseUniq-DZRTUDUJ.js → _baseUniq-vHxRZ8K4.js} +1 -1
  6. package/dist/assets/any-language-editor-DzBFUmGp.js +1 -0
  7. package/dist/assets/{architectureDiagram-IFBEXTG3-Bwp9wtRG.js → architectureDiagram-IFBEXTG3-jHmRovFv.js} +1 -1
  8. package/dist/assets/{blockDiagram-TCMKQVZ6-C97bI-3p.js → blockDiagram-TCMKQVZ6-CSvKn_sH.js} +1 -1
  9. package/dist/assets/{c4Diagram-ZCSEYPFN-CaMzNmqf.js → c4Diagram-ZCSEYPFN-CBWAJ9Sf.js} +1 -1
  10. package/dist/assets/channel-CUllfJ4F.js +1 -0
  11. package/dist/assets/{chunk-4LC2V6XN-OKb_irQc.js → chunk-4LC2V6XN-BJRAyuqu.js} +1 -1
  12. package/dist/assets/{chunk-5RIWM3LS-B4PMo7PB.js → chunk-5RIWM3LS-CUciPmBR.js} +1 -1
  13. package/dist/assets/{chunk-6JKP7OK7-C2ph_BcI.js → chunk-6JKP7OK7-Dplq2IAM.js} +1 -1
  14. package/dist/assets/{chunk-NGC4727B-BDPVgChS.js → chunk-NGC4727B-D6r7s9l9.js} +1 -1
  15. package/dist/assets/{chunk-REEJFE46-DC4rgA7t.js → chunk-REEJFE46-BXJahUAX.js} +1 -1
  16. package/dist/assets/{chunk-RYO7GUH3-Nju1E0yB.js → chunk-RYO7GUH3-CGsdUc6W.js} +1 -1
  17. package/dist/assets/{chunk-V35ELUW5-BOSjYCft.js → chunk-V35ELUW5-BjHmlU3v.js} +1 -1
  18. package/dist/assets/{classDiagram-Q73GJZWF-ML5NRI0Z.js → classDiagram-Q73GJZWF-DlTiTPpH.js} +1 -1
  19. package/dist/assets/{classDiagram-v2-C6QPLPW4-COUKhuOg.js → classDiagram-v2-C6QPLPW4-BLOpdSTq.js} +1 -1
  20. package/dist/assets/clone-lPTIL1wC.js +1 -0
  21. package/dist/assets/{dagre-7KT5K2WU-B2NNL069.js → dagre-7KT5K2WU-DXiwWAVK.js} +1 -1
  22. package/dist/assets/{data-editor-B17ruzbC.js → data-editor-DFLAtSGI.js} +1 -1
  23. package/dist/assets/{diagram-AVGMFHF7-D1wQ4jOJ.js → diagram-AVGMFHF7-BWsyjj8-.js} +1 -1
  24. package/dist/assets/edit-page-CWbKgR1J.js +14 -0
  25. package/dist/assets/{erDiagram-DKC2X5TE-BUc4u7jQ.js → erDiagram-DKC2X5TE-DxhBLV5T.js} +1 -1
  26. package/dist/assets/{flowDiagram-NWEUNK3L-BtuoaVlv.js → flowDiagram-NWEUNK3L-CifO7iM5.js} +1 -1
  27. package/dist/assets/{ganttDiagram-HLVPPPRE-BPIaKZ9y.js → ganttDiagram-HLVPPPRE-vGtzKF_d.js} +1 -1
  28. package/dist/assets/{gitGraph-YCYPL57B-MFdSoE8K.js → gitGraph-YCYPL57B-BJ1tTpXO.js} +1 -1
  29. package/dist/assets/{gitGraphDiagram-JPZ3KUXI-CtfRqCSg.js → gitGraphDiagram-JPZ3KUXI-CxE_fAcA.js} +1 -1
  30. package/dist/assets/{graph-K4hRoAa0.js → graph-B2dOyo4D.js} +1 -1
  31. package/dist/assets/home-page-DwdZZu-H.js +13 -0
  32. package/dist/assets/{index-C56kK_eW.js → index-BFn6FYNP.js} +1 -1
  33. package/dist/assets/{index-BuW-U9KA.js → index-BHn84xo2.js} +1 -1
  34. package/dist/assets/{index-Bymzm0c0.js → index-BN7YKKoT.js} +1 -1
  35. package/dist/assets/{index-BskB6w3-.js → index-BgaF_Z7m.js} +1 -1
  36. package/dist/assets/{index-DH19lxum.js → index-BhEFlpJ0.js} +1 -1
  37. package/dist/assets/index-C4sWb9Jl.css +1 -0
  38. package/dist/assets/{index-Nt4781Ar.js → index-CUu8eKcf.js} +1 -1
  39. package/dist/assets/{index-CrlJ1o2h.js → index-CdZeyMEI.js} +1 -1
  40. package/dist/assets/{index-CFIWpM_W.js → index-CgJP9ge_.js} +1 -1
  41. package/dist/assets/{index-U2EFxe6H.js → index-CgvkDgq6.js} +1 -1
  42. package/dist/assets/{index-BDDdLKV4.js → index-DKi4D6tX.js} +1 -1
  43. package/dist/assets/index-DMAQUtXD.js +72 -0
  44. package/dist/assets/{index-D4IzkaTY.js → index-DMHg4V5M.js} +1 -1
  45. package/dist/assets/{index-TfHEWJYq.js → index-DgO2E2VO.js} +1 -1
  46. package/dist/assets/{index-D7IIQ8-U.js → index-LKFeAg5_.js} +1 -1
  47. package/dist/assets/{index-ButDGPuV.js → index-SOcKfUxp.js} +1 -1
  48. package/dist/assets/{index-CFymNGtr.js → index-fPGz6Tzz.js} +1 -1
  49. package/dist/assets/{index-Tw5XNae8.js → index-kWO2oG3h.js} +1 -1
  50. package/dist/assets/{infoDiagram-RZZSJVI2-BuK7sOHJ.js → infoDiagram-RZZSJVI2-MyA7YxeC.js} +1 -1
  51. package/dist/assets/{journeyDiagram-BLD6N6MZ-5cpkrX4i.js → journeyDiagram-BLD6N6MZ-By70o3NO.js} +1 -1
  52. package/dist/assets/{json-sakknANX.js → json-DVk1oAhJ.js} +1 -1
  53. package/dist/assets/{layout-yQ-Gu93J.js → layout--7bFdOuB.js} +1 -1
  54. package/dist/assets/{linear-wENjYNbd.js → linear-Cek8kebi.js} +1 -1
  55. package/dist/assets/mermaid-DNRxaYrs.js +13 -0
  56. package/dist/assets/{min-BeTlHb6B.js → min-BVuixafU.js} +1 -1
  57. package/dist/assets/{mindmap-definition-OEB2RXX2-DQbVB8H4.js → mindmap-definition-OEB2RXX2-nadAUt3r.js} +1 -1
  58. package/dist/assets/{pieDiagram-X7YZ5ZEZ-BUxXaD5G.js → pieDiagram-X7YZ5ZEZ-DF_gZHsc.js} +1 -1
  59. package/dist/assets/{quadrantDiagram-F36EZAVT-BTs8eSr7.js → quadrantDiagram-F36EZAVT-CVa8I4gT.js} +1 -1
  60. package/dist/assets/{react-plotly-B5G74fvD.js → react-plotly-BVSgTcy7.js} +1 -1
  61. package/dist/assets/{requirementDiagram-JG2LMPGF-wQPHYd8j.js → requirementDiagram-JG2LMPGF-Cg-2kbvK.js} +1 -1
  62. package/dist/assets/run-page-DlnuUOKf.js +1 -0
  63. package/dist/assets/{sankeyDiagram-ATFNWWW6-BqVjbC_b.js → sankeyDiagram-ATFNWWW6-CPDuU8Ig.js} +1 -1
  64. package/dist/assets/save-worker-BsXz6Pdg.js +1 -0
  65. package/dist/assets/{sequenceDiagram-WK7YDQ3N-CHDYvXRa.js → sequenceDiagram-WK7YDQ3N-BuDoeVDg.js} +1 -1
  66. package/dist/assets/slides-component-fRWbn1VG.js +1 -0
  67. package/dist/assets/{sortBy-CfbzTh2U.js → sortBy-BJ1jaNrS.js} +1 -1
  68. package/dist/assets/{stateDiagram-4JV6CC6H-Lav3UQ0S.js → stateDiagram-4JV6CC6H-DvZEmaYL.js} +1 -1
  69. package/dist/assets/stateDiagram-v2-7KT6RKTD-CuBKYTab.js +1 -0
  70. package/dist/assets/{terminal-B3pm46bm.js → terminal-DVBSi_HG.js} +1 -1
  71. package/dist/assets/{time-D-Jy5eW3.js → time-DUNH_8dO.js} +1 -1
  72. package/dist/assets/{timeline-definition-3ZMEY6HS-1cQ3XGsJ.js → timeline-definition-3ZMEY6HS-D3bc3-yd.js} +1 -1
  73. package/dist/assets/{transform-CJNIIdcz.js → transform-COGkLGXh.js} +1 -1
  74. package/dist/assets/tree-DOdiOWMn.js +13 -0
  75. package/dist/assets/useMarimoWebSocket-CBM8e6P2.js +21 -0
  76. package/dist/assets/vega-component-CbnimMDc.js +1 -0
  77. package/dist/assets/worker--4VCqOSN.js +1 -0
  78. package/dist/assets/worker--sgb-8qZ.js +1 -0
  79. package/dist/assets/{xychartDiagram-KECQ2H5Q-Btg3yDRN.js → xychartDiagram-KECQ2H5Q-D9YzSR_A.js} +1 -1
  80. package/dist/index.html +2 -2
  81. package/package.json +17 -10
  82. package/dist/assets/ConnectedDataExplorerComponent-CYT4zehV.js +0 -28
  83. package/dist/assets/_baseMap-av8yDeAo.js +0 -1
  84. package/dist/assets/any-language-editor-DfKJ-eVa.js +0 -1
  85. package/dist/assets/channel-B-7NHg_n.js +0 -1
  86. package/dist/assets/clone-DOdq8w6w.js +0 -1
  87. package/dist/assets/edit-page-CtmV1J3M.js +0 -14
  88. package/dist/assets/home-page-BhwKP0Tb.js +0 -13
  89. package/dist/assets/index-BkD6C0P6.css +0 -1
  90. package/dist/assets/index-Ctlr39rC.js +0 -72
  91. package/dist/assets/mermaid-CFFkJTBE.js +0 -13
  92. package/dist/assets/run-page-K9sUAPFV.js +0 -1
  93. package/dist/assets/save-worker-plAXP2DE.js +0 -1
  94. package/dist/assets/slides-component-MUKRYOcY.js +0 -1
  95. package/dist/assets/stateDiagram-v2-7KT6RKTD-CebFuqeZ.js +0 -1
  96. package/dist/assets/tree-9Dt95i4T.js +0 -13
  97. package/dist/assets/useMarimoWebSocket-B6ZIQ0Jw.js +0 -21
  98. package/dist/assets/vega-component-nzT2Ylo9.js +0 -1
  99. package/dist/assets/worker-D3SzjhUC.js +0 -1
  100. package/dist/assets/worker-DcqnwffC.js +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marimo-team/frontend",
3
- "version": "0.9.15-dev4",
3
+ "version": "0.9.15-dev41",
4
4
  "main": "dist/main.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "type": "module",
@@ -152,7 +152,7 @@
152
152
  "typecheck": "tsc --noEmit",
153
153
  "lint": "run-s lint:eslint lint:stylelint lint:biome format",
154
154
  "lint:biome": "biome lint --diagnostic-level=warn --write .",
155
- "lint:eslint": "TIMING=1 eslint src e2e-tests --max-warnings=0 --fix",
155
+ "lint:eslint": "TIMING=1 eslint src e2e-tests --fix",
156
156
  "lint:stylelint": "stylelint src/**/*.css --fix",
157
157
  "format": "biome format --write .",
158
158
  "preview": "vite preview",
@@ -167,16 +167,19 @@
167
167
  "react-dom": "^17 || ^18"
168
168
  },
169
169
  "devDependencies": {
170
+ "@babel/plugin-proposal-class-properties": "^7.18.6",
171
+ "@babel/plugin-proposal-decorators": "^7.25.9",
172
+ "@babel/preset-typescript": "^7.25.9",
170
173
  "@biomejs/biome": "1.9.4",
171
174
  "@csstools/postcss-light-dark-function": "^2.0.5",
172
175
  "@playwright/test": "^1.46.1",
173
- "@storybook/addon-docs": "^8.3.6",
174
- "@storybook/addon-essentials": "^8.3.6",
175
- "@storybook/addon-interactions": "^8.3.6",
176
- "@storybook/addon-links": "^8.3.6",
177
- "@storybook/blocks": "^8.3.6",
178
- "@storybook/react": "^8.3.6",
179
- "@storybook/react-vite": "^8.3.6",
176
+ "@storybook/addon-docs": "^8.4.0",
177
+ "@storybook/addon-essentials": "^8.4.0",
178
+ "@storybook/addon-interactions": "^8.4.0",
179
+ "@storybook/addon-links": "^8.4.0",
180
+ "@storybook/blocks": "^8.4.0",
181
+ "@storybook/react": "^8.4.0",
182
+ "@storybook/react-vite": "^8.4.0",
180
183
  "@swc-jotai/react-refresh": "^0.1.1",
181
184
  "@testing-library/react": "^16.0.0",
182
185
  "@testing-library/react-hooks": "^8.0.1",
@@ -190,13 +193,16 @@
190
193
  "@types/timestring": "^6.0.5",
191
194
  "@typescript-eslint/eslint-plugin": "^7.15.0",
192
195
  "@typescript-eslint/parser": "^7.15.0",
196
+ "@vitejs/plugin-react": "^4.3.3",
193
197
  "@vitejs/plugin-react-swc": "^3.7.0",
194
198
  "autoprefixer": "^10.4.20",
199
+ "babel-plugin-react-compiler": "19.0.0-beta-8a03594-20241020",
195
200
  "blob-polyfill": "^7.0.20220408",
196
201
  "eslint": "^8.57.0",
197
202
  "eslint-config-prettier": "^9.1.0",
198
203
  "eslint-plugin-jsx-a11y": "^6.9.0",
199
204
  "eslint-plugin-react": "^7.34.3",
205
+ "eslint-plugin-react-compiler": "19.0.0-beta-8a03594-20241020",
200
206
  "eslint-plugin-react-hooks": "^4.6.2",
201
207
  "eslint-plugin-ssr-friendly": "^1.3.0",
202
208
  "eslint-plugin-storybook": "^0.10.1",
@@ -207,9 +213,10 @@
207
213
  "postcss": "^8.4.39",
208
214
  "postcss-plugin-namespace": "^0.0.3",
209
215
  "react": "^18.3.1",
216
+ "react-compiler-runtime": "19.0.0-beta-8a03594-20241020",
210
217
  "react-dom": "^18.3.1",
211
218
  "react-test-renderer": "^18.3.1",
212
- "storybook": "^8.3.6",
219
+ "storybook": "^8.4.0",
213
220
  "stylelint": "^16.8.2",
214
221
  "stylelint-config-standard": "^36.0.1",
215
222
  "tailwindcss": "^3.4.10",
@@ -1,28 +0,0 @@
1
- import{a$ as e,g as t,cN as n,K as r,cO as i,cP as a,cQ as o,cR as s,cS as c,ap as l,cT as u,cU as d,cV as f,H as p,cW as h,cX as g,cY as m,cZ as y,c_ as v,c$ as b,d0 as x,bc as E,d1 as T,d2 as N,d3 as S,F as w,a5 as C,V as A,d4 as O,d5 as k,d6 as M,ah as I,a4 as U,ai as F,d7 as D,ar as j,aq as _,R as P,ag as R}from"./index-Ctlr39rC.js";import{i as $,c as B,N as L,a as W}from"./VegaLite-B5_DJZXD.js";import"./time-D-Jy5eW3.js";import"./timer-CK-RIWfW.js";import"./linear-wENjYNbd.js";import"./init-DLRA0X12.js";import"./range-CtcPcB_L.js";import"./zoom-COrs4lFh.js";import"./ordinal-DDUp3AbE.js";import"./colors-bszWmPJw.js";import"./arc-lt4NHaVr.js";import"./step-CNn2V7Th.js";import"./index-TfHEWJYq.js";
2
- /**
3
- * @license lucide-react v0.428.0 - ISC
4
- *
5
- * This source code is licensed under the ISC license.
6
- * See the LICENSE file in the root directory of this source tree.
7
- */const H=e("ChartColumnBig",[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["rect",{x:"15",y:"5",width:"4",height:"12",rx:"1",key:"q8uenq"}],["rect",{x:"7",y:"8",width:"4",height:"9",rx:"1",key:"sr5ea"}]]),q=e("ListFilter",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M7 12h10",key:"b7w52i"}],["path",{d:"M10 18h4",key:"1ulq68"}]]);
8
- /**
9
- * @license lucide-react v0.428.0 - ISC
10
- *
11
- * This source code is licensed under the ISC license.
12
- * See the LICENSE file in the root directory of this source tree.
13
- */
14
- /*! *****************************************************************************
15
- Copyright (c) Microsoft Corporation. All rights reserved.
16
- Licensed under the Apache License, Version 2.0 (the "License"); you may not use
17
- this file except in compliance with the License. You may obtain a copy of the
18
- License at http://www.apache.org/licenses/LICENSE-2.0
19
-
20
- THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
21
- KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
22
- WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
23
- MERCHANTABLITY OR NON-INFRINGEMENT.
24
-
25
- See the Apache Version 2.0 License for specific language governing permissions
26
- and limitations under the License.
27
- ***************************************************************************** */
28
- function G(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]])}return n}var z,Y;z={exports:{}},Y=function(){function e(e,t){return null!=t&&e instanceof t}var t,n,r;try{t=Map}catch(s){t=function(){}}try{n=Set}catch(s){n=function(){}}try{r=Promise}catch(s){r=function(){}}function i(a,s,c,l,u){"object"==typeof s&&(c=s.depth,l=s.prototype,u=s.includeNonEnumerable,s=s.circular);var d=[],f=[],p="undefined"!=typeof Buffer;return void 0===s&&(s=!0),void 0===c&&(c=1/0),function a(c,h){if(null===c)return null;if(0===h)return c;var g,m;if("object"!=typeof c)return c;if(e(c,t))g=new t;else if(e(c,n))g=new n;else if(e(c,r))g=new r((function(e,t){c.then((function(t){e(a(t,h-1))}),(function(e){t(a(e,h-1))}))}));else if(i.__isArray(c))g=[];else if(i.__isRegExp(c))g=new RegExp(c.source,o(c)),c.lastIndex&&(g.lastIndex=c.lastIndex);else if(i.__isDate(c))g=new Date(c.getTime());else{if(p&&Buffer.isBuffer(c))return g=Buffer.allocUnsafe?Buffer.allocUnsafe(c.length):new Buffer(c.length),c.copy(g),g;e(c,Error)?g=Object.create(c):void 0===l?(m=Object.getPrototypeOf(c),g=Object.create(m)):(g=Object.create(l),m=l)}if(s){var y=d.indexOf(c);if(-1!=y)return f[y];d.push(c),f.push(g)}for(var v in e(c,t)&&c.forEach((function(e,t){var n=a(t,h-1),r=a(e,h-1);g.set(n,r)})),e(c,n)&&c.forEach((function(e){var t=a(e,h-1);g.add(t)})),c){var b;m&&(b=Object.getOwnPropertyDescriptor(m,v)),b&&null==b.set||(g[v]=a(c[v],h-1))}if(Object.getOwnPropertySymbols){var x=Object.getOwnPropertySymbols(c);for(v=0;v<x.length;v++){var E=x[v];(!(N=Object.getOwnPropertyDescriptor(c,E))||N.enumerable||u)&&(g[E]=a(c[E],h-1),N.enumerable||Object.defineProperty(g,E,{enumerable:!1}))}}if(u){var T=Object.getOwnPropertyNames(c);for(v=0;v<T.length;v++){var N,S=T[v];(N=Object.getOwnPropertyDescriptor(c,S))&&N.enumerable||(g[S]=a(c[S],h-1),Object.defineProperty(g,S,{enumerable:!1}))}}return g}(a,c)}function a(e){return Object.prototype.toString.call(e)}function o(e){var t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),t}return i.clonePrototype=function(e){if(null===e)return null;var t=function(){};return t.prototype=e,new t},i.__objToStr=a,i.__isDate=function(e){return"object"==typeof e&&"[object Date]"===a(e)},i.__isArray=function(e){return"object"==typeof e&&"[object Array]"===a(e)},i.__isRegExp=function(e){return"object"==typeof e&&"[object RegExp]"===a(e)},i.__getRegExpFlags=o,i}(),z.exports&&(z.exports=Y);var Q=function(e,t){t||(t={}),"function"==typeof t&&(t={cmp:t});var n="boolean"==typeof t.cycles&&t.cycles,r=t.cmp&&function(e){return function(t){return function(n,r){var i={key:n,value:t[n]},a={key:r,value:t[r]};return e(i,a)}}}(t.cmp),i=[];return function e(t){if(t&&t.toJSON&&"function"==typeof t.toJSON&&(t=t.toJSON()),void 0!==t){if("number"==typeof t)return isFinite(t)?""+t:"null";if("object"!=typeof t)return JSON.stringify(t);var a,o;if(Array.isArray(t)){for(o="[",a=0;a<t.length;a++)a&&(o+=","),o+=e(t[a])||"null";return o+"]"}if(null===t)return"null";if(-1!==i.indexOf(t)){if(n)return JSON.stringify("__cycle__");throw new TypeError("Converting circular structure to JSON")}var s=i.push(t)-1,c=Object.keys(t).sort(r&&r(t));for(o="",a=0;a<c.length;a++){var l=c[a],u=e(t[l]);u&&(o&&(o+=","),o+=JSON.stringify(l)+":"+u)}return i.splice(s,1),"{"+o+"}"}}(e)};const V=t(Q);function K(e,t,n){return e.fields=t||[],e.fname=n,e}function J(e){throw Error(e)}function X(e){var t,n,r,i=[],a=null,o=0,s=e.length,c="";function l(){i.push(c+e.substring(t,n)),c="",t=n+1}for(e+="",t=n=0;n<s;++n)if("\\"===(r=e[n]))c+=e.substring(t,n),t=++n;else if(r===a)l(),a=null,o=-1;else{if(a)continue;t===o&&'"'===r||t===o&&"'"===r?(t=n+1,a=r):"."!==r||o?"["===r?(n>t&&l(),o=t=n+1):"]"===r&&(o||J("Access path missing open bracket: "+e),o>0&&l(),o=0,t=n+1):n>t?l():t=n+1}return o&&J("Access path missing closing bracket: "+e),a&&J("Access path missing closing quote: "+e),n>t&&(n++,l()),i}const Z=Array.isArray;function ee(e){return e===Object(e)}function te(e){return"string"==typeof e}function ne(e){return Z(e)?"["+e.map(ne)+"]":ee(e)||te(e)?JSON.stringify(e).replace("\u2028","\\u2028").replace("\u2029","\\u2029"):e}var re,ie,ae,oe=[];function se(e,t,n){var r=[t].concat([].slice.call(n));console[e](...r)}ie=X(re="id"),ae="return _["+ie.map(ne).join("][")+"];",K(Function("_",ae),[re=1===ie.length?ie[0]:re],re),K((function(e){return e}),oe,"identity"),K((function(){return 0}),oe,"zero"),K((function(){return 1}),oe,"one"),K((function(){return!0}),oe,"true"),K((function(){return!1}),oe,"false");function ce(e){return"boolean"==typeof e}function le(e){for(var t={},n=0,r=e.length;n<r;++n)t[e[n]]=!0;return t}Set.prototype.toJSON=function(){return`Set(${[...this].map((e=>V(e))).join(",")})`};const ue=V;function de(e,t){return e.indexOf(t)>-1}const fe=Object.keys;const pe="row",he="column",ge="facet",me="x",ye="y",ve="x2",be="y2",xe="latitude",Ee="longitude",Te="latitude2",Ne="longitude2",Se="color",we="fill",Ce="stroke",Ae="shape",Oe="size",ke="opacity",Me="fillOpacity",Ie="strokeOpacity",Ue="strokeWidth",Fe="text",De="order",je="detail",_e="key",Pe="tooltip",Re="href",$e=Object.assign({},{x:1,y:1,x2:1,y2:1},{longitude:1,longitude2:1,latitude:1,latitude2:1},{color:1,fill:1,stroke:1,opacity:1,fillOpacity:1,strokeOpacity:1,strokeWidth:1,size:1,shape:1,order:1,text:1,detail:1,key:1,tooltip:1,href:1});function Be(e){return"color"===e||"fill"===e||"stroke"===e}const Le=Object.assign({},$e,{row:1,column:1,facet:1}),We=fe(Le);G(Le,["order","detail"]),G(Le,["order","detail","row","column","facet"]);const He=G($e,["x","y","x2","y2","latitude","longitude","latitude2","longitude2"]),qe=fe(He),Ge=G(He,["text","tooltip","href","detail","key","order"]),ze=Object.assign({},{x:1,y:1},Ge);function Ye(e,t){return function(e){switch(e){case Se:case we:case Ce:case je:case _e:case Pe:case Re:case De:case ke:case Me:case Ie:case Ue:case ge:case pe:case he:return Qe;case me:case ye:case xe:case Ee:return Ve;case ve:case be:case Te:case Ne:return{rule:"always",bar:"always",rect:"always",area:"always",circle:"binned",point:"binned",square:"binned",tick:"binned",line:"binned",trail:"binned"};case Oe:return{point:"always",tick:"always",rule:"always",circle:"always",square:"always",bar:"always",text:"always",line:"always",trail:"always"};case Ae:return{point:"always",geoshape:"always"};case Fe:return{text:"always"}}}(e)[t]}const Qe={area:"always",bar:"always",circle:"always",geoshape:"always",line:"always",rule:"always",point:"always",rect:"always",square:"always",trail:"always",text:"always",tick:"always"},Ve=G(Qe,["geoshape"]);function Ke(e){switch(e){case me:case ye:case Oe:case Ue:case ke:case Me:case Ie:case ve:case be:return;case ge:case pe:case he:case Ae:case Fe:case Pe:case Re:return"discrete";case Se:case we:case Ce:return"flexible";case xe:case Ee:case Te:case Ne:case je:case _e:case De:return}throw new Error("rangeType not implemented for "+e)}const Je={orient:1,bandPosition:1,domain:1,domainColor:1,domainDash:1,domainDashOffset:1,domainOpacity:1,domainWidth:1,format:1,formatType:1,grid:1,gridColor:1,gridDash:1,gridDashOffset:1,gridOpacity:1,gridWidth:1,labelAlign:1,labelAngle:1,labelBaseline:1,labelBound:1,labelColor:1,labelFlush:1,labelFlushOffset:1,labelFont:1,labelFontSize:1,labelFontStyle:1,labelFontWeight:1,labelLimit:1,labelOpacity:1,labelOverlap:1,labelPadding:1,labels:1,labelSeparation:1,maxExtent:1,minExtent:1,offset:1,position:1,tickColor:1,tickCount:1,tickDash:1,tickDashOffset:1,tickExtra:1,tickMinStep:1,tickOffset:1,tickOpacity:1,tickRound:1,ticks:1,tickSize:1,tickWidth:1,title:1,titleAlign:1,titleAnchor:1,titleAngle:1,titleBaseline:1,titleColor:1,titleFont:1,titleFontSize:1,titleFontStyle:1,titleFontWeight:1,titleLimit:1,titleOpacity:1,titlePadding:1,titleX:1,titleY:1,values:1,zindex:1},Xe=Object.assign({},Je,{encoding:1});Object.assign({gridScale:1,scale:1},Je,{encode:1});const Ze=fe(Xe),et={clipHeight:1,columnPadding:1,columns:1,cornerRadius:1,direction:1,fillColor:1,format:1,formatType:1,gradientLength:1,gradientOpacity:1,gradientStrokeColor:1,gradientStrokeWidth:1,gradientThickness:1,gridAlign:1,labelAlign:1,labelBaseline:1,labelColor:1,labelFont:1,labelFontSize:1,labelFontStyle:1,labelFontWeight:1,labelLimit:1,labelOffset:1,labelOpacity:1,labelOverlap:1,labelPadding:1,labelSeparation:1,legendX:1,legendY:1,offset:1,orient:1,padding:1,rowPadding:1,strokeColor:1,symbolDash:1,symbolDashOffset:1,symbolFillColor:1,symbolOffset:1,symbolOpacity:1,symbolSize:1,symbolStrokeColor:1,symbolStrokeWidth:1,symbolType:1,tickCount:1,tickMinStep:1,title:1,titleAlign:1,titleAnchor:1,titleBaseline:1,titleColor:1,titleFont:1,titleFontSize:1,titleFontStyle:1,titleFontWeight:1,titleLimit:1,titleOpacity:1,titleOrient:1,titlePadding:1,type:1,values:1,zindex:1};Object.assign({},et,{opacity:1,shape:1,stroke:1,fill:1,size:1,strokeWidth:1,encode:1});const tt=fe(et);const nt=Object.freeze(Object.defineProperty({__proto__:null,BAR_WITH_POINT_SCALE_AND_RANGESTEP_NULL:"Bar mark should not be used with point scale when rangeStep is null. Please use band scale instead.",CANNOT_FIX_RANGE_STEP_WITH_FIT:'Cannot use a fixed value of "rangeStep" when "autosize" is "fit".',CANNOT_UNION_CUSTOM_DOMAIN_WITH_FIELD_DOMAIN:"custom domain scale cannot be unioned with default field-based domain",CONCAT_CANNOT_SHARE_AXIS:"Axes cannot be shared in concatenated views yet (https://github.com/vega/vega-lite/issues/2415).",FIT_NON_SINGLE:'Autosize "fit" only works for single views and layered views.',INVALID_CHANNEL_FOR_AXIS:"Invalid channel for axis.",INVALID_SPEC:"Invalid spec",LINE_WITH_VARYING_SIZE:"Line marks cannot encode size with a non-groupby field. You may want to use trail marks instead.",MORE_THAN_ONE_SORT:"Domains that should be unioned has conflicting sort properties. Sort will be set to true.",NO_FIELDS_NEEDS_AS:'If "from.fields" is not specified, "as" has to be a string that specifies the key to be used for the data from the secondary source.',NO_INIT_SCALE_BINDINGS:"Selections bound to scales cannot be separately initialized.",REPEAT_CANNOT_SHARE_AXIS:"Axes cannot be shared in repeated views yet (https://github.com/vega/vega-lite/issues/2415).",SCALE_BINDINGS_CONTINUOUS:"Scale bindings are currently only supported for scales with unbinned, continuous domains.",UNABLE_TO_MERGE_DOMAINS:"Unable to merge domains",cannotApplySizeToNonOrientedMark:function(e){return`Cannot apply size to non-oriented mark "${e}".`},cannotProjectOnChannelWithoutField:function(e){return`Cannot project a selection on encoding channel "${e}", which has no field.`},cannotStackNonLinearScale:function(e){return`Cannot stack non-linear scale (${e})`},cannotStackRangedMark:function(e){return`Cannot stack "${e}" if there is already "${e}2"`},cannotUseScalePropertyWithNonColor:function(e){return`Cannot use the scale property "${e}" with non-color channel.`},channelRequiredForBinned:function(e){return`Channel ${e} is required for "binned" bin`},columnsNotSupportByRowCol:function(e){return`The "columns" property cannot be used when "${e}" has nested row/column.`},dayReplacedWithDate:function(e){return`Time unit "${e}" is not supported. We are replacing it with ${e.replace("day","date")}.`},differentParse:function(e,t,n){return`An ancestor parsed field "${e}" as ${n} but a child wants to parse the field as ${t}.`},discreteChannelCannotEncode:function(e,t){return`Using discrete channel "${e}" to encode "${t}" field can be misleading as it does not encode ${"ordinal"===t?"order":"magnitude"}.`},domainRequiredForThresholdScale:function(e){return`Domain for ${e} is required for threshold scale`},domainSortDropped:function(e){return`Dropping sort property ${ue(e)} as unioned domains only support boolean or op 'count'.`},droppedDay:function(e){return`Dropping day from datetime ${ue(e)} as day cannot be combined with other units.`},droppingColor:function(e,t){const{fill:n,stroke:r}=t;return`Dropping color ${e} as the plot also has `+(n&&r?"fill and stroke":n?"fill":"stroke")},emptyFieldDef:function(e,t){return`Dropping ${ue(e)} from channel "${t}" since it does not contain data field or value.`},encodingOverridden:function(e){return`Layer's shared ${e.join(",")} channel ${1===e.length?"is":"are"} overriden`},errorBand1DNotSupport:function(e){return`1D error band does not support ${e}`},errorBarCenterAndExtentAreNotNeeded:function(e,t){return`${t?"extent ":""}${t&&e?"and ":""}${e?"center ":""}${t&&e?"are ":"is "}not needed when data are aggregated.`},errorBarCenterIsNotNeeded:function(e,t){return`Center is not needed to be specified in ${t} when extent is ${e}.`},errorBarCenterIsUsedWithWrongExtent:function(e,t,n){return`${e} is not usually used with ${t} for ${n}.`},errorBarContinuousAxisHasCustomizedAggregate:function(e,t){return`Continuous axis should not have customized aggregation function ${e}; ${t} already agregates the axis.`},facetChannelDropped:function(e){return`Facet encoding dropped as ${e.join(" and ")} ${e.length>1?"are":"is"} also specified.`},facetChannelShouldBeDiscrete:function(e){return`${e} encoding should be discrete (ordinal / nominal / binned).`},incompatibleChannel:function(e,t,n){return`${e} dropped as it is incompatible with "${t}"${n?` when ${n}`:""}.`},independentScaleMeansIndependentGuide:function(e){return`Setting the scale to be independent for "${e}" means we also have to set the guide (axis or legend) to be independent.`},invalidAggregate:function(e){return`Invalid aggregation operator "${e}"`},invalidEncodingChannel:function(e){return`${e}-encoding is dropped as ${e} is not a valid encoding channel.`},invalidFieldType:function(e){return`Invalid field type "${e}"`},invalidFieldTypeForCountAggregate:function(e,t){return`Invalid field type "${e}" for aggregate: "${t}", using "quantitative" instead.`},invalidTimeUnit:function(e,t){return`Invalid ${e}: ${ue(t)}`},invalidTransformIgnored:function(e){return`Ignoring an invalid transform: ${ue(e)}.`},latLongDeprecated:function(e,t,n){return`${e}-encoding with type ${t} is deprecated. Replacing with ${n}-encoding.`},lineWithRange:function(e,t){return`Line mark is for continuous lines and thus cannot be used with ${e&&t?"x2 and y2":e?"x2":"y2"}. We will use the rule mark (line segments) instead.`},mergeConflictingDomainProperty:function(e,t,n,r){return`Conflicting ${t.toString()} property "${e.toString()}" (${ue(n)} and ${ue(r)}). Using the union of the two domains.`},mergeConflictingProperty:function(e,t,n,r){return`Conflicting ${t.toString()} property "${e.toString()}" (${ue(n)} and ${ue(r)}). Using ${ue(n)}.`},missingFieldType:function(e,t){return`Missing type for channel "${e}", using "${t}" instead.`},nearestNotSupportForContinuous:function(e){return`The "nearest" transform is not supported for ${e} marks.`},noSuchRepeatedValue:function(e){return`Unknown repeated value "${e}".`},nonZeroScaleUsedWithLengthMark:function(e,t,n){return`A ${n.scaleType?`${n.scaleType} scale`:n.zeroFalse?"scale with zero=false":"scale with custom domain that excludes zero"} is used to encode ${e}'s ${t}. This can be misleading as the ${"x"===t?"width":"height"} of the ${e} can be arbitrary based on the scale domain. You may want to use point mark instead.`},orientOverridden:function(e,t){return`Specified orient "${e}" overridden with "${t}"`},primitiveChannelDef:function(e,t,n){return`Channel ${e} is a ${t}. Converted to {value: ${ue(n)}}.`},projectionOverridden:function(e){const{parentProjection:t,projection:n}=e;return`Layer's shared projection ${ue(t)} is overridden by a child projection ${ue(n)}.`},rangeStepDropped:function(e){return`rangeStep for "${e}" is dropped as top-level ${"x"===e?"width":"height"} is provided.`},scalePropertyNotWorkWithScaleType:function(e,t,n){return`${n}-scale's "${t}" is dropped as it does not work with ${e} scale.`},scaleTypeNotWorkWithChannel:function(e,t,n){return`Channel "${e}" does not work with "${t}" scale. We are using "${n}" scale instead.`},scaleTypeNotWorkWithFieldDef:function(e,t){return`FieldDef does not work with "${e}" scale. We are using "${t}" scale instead.`},scaleTypeNotWorkWithMark:function(e,t){return`Scale type "${t}" does not work with mark "${e}".`},selectionNotFound:function(e){return`Cannot find a selection named "${e}"`},selectionNotSupported:function(e){return`Selection not supported for ${e} yet`},stackNonSummativeAggregate:function(e){return`Stacking is applied even though the aggregate function is non-summative ("${e}")`},unaggregateDomainHasNoEffectForRawField:function(e){return`Using unaggregated domain with raw field has no effect (${ue(e)}).`},unaggregateDomainWithNonSharedDomainOp:function(e){return`Unaggregated domain not applicable for "${e}" since it produces values outside the origin domain of the source data.`},unaggregatedDomainWithLogScale:function(e){return`Unaggregated domain is currently unsupported for log scale (${ue(e)}).`},unrecognizedParse:function(e){return`Unrecognized parse "${e}".`}},Symbol.toStringTag,{value:"Module"})),rt=nt;var it;let at=(it=2,{level:function(e){return arguments.length?(it=+e,this):it},error:function(){return it>=1&&se("error","ERROR",arguments),this},warn:function(){return it>=2&&se("warn","WARN",arguments),this},info:function(){return it>=3&&se("log","INFO",arguments),this},debug:function(){return it>=4&&se("log","DEBUG",arguments),this}});function ot(...e){at.warn.apply(at,arguments)}const st={quantitative:1,ordinal:1,temporal:1,nominal:1,geojson:1},ct="quantitative",lt="ordinal",ut="temporal",dt="nominal";var ft,pt;(pt=ft||(ft={})).LINEAR="linear",pt.LOG="log",pt.POW="pow",pt.SQRT="sqrt",pt.SYMLOG="symlog",pt.TIME="time",pt.UTC="utc",pt.QUANTILE="quantile",pt.QUANTIZE="quantize",pt.THRESHOLD="threshold",pt.BIN_ORDINAL="bin-ordinal",pt.ORDINAL="ordinal",pt.POINT="point",pt.BAND="band";const ht=fe({linear:"numeric",log:"numeric",pow:"numeric",sqrt:"numeric",symlog:"numeric",time:"time",utc:"time",ordinal:"ordinal","bin-ordinal":"bin-ordinal",point:"ordinal-position",band:"ordinal-position",quantile:"discretizing",quantize:"discretizing",threshold:"discretizing"}),gt=["linear","log","pow","sqrt","symlog","time","utc"],mt=le(gt),yt=le(["quantile","quantize","threshold"]),vt=le(gt.concat(["quantile","quantize","threshold"])),bt=le(["ordinal","bin-ordinal","point","band"]);function xt(e){return e in bt}function Et(e){return e in mt}const Tt={type:1,domain:1,align:1,range:1,rangeStep:1,scheme:1,bins:1,reverse:1,round:1,clamp:1,nice:1,base:1,exponent:1,constant:1,interpolate:1,zero:1,padding:1,paddingInner:1,paddingOuter:1},Nt=fe(Tt);function St(e,t){switch(t){case"type":case"domain":case"reverse":case"range":return!0;case"scheme":case"interpolate":return!de(["point","band","identity"],e);case"bins":return!de(["point","band","identity","ordinal"],e);case"round":return Et(e)||"band"===e||"point"===e;case"padding":return Et(e)||de(["point","band"],e);case"paddingOuter":case"rangeStep":case"align":return de(["point","band"],e);case"paddingInner":return"band"===e;case"clamp":return Et(e);case"nice":return Et(e)||"quantize"===e||"threshold"===e;case"exponent":return"pow"===e;case"base":return"log"===e;case"constant":return"symlog"===e;case"zero":return e in vt&&!de(["log","time","utc","threshold","quantile"],e)}}function wt(e,t){switch(t){case"interpolate":case"scheme":return Be(e)?void 0:rt.cannotUseScalePropertyWithNonColor(e);case"align":case"type":case"bins":case"domain":case"range":case"base":case"exponent":case"constant":case"nice":case"padding":case"paddingInner":case"paddingOuter":case"rangeStep":case"reverse":case"round":case"clamp":case"zero":return}}function Ct(e,t){return de([lt,dt],t)?void 0===e||xt(e):t===ut?de([ft.TIME,ft.UTC,void 0],e):t!==ct||de([ft.LOG,ft.POW,ft.SQRT,ft.SYMLOG,ft.QUANTILE,ft.QUANTIZE,ft.THRESHOLD,ft.LINEAR,void 0],e)}function At(e,t){switch(e){case me:case ye:return Et(t)||de(["band","point"],t);case Oe:case Ue:case ke:case Me:case Ie:return Et(t)||t in yt||de(["band","point"],t);case Se:case we:case Ce:return"band"!==t;case Ae:return"ordinal"===t}return!1}function Ot(e,t){return e+"_"+t}G(Tt,["type","domain","range","rangeStep","scheme"]),function(){const e={};for(const t of We)for(const n of fe(st))for(const r of ht){const i=Ot(t,n);At(t,r)&&Ct(r,n)&&(e[i]=e[i]||[],e[i].push(r))}}();var kt={exports:{}};!function(){var e=kt.exports,t="__name__";e.namedfunc=function(e,n){return n[t]=e,n},e.name=function(e){return null==e?null:e[t]},e.identity=function(e){return e},e.true=e.namedfunc("true",(function(){return!0})),e.false=e.namedfunc("false",(function(){return!1})),e.duplicate=function(e){return JSON.parse(JSON.stringify(e))},e.equal=function(e,t){return JSON.stringify(e)===JSON.stringify(t)},e.extend=function(e){for(var t,n,r=1,i=arguments.length;r<i;++r)for(n in t=arguments[r])e[n]=t[n];return e},e.length=function(e){return null!=e&&null!=e.length?e.length:null},e.keys=function(e){var t,n=[];for(t in e)n.push(t);return n},e.vals=function(e){var t,n=[];for(t in e)n.push(e[t]);return n},e.toMap=function(t,n){return(n=e.$(n))?t.reduce((function(e,t){return e[n(t)]=1,e}),{}):t.reduce((function(e,t){return e[t]=1,e}),{})},e.keystr=function(e){var t=e.length;if(!t)return"";for(var n=String(e[0]),r=1;r<t;++r)n+="|"+String(e[r]);return n};var n=Object.prototype.toString;e.isObject=function(e){return e===Object(e)},e.isFunction=function(e){return"[object Function]"===n.call(e)},e.isString=function(e){return"string"==typeof value||"[object String]"===n.call(e)},e.isArray=Array.isArray||function(e){return"[object Array]"===n.call(e)},e.isNumber=function(e){return"number"==typeof e||"[object Number]"===n.call(e)},e.isBoolean=function(e){return!0===e||!1===e||"[object Boolean]"==n.call(e)},e.isDate=function(e){return"[object Date]"===n.call(e)},e.isValid=function(e){return null!=e&&e==e},e.isBuffer="function"==typeof Buffer&&Buffer.isBuffer||e.false,e.number=function(e){return null==e||""===e?null:+e},e.boolean=function(e){return null==e||""===e?null:"false"!==e&&!!e},e.date=function(e,t){var n=t||Date;return null==e||""===e?null:n.parse(e)},e.array=function(t){return null!=t?e.isArray(t)?t:[t]:[]},e.str=function(t){return e.isArray(t)?"["+t.map(e.str)+"]":e.isObject(t)||e.isString(t)?JSON.stringify(t).replace("\u2028","\\u2028").replace("\u2029","\\u2029"):t};var r=/\[(.*?)\]|[^.\[]+/g;function i(e,t){var n,r="";for(n=0;n<e;++n)r+=t;return r}function a(e,t,n){var r=0,i=e.split(o);return(e=n?(i=i.reverse()).filter((function(e){return(r+=e.length)<=t})).reverse():i.filter((function(e){return(r+=e.length)<=t}))).length?e.join("").trim():i[0].slice(0,t)}e.field=function(e){return String(e).match(r).map((function(e){return"["!==e[0]?e:"'"!==e[1]&&'"'!==e[1]?e.slice(1,-1):e.slice(2,-2).replace(/\\(["'])/g,"$1")}))},e.accessor=function(t){return null==t||e.isFunction(t)?t:e.namedfunc(t,Function("x","return x["+e.field(t).map(e.str).join("][")+"];"))},e.$=e.accessor,e.mutator=function(t){var n;return e.isString(t)&&(n=e.field(t)).length>1?function(e,t){for(var r=0;r<n.length-1;++r)e=e[n[r]];e[n[r]]=t}:function(e,n){e[t]=n}},e.$func=function(t,n){return function(r){r=e.$(r)||e.identity;var i=t+(e.name(r)?"_"+e.name(r):"");return e.namedfunc(i,(function(e){return n(r(e))}))}},e.$valid=e.$func("valid",e.isValid),e.$length=e.$func("length",e.length),e.$in=function(t,n){t=e.$(t);var r=e.isArray(n)?e.toMap(n):n;return function(e){return!!r[t(e)]}},e.comparator=function(t){var n=[];return void 0===t&&(t=[]),t=e.array(t).map((function(t){var r=1;return"-"===t[0]?(r=-1,t=t.slice(1)):"+"===t[0]&&(r=1,t=t.slice(1)),n.push(r),e.accessor(t)})),function(r,i){var a,o,s,c;for(a=0,o=t.length;a<o;++a)if(s=t[a],c=e.cmp(s(r),s(i)))return c*n[a];return 0}},e.cmp=function(e,t){return(e<t||null==e)&&null!=t?-1:(e>t||null==t)&&null!=e?1:(t=t instanceof Date?+t:t,(e=e instanceof Date?+e:e)!==e&&t==t?-1:t!=t&&e==e?1:0)},e.numcmp=function(e,t){return e-t},e.stablesort=function(e,t,n){var r=e.reduce((function(e,t,r){return e[n(t)]=r,e}),{});return e.sort((function(e,i){var a=t(e),o=t(i);return a<o?-1:a>o?1:r[n(e)]-r[n(i)]})),e},e.permute=function(e){for(var t,n,r=e.length;r;)n=Math.floor(Math.random()*r--),t=e[r],e[r]=e[n],e[n]=t},e.pad=function(e,t,n,r){r=r||" ";var a=t-e.length;if(a<=0)return e;switch(n){case"left":return i(a,r)+e;case"middle":case"center":return i(Math.floor(a/2),r)+e+i(Math.ceil(a/2),r);default:return e+i(a,r)}},e.truncate=function(e,t,n,r,i){var o=e.length;if(o<=t)return e;i=void 0!==i?String(i):"…";var s=Math.max(0,t-i.length);switch(n){case"left":return i+(r?a(e,s,1):e.slice(o-s));case"middle":case"center":var c=Math.ceil(s/2),l=Math.floor(s/2);return(r?a(e,c):e.slice(0,c))+i+(r?a(e,l,1):e.slice(o-l));default:return(r?a(e,s):e.slice(0,s))+i}};var o=/([\u0009\u000A\u000B\u000C\u000D\u0020\u00A0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u2028\u2029\u3000\uFEFF])/}();var Mt=kt.exports;function It(e,t){return-1!==e.indexOf(t)}function Ut(e,t){for(let n=0;n<e.length;n++)if(!t(e[n],n))return!1;return!0}function Ft(e,t,n){if(e.forEach)e.forEach.call(n,t);else for(let r in e)t.call(n,e[r],r,e)}function Dt(e,t){let n,r=0;for(n in e)if(t(e[n],n,r++))return!0;return!1}function jt(e){return!!e.parent}const _t={channel:1,aggregate:1,autoCount:1,bin:1,timeUnit:1,hasFn:1,sort:1,stack:1,field:1,type:1,format:1,scale:1,axis:1,legend:1,value:1},Pt=(Rt=_t,Object.keys(Rt));var Rt;const $t={bin:1,scale:1,sort:1,axis:1,legend:1};function Bt(e){return $t[e]}const Lt=["maxbins","divide","extent","base","step","steps","minstep"].map((e=>({parent:"bin",child:e}))),Wt=["field","op","order"].map((e=>({parent:"sort",child:e}))),Ht=Nt.map((e=>({parent:"scale",child:e}))),qt=Ze.map((e=>({parent:"axis",child:e}))),Gt=tt.map((e=>({parent:"legend",child:e}))),zt=[].concat(Lt,Wt,Ht,qt,Gt),Yt=["width","height","background","padding","title"];function Qt(e){return jt(e)?e.parent+"."+e.child:e}const Vt=zt.reduce(((e,t)=>(e[t.parent]=e[t.parent]||[],e[t.parent][t.child]=t,e)),{});function Kt(e,t){return(Vt[e]||{})[t]}function Jt(e){return function(e){return e in _t}(e)||jt(e)}const Xt=[].concat(Pt,zt),Zt=["type","field","bin","timeUnit","aggregate","autoCount","channel","mark","stack","scale","sort","axis","legend"].concat(Lt,Ht,qt,Gt,Wt);var en,tn;(tn=en||(en={})).MARK="mark",tn.TRANSFORM="transform",tn.STACK="stack",tn.FORMAT="format",tn.CHANNEL="channel",tn.AGGREGATE="aggregate",tn.AUTOCOUNT="autoCount",tn.BIN="bin",tn.HAS_FN="hasFn",tn.TIMEUNIT="timeUnit",tn.FIELD="field",tn.TYPE="type",tn.SORT="sort",tn.SCALE="scale",tn.AXIS="axis",tn.LEGEND="legend",tn.WIDTH="width",tn.HEIGHT="height",tn.BACKGROUND="background",tn.PADDING="padding",tn.TITLE="title";const nn="area",rn="bar",an="line",on="point",sn="rect",cn="rule",ln="text",un="tick",dn="circle",fn="square";function pn(e){return de(["line","area","trail"],e)}le(fe({area:1,bar:1,line:1,point:1,text:1,tick:1,trail:1,rect:1,geoshape:1,rule:1,circle:1,square:1}));["january","february","march","april","may","june","july","august","september","october","november","december"].map((e=>e.substr(0,3)));var hn,gn;["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].map((e=>e.substr(0,3))),(gn=hn||(hn={})).YEAR="year",gn.MONTH="month",gn.DAY="day",gn.DATE="date",gn.HOURS="hours",gn.MINUTES="minutes",gn.SECONDS="seconds",gn.MILLISECONDS="milliseconds",gn.YEARMONTH="yearmonth",gn.YEARMONTHDATE="yearmonthdate",gn.YEARMONTHDATEHOURS="yearmonthdatehours",gn.YEARMONTHDATEHOURSMINUTES="yearmonthdatehoursminutes",gn.YEARMONTHDATEHOURSMINUTESSECONDS="yearmonthdatehoursminutesseconds",gn.MONTHDATE="monthdate",gn.MONTHDATEHOURS="monthdatehours",gn.HOURSMINUTES="hoursminutes",gn.HOURSMINUTESSECONDS="hoursminutesseconds",gn.MINUTESSECONDS="minutesseconds",gn.SECONDSMILLISECONDS="secondsmilliseconds",gn.QUARTER="quarter",gn.YEARQUARTER="yearquarter",gn.QUARTERMONTH="quartermonth",gn.YEARQUARTERMONTH="yearquartermonth",gn.UTCYEAR="utcyear",gn.UTCMONTH="utcmonth",gn.UTCDAY="utcday",gn.UTCDATE="utcdate",gn.UTCHOURS="utchours",gn.UTCMINUTES="utcminutes",gn.UTCSECONDS="utcseconds",gn.UTCMILLISECONDS="utcmilliseconds",gn.UTCYEARMONTH="utcyearmonth",gn.UTCYEARMONTHDATE="utcyearmonthdate",gn.UTCYEARMONTHDATEHOURS="utcyearmonthdatehours",gn.UTCYEARMONTHDATEHOURSMINUTES="utcyearmonthdatehoursminutes",gn.UTCYEARMONTHDATEHOURSMINUTESSECONDS="utcyearmonthdatehoursminutesseconds",gn.UTCMONTHDATE="utcmonthdate",gn.UTCMONTHDATEHOURS="utcmonthdatehours",gn.UTCHOURSMINUTES="utchoursminutes",gn.UTCHOURSMINUTESSECONDS="utchoursminutesseconds",gn.UTCMINUTESSECONDS="utcminutesseconds",gn.UTCSECONDSMILLISECONDS="utcsecondsmilliseconds",gn.UTCQUARTER="utcquarter",gn.UTCYEARQUARTER="utcyearquarter",gn.UTCQUARTERMONTH="utcquartermonth",gn.UTCYEARQUARTERMONTH="utcyearquartermonth";const mn={year:1,quarter:1,month:1,day:1,date:1,hours:1,minutes:1,seconds:1,milliseconds:1},yn=fe(mn);const vn={utcyear:1,utcquarter:1,utcmonth:1,utcday:1,utcdate:1,utchours:1,utcminutes:1,utcseconds:1,utcmilliseconds:1};const bn={utcyearquarter:1,utcyearquartermonth:1,utcyearmonth:1,utcyearmonthdate:1,utcyearmonthdatehours:1,utcyearmonthdatehoursminutes:1,utcyearmonthdatehoursminutesseconds:1,utcquartermonth:1,utcmonthdate:1,utcmonthdatehours:1,utchoursminutes:1,utchoursminutesseconds:1,utcminutesseconds:1,utcsecondsmilliseconds:1},xn=Object.assign({},vn,bn);const En=Object.assign({},mn,vn,{yearquarter:1,yearquartermonth:1,yearmonth:1,yearmonthdate:1,yearmonthdatehours:1,yearmonthdatehoursminutes:1,yearmonthdatehoursminutesseconds:1,quartermonth:1,monthdate:1,monthdatehours:1,hoursminutes:1,hoursminutesseconds:1,minutesseconds:1,secondsmilliseconds:1},bn);const Tn={year:"setFullYear",month:"setMonth",date:"setDate",hours:"setHours",minutes:"setMinutes",seconds:"setSeconds",milliseconds:"setMilliseconds",quarter:null,day:null};function Nn(e,t){const n=!!xn[e];const r=n?new Date(Date.UTC(1972,0,1,0,0,0,0)):new Date(1972,0,1,0,0,0,0);for(const i of yn)if(wn(e,i))switch(i){case hn.DAY:throw new Error("Cannot convert to TimeUnits containing 'day'");case hn.QUARTER:{const{getDateMethod:e,setDateMethod:i}=Sn("month",n);r[i](3*Math.floor(t[e]()/3));break}default:{const{getDateMethod:e,setDateMethod:a}=Sn(i,n);r[a](t[e]())}}return r}function Sn(e,t){const n=Tn[e];return{setDateMethod:t?"setUTC"+n.substr(3):n,getDateMethod:"get"+(t?"UTC":"")+n.substr(3)}}function wn(e,t){const n=e.indexOf(t);return n>-1&&(t!==hn.SECONDS||0===n||"i"!==e.charAt(n-1))}const Cn="?";function An(e){return On(e)||function(e){return!(void 0===e||null==e||!e.enum&&!e.name||Mt.isArray(e))}(e)}function On(e){return e===Cn}function kn(e,t,n){return Mt.extend({},{name:t,enum:n},e===Cn?{}:e)}function Mn(e){let t={},n={};for(const r of e){const e=[0];for(let t=0;t<r.length;t++)r.charAt(t).toUpperCase()===r.charAt(t)&&e.push(t);let i=e.map((e=>r.charAt(e))).join("").toLowerCase();if(n[i])if(e[e.length-1]===r.length-1||(i=e.concat([r.length-1]).map((e=>r.charAt(e))).join("").toLowerCase(),n[i]))for(let a=1;!t[r];a++){let e=i+"_"+a;if(!n[e]){t[r]=e,n[e]=!0;break}}else t[r]=i,n[i]=!0;else t[r]=i,n[i]=!0}return t}const In={mark:"m",channel:"c",aggregate:"a",autoCount:"#",hasFn:"h",bin:"b",sort:"so",stack:"st",scale:"s",format:"f",axis:"ax",legend:"l",value:"v",timeUnit:"tu",field:"f",type:"t",binProps:{maxbins:"mb",min:"mi",max:"ma",base:"b",step:"s",steps:"ss",minstep:"ms",divide:"d"},sortProps:{field:"f",op:"o",order:"or"},scaleProps:Mn(Nt),axisProps:Mn(Ze),legendProps:Mn(tt)};function Un(e){if(jt(e))return In[e.parent]+"-"+In[e.parent+"Props"][e.child];if(In[e])return In[e];throw new Error("Default name undefined for "+e)}const Fn=[!1,!0],Dn={type:[void 0,ft.LOG],domain:[void 0],base:[void 0],exponent:[1,2],constant:[void 0],bins:[void 0],clamp:Fn,nice:Fn,reverse:Fn,round:Fn,zero:Fn,padding:[void 0],paddingInner:[void 0],paddingOuter:[void 0],interpolate:[void 0],range:[void 0],rangeStep:[17,21],scheme:[void 0]},jn={zindex:[1,0],offset:[void 0],orient:[void 0],values:[void 0],bandPosition:[void 0],encoding:[void 0],domain:Fn,domainColor:[void 0],domainDash:[void 0],domainDashOffset:[void 0],domainOpacity:[void 0],domainWidth:[void 0],formatType:[void 0],grid:Fn,gridColor:[void 0],gridDash:[void 0],gridDashOffset:[void 0],gridOpacity:[void 0],gridWidth:[void 0],format:[void 0],labels:Fn,labelAlign:[void 0],labelAngle:[void 0],labelBaseline:[void 0],labelColor:[void 0],labelFlushOffset:[void 0],labelFont:[void 0],labelFontSize:[void 0],labelFontStyle:[void 0],labelFontWeight:[void 0],labelLimit:[void 0],labelOpacity:[void 0],labelSeparation:[void 0],labelOverlap:[void 0],labelPadding:[void 0],labelBound:[void 0],labelFlush:[void 0],maxExtent:[void 0],minExtent:[void 0],position:[void 0],ticks:Fn,tickColor:[void 0],tickCount:[void 0],tickDash:[void 0],tickExtra:[void 0],tickDashOffset:[void 0],tickMinStep:[void 0],tickOffset:[void 0],tickOpacity:[void 0],tickRound:[void 0],tickSize:[void 0],tickWidth:[void 0],title:[void 0],titleAlign:[void 0],titleAnchor:[void 0],titleAngle:[void 0],titleBaseline:[void 0],titleColor:[void 0],titleFont:[void 0],titleFontSize:[void 0],titleFontStyle:[void 0],titleFontWeight:[void 0],titleLimit:[void 0],titleOpacity:[void 0],titlePadding:[void 0],titleX:[void 0],titleY:[void 0]},_n={mark:[on,rn,an,nn,sn,un,ln],channel:[me,ye,pe,he,Oe,Se],aggregate:[void 0,"mean"],autoCount:Fn,bin:Fn,hasFn:Fn,timeUnit:[void 0,hn.YEAR,hn.MONTH,hn.MINUTES,hn.SECONDS],field:[void 0],type:[dt,lt,ct,ut],sort:["ascending","descending"],stack:["zero","normalize","center",null],value:[void 0],format:[void 0],title:[void 0],scale:[!0],axis:Fn,legend:Fn,binProps:{maxbins:[5,10,20],extent:[void 0],base:[10],step:[void 0],steps:[void 0],minstep:[void 0],divide:[[5,2]],binned:[!1],anchor:[void 0],nice:[!0]},sortProps:{field:[void 0],op:["min","mean"],order:["ascending","descending"]},scaleProps:Dn,axisProps:jn,legendProps:{orient:["left","right"],format:[void 0],type:[void 0],values:[void 0],zindex:[void 0],clipHeight:[void 0],columnPadding:[void 0],columns:[void 0],cornerRadius:[void 0],direction:[void 0],encoding:[void 0],fillColor:[void 0],formatType:[void 0],gridAlign:[void 0],offset:[void 0],padding:[void 0],rowPadding:[void 0],strokeColor:[void 0],labelAlign:[void 0],labelBaseline:[void 0],labelColor:[void 0],labelFont:[void 0],labelFontSize:[void 0],labelFontStyle:[void 0],labelFontWeight:[void 0],labelLimit:[void 0],labelOffset:[void 0],labelOpacity:[void 0],labelOverlap:[void 0],labelPadding:[void 0],labelSeparation:[void 0],legendX:[void 0],legendY:[void 0],gradientLength:[void 0],gradientOpacity:[void 0],gradientStrokeColor:[void 0],gradientStrokeWidth:[void 0],gradientThickness:[void 0],symbolDash:[void 0],symbolDashOffset:[void 0],symbolFillColor:[void 0],symbolOffset:[void 0],symbolOpacity:[void 0],symbolSize:[void 0],symbolStrokeColor:[void 0],symbolStrokeWidth:[void 0],symbolType:[void 0],tickCount:[void 0],tickMinStep:[void 0],title:[void 0],titleAnchor:[void 0],titleAlign:[void 0],titleBaseline:[void 0],titleColor:[void 0],titleFont:[void 0],titleFontSize:[void 0],titleFontStyle:[void 0],titleFontWeight:[void 0],titleLimit:[void 0],titleOpacity:[void 0],titleOrient:[void 0],titlePadding:[void 0]}};function Pn(e,t,n){if("field"===e||jt(e)&&"sort"===e.parent&&"field"===e.child)return t.fieldNames();let r;if(r=jt(e)?n.enum[e.parent+"Props"][e.child]:n.enum[e],void 0!==r)return r;throw new Error("No default enumValues for "+JSON.stringify(e))}const Rn={verbose:!1,defaultSpecConfig:{line:{point:!0},scale:{useUnaggregatedDomain:!0}},propertyPrecedence:Zt.map(Qt),enum:_n,numberNominalProportion:.05,numberNominalLimit:40,constraintManuallySpecifiedValue:!1,autoAddCount:!1,hasAppropriateGraphicTypeForMark:!0,omitAggregate:!1,omitAggregatePlotWithDimensionOnlyOnFacet:!0,omitAggregatePlotWithoutDimension:!1,omitBarLineAreaWithOcclusion:!0,omitBarTickWithSize:!0,omitMultipleNonPositionalChannels:!0,omitRaw:!1,omitRawContinuousFieldForAggregatePlot:!0,omitRepeatedField:!0,omitNonPositionalOrFacetOverPositionalChannels:!0,omitTableWithOcclusionIfAutoAddCount:!0,omitVerticalDotPlot:!1,omitInvalidStackSpec:!0,omitNonSumStack:!0,preferredBinAxis:me,preferredTemporalAxis:me,preferredOrdinalAxis:ye,preferredNominalAxis:ye,preferredFacet:pe,minCardinalityForBin:15,maxCardinalityForCategoricalColor:20,maxCardinalityForFacet:20,maxCardinalityForShape:6,timeUnitShouldHaveVariation:!0,typeMatchesSchemaType:!0,stylize:!0,smallRangeStepForHighCardinalityOrFacet:{maxCardinality:10,rangeStep:12},nominalColorScaleForHighCardinality:{maxCardinality:10,palette:"category20"},xAxisOnTopForHighYCardinalityWithoutColumn:{maxCardinality:30},maxGoodCardinalityForFacet:5,maxGoodCardinalityForColor:7,minPercentUniqueForKey:.8,minCardinalityForKey:50},$n={argmax:1,argmin:1,average:1,count:1,distinct:1,max:1,mean:1,median:1,min:1,missing:1,q1:1,q3:1,ci0:1,ci1:1,stderr:1,stdev:1,stdevp:1,sum:1,valid:1,values:1,variance:1,variancep:1};const Bn=["count","sum","distinct","valid","missing"];function Ln(e){return ce(e)&&(e=function(e,t){return ce(e)?{maxbins:Hn(t)}:"binned"===e?{binned:!0}:e.maxbins||e.step?e:Object.assign({},e,{maxbins:Hn(t)})}(e,void 0)),"bin"+fe(e).map((t=>function(e){const t=e.replace(/\W/g,"_");return(e.match(/^\d+/)?"_":"")+t}(`_${t}_${e[t]}`))).join("")}function Wn(e){return!0===e||function(e){return ee(e)}(e)&&!e.binned}function Hn(e){switch(e){case pe:case he:case Oe:case Se:case we:case Ce:case Ue:case ke:case Me:case Ie:case Ae:return 6;default:return 10}}function qn(e){return!!e&&!!e.condition&&!Z(e.condition)&&Gn(e.condition)}function Gn(e){return!(!e||!e.field&&"count"!==e.aggregate)}function zn(e){return Gn(e)&&te(e.field)}function Yn(e,t={}){let n=e.field;const r=t.prefix;let i=t.suffix,a="";if(function(e){return"count"===e.aggregate}(e))n=function(e){return 0===e.indexOf("__")}(s="count")?s:`__${s}`;else{let r;if(!t.nofn)if(function(e){return!!e.op}(e))r=e.op;else{const{bin:s,aggregate:c,timeUnit:l}=e;Wn(s)?(r=Ln(s),i=(t.binSuffix||"")+(t.suffix||"")):c?(o=c)&&o.argmax?(a=`.${n}`,n=`argmax_${c.argmax}`):!function(e){return!!e&&!!e.argmin}(c)?r=String(c):(a=`.${n}`,n=`argmin_${c.argmin}`):l&&(r=String(l))}r&&(n=n?`${r}_${n}`:r)}var o,s;return i&&(n=`${n}_${i}`),r&&(n=`${r}_${n}`),t.forAs?n:t.expr?function(e,t="datum"){return`${t}[${ne(X(e).join("."))}]`}(n,t.expr)+a:function(e){return`${X(e).map((e=>e.replace(".","\\."))).join("\\.")}`}(n)+a}function Qn(e){switch(e.type){case"nominal":case"ordinal":case"geojson":return!0;case"quantitative":return!!e.bin;case"temporal":return!1}throw new Error(rt.invalidFieldType(e.type))}le(["mean","average","median","q1","q3","min","max"]);const Vn={compatible:!0};function Kn(e,t){const n=e.type;if("geojson"===n&&"shape"!==t)return{compatible:!1,warning:`Channel ${t} should not be used with a geojson data.`};switch(t){case"row":case"column":case"facet":return function(e){return!Qn(e)}(e)?{compatible:!1,warning:rt.facetChannelShouldBeDiscrete(t)}:Vn;case"x":case"y":case"color":case"fill":case"stroke":case"text":case"detail":case"key":case"tooltip":case"href":return Vn;case"longitude":case"longitude2":case"latitude":case"latitude2":return n!==ct?{compatible:!1,warning:`Channel ${t} should be used with a quantitative field only, not ${e.type} field.`}:Vn;case"opacity":case"fillOpacity":case"strokeOpacity":case"strokeWidth":case"size":case"x2":case"y2":return"nominal"!==n||e.sort?Vn:{compatible:!1,warning:`Channel ${t} should not be used with an unsorted discrete field.`};case"shape":return de(["ordinal","nominal","geojson"],e.type)?Vn:{compatible:!1,warning:"Shape channel should be used with only either discrete or geojson data."};case"order":return"nominal"!==e.type||"sort"in e?Vn:{compatible:!1,warning:"Channel order is inappropriate for nominal field, which has no inherent order."}}throw new Error("channelCompatability not implemented for channel "+t)}function Jn(e,t,n,r){const i=function(e,t,n){switch(t.type){case"nominal":case"ordinal":return Be(e)||"discrete"===Ke(e)?("shape"===e&&"ordinal"===t.type&&ot(rt.discreteChannelCannotEncode(e,"ordinal")),"ordinal"):de(["x","y"],e)&&de(["rect","bar","rule"],n)?"band":"point";case"temporal":return Be(e)?"time":"discrete"===Ke(e)?(ot(rt.discreteChannelCannotEncode(e,"temporal")),"ordinal"):"time";case"quantitative":return Be(e)?Wn(t.bin)?"bin-ordinal":"linear":"discrete"===Ke(e)?(ot(rt.discreteChannelCannotEncode(e,"quantitative")),"ordinal"):"linear";case"geojson":return}throw new Error(rt.invalidFieldType(t.type))}(t,n,r),{type:a}=e;return function(e){return!!ze[e]}(t)?void 0!==a?At(t,a)?Ct(a,n.type)?a:(ot(rt.scaleTypeNotWorkWithFieldDef(a,i)),i):(ot(rt.scaleTypeNotWorkWithChannel(t,a,i)),i):i:null}var Xn,Zn;function er(e){return e===lt||e===dt||e===Xn.KEY}(Zn=Xn||(Xn={})).QUANTITATIVE=ct,Zn.ORDINAL=lt,Zn.TEMPORAL=ut,Zn.NOMINAL=dt,Zn.KEY="key";class tr{constructor(e=null){this.index=e?Object.assign({},e):{}}has(e){return Qt(e)in this.index}get(e){return this.index[Qt(e)]}set(e,t){return this.index[Qt(e)]=t,this}setByKey(e,t){this.index[e]=t}map(e){const t=new tr;for(const n in this.index)t.index[n]=e(this.index[n]);return t}size(){return Mt.keys(this.index).length}duplicate(){return new tr(this.index)}}function nr(e,t){const n=e&&e[t];return!!n&&(Z(n)?function(e,t){let n=0;for(const[r,i]of e.entries())if(t(i,r,n++))return!0;return!1}(n,(e=>!!e.field)):Gn(n)||qn(n))}const rr={zero:1,center:1,normalize:1};const ir=[rn,nn,cn,on,dn,fn,an,ln,un],ar=[rn,nn];function or(e,t,n,r={}){const i=function(e){return e.type}(e)?e.type:e;if(!de(ir,i))return null;const a=function(e){const t=e.x,n=e.y;if(Gn(t)&&Gn(n))if("quantitative"===t.type&&"quantitative"===n.type){if(t.stack)return"x";if(n.stack)return"y";if(!!t.aggregate!=!!n.aggregate)return t.aggregate?"x":"y"}else{if("quantitative"===t.type)return"x";if("quantitative"===n.type)return"y"}else{if(Gn(t)&&"quantitative"===t.type)return"x";if(Gn(n)&&"quantitative"===n.type)return"y"}}(t);if(!a)return null;const o=t[a],s=zn(o)?Yn(o,{}):void 0,c="x"===a?"y":"x",l=t[c],u=zn(l)?Yn(l,{}):void 0,d=qe.reduce(((e,n)=>{if("tooltip"!==n&&nr(t,n)){const r=t[n];(Z(r)?r:[r]).forEach((t=>{const r=function(e){return Gn(e)?e:qn(e)?e.condition:void 0}(t);if(r.aggregate)return;const i=zn(r)?Yn(r,{}):void 0;(!i||i!==u&&i!==s)&&e.push({channel:n,fieldDef:r})}))}return e}),[]);let f;if(void 0!==o.stack?f=ce(o.stack)?o.stack?"zero":null:o.stack:d.length>0&&(f=de(ar,i)?function(...e){for(const t of e)if(void 0!==t)return t}(n,"zero"):n),!f||!rr[f])return null;if(o.scale&&o.scale.type&&o.scale.type!==ft.LINEAR){if(r.disallowNonLinearStack)return null;ot(rt.cannotStackNonLinearScale(o.scale.type))}return nr(t,a===me?ve:be)?(void 0!==o.stack&&ot(rt.cannotStackRangedMark(a)),null):(o.aggregate&&!de(Bn,o.aggregate)&&ot(rt.stackNonSummativeAggregate(o.aggregate)),{groupbyChannel:l?c:void 0,fieldChannel:a,impute:pn(i),stackBy:d,offset:f})}function sr(e){if(!function(e){if(An(e.mark))return!1;const t=[en.STACK,en.CHANNEL,en.MARK,en.FIELD,en.AGGREGATE,en.AUTOCOUNT,en.SCALE,Kt("scale","type"),en.TYPE],n=Mt.toMap((i=Xt,a=t,i.filter((function(e){return!It(a,e)})))),r=e.encodings.filter((e=>!Nr(e)));var i,a;for(const o of r)if(cr(o,{exclude:n}))return!1;return!0}(e))return null;const t=Cr(e.encodings,{schema:null,wildcardMode:"null"});return or(e.mark,t,void 0,{disallowNonLinearStack:!0})}function cr(e,t={}){if(!Mt.isObject(e))return!1;for(const n in e)if(e.hasOwnProperty(n)){if(An(e[n])&&(!t.exclude||!t.exclude[n])||cr(e[n],t))return!0}return!1}function lr(e){return e.map((e=>{return t=e,e=>void 0!==t[e]?t[e]:e;var t}))}function ur(e,t){return An(e)?!On(e)&&e.enum?Cn+JSON.stringify(e.enum):Cn:t?t(e):e}function dr(e,t){return t?t(e):e}const fr=new tr,pr=[].concat(Zt,Wt,[en.TRANSFORM,en.STACK],Yt).reduce(((e,t)=>e.set(t,!0)),new tr),hr={axis:{x:!0,y:!0,row:!0,column:!0},legend:{color:!0,opacity:!0,size:!0,shape:!0},scale:{x:!0,y:!0,color:!0,opacity:!0,row:!0,column:!0,size:!0,shape:!0},sort:{x:!0,y:!0,path:!0,order:!0},stack:{x:!0,y:!0}};function gr(e,t=pr,n=fr){const r=[];let i;if(t.get(en.MARK)&&r.push(ur(e.mark,n.get(en.MARK))),e.transform&&e.transform.length>0&&r.push("transform:"+JSON.stringify(e.transform)),t.get(en.STACK)&&(i=sr(e)),e.encodings){const a=e.encodings.reduce(((e,r)=>{if(!Nr(r)){let a;a=i&&r.channel===i.fieldChannel?mr(Object.assign({},r,{stack:i.offset}),t,n):mr(r,t,n),a&&e.push(a)}return e}),[]).sort().join("|");a&&r.push(a)}for(let a of Yt){const n=a.toString();if(t.get(a)&&e[n]){const t=e[n];r.push(`${n}=${JSON.stringify(t)}`)}}return r.join("|")}function mr(e,t=pr,n=fr){const r=[];if(t.get(en.CHANNEL)&&r.push(ur(e.channel,n.get(en.CHANNEL))),Er(e)){const i=yr(e,t,n);i&&r.push(i)}else xr(e)?r.push(e.value):Tr(e)&&r.push("autocount()");return r.join(":")}function yr(e,t=pr,n=fr){if(t.get(en.AGGREGATE)&&Nr(e))return"-";const r=function(e,t,n){if(t.get(en.AGGREGATE)&&e.aggregate&&!An(e.aggregate))return dr(e.aggregate,n.get(en.AGGREGATE));if(t.get(en.AGGREGATE)&&Sr(e))return dr("count",n.get(en.AGGREGATE));if(t.get(en.TIMEUNIT)&&e.timeUnit&&!An(e.timeUnit))return dr(e.timeUnit,n.get(en.TIMEUNIT));if(t.get(en.BIN)&&e.bin&&!An(e.bin))return"bin";{let n=null;for(const r of[en.AGGREGATE,en.AUTOCOUNT,en.TIMEUNIT,en.BIN]){const i=e[r];t.get(r)&&e[r]&&An(i)&&(n=n||{},n[r]=On(i)?i:i.enum)}return n&&e.hasFn&&(n.hasFn=!0),n}}(e,t,n),i=function(e,t,n){const r=[];if(!Mt.isBoolean(e.bin)&&!On(e.bin)){const i=e.bin;for(const e in i){const a=Kt("bin",e);a&&t.get(a)&&void 0!==i[e]&&r.push({key:e,value:ur(i[e],n.get(a))})}r.sort(((e,t)=>e.key.localeCompare(t.key)))}for(const i of[en.SCALE,en.SORT,en.STACK,en.AXIS,en.LEGEND])if((An(e.channel)||hr[i][e.channel])&&t.get(i)&&void 0!==e[i]){const a=e[i];if(Mt.isBoolean(a)||null===a)r.push({key:i+"",value:a||!1});else if(Mt.isString(a))r.push({key:i+"",value:dr(JSON.stringify(a),n.get(i))});else{let e=[];for(const r in a){const o=Kt(i,r);o&&t.get(o)&&void 0!==a[r]&&e.push({key:r,value:ur(a[r],n.get(o))})}if(e.length>0){const t=e.sort(((e,t)=>e.key.localeCompare(t.key))).reduce(((e,t)=>(e[t.key]=t.value,e)),{});r.push({key:i+"",value:JSON.stringify(t)})}}}return r}(e,t,n);let a;if(Er(e)){if(a=t.get("field")?ur(e.field,n.get("field")):"...",t.get(en.TYPE))if(An(e.type))a+=","+ur(e.type,n.get(en.TYPE));else{a+=","+ur(((e.type||ct)+"").substr(0,1),n.get(en.TYPE))}a+=i.map((e=>{let t=e.value instanceof Array?"["+e.value+"]":e.value;return","+e.key+"="+t})).join("")}else Tr(e)&&(a="*,q");if(!a)return null;if(r){return(Mt.isString(r)?r:Cn+(Mt.keys(r).length>0?JSON.stringify(r):""))+"("+a+")"}return a}function vr(e,t,n){let r=[],i=0;for(let a=0;a<n;a++){let n=e.indexOf(t,i);if(-1===n)break;r.push(e.substring(i,n)),i=n+1}if(r.push(e.substr(i)),r.length!==n+1)for(;r.length!==n+1;)r.push("");return r}var br;function xr(e){return null!=e&&void 0!==e.value}function Er(e){return null!=e&&(e.field||"count"===e.aggregate)}function Tr(e){return null!=e&&"autoCount"in e}function Nr(e){return Tr(e)&&!1===e.autoCount}function Sr(e){return Tr(e)&&!0===e.autoCount}!function(e){function t(e){const t={};t.field=e[0],t.type=function(e){if(e)switch(e=e.toLowerCase()){case"q":case ct:return"quantitative";case"t":case ut:return"temporal";case"o":case lt:return"ordinal";case"n":case dt:return"nominal";case"geojson":return"geojson"}}(e[1].toUpperCase())||"?";let r=e[2],i=0,a=0;for(;a<r.length;){let e,o=r.indexOf("=",a);if(-1===o)break;{let s=r.substring(a,o);if("{"===r[a+s.length+1]){let t=a+s.length+1;i=n(t,r,"}");const o=r.substring(t,i+1);e=JSON.parse(o),a=i+2}else if("["===r[a+s.length+1]){let t=a+s.length+1,i=n(t,r,"]");const o=r.substring(t,i+1);e=JSON.parse(o),a=i+2}else{let t=a,n=r.indexOf(",",a+s.length);-1===n&&(n=r.length),a=n+1,e=JSON.parse(r.substring(t+s.length+1,n))}Bt(s)?t[s]=e:(t.bin=t.bin||{},t.bin[s]=e)}}return t}function n(e,t,n){for(let r=e;r<t.length;r++)if(t[r]===n)return r}function r(e){const r={};if("?"===e[0]){let i=n(1,e,"}"),a=JSON.parse(e.substring(1,i+1));for(let e in a)Mt.isArray(a[e])?r[e]={enum:a[e]}:r[e]=a[e];return Object.assign({},r,t(vr(e.substring(i+2,e.length-1),",",2)))}{let n=e.substring(0,e.indexOf("(")),r=vr(e.substring(n.length+1,e.length-1),",",2);if(te(i=n)&&$n[i])return Object.assign({aggregate:n},t(r));if(En[n])return Object.assign({timeUnit:n},t(r));if("bin"===n)return Object.assign({bin:{}},t(r))}var i}e.encoding=function(e,n){let i=-1!==n.indexOf("(")?r(n):t(vr(n,",",2));return Object.assign({channel:e},i)},e.rawFieldDef=t,e.getClosingIndex=n,e.fn=r}(br||(br={}));const wr=[en.AGGREGATE,en.BIN,en.TIMEUNIT,en.FIELD,en.TYPE,en.SCALE,en.SORT,en.AXIS,en.LEGEND,en.STACK,en.FORMAT];function Cr(e,t){let n={};for(const r of e){if(Nr(r))continue;const{channel:e}=r;if(An(e))throw new Error("Cannot convert wildcard channel to a fixed channel");const i=xr(r)?Ar(r):Or(r,t);if(null!==i)n[e]=i;else if("null"===t.wildcardMode)return null}return n}function Ar(e){const{value:t}=e;return An(t)?null:{value:t}}function Or(e,t={}){const{props:n=wr,schema:r,wildcardMode:i="skip"}=t;if(Er(e)){const t={};for(const a of n){let n=e[a];if(An(n)){if("skip"===i)continue;return null}if(void 0!==n){if(!(!hr[a]||hr[a][e.channel]))continue;if(Bt(a)&&Mt.isObject(n)){n=Object.assign({},n);for(const e in n)if(An(n[e])){if("null"===i)return null;delete n[e]}}if("bin"===a&&!1===n)continue;"type"===a&&"key"===n?t.type="nominal":t[a]=n}if(a===en.SCALE&&r&&e.type===lt){const n=e.scale,{ordinalDomain:i}=r.fieldSchema(e.field);null!==n&&i&&(t[en.SCALE]=Object.assign({domain:i},Mt.isObject(n)?n:{}))}}return t}if(!1===e.autoCount)throw new Error("Cannot convert {autoCount: false} into a field def");return{aggregate:"count",field:"*",type:"quantitative"}}function kr(e){return Er(e)?!Mr(e)&&"temporal"!==e.type:Tr(e)}function Mr(e){if(Er(e)){const t=Or(e,{props:["bin","timeUnit","type"]});return Qn(t)||!!t.timeUnit}return!1}function Ir(e){const t=!0===e.scale||e.scale===Cn?{}:e.scale||{},{type:n,channel:r,timeUnit:i,bin:a}=e;if(An(t.type)||An(n)||An(r)||An(a))return;if(t.type)return t.type;if("temporal"===n&&An(i))return;if("quantitative"===n&&An(a))return;const o={type:n===Xn.KEY?"nominal":n,timeUnit:i,bin:a};return Jn({type:t.type},r,o,void 0)}var Ur={exports:{}},Fr=new Date,Dr=new Date;function jr(e,t,n,r){function i(t){return e(t=new Date(+t)),t}return i.floor=i,i.round=function(n){var r=new Date(+n),i=new Date(n-1);return e(r),e(i),t(i,1),n-r<i-n?r:i},i.ceil=function(n){return e(n=new Date(n-1)),t(n,1),n},i.offset=function(e,n){return t(e=new Date(+e),null==n?1:Math.floor(n)),e},i.range=function(n,r,i){var a=[];if(n=new Date(n-1),r=new Date(+r),i=null==i?1:Math.floor(i),!(n<r&&i>0))return a;for(t(n,1),e(n),n<r&&a.push(new Date(+n));t(n,i),e(n),n<r;)a.push(new Date(+n));return a},i.filter=function(n){return jr((function(t){for(;e(t),!n(t);)t.setTime(t-1)}),(function(e,r){for(;--r>=0;)for(;t(e,1),!n(e););}))},n&&(i.count=function(t,r){return Fr.setTime(+t),Dr.setTime(+r),e(Fr),e(Dr),Math.floor(n(Fr,Dr))},i.every=function(e){return e=Math.floor(e),isFinite(e)&&e>0?e>1?i.filter(r?function(t){return r(t)%e==0}:function(t){return i.count(0,t)%e==0}):i:null}),i}var _r=jr((function(){}),(function(e,t){e.setTime(+e+t)}),(function(e,t){return t-e}));_r.every=function(e){return e=Math.floor(e),isFinite(e)&&e>0?e>1?jr((function(t){t.setTime(Math.floor(t/e)*e)}),(function(t,n){t.setTime(+t+n*e)}),(function(t,n){return(n-t)/e})):_r:null};const Pr=jr((function(e){e.setMilliseconds(0)}),(function(e,t){e.setTime(+e+1e3*t)}),(function(e,t){return(t-e)/1e3}),(function(e){return e.getSeconds()})),Rr=jr((function(e){e.setSeconds(0,0)}),(function(e,t){e.setTime(+e+6e4*t)}),(function(e,t){return(t-e)/6e4}),(function(e){return e.getMinutes()})),$r=jr((function(e){e.setMinutes(0,0,0)}),(function(e,t){e.setTime(+e+36e5*t)}),(function(e,t){return(t-e)/36e5}),(function(e){return e.getHours()})),Br=jr((function(e){e.setHours(0,0,0,0)}),(function(e,t){e.setDate(e.getDate()+t)}),(function(e,t){return(t-e-6e4*(t.getTimezoneOffset()-e.getTimezoneOffset()))/864e5}),(function(e){return e.getDate()-1}));function Lr(e){return jr((function(t){t.setHours(0,0,0,0),t.setDate(t.getDate()-(t.getDay()+7-e)%7)}),(function(e,t){e.setDate(e.getDate()+7*t)}),(function(e,t){return(t-e-6e4*(t.getTimezoneOffset()-e.getTimezoneOffset()))/6048e5}))}var Wr=Lr(0),Hr=Lr(1),qr=Lr(2),Gr=Lr(3),zr=Lr(4),Yr=Lr(5),Qr=Lr(6);const Vr=jr((function(e){e.setHours(0,0,0,0),e.setDate(1)}),(function(e,t){e.setMonth(e.getMonth()+t)}),(function(e,t){return t.getMonth()-e.getMonth()+12*(t.getFullYear()-e.getFullYear())}),(function(e){return e.getMonth()})),Kr=jr((function(e){e.setHours(0,0,0,0),e.setMonth(0,1)}),(function(e,t){e.setFullYear(e.getFullYear()+t)}),(function(e,t){return t.getFullYear()-e.getFullYear()}),(function(e){return e.getFullYear()})),Jr=jr((function(e){e.setUTCMilliseconds(0)}),(function(e,t){e.setTime(+e+1e3*t)}),(function(e,t){return(t-e)/1e3}),(function(e){return e.getUTCSeconds()})),Xr=jr((function(e){e.setUTCSeconds(0,0)}),(function(e,t){e.setTime(+e+6e4*t)}),(function(e,t){return(t-e)/6e4}),(function(e){return e.getUTCMinutes()})),Zr=jr((function(e){e.setUTCMinutes(0,0,0)}),(function(e,t){e.setTime(+e+36e5*t)}),(function(e,t){return(t-e)/36e5}),(function(e){return e.getUTCHours()})),ei=jr((function(e){e.setUTCHours(0,0,0,0)}),(function(e,t){e.setUTCDate(e.getUTCDate()+t)}),(function(e,t){return(t-e)/864e5}),(function(e){return e.getUTCDate()-1}));function ti(e){return jr((function(t){t.setUTCHours(0,0,0,0),t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7)}),(function(e,t){e.setUTCDate(e.getUTCDate()+7*t)}),(function(e,t){return(t-e)/6048e5}))}var ni=ti(0),ri=ti(1),ii=ti(2),ai=ti(3),oi=ti(4),si=ti(5),ci=ti(6);const li=jr((function(e){e.setUTCHours(0,0,0,0),e.setUTCDate(1)}),(function(e,t){e.setUTCMonth(e.getUTCMonth()+t)}),(function(e,t){return t.getUTCMonth()-e.getUTCMonth()+12*(t.getUTCFullYear()-e.getUTCFullYear())}),(function(e){return e.getUTCMonth()})),ui=jr((function(e){e.setUTCHours(0,0,0,0),e.setUTCMonth(0,1)}),(function(e,t){e.setUTCFullYear(e.getUTCFullYear()+t)}),(function(e,t){return t.getUTCFullYear()-e.getUTCFullYear()}),(function(e){return e.getUTCFullYear()}));var di=_r.range,fi=Pr.range,pi=Rr.range,hi=$r.range,gi=Br.range,mi=Wr.range,yi=Hr.range,vi=qr.range,bi=Gr.range,xi=zr.range,Ei=Yr.range,Ti=Qr.range,Ni=Wr.range,Si=Vr.range,wi=Kr.range,Ci=_r,Ai=di,Oi=Jr.range,ki=Xr.range,Mi=Zr.range,Ii=ei.range,Ui=ni.range,Fi=ri.range,Di=ii.range,ji=ai.range,_i=oi.range,Pi=si.range,Ri=ci.range,$i=ni.range,Bi=li.range,Li=ui.range;var Wi=n(Object.freeze(Object.defineProperty({__proto__:null,day:Br,days:gi,friday:Yr,fridays:Ei,hour:$r,hours:hi,interval:jr,millisecond:_r,milliseconds:di,minute:Rr,minutes:pi,monday:Hr,mondays:yi,month:Vr,months:Si,saturday:Qr,saturdays:Ti,second:Pr,seconds:fi,sunday:Wr,sundays:mi,thursday:zr,thursdays:xi,tuesday:qr,tuesdays:vi,utcDay:ei,utcDays:Ii,utcFriday:si,utcFridays:Pi,utcHour:Zr,utcHours:Mi,utcMillisecond:Ci,utcMilliseconds:Ai,utcMinute:Xr,utcMinutes:ki,utcMonday:ri,utcMondays:Fi,utcMonth:li,utcMonths:Bi,utcSaturday:ci,utcSaturdays:Ri,utcSecond:Jr,utcSeconds:Oi,utcSunday:ni,utcSundays:Ui,utcThursday:oi,utcThursdays:_i,utcTuesday:ii,utcTuesdays:Di,utcWednesday:ai,utcWednesdays:ji,utcWeek:ni,utcWeeks:$i,utcYear:ui,utcYears:Li,wednesday:Gr,wednesdays:bi,week:Wr,weeks:Ni,year:Kr,years:wi},Symbol.toStringTag,{value:"Module"}))),Hi=new Date,qi=new Date(0,0,1).setFullYear(0),Gi=new Date(Date.UTC(0,0,1)).setUTCFullYear(0);function zi(e){return Hi.setTime(+e),Hi}function Yi(e,t,n,r,i,a){var o={type:e,date:t,unit:n};return r?o.step=r:o.minstep=1,null!=i&&(o.min=i),null!=a&&(o.max=a),o}function Qi(e,t,n,r,i,a){return Yi(e,(function(e){return t.offset(n,e)}),(function(e){return t.count(n,e)}),r,i,a)}var Vi=[Qi("second",Wi.second,qi),Qi("minute",Wi.minute,qi),Qi("hour",Wi.hour,qi),Qi("day",Wi.day,qi,[1,7]),Qi("month",Wi.month,qi,[1,3,6]),Qi("year",Wi.year,qi),Yi("seconds",(function(e){return new Date(1970,0,1,0,0,e)}),(function(e){return zi(e).getSeconds()}),null,0,59),Yi("minutes",(function(e){return new Date(1970,0,1,0,e)}),(function(e){return zi(e).getMinutes()}),null,0,59),Yi("hours",(function(e){return new Date(1970,0,1,e)}),(function(e){return zi(e).getHours()}),null,0,23),Yi("weekdays",(function(e){return new Date(1970,0,4+e)}),(function(e){return zi(e).getDay()}),[1],0,6),Yi("dates",(function(e){return new Date(1970,0,e)}),(function(e){return zi(e).getDate()}),[1],1,31),Yi("months",(function(e){return new Date(1970,e%12,1)}),(function(e){return zi(e).getMonth()}),[1],0,11)],Ki=[Qi("second",Wi.utcSecond,Gi),Qi("minute",Wi.utcMinute,Gi),Qi("hour",Wi.utcHour,Gi),Qi("day",Wi.utcDay,Gi,[1,7]),Qi("month",Wi.utcMonth,Gi,[1,3,6]),Qi("year",Wi.utcYear,Gi),Yi("seconds",(function(e){return new Date(Date.UTC(1970,0,1,0,0,e))}),(function(e){return zi(e).getUTCSeconds()}),null,0,59),Yi("minutes",(function(e){return new Date(Date.UTC(1970,0,1,0,e))}),(function(e){return zi(e).getUTCMinutes()}),null,0,59),Yi("hours",(function(e){return new Date(Date.UTC(1970,0,1,e))}),(function(e){return zi(e).getUTCHours()}),null,0,23),Yi("weekdays",(function(e){return new Date(Date.UTC(1970,0,4+e))}),(function(e){return zi(e).getUTCDay()}),[1],0,6),Yi("dates",(function(e){return new Date(Date.UTC(1970,0,e))}),(function(e){return zi(e).getUTCDate()}),[1],1,31),Yi("months",(function(e){return new Date(Date.UTC(1970,e%12,1))}),(function(e){return zi(e).getUTCMonth()}),[1],0,11)],Ji=[[31536e6,5],[7776e6,4],[2592e6,4],[12096e5,3],[6048e5,3],[1728e5,3],[864e5,3],[432e5,2],[216e5,2],[108e5,2],[36e5,2],[18e5,1],[9e5,1],[3e5,1],[6e4,1],[3e4,0],[15e3,0],[5e3,0],[1e3,0]];function Xi(e){var t,n,r={};for(t=0,n=e.length;t<n;++t)r[e[t].type]=e[t];return r.find=function(t,n,r){return function(e,t,n,r){var i,a,o,s=Ji[0];for(i=1,a=Ji.length;i<a;++i)if(t>(s=Ji[i])[0]){if((o=t/s[0])>r)return e[Ji[i-1][1]];if(o>=n)return e[s[1]]}return e[Ji[a-1][1]]}(e,t,n,r)},r}Ur.exports=Xi(Vi),Ur.exports.utc=Xi(Ki);var Zi=Ur.exports,ea=Mt,ta=Zi;function na(e){if(!e)throw Error("Missing binning options.");var t,n,r,i,a,o,s,c=e.maxbins||15,l=e.base||10,u=Math.log(l),d=e.div||[5,2],f=e.min,p=e.max,h=p-f;if(e.step)t=e.step;else if(e.steps)t=e.steps[Math.min(e.steps.length-1,function(e,t,n,r){for(;n<r;){var i=n+r>>>1;ea.cmp(e[i],t)<0?n=i+1:r=i}return n}(e.steps,h/c,0,e.steps.length))];else{for(n=Math.ceil(Math.log(c)/u),r=e.minstep||0,t=Math.max(r,Math.pow(l,Math.round(Math.log(h)/u)-n));Math.ceil(h/t)>c;)t*=l;for(o=0;o<d.length;++o)(a=t/d[o])>=r&&h/a<=c&&(t=a)}return i=(a=Math.log(t))>=0?0:1+~~(-a/u),s=Math.pow(l,-i-1),{start:f=Math.min(f,Math.floor(f/t+s)*t),stop:p=Math.ceil(p/t)*t,step:t,unit:{precision:i},value:ra,index:ia}}function ra(e){return this.step*Math.floor(e/this.step+1e-15)}function ia(e){return Math.floor((e-this.start)/this.step+1e-15)}function aa(e){return this.unit.date(ra.call(this,e))}function oa(e){return ia.call(this,this.unit.unit(e))}na.date=function(e){if(!e)throw Error("Missing date binning options.");var t=e.utc?ta.utc:ta,n=e.min,r=e.max,i=e.maxbins||20,a=e.minbins||4,o=+r-+n,s=e.unit?t[e.unit]:t.find(o,a,i),c=na({min:null!=s.min?s.min:s.unit(n),max:null!=s.max?s.max:s.unit(r),maxbins:i,minstep:s.minstep,steps:s.step});return c.unit=s,c.index=oa,e.raw||(c.value=aa),c};const sa=t(na);var ca=Mt,la="__types__",ua={boolean:ca.boolean,integer:ca.number,number:ca.number,date:ca.date,string:function(e){return null==e||""===e?null:e+""}},da={boolean:function(e){return"true"===e||"false"===e||ca.isBoolean(e)},integer:function(e){return da.number(e)&&(e=+e)==~~e},number:function(e){return!isNaN(+e)&&!ca.isDate(e)},date:function(e){return!isNaN(Date.parse(e))}};function fa(e){return ca.keys(e)}function pa(e){return"["+e+"]"}function ha(e,t){var n,r,i;if(e=ca.array(e),t=ca.$(t),e[la]&&(n=t(e[la]),ca.isString(n)))return n;for(r=0,i=e.length;!ca.isValid(n)&&r<i;++r)n=t?t(e[r]):e[r];return ca.isDate(n)?"date":ca.isNumber(n)?"number":ca.isBoolean(n)?"boolean":ca.isString(n)?"string":null}function ga(e,t){var n,r,i;e=ca.array(e),t=ca.$(t);var a=["boolean","integer","number","date"];for(n=0;n<e.length;++n){for(i=t?t(e[n]):e[n],r=0;r<a.length;++r)ca.isValid(i)&&!da[a[r]](i)&&(a.splice(r,1),r-=1);if(0===a.length)return"string"}return a[0]}ha.annotation=function(e,t){if(!t)return e&&e[la]||null;e[la]=t},ha.all=function(e,t){if(e.length){var n=t?ca.identity:(t=fa(e[0]),pa);return t.reduce((function(t,r){return t[r]=ha(e,n(r)),t}),{})}},ha.infer=ga,ha.inferAll=function(e,t){var n=t?ca.identity:(t=fa(e[0]),pa);return t.reduce((function(t,r){return t[r]=ga(e,n(r)),t}),{})},ha.parsers=ua;var ma,ya,va=ha,ba={exports:{}},xa={exports:{}};ma=Mt,(ya=xa.exports).repeat=function(e,t){var n,r=Array(t);for(n=0;n<t;++n)r[n]=e;return r},ya.zeros=function(e){return ya.repeat(0,e)},ya.range=function(e,t,n){if(arguments.length<3&&(n=1,arguments.length<2&&(t=e,e=0)),(t-e)/n==1/0)throw new Error("Infinite range");var r,i=[],a=-1;if(n<0)for(;(r=e+n*++a)>t;)i.push(r);else for(;(r=e+n*++a)<t;)i.push(r);return i},ya.random={},ya.random.uniform=function(e,t){void 0===t&&(t=void 0===e?1:e,e=0);var n=t-e,r=function(){return e+n*Math.random()};return r.samples=function(e){return ya.zeros(e).map(r)},r.pdf=function(r){return r>=e&&r<=t?1/n:0},r.cdf=function(r){return r<e?0:r>t?1:(r-e)/n},r.icdf=function(t){return t>=0&&t<=1?e+t*n:NaN},r},ya.random.integer=function(e,t){void 0===t&&(t=e,e=0);var n=t-e,r=function(){return e+Math.floor(n*Math.random())};return r.samples=function(e){return ya.zeros(e).map(r)},r.pdf=function(r){return r===Math.floor(r)&&r>=e&&r<t?1/n:0},r.cdf=function(r){var i=Math.floor(r);return i<e?0:i>=t?1:(i-e+1)/n},r.icdf=function(t){return t>=0&&t<=1?e-1+Math.floor(t*n):NaN},r},ya.random.normal=function(e,t){var n;e=e||0,t=t||1;var r=function(){var r,i,a=0,o=0;if(void 0!==n)return a=n,n=void 0,a;do{r=(a=2*Math.random()-1)*a+(o=2*Math.random()-1)*o}while(0===r||r>1);return i=Math.sqrt(-2*Math.log(r)/r),n=e+o*i*t,e+a*i*t};return r.samples=function(e){return ya.zeros(e).map(r)},r.pdf=function(n){var r=Math.exp(Math.pow(n-e,2)/(-2*Math.pow(t,2)));return 1/(t*Math.sqrt(2*Math.PI))*r},r.cdf=function(n){var r,i=(n-e)/t,a=Math.abs(i);if(a>37)r=0;else{var o=Math.exp(-a*a/2);a<7.07106781186547?(r=o*((((((.0352624965998911*a+.700383064443688)*a+6.37396220353165)*a+33.912866078383)*a+112.079291497871)*a+221.213596169931)*a+220.206867912376),r/=((((((.0883883476483184*a+1.75566716318264)*a+16.064177579207)*a+86.7807322029461)*a+296.564248779674)*a+637.333633378831)*a+793.826512519948)*a+440.413735824752):r=o/(a+1/(a+2/(a+3/(a+4/(a+.65)))))/2.506628274631}return i>0?1-r:r},r.icdf=function(n){if(n<=0||n>=1)return NaN;var r=2*n-1,i=8*(Math.PI-3)/(3*Math.PI*(4-Math.PI)),a=2/(Math.PI*i)+Math.log(1-Math.pow(r,2))/2,o=Math.log(1-r*r)/i,s=(r>0?1:-1)*Math.sqrt(Math.sqrt(a*a-o)-a);return e+t*Math.SQRT2*s},r},ya.random.bootstrap=function(e,t){var n=e.filter(ma.isValid),r=n.length,i=t?ya.random.normal(0,t):null,a=function(){return n[~~(Math.random()*r)]+(i?i():0)};return a.samples=function(e){return ya.zeros(e).map(a)},a};var Ea=xa.exports;!function(){var e=Mt,t=va,n=Ea,r=ba.exports;function i(e,t,i){var a=e&&e.nullh||0,o=n.random.normal(0,1),s=r.mean(t,i),c=r.stdev(t,i)/Math.sqrt(r.count.valid(t,i));if(0===c)return s-a==0?1:0;var l=(s-a)/c;return 2*o.cdf(-Math.abs(l))}function a(t,n,i,a){var o,s=a?n.map(e.$(i)):n,c=a?n.map(e.$(a)):i,l=r.count(s),u=r.count(c),d=Array();if(l!==u)throw Error("Array lengths must match.");for(o=0;o<l;++o)e.isValid(s[o])&&e.isValid(c[o])&&d.push(s[o]-c[o]);return r.z.test(d,t&&t.nullh||0)}function o(t,i,a,o){var s=o?i.map(e.$(a)):i,c=o?i.map(e.$(o)):a,l=r.count.valid(s),u=r.count.valid(c),d=n.random.normal(0,1),f=r.mean(s)-r.mean(c)-(t&&t.nullh||0),p=Math.sqrt(r.variance(s)/l+r.variance(c)/u);if(0===p)return 0===f?1:0;var h=f/p;return 2*d.cdf(-Math.abs(h))}r.unique=function(t,n,r){n=e.$(n),r=r||[];var i,a,o,s={};for(a=0,o=t.length;a<o;++a)(i=n?n(t[a]):t[a])in s||(s[i]=1,r.push(i));return r},r.count=function(e){return e&&e.length||0},r.count.valid=function(t,n){n=e.$(n);var r,i,a,o=0;for(i=0,a=t.length;i<a;++i)r=n?n(t[i]):t[i],e.isValid(r)&&(o+=1);return o},r.count.missing=function(t,n){n=e.$(n);var r,i,a=0;for(r=0,i=t.length;r<i;++r)null==(n?n(t[r]):t[r])&&(a+=1);return a},r.count.distinct=function(t,n){n=e.$(n);var r,i,a,o={},s=0;for(i=0,a=t.length;i<a;++i)(r=n?n(t[i]):t[i])in o||(o[r]=1,s+=1);return s},r.count.map=function(t,n){n=e.$(n);var r,i,a,o={};for(i=0,a=t.length;i<a;++i)o[r=n?n(t[i]):t[i]]=r in o?o[r]+1:1;return o},r.median=function(t,n){return n&&(t=t.map(e.$(n))),t=t.filter(e.isValid).sort(e.cmp),r.quantile(t,.5)},r.quartile=function(t,n){n&&(t=t.map(e.$(n))),t=t.filter(e.isValid).sort(e.cmp);var i=r.quantile;return[i(t,.25),i(t,.5),i(t,.75)]},r.quantile=function(t,n,r){void 0===r&&(r=n,n=e.identity),n=e.$(n);var i=(t.length-1)*r+1,a=Math.floor(i),o=+n(t[a-1]),s=i-a;return s?o+s*(n(t[a])-o):o},r.sum=function(t,n){n=e.$(n);for(var r,i=0,a=0,o=t.length;a<o;++a)r=n?n(t[a]):t[a],e.isValid(r)&&(i+=r);return i},r.mean=function(t,n){n=e.$(n);var r,i,a,o,s=0;for(r=0,a=0,i=t.length;r<i;++r)o=n?n(t[r]):t[r],e.isValid(o)&&(s+=(o-s)/++a);return s},r.mean.geometric=function(t,n){n=e.$(n);var r,i,a,o,s=1;for(o=0,r=0,i=t.length;o<i;++o)if(a=n?n(t[o]):t[o],e.isValid(a)){if(a<=0)throw Error("Geometric mean only defined for positive values.");s*=a,++r}return s=r>0?Math.pow(s,1/r):0},r.mean.harmonic=function(t,n){n=e.$(n);var r,i,a,o,s=0;for(o=0,r=0,i=t.length;o<i;++o)a=n?n(t[o]):t[o],e.isValid(a)&&(s+=1/a,++r);return r/s},r.variance=function(t,n){if(n=e.$(n),!e.isArray(t)||t.length<2)return 0;var r,i,a,o,s=0,c=0;for(i=0,a=0;i<t.length;++i)o=n?n(t[i]):t[i],e.isValid(o)&&(c+=(r=o-s)*(o-(s+=r/++a)));return c/=a-1},r.stdev=function(e,t){return Math.sqrt(r.variance(e,t))},r.modeskew=function(e,t){var n=r.mean(e,t),i=r.median(e,t),a=r.stdev(e,t);return 0===a?0:(n-i)/a},r.min=function(e,t){return r.extent(e,t)[0]},r.max=function(e,t){return r.extent(e,t)[1]},r.extent=function(t,n){n=e.$(n);var r,i,a,o,s=t.length;for(o=0;o<s;++o)if(a=n?n(t[o]):t[o],e.isValid(a)){r=i=a;break}for(;o<s;++o)a=n?n(t[o]):t[o],e.isValid(a)&&(a<r&&(r=a),a>i&&(i=a));return[r,i]},r.extent.index=function(t,n){n=e.$(n);var r,i,a,o,s=-1,c=-1,l=t.length;for(o=0;o<l;++o)if(a=n?n(t[o]):t[o],e.isValid(a)){r=i=a,s=c=o;break}for(;o<l;++o)a=n?n(t[o]):t[o],e.isValid(a)&&(a<r&&(r=a,s=o),a>i&&(i=a,c=o));return[s,c]},r.dot=function(t,n,r){var i,a,o=0;if(r)for(n=e.$(n),r=e.$(r),i=0;i<t.length;++i)(a=n(t[i])*r(t[i]))==a&&(o+=a);else{if(t.length!==n.length)throw Error("Array lengths must match.");for(i=0;i<t.length;++i)(a=t[i]*n[i])==a&&(o+=a)}return o},r.dist=function(t,n,r,i){var a,o,s=e.isFunction(r)||e.isString(r),c=t,l=s?t:n,u=s?i:r,d=2===u||null==u,f=t.length,p=0;for(s&&(n=e.$(n),r=e.$(r)),o=0;o<f;++o)a=s?n(c[o])-r(l[o]):c[o]-l[o],p+=d?a*a:Math.pow(Math.abs(a),u);return d?Math.sqrt(p):Math.pow(p,1/u)},r.cohensd=function(t,n,i){var a=i?t.map(e.$(n)):t,o=i?t.map(e.$(i)):n,s=r.mean(a),c=r.mean(o),l=r.count.valid(a),u=r.count.valid(o);if(l+u-2<=0)return 0;var d=r.variance(a),f=r.variance(o),p=Math.sqrt(((l-1)*d+(u-1)*f)/(l+u-2));return 0===p?0:(s-c)/p},r.covariance=function(t,n,i){var a,o,s,c,l,u=i?t.map(e.$(n)):t,d=i?t.map(e.$(i)):n,f=u.length,p=r.mean(u),h=r.mean(d),g=0,m=0;if(f!==d.length)throw Error("Input lengths must match.");for(a=0;a<f;++a)if(o=u[a],c=e.isValid(o),s=d[a],l=e.isValid(s),c&&l)g+=(o-p)*(s-h),++m;else if(c||l)throw Error("Valid values must align.");return g/(m-1)},r.rank=function(t,n){n=e.$(n)||e.identity;var r,i,a,o=t.map((function(e,t){return{idx:t,val:n(e)}})).sort(e.comparator("val")),s=t.length,c=Array(s),l=-1,u={};for(r=0;r<s;++r){if(i=o[r].val,l<0&&u===i)l=r-1;else if(l>-1&&u!==i){for(a=1+(r-1+l)/2;l<r;++l)c[o[l].idx]=a;l=-1}c[o[r].idx]=r+1,u=i}if(l>-1)for(a=1+(s-1+l)/2;l<s;++l)c[o[l].idx]=a;return c},r.cor=function(t,n,i){var a=i;i=a?t.map(e.$(i)):n,n=a?t.map(e.$(n)):t;var o=r.dot(n,i),s=r.mean(n),c=r.mean(i),l=r.stdev(n),u=r.stdev(i),d=t.length;return(o-d*s*c)/((d-1)*l*u)},r.cor.rank=function(e,t,n){var i,a,o,s=n?r.rank(e,t):r.rank(e),c=n?r.rank(e,n):r.rank(t),l=e.length;for(i=0,a=0;i<l;++i)a+=(o=s[i]-c[i])*o;return 1-6*a/(l*(l*l-1))},r.cor.dist=function(t,n,i){var a,o,s,c,l=i?t.map(e.$(n)):t,u=i?t.map(e.$(i)):n,d=r.dist.mat(l),f=r.dist.mat(u),p=d.length;for(a=0,o=0,s=0,c=0;a<p;++a)o+=d[a]*d[a],s+=f[a]*f[a],c+=d[a]*f[a];return Math.sqrt(c/Math.sqrt(o*s))},r.linearRegression=function(t,n,i){var a,o,s=i?t.map(e.$(n)):t,c=i?t.map(e.$(i)):n,l=s.length,u=r.covariance(s,c),d=r.stdev(s),f=r.stdev(c),p=u/(d*d),h=r.mean(c)-p*r.mean(s),g={slope:p,intercept:h,R:u/(d*f),rss:0};for(o=0;o<l;++o)e.isValid(s[o])&&e.isValid(c[o])&&(a=p*s[o]+h-c[o],g.rss+=a*a);return g},r.bootstrap={},r.bootstrap.ci=function(t,i,a,o,s){var c,l,u,d,f,p,h;for(e.isFunction(i)||e.isString(i)?(c=t.map(e.$(i)),l=a,u=o,d=s):(c=t,l=i,u=a,d=o),l=l?+l:1e3,u=u||.05,f=n.random.bootstrap(c,d),h=0,p=Array(l);h<l;++h)p[h]=r.mean(f.samples(c.length));return p.sort(e.numcmp),[r.quantile(p,u/2),r.quantile(p,1-u/2)]},r.z={},r.z.ci=function(t,i,a){var o=t,s=i;(e.isFunction(i)||e.isString(i))&&(o=t.map(e.$(i)),s=a);var c=.05===(s=s||.05)?1.96:n.random.normal(0,1).icdf(1-s/2),l=r.mean(o),u=r.stdev(o)/Math.sqrt(r.count.valid(o));return[l-c*u,l+c*u]},r.z.test=function(t,n,r,s){return e.isFunction(r)||e.isString(r)?(s&&s.paired?a:o)(s,t,n,r):e.isArray(n)?(r&&r.paired?a:o)(r,t,n):e.isFunction(n)||e.isString(n)?i(r,t,n):i(n,t)},r.dist.mat=function(e){var t,r,i,a=e.length,o=a*a,s=Array(o),c=n.zeros(a),l=0;for(r=0;r<a;++r)for(s[r*a+r]=0,i=r+1;i<a;++i)s[r*a+i]=t=Math.abs(e[r]-e[i]),s[i*a+r]=t,c[r]+=t,c[i]+=t;for(r=0;r<a;++r)l+=c[r],c[r]/=a;for(l/=o,r=0;r<a;++r)for(i=r;i<a;++i)s[r*a+i]+=l-c[r]-c[i],s[i*a+r]=s[r*a+i];return s},r.entropy=function(t,n){n=e.$(n);var r,i,a=0,o=0,s=t.length;for(r=0;r<s;++r)a+=n?n(t[r]):t[r];if(0===a)return 0;for(r=0;r<s;++r)(i=(n?n(t[r]):t[r])/a)&&(o+=i*Math.log(i));return-o/Math.LN2},r.mutual=function(t,n,r,i){var a,o,s,c=i?t.map(e.$(n)):t,l=i?t.map(e.$(r)):n,u=i?t.map(e.$(i)):r,d={},f={},p=u.length,h=0,g=0,m=0;for(s=0;s<p;++s)d[c[s]]=0,f[l[s]]=0;for(s=0;s<p;++s)d[c[s]]+=u[s],f[l[s]]+=u[s],h+=u[s];for(o=1/(h*Math.LN2),s=0;s<p;++s)0!==u[s]&&(a=h*u[s]/(d[c[s]]*f[l[s]]),g+=u[s]*o*Math.log(a),m+=u[s]*o*Math.log(u[s]/h));return[g,1+g/m]},r.mutual.info=function(e,t,n,i){return r.mutual(e,t,n,i)[0]},r.mutual.dist=function(e,t,n,i){return r.mutual(e,t,n,i)[1]},r.profile=function(n,i){var a,o,s,c,l,u=0,d=0,f=0,p=0,h=null,g=null,m=0,y=[],v={};for(s=0;s<n.length;++s)v[c=i?i(n[s]):n[s]]=c in v?v[c]+1:(p+=1,1),null==c?++f:e.isValid(c)&&(l="string"==typeof c?c.length:c,(null===h||l<h)&&(h=l),(null===g||l>g)&&(g=l),m+=(a=l-u)*(l-(u+=a/++d)),y.push(l));return m/=d-1,o=Math.sqrt(m),y.sort(e.cmp),{type:t(n,i),unique:v,count:n.length,valid:d,missing:f,distinct:p,min:h,max:g,mean:u,stdev:o,median:c=r.quantile(y,.5),q1:r.quantile(y,.25),q3:r.quantile(y,.75),modeskew:0===o?0:(u-c)/o}},r.summary=function(t,n){var i=(n=n||e.keys(t[0])).map((function(n){var i=r.profile(t,e.$(n));return i.field=n,i}));return i.__summary__=!0,i}}();var Ta=ba.exports;const Na=sa;const Sa={nominal:0,key:1,ordinal:2,temporal:3,quantitative:4};class wa{constructor(e){this._tableSchema=e,e.fields.sort((function(e,t){return Sa[e.vlType]<Sa[t.vlType]?-1:Sa[e.vlType]>Sa[t.vlType]?1:e.name.localeCompare(t.name)})),e.fields.forEach(((e,t)=>e.index=t)),this._fieldSchemaIndex=e.fields.reduce(((e,t)=>(e[t.name]=t,e)),{})}fieldNames(){return this._tableSchema.fields.map((e=>e.name))}get fieldSchemas(){return this._tableSchema.fields}fieldSchema(e){return this._fieldSchemaIndex[e]}tableSchema(){const e=Mt.duplicate(this._tableSchema);return e.fields.sort(((e,t)=>e.originalIndex-t.originalIndex)),e}primitiveType(e){return this._fieldSchemaIndex[e]?this._fieldSchemaIndex[e].type:null}vlType(e){return this._fieldSchemaIndex[e]?this._fieldSchemaIndex[e].vlType:null}cardinality(e,t=!0,n=!1){const r=this._fieldSchemaIndex[e.field];if(e.aggregate||Tr(e)&&e.autoCount)return 1;if(e.bin){let t;t="boolean"==typeof e.bin?{maxbins:Hn(e.channel)}:"?"===e.bin?{enum:[!0,!1]}:e.bin;const n=t.maxbins;return r.binStats[n]||(r.binStats[n]=Ca(n,r.stats)),r.binStats[n].distinct}if(e.timeUnit){if(t)switch(e.timeUnit){case hn.SECONDS:case hn.MINUTES:return 60;case hn.HOURS:return 24;case hn.DAY:return 7;case hn.DATE:return 31;case hn.MONTH:return 12;case hn.QUARTER:return 4;case hn.MILLISECONDS:return 1e3}let i=e.timeUnit,a=r.timeStats;return a&&a[i]||(a=Object.assign({},a,{[i]:Aa(e.timeUnit,r.stats)})),n?a[i].distinct-Oa(a[i].unique,["Invalid Date",null]):a[i].distinct}return r?n?r.stats.distinct-Oa(r.stats.unique,[NaN,null]):r.stats.distinct:null}timeUnitHasVariation(e){if(!e.timeUnit)return;if(e.timeUnit===hn.DAY){const t=Mt.extend({},e,{timeUnit:hn.DATE});if(this.cardinality(t,!1,!0)<=1)return!1}let t=e.timeUnit;for(let n of yn)if(wn(t,n)){const t=Mt.extend({},e,{timeUnit:n});if(this.cardinality(t,!1,!0)<=1)return!1}return!0}domain(e){const t=this._fieldSchemaIndex[e.field];let n=Mt.keys(t.stats.unique);return t.vlType===ct?[+t.stats.min,+t.stats.max]:t.type===ka.DATETIME?[t.stats.min,t.stats.max]:t.type===ka.INTEGER||t.type===ka.NUMBER?(n=n.map((e=>+e)),n.sort(Mt.cmp)):t.vlType===lt&&t.ordinalDomain?t.ordinalDomain:n.map((e=>"null"===e?null:e)).sort(Mt.cmp)}stats(e){const t=this._fieldSchemaIndex[e.field];return t?t.stats:null}}function Ca(e,t){const n=Na({min:t.min,max:t.max,maxbins:e}),r=Mt.extend({},t);return r.unique=function(e,t){const n={};for(let r in t){let i;i=null===r?null:isNaN(Number(r))?NaN:e.value(Number(r)),n[i]=(n[i]||0)+t[r]}return n}(n,t.unique),r.distinct=(n.stop-n.start)/n.step,r.min=n.start,r.max=n.stop,r}function Aa(e,t){const n=Mt.extend({},t);let r={};return Mt.keys(t.unique).forEach((function(n){let i,a="null"===n?null:new Date(n);i=null===a?null:isNaN(a.getTime())?"Invalid Date":(e===hn.DAY?a.getDay():Nn(e,a)).toString(),r[i]=(r[i]||0)+t.unique[n]})),n.unique=r,n.distinct=Mt.keys(r).length,n}function Oa(e,t){return t.reduce((function(t,n){return e[n]?t+1:t}),0)}var ka,Ma;(Ma=ka||(ka={}))[Ma.STRING="string"]="STRING",Ma[Ma.NUMBER="number"]="NUMBER",Ma[Ma.INTEGER="integer"]="INTEGER",Ma[Ma.BOOLEAN="boolean"]="BOOLEAN",Ma[Ma.DATETIME="datetime"]="DATETIME";class Ia{constructor(e){this.constraint=e}name(){return this.constraint.name}description(){return this.constraint.description}properties(){return this.constraint.properties}strict(){return this.constraint.strict}}class Ua extends Ia{constructor(e){super(e)}hasAllRequiredPropertiesSpecific(e){return Ut(this.constraint.properties,(t=>{if(jt(t)){let n=t.parent,r=t.child;return!e[n]||!An(e[n][r])}return!e[t]||!An(e[t])}))}satisfy(e,t,n,r){return!this.constraint.allowWildcardForProperties&&!this.hasAllRequiredPropertiesSpecific(e)||this.constraint.satisfy(e,t,n,r)}}const Fa=[{name:"aggregateOpSupportedByType",description:"Aggregate function should be supported by data type.",properties:[en.TYPE,en.AGGREGATE],allowWildcardForProperties:!1,strict:!0,satisfy:(e,t,n,r)=>!e.aggregate||!er(e.type)},{name:"asteriskFieldWithCountOnly",description:'Field="*" should be disallowed except aggregate="count"',properties:[en.FIELD,en.AGGREGATE],allowWildcardForProperties:!1,strict:!0,satisfy:(e,t,n,r)=>"*"===e.field==("count"===e.aggregate)},{name:"minCardinalityForBin",description:"binned quantitative field should not have too low cardinality",properties:[en.BIN,en.FIELD,en.TYPE],allowWildcardForProperties:!1,strict:!0,satisfy:(e,t,n,r)=>{if(e.bin&&e.type===ct){let n={channel:e.channel,field:e.field,type:e.type};return t.cardinality(n)>=r.minCardinalityForBin}return!0}},{name:"binAppliedForQuantitative",description:"bin should be applied to quantitative field only.",properties:[en.TYPE,en.BIN],allowWildcardForProperties:!1,strict:!0,satisfy:(e,t,n,r)=>!e.bin||e.type===ct},{name:"channelFieldCompatible",description:"encoding channel's range type be compatible with channel type.",properties:[en.CHANNEL,en.TYPE,en.BIN,en.TIMEUNIT],allowWildcardForProperties:!1,strict:!0,satisfy:(e,t,n,r)=>{const i=Object.assign({field:"f"},Or(e,{schema:t,props:["bin","timeUnit","type"]})),{compatible:a}=Kn(i,e.channel);if(a)return!0;return!("row"!==e.channel&&"column"!==e.channel||(o=i.timeUnit,!mn[o]&&!function(e){return!!vn[e]}(i.timeUnit)));var o}},{name:"hasFn",description:"A field with as hasFn flag should have one of aggregate, timeUnit, or bin.",properties:[en.AGGREGATE,en.BIN,en.TIMEUNIT],allowWildcardForProperties:!0,strict:!0,satisfy:(e,t,n,r)=>!e.hasFn||(!!e.aggregate||!!e.bin||!!e.timeUnit)},{name:"omitScaleZeroWithBinnedField",description:"Do not use scale zero with binned field",properties:[en.SCALE,Kt("scale","zero"),en.BIN],allowWildcardForProperties:!1,strict:!0,satisfy:(e,t,n,r)=>!e.bin||!e.scale||!0!==e.scale.zero},{name:"onlyOneTypeOfFunction",description:"Only of of aggregate, autoCount, timeUnit, or bin should be applied at the same time.",properties:[en.AGGREGATE,en.AUTOCOUNT,en.TIMEUNIT,en.BIN],allowWildcardForProperties:!0,strict:!0,satisfy:(e,t,n,r)=>{if(Er(e)){return(!An(e.aggregate)&&e.aggregate?1:0)+(!An(e.bin)&&e.bin?1:0)+(!An(e.timeUnit)&&e.timeUnit?1:0)<=1}return!0}},{name:"timeUnitAppliedForTemporal",description:"Time unit should be applied to temporal field only.",properties:[en.TYPE,en.TIMEUNIT],allowWildcardForProperties:!1,strict:!0,satisfy:(e,t,n,r)=>!e.timeUnit||e.type===ut},{name:"timeUnitShouldHaveVariation",description:"A particular time unit should be applied only if they produce unique values.",properties:[en.TIMEUNIT,en.TYPE],allowWildcardForProperties:!1,strict:!1,satisfy:(e,t,n,r)=>!e.timeUnit||e.type!==ut||(!n.has("timeUnit")&&!r.constraintManuallySpecifiedValue||t.timeUnitHasVariation(e))},{name:"scalePropertiesSupportedByScaleType",description:"Scale properties must be supported by correct scale type",properties:[].concat(Ht,[en.SCALE,en.TYPE]),allowWildcardForProperties:!0,strict:!0,satisfy:(e,t,n,r)=>{if(e.scale){const t=e.scale,n=Ir(e);if(null==n)return!0;for(let e in t){if("type"===e||"name"===e||"enum"===e)continue;const t=e;if("point"===n){if(!St("point",t)&&!St("band",t))return!1}else if(!St(n,t))return!1}}return!0}},{name:"scalePropertiesSupportedByChannel",description:"Not all scale properties are supported by all encoding channels",properties:[].concat(Ht,[en.SCALE,en.CHANNEL]),allowWildcardForProperties:!0,strict:!0,satisfy:(e,t,n,r)=>{if(e){let t=e.channel,n=e.scale;if(t&&!An(t)&&n){if("row"===t||"column"===t)return!1;for(let e in n){if(!n.hasOwnProperty(e))continue;if("type"===e||"name"===e||"enum"===e)continue;if(!(void 0===wt(t,e)))return!1}}}return!0}},{name:"typeMatchesPrimitiveType",description:"Data type should be supported by field's primitive type.",properties:[en.FIELD,en.TYPE],allowWildcardForProperties:!1,strict:!0,satisfy:(e,t,n,r)=>{if("*"===e.field)return!0;const i=t.primitiveType(e.field),a=e.type;if(!n.has("field")&&!n.has("type")&&!r.constraintManuallySpecifiedValue)return!0;switch(i){case ka.BOOLEAN:case ka.STRING:return a!==ct&&a!==ut;case ka.NUMBER:case ka.INTEGER:return a!==ut;case ka.DATETIME:return a===ut;case null:return!1}throw new Error("Not implemented")}},{name:"typeMatchesSchemaType",description:"Enumerated data type of a field should match the field's type in the schema.",properties:[en.FIELD,en.TYPE],allowWildcardForProperties:!1,strict:!1,satisfy:(e,t,n,r)=>!(n.has("field")||n.has("type")||r.constraintManuallySpecifiedValue)||("*"===e.field?e.type===ct:t.vlType(e.field)===e.type)},{name:"maxCardinalityForCategoricalColor",description:"Categorical channel should not have too high cardinality",properties:[en.CHANNEL,en.FIELD],allowWildcardForProperties:!1,strict:!1,satisfy:(e,t,n,r)=>e.channel!==Se||e.type!==dt&&e.type!==Xn.KEY||t.cardinality(e)<=r.maxCardinalityForCategoricalColor},{name:"maxCardinalityForFacet",description:"Row/column channel should not have too high cardinality",properties:[en.CHANNEL,en.FIELD,en.BIN,en.TIMEUNIT],allowWildcardForProperties:!1,strict:!1,satisfy:(e,t,n,r)=>e.channel!==pe&&e.channel!==he||t.cardinality(e)<=r.maxCardinalityForFacet},{name:"maxCardinalityForShape",description:"Shape channel should not have too high cardinality",properties:[en.CHANNEL,en.FIELD,en.BIN,en.TIMEUNIT],allowWildcardForProperties:!1,strict:!1,satisfy:(e,t,n,r)=>e.channel!==Ae||t.cardinality(e)<=r.maxCardinalityForShape},{name:"dataTypeAndFunctionMatchScaleType",description:"Scale type must match data type",properties:[en.TYPE,en.SCALE,Kt("scale","type"),en.TIMEUNIT,en.BIN],allowWildcardForProperties:!1,strict:!0,satisfy:(e,t,n,r)=>{if(e.scale){const t=e.type,n=Ir(e);if(er(t))return void 0===n||xt(n);if(t===ut)return e.timeUnit?It([ft.TIME,ft.UTC,void 0],n)||xt(n):It([ft.TIME,ft.UTC,void 0],n);if(t===ct)return e.bin?It([ft.LINEAR,void 0],n):It([ft.LOG,ft.POW,ft.SQRT,ft.QUANTILE,ft.QUANTIZE,ft.LINEAR,void 0],n)}return!0}},{name:"stackIsOnlyUsedWithXY",description:"stack should only be allowed for x and y channels",properties:[en.STACK,en.CHANNEL],allowWildcardForProperties:!1,strict:!0,satisfy:(e,t,n,r)=>!e.stack||(e.channel===me||e.channel===ye)}].map((e=>new Ua(e)));Fa.reduce(((e,t)=>(e[t.name()]=t,e)),{});const Da=Fa.reduce(((e,t)=>{for(const n of t.properties())e.set(n,e.get(n)||[]),e.get(n).push(t);return e}),new tr),ja=[{name:"doesNotSupportConstantValue",description:"row, column, x, y, order, and detail should not work with constant values.",properties:[en.TYPE,en.AGGREGATE],allowWildcardForProperties:!1,strict:!0,satisfy:(e,t,n,r)=>!It(["row","column","x","y","detail","order"],e.channel)}].map((e=>new Ua(e)));ja.reduce(((e,t)=>(e[t.name()]=t,e)),{});const _a=ja.reduce(((e,t)=>{for(const n of t.properties())e.set(n,e.get(n)||[]),e.get(n).push(t);return e}),new tr);const Pa=qe.reduce(((e,t)=>(e[t]=!0,e)),{});class Ra extends Ia{constructor(e){super(e)}hasAllRequiredPropertiesSpecific(e){return Ut(this.constraint.properties,(t=>{if(t===en.MARK)return!An(e.getMark());if(jt(t)){let n=t.parent,r=t.child;return Ut(e.getEncodings(),(e=>!e[n]||!An(e[n][r])))}if(!Jt(t))throw new Error("UNIMPLEMENTED");return Ut(e.getEncodings(),(e=>!e[t]||!An(e[t])))}))}satisfy(e,t,n){return!this.constraint.allowWildcardForProperties&&!this.hasAllRequiredPropertiesSpecific(e)||this.constraint.satisfy(e,t,n)}}const $a=[{name:"noRepeatedChannel",description:"Each encoding channel should only be used once.",properties:[en.CHANNEL],allowWildcardForProperties:!0,strict:!0,satisfy:(e,t,n)=>{let r={};return Ut(e.getEncodings(),(e=>!!An(e.channel)||!r[e.channel]&&(r[e.channel]=!0,!0)))}},{name:"alwaysIncludeZeroInScaleWithBarMark",description:"Do not recommend bar mark if scale does not start at zero",properties:[en.MARK,en.SCALE,Kt("scale","zero"),en.CHANNEL,en.TYPE],allowWildcardForProperties:!1,strict:!0,satisfy:(e,t,n)=>{const r=e.getMark(),i=e.getEncodings();if(r===rn)for(let a of i)if(Er(a)&&(a.channel===me||a.channel===ye)&&a.type===ct&&a.scale&&!1===a.scale.zero)return!1;return!0}},{name:"autoAddCount",description:"Automatically adding count only for plots with only ordinal, binned quantitative, or temporal with timeunit fields.",properties:[en.BIN,en.TIMEUNIT,en.TYPE,en.AUTOCOUNT],allowWildcardForProperties:!0,strict:!1,satisfy:(e,t,n)=>{if(Dt(e.getEncodings(),(e=>Sr(e))))return Ut(e.getEncodings(),(e=>{if(xr(e))return!0;if(Tr(e))return!0;switch(e.type){case ct:return!!e.bin;case ut:return!!e.timeUnit;case lt:case Xn.KEY:case dt:return!0}throw new Error("Unsupported Type")}));if(Ut(e.wildcardIndex.encodingIndicesByProperty.get("autoCount")||[],(t=>{let n=e.getEncodingQueryByIndex(t);return Tr(n)&&!An(n.autoCount)})))return Dt(e.getEncodings(),(e=>(Er(e)||Tr(e))&&e.type===ct?!Nr(e)&&(Er(e)&&(!e.bin||An(e.bin))):!(!Er(e)||e.type!==ut)&&(!e.timeUnit||An(e.timeUnit))));return!0}},{name:"channelPermittedByMarkType",description:"Each encoding channel should be supported by the mark type",properties:[en.CHANNEL,en.MARK],allowWildcardForProperties:!0,strict:!0,satisfy:(e,t,n)=>{const r=e.getMark();return!!An(r)||Ut(e.getEncodings(),(e=>!!An(e.channel)||!!Ye(e.channel,r)))}},{name:"hasAllRequiredChannelsForMark",description:"All required channels for the specified mark should be specified",properties:[en.CHANNEL,en.MARK],allowWildcardForProperties:!1,strict:!0,satisfy:(e,t,n)=>{const r=e.getMark();switch(r){case nn:case an:return e.channelUsed(me)&&e.channelUsed(ye);case ln:return e.channelUsed(Fe);case rn:case dn:case fn:case un:case cn:case sn:return e.channelUsed(me)||e.channelUsed(ye);case on:return!e.wildcardIndex.hasProperty(en.CHANNEL)||e.channelUsed(me)||e.channelUsed(ye)}throw new Error("hasAllRequiredChannelsForMark not implemented for mark"+JSON.stringify(r))}},{name:"omitAggregate",description:"Omit aggregate plots.",properties:[en.AGGREGATE,en.AUTOCOUNT],allowWildcardForProperties:!0,strict:!1,satisfy:(e,t,n)=>!e.isAggregate()},{name:"omitAggregatePlotWithDimensionOnlyOnFacet",description:"Omit aggregate plots with dimensions only on facets as that leads to inefficient use of space.",properties:[en.CHANNEL,en.AGGREGATE,en.AUTOCOUNT],allowWildcardForProperties:!1,strict:!1,satisfy:(e,t,n)=>{if(e.isAggregate()){let t=!1,r=!1,i=!1;if(e.specQuery.encodings.forEach(((n,a)=>{xr(n)||Nr(n)||Er(n)&&!n.aggregate&&(r=!0,It([pe,he],n.channel)?e.wildcardIndex.hasEncodingProperty(a,en.CHANNEL)&&(i=!0):t=!0)})),r&&!t&&(i||n.constraintManuallySpecifiedValue))return!1}return!0}},{name:"omitAggregatePlotWithoutDimension",description:"Aggregate plots without dimension should be omitted",properties:[en.AGGREGATE,en.AUTOCOUNT,en.BIN,en.TIMEUNIT,en.TYPE],allowWildcardForProperties:!1,strict:!1,satisfy:(e,t,n)=>!e.isAggregate()||Dt(e.getEncodings(),(e=>!!(Mr(e)||Er(e)&&"temporal"===e.type)))},{name:"omitBarLineAreaWithOcclusion",description:"Don't use bar, line or area to visualize raw plot as they often lead to occlusion.",properties:[en.MARK,en.AGGREGATE,en.AUTOCOUNT],allowWildcardForProperties:!1,strict:!1,satisfy:(e,t,n)=>!It([rn,an,nn],e.getMark())||e.isAggregate()},{name:"omitBarTickWithSize",description:"Do not map field to size channel with bar and tick mark",properties:[en.CHANNEL,en.MARK],allowWildcardForProperties:!0,strict:!1,satisfy:(e,t,n)=>{const r=e.getMark();if(It([un,rn],r)&&e.channelEncodingField(Oe)){if(n.constraintManuallySpecifiedValue)return!1;{const t=e.specQuery.encodings;for(let n=0;n<t.length;n++){if(t[n].channel===Oe)return!e.wildcardIndex.hasEncodingProperty(n,en.CHANNEL)}}}return!0}},{name:"omitBarAreaForLogScale",description:"Do not use bar and area mark for x and y's log scale",properties:[en.MARK,en.CHANNEL,en.SCALE,Kt("scale","type"),en.TYPE],allowWildcardForProperties:!1,strict:!0,satisfy:(e,t,n)=>{const r=e.getMark(),i=e.getEncodings();if(r===nn||r===rn)for(let a of i)if(Er(a)&&(a.channel===me||a.channel===ye)&&a.scale){if(Ir(a)===ft.LOG)return!1}return!0}},{name:"omitMultipleNonPositionalChannels",description:"Unless manually specified, do not use multiple non-positional encoding channel to avoid over-encoding.",properties:[en.CHANNEL],allowWildcardForProperties:!0,strict:!1,satisfy:(e,t,n)=>{const r=e.specQuery.encodings;let i=0,a=!1;for(let o=0;o<r.length;o++){const t=r[o];if(xr(t)||Nr(t))continue;const s=t.channel;if(!An(s)&&Pa[s+""]&&(i+=1,e.wildcardIndex.hasEncodingProperty(o,en.CHANNEL)&&(a=!0),i>1&&(a||n.constraintManuallySpecifiedValue)))return!1}return!0}},{name:"omitNonPositionalOrFacetOverPositionalChannels",description:"Do not use non-positional channels unless all positional channels are used",properties:[en.CHANNEL],allowWildcardForProperties:!1,strict:!1,satisfy:(e,t,n)=>{const r=e.specQuery.encodings;let i=!1,a=!1,o=!1,s=!1;for(let c=0;c<r.length;c++){const t=r[c];if(xr(t)||Nr(t))continue;const n=t.channel;n===me?o=!0:n===ye?s=!0:An(n)||(i=!0,e.wildcardIndex.hasEncodingProperty(c,en.CHANNEL)&&(a=!0))}return!(a||n.constraintManuallySpecifiedValue&&i)||o&&s}},{name:"omitRaw",description:"Omit raw plots.",properties:[en.AGGREGATE,en.AUTOCOUNT],allowWildcardForProperties:!1,strict:!1,satisfy:(e,t,n)=>!!e.isAggregate()},{name:"omitRawContinuousFieldForAggregatePlot",description:"Aggregate plot should not use raw continuous field as group by values. (Quantitative should be binned. Temporal should have time unit.)",properties:[en.AGGREGATE,en.AUTOCOUNT,en.TIMEUNIT,en.BIN,en.TYPE],allowWildcardForProperties:!0,strict:!1,satisfy:(e,t,n)=>{if(e.isAggregate()){const t=e.specQuery.encodings;for(let r=0;r<t.length;r++){const i=t[r];if(!xr(i)&&!Nr(i)){if(Er(i)&&i.type===ut&&!i.timeUnit&&(e.wildcardIndex.hasEncodingProperty(r,en.TIMEUNIT)||n.constraintManuallySpecifiedValue))return!1;if(i.type===ct&&Er(i)&&!i.bin&&!i.aggregate){if(e.wildcardIndex.hasEncodingProperty(r,en.BIN)||e.wildcardIndex.hasEncodingProperty(r,en.AGGREGATE)||e.wildcardIndex.hasEncodingProperty(r,en.AUTOCOUNT))return!1;if(n.constraintManuallySpecifiedValue)return!1}}}}return!0}},{name:"omitRawDetail",description:"Do not use detail channel with raw plot.",properties:[en.CHANNEL,en.AGGREGATE,en.AUTOCOUNT],allowWildcardForProperties:!1,strict:!0,satisfy:(e,t,n)=>!!e.isAggregate()||Ut(e.specQuery.encodings,((t,r)=>!(!xr(t)&&!Nr(t))||(t.channel!==je||!e.wildcardIndex.hasEncodingProperty(r,en.CHANNEL)&&!n.constraintManuallySpecifiedValue)))},{name:"omitRepeatedField",description:"Each field should be mapped to only one channel",properties:[en.FIELD],allowWildcardForProperties:!0,strict:!1,satisfy:(e,t,n)=>{let r={},i={};const a=e.specQuery.encodings;for(let o=0;o<a.length;o++){const t=a[o];if(xr(t)||Tr(t))continue;let s;if(t.field&&!An(t.field)&&(s=t.field),Tr(t)&&!An(t.autoCount)&&(s="count_*"),s){if(e.wildcardIndex.hasEncodingProperty(o,en.FIELD)&&(i[s]=!0),r[s]&&(i[s]||n.constraintManuallySpecifiedValue))return!1;r[s]=!0}}return!0}},{name:"omitVerticalDotPlot",description:"Do not output vertical dot plot.",properties:[en.CHANNEL],allowWildcardForProperties:!0,strict:!1,satisfy:(e,t,n)=>{const r=e.getEncodings();return 1!==r.length||r[0].channel!==ye}},{name:"hasAppropriateGraphicTypeForMark",description:"Has appropriate graphic type for mark",properties:[en.CHANNEL,en.MARK,en.TYPE,en.TIMEUNIT,en.BIN,en.AGGREGATE,en.AUTOCOUNT],allowWildcardForProperties:!1,strict:!1,satisfy:(e,t,n)=>{const r=e.getMark();switch(r){case nn:case an:if(e.isAggregate()){const t=e.getEncodingQueryByChannel(me),n=e.getEncodingQueryByChannel(ye),r=kr(t),i=kr(n);return t&&n&&r!==i&&!(Er(t)&&!r&&It(["nominal","key"],t.type))&&!(Er(n)&&!i&&It(["nominal","key"],n.type))}return!0;case ln:return!0;case rn:case un:if(e.channelEncodingField(Oe))return!1;{const t=e.getEncodingQueryByChannel(me),n=e.getEncodingQueryByChannel(ye);return kr(t)!==kr(n)}case sn:const t=e.getEncodingQueryByChannel(me),n=e.getEncodingQueryByChannel(ye),r=Mr(t),i=Mr(n),a=e.getEncodingQueryByChannel(Se),o=kr(a),s=!!Er(a)&&a.type===lt;return(r&&i||r&&!e.channelUsed(ye)||i&&!e.channelUsed(me))&&(!a||a&&(o||s));case dn:case on:case fn:case cn:return!0}throw new Error("hasAllRequiredChannelsForMark not implemented for mark"+r)}},{name:"omitInvalidStackSpec",description:"If stack is specified, must follow Vega-Lite stack rules",properties:[en.STACK,en.FIELD,en.CHANNEL,en.MARK,en.AGGREGATE,en.AUTOCOUNT,en.SCALE,Kt("scale","type"),en.TYPE],allowWildcardForProperties:!1,strict:!0,satisfy:(e,t,n)=>{if(!e.wildcardIndex.hasProperty(en.STACK))return!0;const r=e.getVlStack();return(null!==r||null===e.getStackOffset())&&r.fieldChannel===e.getStackChannel()}},{name:"omitNonSumStack",description:"Stack specifications that use non-summative aggregates should be omitted (even implicit ones)",properties:[en.CHANNEL,en.MARK,en.AGGREGATE,en.AUTOCOUNT,en.SCALE,Kt("scale","type"),en.TYPE],allowWildcardForProperties:!1,strict:!0,satisfy:(e,t,n)=>{const r=e.getVlStack();if(null!=r){const t=e.getEncodingQueryByChannel(r.fieldChannel);if(!It(Bn,t.aggregate))return!1}return!0}},{name:"omitTableWithOcclusionIfAutoAddCount",description:"Plots without aggregation or autocount where x and y are both discrete should be omitted if autoAddCount is enabled as they often lead to occlusion",properties:[en.CHANNEL,en.TYPE,en.TIMEUNIT,en.BIN,en.AGGREGATE,en.AUTOCOUNT],allowWildcardForProperties:!1,strict:!1,satisfy:(e,t,n)=>{if(n.autoAddCount){const t=e.getEncodingQueryByChannel("x"),n=e.getEncodingQueryByChannel("y");if((!Er(t)||Mr(t))&&(!Er(n)||Mr(n)))return!!e.isAggregate()&&Ut(e.getEncodings(),(e=>{let t=e.channel;return!(t!==me&&t!==ye&&t!==pe&&t!==he&&Er(e)&&!e.aggregate)}))}return!0}}].map((e=>new Ra(e)));$a.reduce(((e,t)=>(e[t.name()]=t,e)),{});const Ba=$a.reduce(((e,t)=>{for(const n of t.properties())e.set(n,e.get(n)||[]),e.get(n).push(t);return e}),new tr);function La(e,t,n,r,i){const a=Ba.get(e)||[];for(const o of a)if(o.strict()||i[o.name()]){if(!o.satisfy(n,r,i)){let e="(spec) "+o.name();return i.verbose&&console.log(e+" failed with "+n.toShorthand()+" for "+t.name),e}}return null}const Wa=new tr;function Ha(e){return(t,n,r)=>(i,a)=>{const o=t.encodingIndicesByProperty.get(e);return function s(c){if(c===o.length)return void i.push(a.duplicate());const l=o[c],u=t.encodings[l].get(e),d=a.getEncodingQueryByIndex(l),f=a.getEncodingProperty(l,e);xr(d)||Nr(d)||!f?s(c+1):(u.enum.forEach((t=>{null===t&&(t=void 0),a.setEncodingProperty(l,e,t,u);const i=function(e,t,n,r,i,a){const o=Da.get(e)||[],s=r.getEncodingQueryByIndex(n);for(const l of o)if((l.strict()||a[l.name()])&&!l.satisfy(s,i,r.wildcardIndex.encodings[n],a)){let e="(enc) "+l.name();return a.verbose&&console.log(e+" failed with "+r.toShorthand()+" for "+t.name),e}const c=_a.get(e)||[];for(const l of c)if((l.strict()||a[l.name()])&&xr(s)&&!l.satisfy(s,i,r.wildcardIndex.encodings[n],a)){let e="(enc) "+l.name();return a.verbose&&console.log(e+" failed with "+r.toShorthand()+" for "+t.name),e}return null}(e,u,l,a,n,r);if(i)return;La(e,u,a,n,r)||s(c+1)})),a.resetEncodingProperty(l,e,u))}(0),i}}function qa(e,t,n){return t=t||new tr,n=n||new tr,e.forEach((e=>{var r;r=e,Mt.isObject(r)&&r.property?(t.setByKey(e.property,!0),n.setByKey(e.property,e.replace)):t.setByKey(e,!0)})),{include:t,replaceIndex:n,replacer:lr(n)}}Wa.set("mark",((e,t,n)=>(r,i)=>(i.getMark().enum.forEach((a=>{i.setMark(a);La("mark",e.mark,i,t,n)||r.push(i.duplicate())})),i.resetMark(),r))),Pt.forEach((e=>{Wa.set(e,Ha(e))})),zt.forEach((e=>{Wa.set(e,Ha(e))}));const Ga=[en.FIELD,en.TYPE,en.AGGREGATE,en.BIN,en.TIMEUNIT,en.STACK],za=Ga.concat([{property:en.CHANNEL,replace:{x:"xy",y:"xy",color:"style",size:"style",shape:"style",opacity:"style",row:"facet",column:"facet"}}]);let Ya={};function Qa(e,t){Ya[e]=t}const Va=qa([en.FIELD]);Qa("field",(e=>gr(e,Va.include,Va.replacer)));const Ka=qa(Ga);Qa("fieldTransform",(e=>gr(e,Ka.include,Ka.replacer)));const Ja=qa(za);Qa("encoding",(e=>gr(e,Ja.include,Ja.replacer))),Qa("spec",(e=>JSON.stringify(e)));class Xa{constructor(){this._mark=void 0,this._encodings={},this._encodingIndicesByProperty=new tr}setEncodingProperty(e,t,n){const r=this._encodings;(r[e]=r[e]||new tr).set(t,n);const i=this._encodingIndicesByProperty;return i.set(t,i.get(t)||[]),i.get(t).push(e),this}hasEncodingProperty(e,t){return!!this._encodings[e]&&this._encodings[e].has(t)}hasProperty(e){if(Jt(e))return this.encodingIndicesByProperty.has(e);if("mark"===e)return!!this.mark;throw new Error("Unimplemented for property "+e)}isEmpty(){return!this.mark&&0===this.encodingIndicesByProperty.size()}setMark(e){return this._mark=e,this}get mark(){return this._mark}get encodings(){return this._encodings}get encodingIndicesByProperty(){return this._encodingIndicesByProperty}}class Za{constructor(e,t,n,r,i){this._rankingScore={},this._spec=e,this._channelFieldCount=e.encodings.reduce(((e,t)=>(An(t.channel)||Tr(t)&&!1===t.autoCount||(e[t.channel+""]=1),e)),{}),this._wildcardIndex=t,this._assignedWildcardIndex=i,this._opt=r,this._schema=n}static build(e,t,n){let r=new Xa;if(An(e.mark)){const t=Un(en.MARK);e.mark=kn(e.mark,t,n.enum.mark),r.setMark(e.mark)}if(e.encodings.forEach(((e,i)=>{Tr(e)&&(console.warn("A field with autoCount should not be included as autoCount meant to be an internal object."),e.type=ct),Er(e)&&void 0===e.type&&(e.type=Cn),Pt.forEach((a=>{if(An(e[a])){const o=Un(a)+i,s=Pn(a,t,n),c=e[a]=kn(e[a],o,s);r.setEncodingProperty(i,a,c)}})),zt.forEach((a=>{const o=e[a.parent];if(o){const e=a.child;if(An(o[e])){const s=Un(a)+i,c=Pn(a,t,n),l=o[e]=kn(o[e],s,c);r.setEncodingProperty(i,a,l)}}}))})),n.autoAddCount){const i={name:Un(en.CHANNEL)+e.encodings.length,enum:Pn(en.CHANNEL,t,n)},a={name:Un(en.AUTOCOUNT)+e.encodings.length,enum:[!1,!0]},o={channel:i,autoCount:a,type:ct};e.encodings.push(o);const s=e.encodings.length-1;r.setEncodingProperty(s,en.CHANNEL,i),r.setEncodingProperty(s,en.AUTOCOUNT,a)}return new Za(e,r,t,n,{})}get wildcardIndex(){return this._wildcardIndex}get schema(){return this._schema}get specQuery(){return this._spec}duplicate(){return new Za(Mt.duplicate(this._spec),this._wildcardIndex,this._schema,this._opt,Mt.duplicate(this._assignedWildcardIndex))}setMark(e){const t=this._wildcardIndex.mark.name;this._assignedWildcardIndex[t]=this._spec.mark=e}resetMark(){const e=this._spec.mark=this._wildcardIndex.mark;delete this._assignedWildcardIndex[e.name]}getMark(){return this._spec.mark}getEncodingProperty(e,t){const n=this._spec.encodings[e];return jt(t)?n[t.parent][t.child]:n[t]}setEncodingProperty(e,t,n,r){const i=this._spec.encodings[e];t===en.CHANNEL&&i.channel&&!An(i.channel)&&this._channelFieldCount[i.channel]--,jt(t)?i[t.parent][t.child]=n:Bt(t)&&!0===n?i[t]=Mt.extend({},i[t],{enum:void 0,name:void 0}):i[t]=n,this._assignedWildcardIndex[r.name]=n,t===en.CHANNEL&&(this._channelFieldCount[n]=(this._channelFieldCount[n]||0)+1)}resetEncodingProperty(e,t,n){const r=this._spec.encodings[e];t===en.CHANNEL&&this._channelFieldCount[r.channel]--,jt(t)?r[t.parent][t.child]=n:r[t]=n,delete this._assignedWildcardIndex[n.name]}channelUsed(e){return this._channelFieldCount[e]>0}channelEncodingField(e){return Er(this.getEncodingQueryByChannel(e))}getEncodings(){return this._spec.encodings.filter((e=>!Nr(e)))}getEncodingQueryByChannel(e){for(let t of this._spec.encodings)if(t.channel===e)return t}getEncodingQueryByIndex(e){return this._spec.encodings[e]}isAggregate(){return Dt(this._spec.encodings,(e=>Er(e)&&!An(e.aggregate)&&!!e.aggregate||Sr(e)))}getVlStack(){return sr(this._spec)}getStackOffset(){return function(e){for(const t of e.encodings)if(void 0!==t[en.STACK]&&!An(t[en.STACK]))return t[en.STACK]}(this._spec)}getStackChannel(){return function(e){for(const t of e.encodings)if(void 0!==t[en.STACK]&&!An(t.channel))return t.channel;return null}(this._spec)}toShorthand(e){if(e){if(Mt.isString(e))return function(e,t){return Ya[t](e)}(this.specQuery,e);const t=qa(e);return gr(this._spec,t.include,t.replacer)}return gr(this._spec)}toSpec(e){if(An(this._spec.mark))return null;let t={};return(e=e||this._spec.data)&&(t.data=e),this._spec.transform&&(t.transform=this._spec.transform),t.mark=this._spec.mark,t.encoding=Cr(this.specQuery.encodings,{schema:this._schema,wildcardMode:"null"}),this._spec.width&&(t.width=this._spec.width),this._spec.height&&(t.height=this._spec.height),this._spec.background&&(t.background=this._spec.background),this._spec.padding&&(t.padding=this._spec.padding),this._spec.title&&(t.title=this._spec.title),null===t.encoding?null:((this._spec.config||this._opt.defaultSpecConfig)&&(t.config=Mt.extend({},this._opt.defaultSpecConfig,this._spec.config)),t)}getRankingScore(e){return this._rankingScore[e]}setRankingScore(e,t){this._rankingScore[e]=t}}function eo(e){return void 0!==e.items}function to(e){let t=e.items[0];for(;t&&eo(t);)t=t.items[0];return t}class no{constructor(e){this.type=e,this.scoreIndex=this.initScore()}getFeatureScore(e){const t=this.type,n=this.scoreIndex[e];if(void 0!==n)return{type:t,feature:e,score:n}}}var ro,io;(io=ro||(ro={}))[io.Q=ct]="Q",io[io.BIN_Q="bin_"+ct]="BIN_Q",io[io.T=ut]="T",io[io.TIMEUNIT_T="timeUnit_time"]="TIMEUNIT_T",io[io.TIMEUNIT_O="timeUnit_"+lt]="TIMEUNIT_O",io[io.O=lt]="O",io[io.N=dt]="N",io[io.K=Xn.KEY]="K",io[io.NONE="-"]="NONE";const ao=ro.Q,oo=ro.BIN_Q,so=ro.T,co=ro.TIMEUNIT_T,lo=ro.TIMEUNIT_O,uo=ro.O,fo=ro.N,po=ro.K,ho=ro.NONE;function go(e){if(e.bin)return ro.BIN_Q;if(e.timeUnit){return xt(Ir(e))?ro.TIMEUNIT_O:ro.TIMEUNIT_T}return e.type}const mo=-10;function yo(e,t,n,r){return e+"_"+t+"_"+n+"_"+r}const vo=[new class extends no{constructor(){super("Axis")}initScore(e={}){e=Object.assign({},Rn,e);let t={};return[{feature:oo,opt:"preferredBinAxis"},{feature:so,opt:"preferredTemporalAxis"},{feature:co,opt:"preferredTemporalAxis"},{feature:lo,opt:"preferredTemporalAxis"},{feature:uo,opt:"preferredOrdinalAxis"},{feature:fo,opt:"preferredNominalAxis"}].forEach((n=>{e[n.opt]===me?t[n.feature+"_"+ye]=-.01:e[n.opt]===ye&&(t[n.feature+"_"+me]=-.01)})),t}featurize(e,t){return e+"_"+t}getScore(e,t,n){return e.getEncodings().reduce(((e,t)=>{if(Er(t)||Tr(t)){const n=go(t),r=this.featurize(n,t.channel),i=this.getFeatureScore(r);i&&e.push(i)}return e}),[])}},new class extends no{constructor(){super("Dimension")}initScore(){return{row:-2,column:-2,color:0,opacity:0,size:0,shape:0}}getScore(e,t,n){return e.isAggregate()&&e.getEncodings().reduce(((e,t)=>{if(Tr(t)||Er(t)&&!t.aggregate){const n=this.getFeatureScore(t.channel+"");if(n&&n.score>e.score)return n}return e}),{type:"Dimension",feature:"No Dimension",score:-5}),[]}},new class extends no{constructor(){super("Facet")}initScore(e){let t={};return(e=Object.assign({},Rn,e)).preferredFacet===pe?t[he]=-.01:e.preferredFacet===he&&(t[pe]=-.01),t}getScore(e,t,n){return e.getEncodings().reduce(((e,t)=>{if(Er(t)||Tr(t)){const n=this.getFeatureScore(t.channel);n&&e.push(n)}return e}),[])}},new class extends no{constructor(){super("Mark")}initScore(){return function(){const e=[ao,so],t=[oo,lo,uo,fo,po].concat([ho]);let n={};e.forEach((t=>{e.forEach((e=>{Ft({point:0,text:-.2,tick:-.5,rect:-1,bar:-2,line:-2,area:-2,rule:-2.5},((r,i)=>{const a=yo(t,e,!0,i);n[a]=r}));Ft({point:0,text:-.2,tick:-.5,bar:-2,line:-2,area:-2,rule:-2.5},((r,i)=>{const a=yo(t,e,!1,i);n[a]=r}))}))})),e.forEach((e=>{t.forEach((t=>{Ft({tick:0,point:-.2,text:-.5,bar:-2,line:-2,area:-2,rule:-2.5},((r,i)=>{const a=yo(e,t,!0,i);n[a]=r;const o=yo(t,e,!0,i);n[o]=r}))})),[co].forEach((t=>{Ft({point:0,text:-.5,tick:-1,bar:-2,line:-2,area:-2,rule:-2.5},((r,i)=>{const a=yo(e,t,!0,i);n[a]=r;const o=yo(t,e,!0,i);n[o]=r}))})),[ho,fo,uo,po].forEach((t=>{Ft({bar:0,point:-.2,tick:-.25,text:-.3,line:-2,area:-2,rule:-2.5},((r,i)=>{const a=yo(e,t,!1,i);n[a]=r;const o=yo(t,e,!1,i);n[o]=r}))})),[oo].forEach((t=>{Ft({bar:0,point:-.2,tick:-.25,text:-.3,line:-.5,area:-.5,rule:-2.5},((r,i)=>{const a=yo(e,t,!1,i);n[a]=r;const o=yo(t,e,!1,i);n[o]=r}))})),[co,lo].forEach((t=>{Ft({line:0,area:-.1,bar:-.2,point:-.3,tick:-.35,text:-.4,rule:-2.5},((r,i)=>{const a=yo(e,t,!1,i);n[a]=r;const o=yo(t,e,!1,i);n[o]=r}))}))})),[co].forEach((e=>{[co].forEach((t=>{const r={point:0,rect:-.1,text:-.5,tick:-1,bar:-2,line:-2,area:-2,rule:-2.5};Ft(r,((r,i)=>{const a=yo(e,t,!0,i);n[a]=r})),Ft(r,((r,i)=>{const a=yo(e,t,!1,i);n[a]=r}))})),t.forEach((t=>{const r={tick:0,point:-.2,text:-.5,rect:-1,bar:-2,line:-2,area:-2,rule:-2.5};Ft(r,((r,i)=>{const a=yo(e,t,!0,i);n[a]=r})),Ft(r,((r,i)=>{const a=yo(t,e,!0,i);n[a]=r})),Ft(r,((r,i)=>{const a=yo(e,t,!1,i);n[a]=r})),Ft(r,((r,i)=>{const a=yo(t,e,!1,i);n[a]=r}))}))}));for(const r of t)for(const e of t){const t={point:0,rect:0,text:-.1,tick:-1,bar:-2,line:-2,area:-2,rule:-2.5};Ft(t,((t,i)=>{const a=yo(r,e,!0,i);n[a]=t})),Ft(t,((t,i)=>{const a=yo(r,e,!1,i);n[a]=t}))}return n}()}getScore(e,t,n){let r=e.getMark();r!==dn&&r!==fn||(r=on);const i=e.getEncodingQueryByChannel(me),a=i?go(i):ho,o=e.getEncodingQueryByChannel(ye),s=a+"_"+(o?go(o):ho)+"_"+!e.isAggregate()+"_"+r,c=this.getFeatureScore(s);return c?[c]:(console.error("feature score missing for",s),[])}},new class extends no{constructor(){super("SizeChannel")}initScore(){return{bar_size:-2,tick_size:-2}}getScore(e,t,n){const r=e.getMark();return e.getEncodings().reduce(((e,t)=>{if(Er(t)||Tr(t)){const n=r+"_"+t.channel,i=this.getFeatureScore(n);i&&e.push(i)}return e}),[])}},new class extends no{constructor(){super("TypeChannel")}initScore(){let e={};const t={x:0,y:0,size:-.575,color:-.725,text:-2,opacity:-3,shape:mo,row:mo,column:mo,detail:-20};[ao,so,co].forEach((n=>{Mt.keys(t).forEach((r=>{e[this.featurize(n,r)]=t[r]}))}));const n=Mt.extend({},t,{row:-.75,column:-.75,shape:-3.1,text:-3.2,detail:-4});[oo,lo,uo].forEach((t=>{Mt.keys(n).forEach((r=>{e[this.featurize(t,r)]=n[r]}))}));const r={x:0,y:0,color:-.6,shape:-.65,row:-.7,column:-.7,text:-.8,detail:-2,size:-3,opacity:-3.1};return Mt.keys(r).forEach((t=>{e[this.featurize(fo,t)]=r[t],e[this.featurize(po,t)]=It(["x","y","detail"],t)?-1:r[t]-2})),e}featurize(e,t){return e+"_"+t}getScore(e,t,n){const r=e.getEncodings().reduce(((e,t)=>{if(Er(t)||Tr(t)){const n=yr(t);(e[n]=e[n]||[]).push(t)}return e}),{}),i=[];return Ft(r,(e=>{const t=e.reduce(((e,t)=>{if(Er(t)||Tr(t)){const n=go(t),r=this.featurize(n,t.channel),i=this.getFeatureScore(r);if(null===e||i.score>e.score)return i}return e}),null);i.push(t)})),i}}];const bo="aggregationQuality";let xo={};function Eo(e,t){xo[e]=t}function To(e,t,n,r){return t.nest&&r!==t.nest.length?(e.items.forEach((e=>{To(e,t,n,r+1)})),t.nest[r].orderGroupBy&&e.items.sort(function(e,t,n){return(r,i)=>{const a=to(r),o=to(i);return No(e instanceof Array?e:[e],a,o,t,n)}}(t.nest[r].orderGroupBy,n,t.config))):(t.orderBy||t.chooseBy)&&(e.items.sort(function(e,t,n){return(r,i)=>No(e instanceof Array?e:[e],r,i,t,n)}(t.orderBy||t.chooseBy,n,t.config)),t.chooseBy&&e.items.length>0&&e.items.splice(1)),e}function No(e,t,n,r,i){for(let a of e){let e=So(n,a,r,i).score-So(t,a,r,i).score;if(0!==e)return e}return 0}function So(e,t,n,r){if(void 0!==e.getRankingScore(t))return e.getRankingScore(t);const i=(0,xo[t])(e,n,r);return e.setRankingScore(t,i),i}function wo(e,t,n){let r={};return e=e.map((function(e){return n.smallRangeStepForHighCardinalityOrFacet&&(e=function(e,t,n,r){[pe,ye,he,me].forEach((t=>{n[t]=e.getEncodingQueryByChannel(t)}));const i=n[ye];if(void 0!==i&&Er(i)&&(n[pe]||t.cardinality(i)>r.smallRangeStepForHighCardinalityOrFacet.maxCardinality)){void 0===i.scale&&(i.scale={});const e=Ir(i);i.scale&&(void 0===e||xt(e))&&(i.scale.rangeStep||(i.scale.rangeStep=12))}const a=n[me];if(Er(a)&&(n[he]||t.cardinality(a)>r.smallRangeStepForHighCardinalityOrFacet.maxCardinality)){void 0===a.scale&&(a.scale={});const e=Ir(a);a.scale&&(void 0===e||xt(e))&&(a.scale.rangeStep||(a.scale.rangeStep=12))}return e}(e,t,r,n)),n.nominalColorScaleForHighCardinality&&(e=function(e,t,n,r){n[Se]=e.getEncodingQueryByChannel(Se);const i=n[Se];Er(i)&&void 0!==i&&(i.type===dt||i.type===Xn.KEY)&&t.cardinality(i)>r.nominalColorScaleForHighCardinality.maxCardinality&&(void 0===i.scale&&(i.scale={}),i.scale&&(i.scale.range||(i.scale.scheme=r.nominalColorScaleForHighCardinality.palette)));return e}(e,t,r,n)),n.xAxisOnTopForHighYCardinalityWithoutColumn&&(e=function(e,t,n,r){if([he,me,ye].forEach((t=>{n[t]=e.getEncodingQueryByChannel(t)})),void 0===n[he]){const e=n[me],i=n[ye];Er(e)&&Er(i)&&void 0!==i&&i.field&&xt(Ir(i))&&void 0!==e&&t.cardinality(i)>r.xAxisOnTopForHighYCardinalityWithoutColumn.maxCardinality&&(void 0===e.axis&&(e.axis={}),e.axis&&!e.axis.orient&&(e.axis.orient="top"))}return e}(e,t,r,n)),e})),e}function Co(e,t,n=Rn){const r=Za.build(e,t,n),i=r.wildcardIndex;let a=[r];return n.propertyPrecedence.forEach((e=>{const r=function(e){const t=e.split(".");if(1===t.length)return e;if(2===t.length)return{parent:t[0],child:t[1]};throw"Invalid property key with "+t.length+" dots: "+e}(e);if(i.hasProperty(r)){const e=function(e){return Wa.get(e)}(r),o=e(i,t,n);a=a.reduce(o,[])}})),!n.stylize||null===n.nominalColorScaleForHighCardinality&&null===n.smallRangeStepForHighCardinalityOrFacet&&null===n.xAxisOnTopForHighYCardinalityWithoutColumn?a:wo(a,t,n)}function Ao(e,t,n){const r=function(e,t){if(t){const n={name:"",path:"",items:[]};let r={},i=[],a=[],o=[];for(let e=0;e<t.length;e++){i.push(e>0?i[e-1].duplicate():new tr),a.push(e>0?a[e-1].duplicate():new tr);const n=t[e].groupBy;if(Mt.isArray(n)){let t=qa(n,i[e],a[e]);o.push(t.replacer)}}return e.forEach((e=>{let a="",s=n;for(let n=0;n<t.length;n++){const c=s.groupBy=t[n].groupBy;s.orderGroupBy=t[n].orderGroupBy;const l=Mt.isArray(c)?gr(e.specQuery,i[n],o[n]):Ya[c](e.specQuery);a+="/"+l,r[a]||(r[a]={name:l,path:a,items:[]},s.items.push(r[a])),s=r[a]}s.items.push(e)})),n}return{name:"",path:"",items:e}}(Co((e=Object.assign({},function(e){if(e.groupBy){let t={groupBy:e.groupBy};e.orderBy&&(t.orderGroupBy=e.orderBy);let n={spec:Mt.duplicate(e.spec),nest:[t]};return e.chooseBy&&(n.chooseBy=e.chooseBy),e.config&&(n.config=e.config),n}return Mt.duplicate(e)}(e),{config:Object.assign({},Rn,n,e.config)})).spec,t,e.config),e.nest);return{query:e,result:To(r,e,t,0)}}Eo("effectiveness",(function(e,t,n){const r=vo.reduce(((r,i)=>{const a=i.getScore(e,t,n);return r.concat(a)}),[]);return{score:r.reduce(((e,t)=>e+t.score),0),features:r}})),Eo(bo,(function(e,t,n){const r=function(e){const t=e.getEncodings();if(e.isAggregate()){if(Dt(t,(e=>Er(e)&&(e.type===ct&&!e.bin&&!e.aggregate||e.type===ut&&!e.timeUnit))))return{type:bo,score:.1,feature:"Aggregate with raw continuous"};if(Dt(t,(e=>Er(e)&&Mr(e)))){let e=Dt(t,(e=>Er(e)&&"count"===e.aggregate||Sr(e))),n=Dt(t,(e=>Er(e)&&!!e.bin));return e?{type:bo,score:.8,feature:"Aggregate with count"}:n?{type:bo,score:.7,feature:"Aggregate with bin but without count"}:{type:bo,score:.9,feature:"Aggregate without count and without bin"}}return{type:bo,score:.3,feature:"Aggregate without dimension"}}return Dt(t,(e=>Er(e)&&!Mr(e)))?{type:bo,score:1,feature:"Raw with measure"}:{type:bo,score:.2,feature:"Raw without measure"}}(e);return{score:r.score,features:[r]}})),Eo("fieldOrder",(function(e,t,n){const r=e.wildcardIndex.encodingIndicesByProperty.get("field");if(!r)return{score:0,features:[]};const i=e.specQuery.encodings,a=t.fieldSchemas.length,o=[];let s=0,c=1;for(let l=r.length-1;l>=0;l--){const n=r[l],u=i[n];let d;if(!Er(u))continue;d=u.field;const f=e.wildcardIndex.encodings[n].get("field"),p=t.fieldSchema(d).index,h=-p*c;s+=h,o.push({score:h,type:"fieldOrder",feature:`field ${f.name} is ${d} (#${p} in the schema)`}),c*=a}return{score:s,features:o}}));const Oo={[ka.BOOLEAN]:r.jsx(i,{className:"h-5 w-5 inline-flex opacity-60"}),[ka.DATETIME]:r.jsx(a,{className:"h-5 w-5 inline-flex opacity-60"}),[ka.NUMBER]:r.jsx(o,{className:"h-5 w-5 inline-flex opacity-60"}),[ka.STRING]:r.jsx(s,{className:"h-5 w-5 inline-flex opacity-60"}),[ka.INTEGER]:r.jsx(c,{className:"h-5 w-5 inline-flex opacity-60"})};function ko(e){const{type:t,limit:n,additionalFieldQuery:r}=e;return{type:t,limit:n,createQuery:e=>({spec:{...e.spec,encodings:[...e.spec.encodings,r]},groupBy:"field",orderBy:["fieldOrder","aggregationQuality","effectiveness"],chooseBy:["aggregationQuality","effectiveness"],config:{autoAddCount:!0}})}}const Mo=ko({type:"addCategoricalField",limit:4,additionalFieldQuery:{channel:Cn,field:Cn,type:"nominal"}}),Io=ko({type:"addQuantitativeField",limit:4,additionalFieldQuery:{channel:Cn,bin:Cn,aggregate:Cn,field:Cn,type:"quantitative"}}),Uo=ko({type:"addTemporalField",limit:2,additionalFieldQuery:{channel:Cn,hasFn:!0,timeUnit:Cn,field:Cn,type:"temporal"}});function Fo(e){return e?"bin"===e?{bin:!0}:$(e)?{aggregate:e}:function(e){if(!e)return!1;return jo.includes(e)||_o.includes(e)}(e)?{timeUnit:e}:{}:{}}const Do=["bin","min","max","mean","median","sum"],jo=["year","month","date","day","hours","minutes","seconds","milliseconds"],_o=["yearmonth","yearmonthdate","monthdate"];function Po(e){const t={};for(const n in e)void 0!==e[n]&&(t[n]=e[n]);return t}function Ro(e){const{aggregate:t,bin:n,timeUnit:r,field:i,scale:a,legend:o,axis:s,sort:c,description:d}=e;let{type:f}=e;if(An(f))throw new Error("Wildcard not support");"ordinal"===f&&(l.warn("Ordinal type is not supported. Using nominal type instead."),f="nominal");const p=function(e){const{aggregate:t,bin:n,timeUnit:r}=e;return n?"bin":t?t.toString():r?r.toString():void 0}({aggregate:t,bin:n,timeUnit:r});return u(void 0!==i,"Field is required for fieldQ"),Po({field:i,fn:p,type:f,sort:c,scale:a,axis:s,legend:o,description:d})}function $o(e){return 0===e.encodings.length}function Bo(e){let t=!1,n=!1,r=!1;for(const i of e.encodings)xr(i)||(Tr(i)?An(i.autoCount)&&(n=!0):(An(i.field)&&(t=!0),(An(i.aggregate)||An(i.bin)||An(i.timeUnit))&&(n=!0),An(i.channel)&&(r=!0)));return{hasAnyWildcard:r||t||n,hasWildcardField:t,hasWildcardFn:n,hasWildcardChannel:r}}function Lo(e){return{mark:e.mark,encodings:(t=e.encoding,Object.entries(t).map((([e,t])=>function(e,t){const{fn:n,...r}=e;return{channel:t,...Fo(n),...r}}(t,e)))),config:e.config};var t}const Wo={name:"source"};function Ho(e,t){const n={},{hasOpenPosition:r,hasStyleChannel:i,hasOpenFacet:a}=function(e){let t=!1,n=!1,r=!1;return e.encodings.forEach((e=>{"x"===e.channel||"y"===e.channel?t=!0:"row"===e.channel||"column"===e.channel?r=!0:"string"==typeof e.channel&&B(L,e.channel)&&(n=!0)})),{hasOpenPosition:t,hasStyleChannel:n,hasOpenFacet:r}}(e.spec);return(r||i)&&(n.addQuantitativeField=Go(Io,e,t)),(r||i||a)&&(n.addCategoricalField=Go(Mo,e,t)),r&&(n.addTemporalField=Go(Uo,e,t)),n}function qo(e,t){if($o(e.spec))return{plots:[],query:e,limit:1};return{plots:[zo(Ao(e,t).result,Wo)[0]],query:e,limit:1}}function Go(e,t,n){const r=e.createQuery(t);return{plots:zo(Ao(r,n).result,Wo),query:r,limit:e.limit}}function zo(e,t){return e.items.map((e=>eo(e)?Yo(t,to(e)):Yo(t,e)))}function Yo(e,t){return{fieldInfos:t.getEncodings().filter(Er).map((e=>({fieldDef:Ro(e),channel:e.channel}))),spec:t.toSpec(e)}}const Qo={type:"histograms",limit:12,createQuery:e=>({spec:{data:e.spec.data,mark:Cn,transform:e.spec.transform,encodings:[{channel:Cn,bin:Cn,timeUnit:Cn,field:Cn,type:Cn},{channel:Cn,aggregate:"count",field:"*",type:"quantitative"}]},groupBy:"fieldTransform",orderBy:["fieldOrder","aggregationQuality","effectiveness"],chooseBy:["aggregationQuality","effectiveness"],config:{autoAddCount:!1}})};const{valueAtom:Vo,useActions:Ko}=d((function(){return{mark:Cn,encoding:{},config:{},schema:null}}),{setSchema:(e,t)=>({...e,schema:t}),setMark:(e,t)=>({...e,mark:t}),setEncoding:(e,t)=>{const n=Po({...e.encoding,...t});return{...e,encoding:n}},set:(e,t)=>{const{schema:n,...r}=t;return{...e,...r}}});function Jo(){return Ko()}const Xo=f((e=>{const t=e(Vo);if(!t.schema)return{};const n=function(e){const{spec:t,autoAddCount:n}=e,r=Lo(t),{hasAnyWildcard:i,hasWildcardFn:a,hasWildcardField:o}=Bo(r),s=function(e){const{hasWildcardFn:t,hasWildcardField:n}=e;return t?"fieldTransform":n?"field":"encoding"}({hasWildcardFn:a,hasWildcardField:o});return{spec:r,groupBy:s,orderBy:["fieldOrder","aggregationQuality","effectiveness"],chooseBy:["aggregationQuality","effectiveness"],config:i?{autoAddCount:n}:void 0}}({spec:t,autoAddCount:!0});return $o(n.spec)?{main:qo(n,t.schema),histograms:Go(Qo,n,t.schema)}:function(e){return!Bo(e).hasAnyWildcard}(n.spec)&&!function(e){const t=new Set(e.encodings.map((e=>e.channel))),n=["x","y","color"].every((e=>t.has(e))),r=["row","column"].some((e=>t.has(e)));return n&&r}(n.spec)?{main:qo(n,t.schema),...Ho(n,t.schema)}:{main:qo(n,t.schema)}})),Zo=[Cn,"area","bar","circle","geoshape","line","point","rect","rule","square","text","tick","trail"],es=["x","y","row","column"],ts=["color","size","shape"],ns=({schema:e,mark:t})=>{const n=p(Vo),i=Jo(),a=n.encoding.x&&n.encoding.y,o=t=>{const o=("row"===t||"column"===t)&&!a;return r.jsx(rs,{schema:e,label:t,disabled:o,fieldDefinition:n.encoding[t],onChange:e=>i.setEncoding({[t]:e})},t)},s=r.jsxs(h,{"data-testid":"marimo-plugin-data-explorer-mark-select",value:t.toString(),onValueChange:e=>i.setMark(e),children:[r.jsx(g,{children:r.jsx(m,{placeholder:"Mark"})}),r.jsx(y,{children:r.jsxs(v,{children:[r.jsx(b,{children:"Mark"}),Zo.map((e=>r.jsx(x,{value:e,children:e===Cn?"auto":e},e)))]})})]});return r.jsxs("div",{className:"grid gap-x-2 gap-y-4 justify-items-start py-3 pl-4 pr-2 bg-[var(--slate-1)] border rounded items-center grid-template-columns-[repeat(2,_minmax(0,_min-content))] self-start",children:[r.jsx("span",{className:"col-span-2 flex items-center justify-between w-full",children:r.jsx("div",{className:"text-sm font-semibold",children:"Encodings"})}),es.map(o),r.jsxs("span",{className:"col-span-2 text-sm font-semibold w-full border-t border-divider flex items-center justify-between pt-2 pr-[30px]",children:[r.jsx("div",{children:"Mark"}),s]}),ts.map(o)]})},rs=({label:e,schema:t,fieldDefinition:n,disabled:i,onChange:a})=>{const o=(null==n?void 0:n.field.toString())??"";return r.jsxs(r.Fragment,{children:[r.jsx(E,{className:"text-[var(--slate-11)] font-semibold",children:e}),r.jsxs("div",{className:"flex flex-row gap-1 h-[26px]",children:[r.jsxs(h,{value:o,disabled:i,onValueChange:e=>{a("*"===e?{field:"*",fn:"count",type:"quantitative"}:{field:e,type:t.vlType(e)})},children:[r.jsx(g,{className:"min-w-[140px] lg:min-w-[210px] h-full",onClear:o?()=>{a(void 0)}:void 0,children:(()=>{if(!n)return"--";if("*"===n.field)return r.jsxs("span",{className:"flex gap-2 flex-1",children:[Oo[ka.NUMBER],r.jsx("span",{className:"text-left flex-1",children:"Count"})]});const e=n.field.toString();return r.jsxs("span",{className:"flex gap-2 flex-1",children:[Oo[t.primitiveType(e)],r.jsx("span",{className:"text-left flex-1",children:n.fn?`${n.fn}(${n.field})`:e})]})})()}),r.jsx(y,{children:r.jsxs(v,{children:[t.fieldNames().map((e=>r.jsx(x,{value:e.toString(),children:r.jsxs("span",{className:"flex items-center gap-2 flex-1",children:[Oo[t.primitiveType(e)],r.jsx("span",{className:"flex-1",children:e}),r.jsxs("span",{className:"text-muted-foreground text-xs font-semibold",children:["(",t.vlType(e),")"]})]})},e))),0===t.fieldNames().length&&r.jsx(x,{disabled:!0,value:"--",children:"No columns"}),r.jsx(T,{}),r.jsx(x,{value:"*",children:r.jsxs("span",{className:"flex items-center gap-1 flex-1",children:[Oo[ka.NUMBER],r.jsx("span",{className:"flex-1",children:"Count"})]})},"*")]})})]}),r.jsx("div",{className:"w-[26px]",children:n&&r.jsx(as,{field:n,onChange:a})})]})]})},is="__",as=({field:e,onChange:t})=>{if("*"===e.field)return null;let n=[];return e.type===Xn.QUANTITATIVE&&(n=[["",Do]]),e.type===Xn.TEMPORAL&&(n=[["Single",jo],["Multi",_o]]),n.length>0?r.jsxs(h,{"data-testid":"marimo-plugin-data-explorer-field-options",value:e.fn,onValueChange:n=>{t({...e,fn:n===is?void 0:n})},children:[r.jsx(g,{className:"h-full px-1",hideChevron:!0,variant:"ghost",children:r.jsx(N,{size:14,strokeWidth:1.5})}),r.jsxs(y,{children:[r.jsx(v,{children:r.jsx(x,{value:is,children:"None"})}),r.jsx(T,{}),n.map((([e,t])=>r.jsxs(v,{children:[e&&r.jsx(b,{children:e}),t.map((e=>r.jsx(x,{value:e??is,children:S(e)},e)))]},e)))]})]}):null},os=({schema:e})=>{const[t,n]=w.useState(),[i,a]=w.useState(),o=e.fieldNames(),s=t?e.stats({field:t,channel:"x"}):void 0,c=r.jsx(H,{className:"text-muted-foreground",width:40,height:40,strokeWidth:1.5}),l=i?o:o.slice(0,12),u=o.length>12;return r.jsxs("div",{className:"flex flex-col justify-center items-center h-full flex-1 gap-2",children:[c,r.jsxs("span",{className:"text-muted-foreground font-semibold",children:[o.length>0?o.length:"No"," fields"]}),r.jsxs("div",{className:"hidden lg:grid grid-cols-2 xl:grid-cols-3 gap-2 p-2 bg-[var(--slate-1)] border rounded lg:items-center items-start w-fit grid-flow-dense max-h-[300px] overflow-auto",children:[l.map((i=>{const a=e.cardinality({channel:"x",field:i});return r.jsxs("span",{className:C("hover:bg-muted self-start px-2 py-2 rounded flex flex-row gap-1 items-center cursor-pointer lg:justify-center text-sm truncate flex-shrink-0 overflow-hidden",t===i&&"bg-muted"),onClick:()=>{n(t!==i?i:void 0)},children:[Oo[e.primitiveType(i)],i,a>1&&r.jsxs("span",{className:"text-xs text-muted-foreground",children:["(",a,")"]})]},i)})),u&&r.jsx(A,{"data-testid":"marimo-plugin-data-explorer-show-more-columns",variant:"link",size:"sm",className:"self-center col-span-3 -mt-1",onClick:()=>a((e=>!e)),children:i?"Show less":"Show more"})]}),r.jsx("div",{className:"lg:hidden",children:r.jsxs(h,{"data-testid":"marimo-plugin-data-explorer-column-select",value:t||"",disabled:0===o.length,onValueChange:e=>{n(e)},children:[r.jsx(g,{className:"min-w-[210px] h-full",children:r.jsx(m,{placeholder:"Select a column"})}),r.jsx(y,{children:r.jsx(v,{children:e.fieldNames().map((t=>r.jsx(x,{value:t.toString(),children:r.jsxs("span",{className:"flex items-center gap-2 flex-1",children:[Oo[e.primitiveType(t)],r.jsx("span",{className:"flex-1",children:t}),r.jsxs("span",{className:"text-muted-foreground text-xs font-semibold",children:["(",e.vlType(t),")"]})]})},t)))})})]})}),t&&r.jsx("div",{className:"grid grid-cols-1 lg:grid-cols-2 xl:grid-cols-3 gap-2 p-2 text-sm",children:ss.map((e=>r.jsxs("div",{className:"flex flex-row gap-2 min-w-[100px]",children:[r.jsx("span",{className:"font-semibold",children:e}),r.jsx("span",{children:cs(null==s?void 0:s[e])})]},e)))})]})},ss=["distinct","min","max","mean","median","q1","q3","stdev"];function cs(e){return"number"==typeof e?new Intl.NumberFormat("en-US",{maximumFractionDigits:2}).format(e):"string"==typeof e?e:"object"==typeof e&&e instanceof Date?new Intl.DateTimeFormat("en-US",{year:"numeric",month:"short",day:"numeric"}).format(e):String(e)}const ls=e=>{const t=w.useMemo((()=>O()),[]);return k((()=>{const n=t.sub(Vo,(()=>{const n=t.get(Vo),{schema:r,...i}=n;e.setValue(i)})),r=e.value;return r&&Object.keys(r).length>0&&t.set(Vo,r),n})),r.jsx(M,{store:t,children:r.jsx(fs,{...e})})},us={export:{svg:!0,png:!0},source:!1,compiled:!1,editor:!1},ds={left:20,right:20,top:20,bottom:20},fs=({data:e})=>{var t,n,i,a,o,s;const c=Jo(),{data:l,loading:u,error:d}=I((async()=>{if(!e)return{};const t=await R(e,{type:"csv",parse:"auto"},{replacePeriod:!0}),n=function(e,t={},n={fields:[]}){t=Mt.extend({},Rn,t);let r=Ta.summary(e),i=va.inferAll(e),a=n.fields.reduce(((e,t)=>(e[t.name]=t,e)),{}),o=r.map((function(n,r){const o=n.field,s="date"===i[o]?ka.DATETIME:i[o];let c,l=n.distinct;if(s===ka.NUMBER)c=ct;else if(s===ka.INTEGER)c=l<t.numberNominalLimit&&l/n.count<t.numberNominalProportion?dt:ct;else if(s===ka.DATETIME){c=ut,n.min=new Date(e[0][o]),n.max=new Date(e[0][o]);for(const t of e){const e=new Date(t[o]).getTime();e<n.min.getTime()&&(n.min=new Date(e)),e>n.max.getTime()&&(n.max=new Date(e))}}else c=dt;c===dt&&l/n.count>t.minPercentUniqueForKey&&n.count>t.minCardinalityForKey&&(c=Xn.KEY);let u={name:o,originalIndex:r,vlType:c,type:s,stats:n,timeStats:{},binStats:{}};const d=a[u.name];return u=Mt.extend(u,d),u}));for(let c of o)if(c.vlType===ct)for(let e of t.enum.binProps.maxbins)c.binStats[e]=Ca(e,c.stats);else if(c.vlType===ut)for(let e of t.enum.timeUnit)void 0!==e&&(c.timeStats[e]=Aa(e,c.stats));const s=Object.assign({},n,{fields:o});return new wa(s)}(t);return c.setSchema(n),{chartData:t,schema:n}}),[e]),{mark:f}=p(Vo),h=p(Xo),{theme:g}=U();if(d)return r.jsx(F,{error:d});if(!l)return r.jsx("div",{});const{chartData:m,schema:y}=l;if(u||!y)return r.jsx("div",{});const v=null==(n=null==(t=h.main)?void 0:t.plots)?void 0:n[0],b=new Set(null==v?void 0:v.fieldInfos.map((e=>e.fieldDef.field)));return r.jsxs("div",{className:"flex flex-col gap-2",children:[r.jsxs("div",{className:"flex items-center gap-2",children:[r.jsx(ns,{mark:f,schema:y}),v?r.jsx("div",{className:"flex overflow-y-auto justify-center items-center flex-1 w-[90%]",children:r.jsx(W,{data:{source:m},padding:ds,actions:us,spec:gs(v.spec),theme:"dark"===g?"dark":void 0})}):r.jsx(os,{schema:y})]}),r.jsx(ps,{children:[null==(i=h.histograms)?void 0:i.plots,null==(a=h.addCategoricalField)?void 0:a.plots,null==(o=h.addQuantitativeField)?void 0:o.plots,null==(s=h.addTemporalField)?void 0:s.plots].filter(Boolean).flat().map(((e,t)=>r.jsx(hs,{title:r.jsx("div",{className:"flex flex-row gap-1",children:e.fieldInfos.map((e=>{const t="*"===e.fieldDef.field?"Count":e.fieldDef.fn?`${e.fieldDef.fn}(${e.fieldDef.field})`:e.fieldDef.field.toString();return r.jsx(D,{variant:b.has(e.fieldDef.field)?"secondary":"defaultOutline",children:t},t)}))}),actions:r.jsx(j,{content:"Make main plot",children:r.jsx(A,{"data-testid":"marimo-plugin-data-explorer-make-main-plot",variant:"text",size:"icon",onClick:()=>{const t=_.fromEntries(e.fieldInfos.map((e=>[e.channel,e.fieldDef])));c.setEncoding(t)},children:r.jsx(q,{className:"w-4 h-4"})})}),children:r.jsx(W,{data:{source:m},actions:!1,spec:e.spec,theme:"dark"===g?"dark":void 0},t)},t)))})]})},ps=({children:e})=>0===P.Children.count(e)?null:r.jsx("div",{className:"flex flex-row overflow-x-auto overflow-y-hidden gap-4 snap-x pb-4",children:e}),hs=({title:e,children:t,actions:n})=>r.jsxs("div",{className:"flex-shrink-0 bg-card shadow-md border overflow-hidden rounded snap-start",children:[r.jsxs("div",{className:"flex flex-row justify-between items-center bg-[var(--slate-3)] py-0.5 px-2",children:[r.jsx("div",{className:"text-sm font-medium",children:e}),n]}),r.jsx("div",{className:"px-6 pt-2 max-h-[280px] overflow-y-auto",children:t})]});function gs(e){var t,n;return Boolean((null==(t=e.encoding)?void 0:t.row)||(null==(n=e.encoding)?void 0:n.column))||(e.width="container"),e}export{fs as DataExplorerComponent,ls as default};
@@ -1 +0,0 @@
1
- import{b as r}from"./_baseEach-G31WMqSC.js";import{n}from"./index-Ctlr39rC.js";function a(a,o){var t=-1,s=n(a)?Array(a.length):[];return r(a,(function(r,n,a){s[++t]=o(r,n,a)})),s}export{a as b};