@emuanalytics/flow-rdf-core 1.1.2 → 1.1.4

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 (45) hide show
  1. package/dist/bundle/flow-rdf-core.umd.js +15 -0
  2. package/dist/bundle/flow-rdf-core.umd.js.map +1 -0
  3. package/dist/cjs/lib/flow-core-expression/flow-core-expression.d.ts.map +1 -1
  4. package/dist/cjs/lib/flow-core-expression/flow-core-expression.js.map +1 -1
  5. package/dist/cjs/lib/flow-core-expression/flow-core-parser.js.map +1 -1
  6. package/dist/cjs/lib/utils/type-checks.d.ts +1 -1
  7. package/dist/cjs/lib/utils/type-checks.d.ts.map +1 -1
  8. package/dist/cjs/lib/utils/type-checks.js +3 -2
  9. package/dist/cjs/lib/utils/type-checks.js.map +1 -1
  10. package/dist/cjs/umd.d.ts +4 -0
  11. package/dist/cjs/umd.d.ts.map +1 -0
  12. package/dist/cjs/umd.js +33 -0
  13. package/dist/cjs/umd.js.map +1 -0
  14. package/dist/esm/lib/flow-core-expression/flow-core-expression.d.ts.map +1 -1
  15. package/dist/esm/lib/flow-core-expression/flow-core-expression.js.map +1 -1
  16. package/dist/esm/lib/flow-core-expression/flow-core-parser.js.map +1 -1
  17. package/dist/esm/lib/utils/type-checks.d.ts +1 -1
  18. package/dist/esm/lib/utils/type-checks.d.ts.map +1 -1
  19. package/dist/esm/lib/utils/type-checks.js +2 -1
  20. package/dist/esm/lib/utils/type-checks.js.map +1 -1
  21. package/dist/esm/umd.d.ts +4 -0
  22. package/dist/esm/umd.d.ts.map +1 -0
  23. package/dist/esm/umd.js +4 -0
  24. package/dist/esm/umd.js.map +1 -0
  25. package/dist/esm5/lib/flow-core-expression/flow-core-expression.d.ts.map +1 -1
  26. package/dist/esm5/lib/flow-core-expression/flow-core-expression.js.map +1 -1
  27. package/dist/esm5/lib/flow-core-expression/flow-core-parser.js.map +1 -1
  28. package/dist/esm5/lib/utils/type-checks.d.ts +1 -1
  29. package/dist/esm5/lib/utils/type-checks.d.ts.map +1 -1
  30. package/dist/esm5/lib/utils/type-checks.js +2 -1
  31. package/dist/esm5/lib/utils/type-checks.js.map +1 -1
  32. package/dist/esm5/umd.d.ts +4 -0
  33. package/dist/esm5/umd.d.ts.map +1 -0
  34. package/dist/esm5/umd.js +4 -0
  35. package/dist/esm5/umd.js.map +1 -0
  36. package/dist/types/lib/flow-core-expression/flow-core-expression.d.ts.map +1 -1
  37. package/dist/types/lib/utils/type-checks.d.ts +1 -1
  38. package/dist/types/lib/utils/type-checks.d.ts.map +1 -1
  39. package/dist/types/umd.d.ts +4 -0
  40. package/dist/types/umd.d.ts.map +1 -0
  41. package/package.json +21 -5
  42. package/dist/bundle/flow-rdf-core.js +0 -42592
  43. package/dist/bundle/flow-rdf-core.js.map +0 -7
  44. package/dist/bundle/flow-rdf-core.min.js +0 -635
  45. package/dist/bundle/flow-rdf-core.min.js.map +0 -7
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../node_modules/.pnpm/parsimmon@1.18.1/node_modules/parsimmon/build/parsimmon.umd.min.js", "../../../../node_modules/.pnpm/ms@2.1.2/node_modules/ms/index.js", "../../../../node_modules/.pnpm/debug@4.3.4/node_modules/debug/src/common.js", "../../../../node_modules/.pnpm/debug@4.3.4/node_modules/debug/src/browser.js", "../../../../node_modules/.pnpm/eventemitter3@4.0.7/node_modules/eventemitter3/index.js", "../../../../node_modules/.pnpm/maplibre-gl@2.4.0/node_modules/maplibre-gl/rollup/maplibregl.js", "../../../../node_modules/.pnpm/axios@0.27.2_debug@4.3.4/node_modules/axios/lib/helpers/bind.js", "../../../../node_modules/.pnpm/axios@0.27.2_debug@4.3.4/node_modules/axios/lib/utils.js", "../../../../node_modules/.pnpm/axios@0.27.2_debug@4.3.4/node_modules/axios/lib/helpers/buildURL.js", "../../../../node_modules/.pnpm/axios@0.27.2_debug@4.3.4/node_modules/axios/lib/core/InterceptorManager.js", "../../../../node_modules/.pnpm/axios@0.27.2_debug@4.3.4/node_modules/axios/lib/helpers/normalizeHeaderName.js", "../../../../node_modules/.pnpm/axios@0.27.2_debug@4.3.4/node_modules/axios/lib/core/AxiosError.js", "../../../../node_modules/.pnpm/axios@0.27.2_debug@4.3.4/node_modules/axios/lib/defaults/transitional.js", "../../../../node_modules/.pnpm/axios@0.27.2_debug@4.3.4/node_modules/axios/lib/helpers/toFormData.js", "../../../../node_modules/.pnpm/axios@0.27.2_debug@4.3.4/node_modules/axios/lib/core/settle.js", "../../../../node_modules/.pnpm/axios@0.27.2_debug@4.3.4/node_modules/axios/lib/helpers/cookies.js", "../../../../node_modules/.pnpm/axios@0.27.2_debug@4.3.4/node_modules/axios/lib/helpers/isAbsoluteURL.js", "../../../../node_modules/.pnpm/axios@0.27.2_debug@4.3.4/node_modules/axios/lib/helpers/combineURLs.js", "../../../../node_modules/.pnpm/axios@0.27.2_debug@4.3.4/node_modules/axios/lib/core/buildFullPath.js", "../../../../node_modules/.pnpm/axios@0.27.2_debug@4.3.4/node_modules/axios/lib/helpers/parseHeaders.js", "../../../../node_modules/.pnpm/axios@0.27.2_debug@4.3.4/node_modules/axios/lib/helpers/isURLSameOrigin.js", "../../../../node_modules/.pnpm/axios@0.27.2_debug@4.3.4/node_modules/axios/lib/cancel/CanceledError.js", "../../../../node_modules/.pnpm/axios@0.27.2_debug@4.3.4/node_modules/axios/lib/helpers/parseProtocol.js", "../../../../node_modules/.pnpm/axios@0.27.2_debug@4.3.4/node_modules/axios/lib/adapters/xhr.js", "../../../../node_modules/.pnpm/axios@0.27.2_debug@4.3.4/node_modules/axios/lib/helpers/null.js", "../../../../node_modules/.pnpm/axios@0.27.2_debug@4.3.4/node_modules/axios/lib/defaults/index.js", "../../../../node_modules/.pnpm/axios@0.27.2_debug@4.3.4/node_modules/axios/lib/core/transformData.js", "../../../../node_modules/.pnpm/axios@0.27.2_debug@4.3.4/node_modules/axios/lib/cancel/isCancel.js", "../../../../node_modules/.pnpm/axios@0.27.2_debug@4.3.4/node_modules/axios/lib/core/dispatchRequest.js", "../../../../node_modules/.pnpm/axios@0.27.2_debug@4.3.4/node_modules/axios/lib/core/mergeConfig.js", "../../../../node_modules/.pnpm/axios@0.27.2_debug@4.3.4/node_modules/axios/lib/env/data.js", "../../../../node_modules/.pnpm/axios@0.27.2_debug@4.3.4/node_modules/axios/lib/helpers/validator.js", "../../../../node_modules/.pnpm/axios@0.27.2_debug@4.3.4/node_modules/axios/lib/core/Axios.js", "../../../../node_modules/.pnpm/axios@0.27.2_debug@4.3.4/node_modules/axios/lib/cancel/CancelToken.js", "../../../../node_modules/.pnpm/axios@0.27.2_debug@4.3.4/node_modules/axios/lib/helpers/spread.js", "../../../../node_modules/.pnpm/axios@0.27.2_debug@4.3.4/node_modules/axios/lib/helpers/isAxiosError.js", "../../../../node_modules/.pnpm/axios@0.27.2_debug@4.3.4/node_modules/axios/lib/axios.js", "../../../../node_modules/.pnpm/axios@0.27.2_debug@4.3.4/node_modules/axios/index.js", "../../../../node_modules/.pnpm/form-data@4.0.0/node_modules/form-data/lib/browser.js", "../../../../node_modules/.pnpm/@maplibre+maplibre-gl-style-spec@17.0.1/node_modules/@maplibre/maplibre-gl-style-spec/dist/index.mjs", "../../src/lib/flow-core-expression/flow-core-parser.ts", "../../src/lib/flow-core-expression/parser-helpers.ts", "../../src/lib/utils/type-checks.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/errors.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/utils/global.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/utils/utils.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/api/decorators.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/core/atom.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/utils/comparer.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/types/modifiers.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/types/overrideannotation.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/types/actionannotation.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/types/flowannotation.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/types/computedannotation.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/types/observableannotation.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/types/autoannotation.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/api/observable.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/api/computed.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/core/action.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/types/observablevalue.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/core/computedvalue.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/core/derivation.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/core/globalstate.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/core/observable.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/core/reaction.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/core/spy.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/api/action.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/api/autorun.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/api/become-observed.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/api/configure.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/api/extendobservable.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/api/extras.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/api/flow.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/api/intercept-read.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/api/intercept.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/api/iscomputed.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/api/isobservable.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/api/object-api.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/api/observe.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/api/tojs.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/api/trace.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/api/transaction.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/api/when.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/types/dynamicobject.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/types/intercept-utils.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/types/listen-utils.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/api/makeObservable.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/types/observablearray.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/types/observablemap.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/types/observableset.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/types/observableobject.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/types/legacyobservablearray.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/types/type-utils.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/utils/eq.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/utils/iterable.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/api/annotation.ts", "../../../../node_modules/.pnpm/mobx@6.6.1/node_modules/mobx/src/mobx.ts", "../../../../node_modules/.pnpm/mobx-utils@6.0.5_mobx@6.6.1/node_modules/mobx-utils/mobx-utils.module.js", "../../src/lib/errors/flow-core-error.ts", "../../src/lib/errors/flow-core-expression-error.ts", "../../src/lib/flow-core-expression/functions/state.ts", "../../../../node_modules/.pnpm/colorbrewer@1.5.2/node_modules/colorbrewer/index.es.js", "../../src/lib/flow-core-expression/functions/from-palette.ts", "../../src/lib/flow-core-expression/flow-core-expression.ts", "../../src/lib/flow-core-map/flow-core-map.ts", "../../src/lib/errors/flow-core-map-error.ts", "../../src/lib/flow-core-map-style/flow-core-map-style.ts", "../../src/lib/flow-core-map-style/flow-core-map-layer.ts", "../../src/lib/flow-core-state-store/flow-core-state-store.ts", "../../src/lib/flow-core-state-store/utils.ts", "../../src/lib/flow-core-map-style/flow-core-map-data-source.ts", "../../src/lib/utils/assert.ts", "../../src/lib/utils/functional.ts", "../../src/lib/flow-core-map/plugins/plugin-manager.ts", "../../src/lib/utils/string-utils.ts", "../../src/lib/flow-core-map/plugins/keyboard-shortcut-manager.ts", "../../src/lib/flow-core-map/support/flow-core-map-events.ts", "../../src/lib/flow-core-map/support/flow-core-map-feature-stream.ts", "../../src/lib/flow-core-map/support/image-registry.ts", "../../src/lib/flow-core-query/flow-core-query.ts", "../../src/lib/flow-core-query/async-committer.ts", "../../../../node_modules/.pnpm/@emuanalytics+flow-engine-client@1.3.35_debug@4.3.4/node_modules/@emuanalytics/flow-engine-client/src/lib/client.ts", "../../../../node_modules/.pnpm/@emuanalytics+flow-engine-client@1.3.35_debug@4.3.4/node_modules/@emuanalytics/flow-engine-client/src/lib/errors.ts", "../../../../node_modules/.pnpm/@emuanalytics+flow-engine-client@1.3.35_debug@4.3.4/node_modules/@emuanalytics/flow-engine-client/src/lib/base.endpoints.ts", "../../../../node_modules/.pnpm/@emuanalytics+flow-engine-client@1.3.35_debug@4.3.4/node_modules/@emuanalytics/flow-engine-client/src/lib/user.endpoints.ts", "../../../../node_modules/.pnpm/@emuanalytics+flow-engine-client@1.3.35_debug@4.3.4/node_modules/@emuanalytics/flow-engine-client/src/lib/auth.edpoints.ts", "../../../../node_modules/.pnpm/@emuanalytics+flow-engine-client@1.3.35_debug@4.3.4/node_modules/@emuanalytics/flow-engine-client/src/lib/tile.endpoints.ts", "../../../../node_modules/.pnpm/@emuanalytics+flow-engine-client@1.3.35_debug@4.3.4/node_modules/@emuanalytics/flow-engine-client/src/lib/style.endpoint.ts", "../../../../node_modules/.pnpm/@emuanalytics+flow-engine-client@1.3.35_debug@4.3.4/node_modules/@emuanalytics/flow-engine-client/src/lib/map.endoints.ts", "../../../../node_modules/.pnpm/@emuanalytics+flow-engine-client@1.3.35_debug@4.3.4/node_modules/@emuanalytics/flow-engine-client/src/lib/apikey.endpoints.ts", "../../../../node_modules/.pnpm/@emuanalytics+flow-engine-client@1.3.35_debug@4.3.4/node_modules/@emuanalytics/flow-engine-client/src/lib/application.endpoints.ts", "../../../../node_modules/.pnpm/@emuanalytics+flow-engine-client@1.3.35_debug@4.3.4/node_modules/@emuanalytics/flow-engine-client/src/lib/database.endpoints.ts", "../../../../node_modules/.pnpm/@emuanalytics+flow-engine-client@1.3.35_debug@4.3.4/node_modules/@emuanalytics/flow-engine-client/src/lib/dataset.endpoints.ts", "../../../../node_modules/.pnpm/@emuanalytics+flow-engine-client@1.3.35_debug@4.3.4/node_modules/@emuanalytics/flow-engine-client/src/lib/tile-source.endpoints.ts", "../../../../node_modules/.pnpm/@emuanalytics+flow-engine-client@1.3.35_debug@4.3.4/node_modules/@emuanalytics/flow-engine-client/src/lib/upload.endpoints.ts", "../../../../node_modules/.pnpm/@emuanalytics+flow-engine-client@1.3.35_debug@4.3.4/node_modules/@emuanalytics/flow-engine-client/src/lib/appconfig.endpoints.ts", "../../../../node_modules/.pnpm/@emuanalytics+flow-engine-client@1.3.35_debug@4.3.4/node_modules/@emuanalytics/flow-engine-client/src/lib/job.endpoints.ts"],
4
- "sourcesContent": ["!function(n,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.Parsimmon=t():n.Parsimmon=t()}(\"undefined\"!=typeof self?self:this,function(){return function(n){var t={};function r(e){if(t[e])return t[e].exports;var u=t[e]={i:e,l:!1,exports:{}};return n[e].call(u.exports,u,u.exports,r),u.l=!0,u.exports}return r.m=n,r.c=t,r.d=function(n,t,e){r.o(n,t)||Object.defineProperty(n,t,{configurable:!1,enumerable:!0,get:e})},r.r=function(n){Object.defineProperty(n,\"__esModule\",{value:!0})},r.n=function(n){var t=n&&n.__esModule?function(){return n.default}:function(){return n};return r.d(t,\"a\",t),t},r.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},r.p=\"\",r(r.s=0)}([function(n,t,r){\"use strict\";function e(n){if(!(this instanceof e))return new e(n);this._=n}var u=e.prototype;function o(n,t){for(var r=0;r<n;r++)t(r)}function i(n,t,r){return function(n,t){o(t.length,function(r){n(t[r],r,t)})}(function(r,e,u){t=n(t,r,e,u)},r),t}function a(n,t){return i(function(t,r,e,u){return t.concat([n(r,e,u)])},[],t)}function f(n,t){var r={v:0,buf:t};return o(n,function(){var n;r={v:r.v<<1|(n=r.buf,n[0]>>7),buf:function(n){var t=i(function(n,t,r,e){return n.concat(r===e.length-1?Buffer.from([t,0]).readUInt16BE(0):e.readUInt16BE(r))},[],n);return Buffer.from(a(function(n){return(n<<1&65535)>>8},t))}(r.buf)}}),r}function c(){return\"undefined\"!=typeof Buffer}function s(){if(!c())throw new Error(\"Buffer global does not exist; please use webpack if you need to parse Buffers in the browser.\")}function l(n){s();var t=i(function(n,t){return n+t},0,n);if(t%8!=0)throw new Error(\"The bits [\"+n.join(\", \")+\"] add up to \"+t+\" which is not an even number of bytes; the total should be divisible by 8\");var r,u=t/8,o=(r=function(n){return n>48},i(function(n,t){return n||(r(t)?t:n)},null,n));if(o)throw new Error(o+\" bit range requested exceeds 48 bit (6 byte) Number max.\");return new e(function(t,r){var e=u+r;return e>t.length?x(r,u.toString()+\" bytes\"):b(e,i(function(n,t){var r=f(t,n.buf);return{coll:n.coll.concat(r.v),buf:r.buf}},{coll:[],buf:t.slice(r,e)},n).coll)})}function h(n,t){return new e(function(r,e){return s(),e+t>r.length?x(e,t+\" bytes for \"+n):b(e+t,r.slice(e,e+t))})}function p(n,t){if(\"number\"!=typeof(r=t)||Math.floor(r)!==r||t<0||t>6)throw new Error(n+\" requires integer length in range [0, 6].\");var r}function d(n){return p(\"uintBE\",n),h(\"uintBE(\"+n+\")\",n).map(function(t){return t.readUIntBE(0,n)})}function v(n){return p(\"uintLE\",n),h(\"uintLE(\"+n+\")\",n).map(function(t){return t.readUIntLE(0,n)})}function g(n){return p(\"intBE\",n),h(\"intBE(\"+n+\")\",n).map(function(t){return t.readIntBE(0,n)})}function m(n){return p(\"intLE\",n),h(\"intLE(\"+n+\")\",n).map(function(t){return t.readIntLE(0,n)})}function y(n){return n instanceof e}function E(n){return\"[object Array]\"==={}.toString.call(n)}function w(n){return c()&&Buffer.isBuffer(n)}function b(n,t){return{status:!0,index:n,value:t,furthest:-1,expected:[]}}function x(n,t){return E(t)||(t=[t]),{status:!1,index:-1,value:null,furthest:n,expected:t}}function B(n,t){if(!t)return n;if(n.furthest>t.furthest)return n;var r=n.furthest===t.furthest?function(n,t){if(function(){if(void 0!==e._supportsSet)return e._supportsSet;var n=\"undefined\"!=typeof Set;return e._supportsSet=n,n}()&&Array.from){for(var r=new Set(n),u=0;u<t.length;u++)r.add(t[u]);var o=Array.from(r);return o.sort(),o}for(var i={},a=0;a<n.length;a++)i[n[a]]=!0;for(var f=0;f<t.length;f++)i[t[f]]=!0;var c=[];for(var s in i)({}).hasOwnProperty.call(i,s)&&c.push(s);return c.sort(),c}(n.expected,t.expected):t.expected;return{status:n.status,index:n.index,value:n.value,furthest:t.furthest,expected:r}}var j={};function S(n,t){if(w(n))return{offset:t,line:-1,column:-1};n in j||(j[n]={});for(var r=j[n],e=0,u=0,o=0,i=t;i>=0;){if(i in r){e=r[i].line,0===o&&(o=r[i].lineStart);break}(\"\\n\"===n.charAt(i)||\"\\r\"===n.charAt(i)&&\"\\n\"!==n.charAt(i+1))&&(u++,0===o&&(o=i+1)),i--}var a=e+u,f=t-o;return r[t]={line:a,lineStart:o},{offset:t,line:a+1,column:f+1}}function _(n){if(!y(n))throw new Error(\"not a parser: \"+n)}function L(n,t){return\"string\"==typeof n?n.charAt(t):n[t]}function O(n){if(\"number\"!=typeof n)throw new Error(\"not a number: \"+n)}function k(n){if(\"function\"!=typeof n)throw new Error(\"not a function: \"+n)}function P(n){if(\"string\"!=typeof n)throw new Error(\"not a string: \"+n)}var q=2,A=3,I=8,F=5*I,M=4*I,z=\" \";function R(n,t){return new Array(t+1).join(n)}function U(n,t,r){var e=t-n.length;return e<=0?n:R(r,e)+n}function W(n,t,r,e){return{from:n-t>0?n-t:0,to:n+r>e?e:n+r}}function D(n,t){var r,e,u,o,f,c=t.index,s=c.offset,l=1;if(s===n.length)return\"Got the end of the input\";if(w(n)){var h=s-s%I,p=s-h,d=W(h,F,M+I,n.length),v=a(function(n){return a(function(n){return U(n.toString(16),2,\"0\")},n)},function(n,t){var r=n.length,e=[],u=0;if(r<=t)return[n.slice()];for(var o=0;o<r;o++)e[u]||e.push([]),e[u].push(n[o]),(o+1)%t==0&&u++;return e}(n.slice(d.from,d.to).toJSON().data,I));o=function(n){return 0===n.from&&1===n.to?{from:n.from,to:n.to}:{from:n.from/I,to:Math.floor(n.to/I)}}(d),e=h/I,r=3*p,p>=4&&(r+=1),l=2,u=a(function(n){return n.length<=4?n.join(\" \"):n.slice(0,4).join(\" \")+\" \"+n.slice(4).join(\" \")},v),(f=(8*(o.to>0?o.to-1:o.to)).toString(16).length)<2&&(f=2)}else{var g=n.split(/\\r\\n|[\\n\\r\\u2028\\u2029]/);r=c.column-1,e=c.line-1,o=W(e,q,A,g.length),u=g.slice(o.from,o.to),f=o.to.toString().length}var m=e-o.from;return w(n)&&(f=(8*(o.to>0?o.to-1:o.to)).toString(16).length)<2&&(f=2),i(function(t,e,u){var i,a=u===m,c=a?\"> \":z;return i=w(n)?U((8*(o.from+u)).toString(16),f,\"0\"):U((o.from+u+1).toString(),f,\" \"),[].concat(t,[c+i+\" | \"+e],a?[z+R(\" \",f)+\" | \"+U(\"\",r,\" \")+R(\"^\",l)]:[])},[],u).join(\"\\n\")}function N(n,t){return[\"\\n\",\"-- PARSING FAILED \"+R(\"-\",50),\"\\n\\n\",D(n,t),\"\\n\\n\",(r=t.expected,1===r.length?\"Expected:\\n\\n\"+r[0]:\"Expected one of the following: \\n\\n\"+r.join(\", \")),\"\\n\"].join(\"\");var r}function G(n){return void 0!==n.flags?n.flags:[n.global?\"g\":\"\",n.ignoreCase?\"i\":\"\",n.multiline?\"m\":\"\",n.unicode?\"u\":\"\",n.sticky?\"y\":\"\"].join(\"\")}function C(){for(var n=[].slice.call(arguments),t=n.length,r=0;r<t;r+=1)_(n[r]);return e(function(r,e){for(var u,o=new Array(t),i=0;i<t;i+=1){if(!(u=B(n[i]._(r,e),u)).status)return u;o[i]=u.value,e=u.index}return B(b(e,o),u)})}function J(){var n=[].slice.call(arguments);if(0===n.length)throw new Error(\"seqMap needs at least one argument\");var t=n.pop();return k(t),C.apply(null,n).map(function(n){return t.apply(null,n)})}function T(){var n=[].slice.call(arguments),t=n.length;if(0===t)return Y(\"zero alternates\");for(var r=0;r<t;r+=1)_(n[r]);return e(function(t,r){for(var e,u=0;u<n.length;u+=1)if((e=B(n[u]._(t,r),e)).status)return e;return e})}function V(n,t){return H(n,t).or(X([]))}function H(n,t){return _(n),_(t),J(n,t.then(n).many(),function(n,t){return[n].concat(t)})}function K(n){P(n);var t=\"'\"+n+\"'\";return e(function(r,e){var u=e+n.length,o=r.slice(e,u);return o===n?b(u,o):x(e,t)})}function Q(n,t){!function(n){if(!(n instanceof RegExp))throw new Error(\"not a regexp: \"+n);for(var t=G(n),r=0;r<t.length;r++){var e=t.charAt(r);if(\"i\"!==e&&\"m\"!==e&&\"u\"!==e&&\"s\"!==e)throw new Error('unsupported regexp flag \"'+e+'\": '+n)}}(n),arguments.length>=2?O(t):t=0;var r=function(n){return RegExp(\"^(?:\"+n.source+\")\",G(n))}(n),u=\"\"+n;return e(function(n,e){var o=r.exec(n.slice(e));if(o){if(0<=t&&t<=o.length){var i=o[0],a=o[t];return b(e+i.length,a)}return x(e,\"valid match group (0 to \"+o.length+\") in \"+u)}return x(e,u)})}function X(n){return e(function(t,r){return b(r,n)})}function Y(n){return e(function(t,r){return x(r,n)})}function Z(n){if(y(n))return e(function(t,r){var e=n._(t,r);return e.index=r,e.value=\"\",e});if(\"string\"==typeof n)return Z(K(n));if(n instanceof RegExp)return Z(Q(n));throw new Error(\"not a string, regexp, or parser: \"+n)}function $(n){return _(n),e(function(t,r){var e=n._(t,r),u=t.slice(r,e.index);return e.status?x(r,'not \"'+u+'\"'):b(r,null)})}function nn(n){return k(n),e(function(t,r){var e=L(t,r);return r<t.length&&n(e)?b(r+1,e):x(r,\"a character/byte matching \"+n)})}function tn(n,t){arguments.length<2&&(t=n,n=void 0);var r=e(function(n,e){return r._=t()._,r._(n,e)});return n?r.desc(n):r}function rn(){return Y(\"fantasy-land/empty\")}u.parse=function(n){if(\"string\"!=typeof n&&!w(n))throw new Error(\".parse must be called with a string or Buffer as its argument\");var t,r=this.skip(an)._(n,0);return t=r.status?{status:!0,value:r.value}:{status:!1,index:S(n,r.furthest),expected:r.expected},delete j[n],t},u.tryParse=function(n){var t=this.parse(n);if(t.status)return t.value;var r=N(n,t),e=new Error(r);throw e.type=\"ParsimmonError\",e.result=t,e},u.assert=function(n,t){return this.chain(function(r){return n(r)?X(r):Y(t)})},u.or=function(n){return T(this,n)},u.trim=function(n){return this.wrap(n,n)},u.wrap=function(n,t){return J(n,this,t,function(n,t){return t})},u.thru=function(n){return n(this)},u.then=function(n){return _(n),C(this,n).map(function(n){return n[1]})},u.many=function(){var n=this;return e(function(t,r){for(var e=[],u=void 0;;){if(!(u=B(n._(t,r),u)).status)return B(b(r,e),u);if(r===u.index)throw new Error(\"infinite loop detected in .many() parser --- calling .many() on a parser which can accept zero characters is usually the cause\");r=u.index,e.push(u.value)}})},u.tieWith=function(n){return P(n),this.map(function(t){if(function(n){if(!E(n))throw new Error(\"not an array: \"+n)}(t),t.length){P(t[0]);for(var r=t[0],e=1;e<t.length;e++)P(t[e]),r+=n+t[e];return r}return\"\"})},u.tie=function(){return this.tieWith(\"\")},u.times=function(n,t){var r=this;return arguments.length<2&&(t=n),O(n),O(t),e(function(e,u){for(var o=[],i=void 0,a=void 0,f=0;f<n;f+=1){if(a=B(i=r._(e,u),a),!i.status)return a;u=i.index,o.push(i.value)}for(;f<t&&(a=B(i=r._(e,u),a),i.status);f+=1)u=i.index,o.push(i.value);return B(b(u,o),a)})},u.result=function(n){return this.map(function(){return n})},u.atMost=function(n){return this.times(0,n)},u.atLeast=function(n){return J(this.times(n),this.many(),function(n,t){return n.concat(t)})},u.map=function(n){k(n);var t=this;return e(function(r,e){var u=t._(r,e);return u.status?B(b(u.index,n(u.value)),u):u})},u.contramap=function(n){k(n);var t=this;return e(function(r,e){var u=t.parse(n(r.slice(e)));return u.status?b(e+r.length,u.value):u})},u.promap=function(n,t){return k(n),k(t),this.contramap(n).map(t)},u.skip=function(n){return C(this,n).map(function(n){return n[0]})},u.mark=function(){return J(en,this,en,function(n,t,r){return{start:n,value:t,end:r}})},u.node=function(n){return J(en,this,en,function(t,r,e){return{name:n,value:r,start:t,end:e}})},u.sepBy=function(n){return V(this,n)},u.sepBy1=function(n){return H(this,n)},u.lookahead=function(n){return this.skip(Z(n))},u.notFollowedBy=function(n){return this.skip($(n))},u.desc=function(n){E(n)||(n=[n]);var t=this;return e(function(r,e){var u=t._(r,e);return u.status||(u.expected=n),u})},u.fallback=function(n){return this.or(X(n))},u.ap=function(n){return J(n,this,function(n,t){return n(t)})},u.chain=function(n){var t=this;return e(function(r,e){var u=t._(r,e);return u.status?B(n(u.value)._(r,u.index),u):u})},u.concat=u.or,u.empty=rn,u.of=X,u[\"fantasy-land/ap\"]=u.ap,u[\"fantasy-land/chain\"]=u.chain,u[\"fantasy-land/concat\"]=u.concat,u[\"fantasy-land/empty\"]=u.empty,u[\"fantasy-land/of\"]=u.of,u[\"fantasy-land/map\"]=u.map;var en=e(function(n,t){return b(t,S(n,t))}),un=e(function(n,t){return t>=n.length?x(t,\"any character/byte\"):b(t+1,L(n,t))}),on=e(function(n,t){return b(n.length,n.slice(t))}),an=e(function(n,t){return t<n.length?x(t,\"EOF\"):b(t,null)}),fn=Q(/[0-9]/).desc(\"a digit\"),cn=Q(/[0-9]*/).desc(\"optional digits\"),sn=Q(/[a-z]/i).desc(\"a letter\"),ln=Q(/[a-z]*/i).desc(\"optional letters\"),hn=Q(/\\s*/).desc(\"optional whitespace\"),pn=Q(/\\s+/).desc(\"whitespace\"),dn=K(\"\\r\"),vn=K(\"\\n\"),gn=K(\"\\r\\n\"),mn=T(gn,vn,dn).desc(\"newline\"),yn=T(mn,an);e.all=on,e.alt=T,e.any=un,e.cr=dn,e.createLanguage=function(n){var t={};for(var r in n)({}).hasOwnProperty.call(n,r)&&function(r){t[r]=tn(function(){return n[r](t)})}(r);return t},e.crlf=gn,e.custom=function(n){return e(n(b,x))},e.digit=fn,e.digits=cn,e.empty=rn,e.end=yn,e.eof=an,e.fail=Y,e.formatError=N,e.index=en,e.isParser=y,e.lazy=tn,e.letter=sn,e.letters=ln,e.lf=vn,e.lookahead=Z,e.makeFailure=x,e.makeSuccess=b,e.newline=mn,e.noneOf=function(n){return nn(function(t){return n.indexOf(t)<0}).desc(\"none of '\"+n+\"'\")},e.notFollowedBy=$,e.of=X,e.oneOf=function(n){for(var t=n.split(\"\"),r=0;r<t.length;r++)t[r]=\"'\"+t[r]+\"'\";return nn(function(t){return n.indexOf(t)>=0}).desc(t)},e.optWhitespace=hn,e.Parser=e,e.range=function(n,t){return nn(function(r){return n<=r&&r<=t}).desc(n+\"-\"+t)},e.regex=Q,e.regexp=Q,e.sepBy=V,e.sepBy1=H,e.seq=C,e.seqMap=J,e.seqObj=function(){for(var n,t={},r=0,u=(n=arguments,Array.prototype.slice.call(n)),o=u.length,i=0;i<o;i+=1){var a=u[i];if(!y(a)){if(E(a)&&2===a.length&&\"string\"==typeof a[0]&&y(a[1])){var f=a[0];if(Object.prototype.hasOwnProperty.call(t,f))throw new Error(\"seqObj: duplicate key \"+f);t[f]=!0,r++;continue}throw new Error(\"seqObj arguments must be parsers or [string, parser] array pairs.\")}}if(0===r)throw new Error(\"seqObj expects at least one named parser, found zero\");return e(function(n,t){for(var r,e={},i=0;i<o;i+=1){var a,f;if(E(u[i])?(a=u[i][0],f=u[i][1]):(a=null,f=u[i]),!(r=B(f._(n,t),r)).status)return r;a&&(e[a]=r.value),t=r.index}return B(b(t,e),r)})},e.string=K,e.succeed=X,e.takeWhile=function(n){return k(n),e(function(t,r){for(var e=r;e<t.length&&n(L(t,e));)e++;return b(e,t.slice(r,e))})},e.test=nn,e.whitespace=pn,e[\"fantasy-land/empty\"]=rn,e[\"fantasy-land/of\"]=X,e.Binary={bitSeq:l,bitSeqObj:function(n){s();var t={},r=0,e=a(function(n){if(E(n)){var e=n;if(2!==e.length)throw new Error(\"[\"+e.join(\", \")+\"] should be length 2, got length \"+e.length);if(P(e[0]),O(e[1]),Object.prototype.hasOwnProperty.call(t,e[0]))throw new Error(\"duplicate key in bitSeqObj: \"+e[0]);return t[e[0]]=!0,r++,e}return O(n),[null,n]},n);if(r<1)throw new Error(\"bitSeqObj expects at least one named pair, got [\"+n.join(\", \")+\"]\");var u=a(function(n){return n[0]},e);return l(a(function(n){return n[1]},e)).map(function(n){return i(function(n,t){return null!==t[0]&&(n[t[0]]=t[1]),n},{},a(function(t,r){return[t,n[r]]},u))})},byte:function(n){if(s(),O(n),n>255)throw new Error(\"Value specified to byte constructor (\"+n+\"=0x\"+n.toString(16)+\") is larger in value than a single byte.\");var t=(n>15?\"0x\":\"0x0\")+n.toString(16);return e(function(r,e){var u=L(r,e);return u===n?b(e+1,u):x(e,t)})},buffer:function(n){return h(\"buffer\",n).map(function(n){return Buffer.from(n)})},encodedString:function(n,t){return h(\"string\",t).map(function(t){return t.toString(n)})},uintBE:d,uint8BE:d(1),uint16BE:d(2),uint32BE:d(4),uintLE:v,uint8LE:v(1),uint16LE:v(2),uint32LE:v(4),intBE:g,int8BE:g(1),int16BE:g(2),int32BE:g(4),intLE:m,int8LE:m(1),int16LE:m(2),int32LE:m(4),floatBE:h(\"floatBE\",4).map(function(n){return n.readFloatBE(0)}),floatLE:h(\"floatLE\",4).map(function(n){return n.readFloatLE(0)}),doubleBE:h(\"doubleBE\",8).map(function(n){return n.readDoubleBE(0)}),doubleLE:h(\"doubleLE\",8).map(function(n){return n.readDoubleLE(0)})},n.exports=e}])});", "/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n", "\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n", "/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n", "'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n", "//\n// Our custom intro provides a specialized \"define()\" function, called by the\n// AMD modules below, that sets up the worker blob URL and then executes the\n// main module, storing its exported value as 'maplibregl'\n\n// The three \"chunks\" imported here are produced by a first Rollup pass,\n// which outputs them as AMD modules.\n\n// Shared dependencies, i.e.:\n/*\ndefine(['exports'], function (exports) {\n // Code for all common dependencies\n // Each module's exports are attached attached to 'exports' (with\n // names rewritten to avoid collisions, etc.)\n})\n*/\nimport './build/maplibregl/shared';\n\n// Worker and its unique dependencies, i.e.:\n/*\ndefine(['./shared.js'], function (__shared__js) {\n // Code for worker script and its unique dependencies.\n // Expects the output of 'shared' module to be passed in as an argument,\n // since all references to common deps look like, e.g.,\n // __shared__js.shapeText().\n});\n*/\n// When this wrapper function is passed to our custom define() above,\n// it gets stringified, together with the shared wrapper (using\n// Function.toString()), and the resulting string of code is made into a\n// Blob URL that gets used by the main module to create the web workers.\nimport './build/maplibregl/worker';\n\n// Main module and its unique dependencies\n/*\ndefine(['./shared.js'], function (__shared__js) {\n // Code for main GL JS module and its unique dependencies.\n // Expects the output of 'shared' module to be passed in as an argument,\n // since all references to common deps look like, e.g.,\n // __shared__js.shapeText().\n //\n // Returns the actual maplibregl (i.e. src/index.js)\n});\n*/\nimport './build/maplibregl/index';\n\nexport default maplibregl;\n", "'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n", "'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n// eslint-disable-next-line func-names\nvar kindOf = (function(cache) {\n // eslint-disable-next-line func-names\n return function(thing) {\n var str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n };\n})(Object.create(null));\n\nfunction kindOfTest(type) {\n type = type.toLowerCase();\n return function isKindOf(thing) {\n return kindOf(thing) === type;\n };\n}\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return Array.isArray(val);\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nvar isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nvar isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nvar isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} thing The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(thing) {\n var pattern = '[object FormData]';\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) ||\n toString.call(thing) === pattern ||\n (isFunction(thing.toString) && thing.toString() === pattern)\n );\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nvar isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n */\n\nfunction inherits(constructor, superConstructor, props, descriptors) {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function} [filter]\n * @returns {Object}\n */\n\nfunction toFlatObject(sourceObj, destObj, filter) {\n var props;\n var i;\n var prop;\n var merged = {};\n\n destObj = destObj || {};\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if (!merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = Object.getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/*\n * determines whether a string ends with the characters of a specified string\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n * @returns {boolean}\n */\nfunction endsWith(str, searchString, position) {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n var lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object\n * @param {*} [thing]\n * @returns {Array}\n */\nfunction toArray(thing) {\n if (!thing) return null;\n var i = thing.length;\n if (isUndefined(i)) return null;\n var arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n// eslint-disable-next-line func-names\nvar isTypedArray = (function(TypedArray) {\n // eslint-disable-next-line func-names\n return function(thing) {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && Object.getPrototypeOf(Uint8Array));\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM,\n inherits: inherits,\n toFlatObject: toFlatObject,\n kindOf: kindOf,\n kindOfTest: kindOfTest,\n endsWith: endsWith,\n toArray: toArray,\n isTypedArray: isTypedArray,\n isFileList: isFileList\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n", "'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n", "'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nvar prototype = AxiosError.prototype;\nvar descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED'\n// eslint-disable-next-line func-names\n].forEach(function(code) {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = function(error, code, config, request, response, customProps) {\n var axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nmodule.exports = AxiosError;\n", "'use strict';\n\nmodule.exports = {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n", "'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Convert a data object to FormData\n * @param {Object} obj\n * @param {?Object} [formData]\n * @returns {Object}\n **/\n\nfunction toFormData(obj, formData) {\n // eslint-disable-next-line no-param-reassign\n formData = formData || new FormData();\n\n var stack = [];\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n function build(data, parentKey) {\n if (utils.isPlainObject(data) || utils.isArray(data)) {\n if (stack.indexOf(data) !== -1) {\n throw Error('Circular reference detected in ' + parentKey);\n }\n\n stack.push(data);\n\n utils.forEach(data, function each(value, key) {\n if (utils.isUndefined(value)) return;\n var fullKey = parentKey ? parentKey + '.' + key : key;\n var arr;\n\n if (value && !parentKey && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (utils.endsWith(key, '[]') && (arr = utils.toArray(value))) {\n // eslint-disable-next-line func-names\n arr.forEach(function(el) {\n !utils.isUndefined(el) && formData.append(fullKey, convertValue(el));\n });\n return;\n }\n }\n\n build(value, fullKey);\n });\n\n stack.pop();\n } else {\n formData.append(parentKey, convertValue(data));\n }\n }\n\n build(obj);\n\n return formData;\n}\n\nmodule.exports = toFormData;\n", "'use strict';\n\nvar AxiosError = require('./AxiosError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n", "'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n};\n", "'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n", "'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n", "'use strict';\n\nvar AxiosError = require('../core/AxiosError');\nvar utils = require('../utils');\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction CanceledError(message) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nmodule.exports = CanceledError;\n", "'use strict';\n\nmodule.exports = function parseProtocol(url) {\n var match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n};\n", "'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar transitionalDefaults = require('../defaults/transitional');\nvar AxiosError = require('../core/AxiosError');\nvar CanceledError = require('../cancel/CanceledError');\nvar parseProtocol = require('../helpers/parseProtocol');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData) && utils.isStandardBrowserEnv()) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new CanceledError() : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n var protocol = parseProtocol(fullPath);\n\n if (protocol && [ 'http', 'https', 'file' ].indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData);\n });\n};\n", "// eslint-disable-next-line strict\nmodule.exports = null;\n", "'use strict';\n\nvar utils = require('../utils');\nvar normalizeHeaderName = require('../helpers/normalizeHeaderName');\nvar AxiosError = require('../core/AxiosError');\nvar transitionalDefaults = require('./transitional');\nvar toFormData = require('../helpers/toFormData');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('../adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('../adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n\n var isObjectPayload = utils.isObject(data);\n var contentType = headers && headers['Content-Type'];\n\n var isFileList;\n\n if ((isFileList = utils.isFileList(data)) || (isObjectPayload && contentType === 'multipart/form-data')) {\n var _FormData = this.env && this.env.FormData;\n return toFormData(isFileList ? {'files[]': data} : data, _FormData && new _FormData());\n } else if (isObjectPayload || contentType === 'application/json') {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: require('./env/FormData')\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n", "'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n", "'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n", "'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar CanceledError = require('../cancel/CanceledError');\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n", "'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'beforeRedirect': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n", "module.exports = {\n \"version\": \"0.27.2\"\n};", "'use strict';\n\nvar VERSION = require('../env/data').version;\nvar AxiosError = require('../core/AxiosError');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n", "'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar buildFullPath = require('./buildFullPath');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n var fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url: url,\n data: data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nmodule.exports = Axios;\n", "'use strict';\n\nvar CanceledError = require('./CanceledError');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n", "'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n", "'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n};\n", "'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = require('./cancel/CanceledError');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\naxios.toFormData = require('./helpers/toFormData');\n\n// Expose AxiosError class\naxios.AxiosError = require('../lib/core/AxiosError');\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n", "module.exports = require('./lib/axios');", "/* eslint-env browser */\nmodule.exports = typeof self == 'object' ? self.FormData : window.FormData;\n", "var v8Spec = {\n \"$version\": 8,\n \"$root\": {\n \"version\": {\n \"required\": true,\n \"type\": \"enum\",\n \"values\": [\n 8\n ],\n \"doc\": \"Style specification version number. Must be 8.\",\n \"example\": 8\n },\n \"name\": {\n \"type\": \"string\",\n \"doc\": \"A human-readable name for the style.\",\n \"example\": \"Bright\"\n },\n \"metadata\": {\n \"type\": \"*\",\n \"doc\": \"Arbitrary properties useful to track with the stylesheet, but do not influence rendering. Properties should be prefixed to avoid collisions, like 'mapbox:'.\"\n },\n \"center\": {\n \"type\": \"array\",\n \"value\": \"number\",\n \"doc\": \"Default map center in longitude and latitude. The style center will be used only if the map has not been positioned by other means (e.g. map options or user interaction).\",\n \"example\": [\n -73.9749,\n 40.7736\n ]\n },\n \"zoom\": {\n \"type\": \"number\",\n \"doc\": \"Default zoom level. The style zoom will be used only if the map has not been positioned by other means (e.g. map options or user interaction).\",\n \"example\": 12.5\n },\n \"bearing\": {\n \"type\": \"number\",\n \"default\": 0,\n \"period\": 360,\n \"units\": \"degrees\",\n \"doc\": \"Default bearing, in degrees. The bearing is the compass direction that is \\\"up\\\"; for example, a bearing of 90\u00B0 orients the map so that east is up. This value will be used only if the map has not been positioned by other means (e.g. map options or user interaction).\",\n \"example\": 29\n },\n \"pitch\": {\n \"type\": \"number\",\n \"default\": 0,\n \"units\": \"degrees\",\n \"doc\": \"Default pitch, in degrees. Zero is perpendicular to the surface, for a look straight down at the map, while a greater value like 60 looks ahead towards the horizon. The style pitch will be used only if the map has not been positioned by other means (e.g. map options or user interaction).\",\n \"example\": 50\n },\n \"light\": {\n \"type\": \"light\",\n \"doc\": \"The global light source.\",\n \"example\": {\n \"anchor\": \"viewport\",\n \"color\": \"white\",\n \"intensity\": 0.4\n }\n },\n \"terrain\": {\n \"type\": \"terrain\",\n \"doc\": \"The terrain configuration.\",\n \"example\": {\n \"source\": \"raster-dem-source\",\n \"exaggeration\": 0.5,\n \"elevationOffset\": 100\n }\n },\n \"sources\": {\n \"required\": true,\n \"type\": \"sources\",\n \"doc\": \"Data source specifications.\",\n \"example\": {\n \"maplibre-demotiles\": {\n \"type\": \"vector\",\n \"url\": \"https://demotiles.maplibre.org/tiles/tiles.json\"\n }\n }\n },\n \"sprite\": {\n \"type\": \"string\",\n \"doc\": \"A base URL for retrieving the sprite image and metadata. The extensions `.png`, `.json` and scale factor `@2x.png` will be automatically appended. This property is required if any layer uses the `background-pattern`, `fill-pattern`, `line-pattern`, `fill-extrusion-pattern`, or `icon-image` properties. The URL must be absolute, containing the [scheme, authority and path components](https://en.wikipedia.org/wiki/URL#Syntax).\",\n \"example\": \"mapbox://sprites/mapbox/bright-v8\"\n },\n \"glyphs\": {\n \"type\": \"string\",\n \"doc\": \"A URL template for loading signed-distance-field glyph sets in PBF format. The URL must include `{fontstack}` and `{range}` tokens. This property is required if any layer uses the `text-field` layout property. The URL must be absolute, containing the [scheme, authority and path components](https://en.wikipedia.org/wiki/URL#Syntax).\",\n \"example\": \"https://demotiles.maplibre.org/font/{fontstack}/{range}.pbf\"\n },\n \"transition\": {\n \"type\": \"transition\",\n \"doc\": \"A global transition definition to use as a default across properties, to be used for timing transitions between one value and the next when no property-specific transition is set. Collision-based symbol fading is controlled independently of the style's `transition` property.\",\n \"example\": {\n \"duration\": 300,\n \"delay\": 0\n }\n },\n \"layers\": {\n \"required\": true,\n \"type\": \"array\",\n \"value\": \"layer\",\n \"doc\": \"Layers will be drawn in the order of this array.\",\n \"example\": [\n {\n \"id\": \"water\",\n \"source\": \"mapbox-streets\",\n \"source-layer\": \"water\",\n \"type\": \"fill\",\n \"paint\": {\n \"fill-color\": \"#00ffff\"\n }\n }\n ]\n }\n },\n \"sources\": {\n \"*\": {\n \"type\": \"source\",\n \"doc\": \"Specification of a data source. For vector and raster sources, either TileJSON or a URL to a TileJSON must be provided. For image and video sources, a URL must be provided. For GeoJSON sources, a URL or inline GeoJSON must be provided.\"\n }\n },\n \"source\": [\n \"source_vector\",\n \"source_raster\",\n \"source_raster_dem\",\n \"source_geojson\",\n \"source_video\",\n \"source_image\"\n ],\n \"source_vector\": {\n \"type\": {\n \"required\": true,\n \"type\": \"enum\",\n \"values\": {\n \"vector\": {\n \"doc\": \"A vector tile source.\"\n }\n },\n \"doc\": \"The type of the source.\"\n },\n \"url\": {\n \"type\": \"string\",\n \"doc\": \"A URL to a TileJSON resource. Supported protocols are `http:` and `https:`.\"\n },\n \"tiles\": {\n \"type\": \"array\",\n \"value\": \"string\",\n \"doc\": \"An array of one or more tile source URLs, as in the TileJSON spec.\"\n },\n \"bounds\": {\n \"type\": \"array\",\n \"value\": \"number\",\n \"length\": 4,\n \"default\": [\n -180,\n -85.051129,\n 180,\n 85.051129\n ],\n \"doc\": \"An array containing the longitude and latitude of the southwest and northeast corners of the source's bounding box in the following order: `[sw.lng, sw.lat, ne.lng, ne.lat]`. When this property is included in a source, no tiles outside of the given bounds are requested by MapLibre GL.\"\n },\n \"scheme\": {\n \"type\": \"enum\",\n \"values\": {\n \"xyz\": {\n \"doc\": \"Slippy map tilenames scheme.\"\n },\n \"tms\": {\n \"doc\": \"OSGeo spec scheme.\"\n }\n },\n \"default\": \"xyz\",\n \"doc\": \"Influences the y direction of the tile coordinates. The global-mercator (aka Spherical Mercator) profile is assumed.\"\n },\n \"minzoom\": {\n \"type\": \"number\",\n \"default\": 0,\n \"doc\": \"Minimum zoom level for which tiles are available, as in the TileJSON spec.\"\n },\n \"maxzoom\": {\n \"type\": \"number\",\n \"default\": 22,\n \"doc\": \"Maximum zoom level for which tiles are available, as in the TileJSON spec. Data from tiles at the maxzoom are used when displaying the map at higher zoom levels.\"\n },\n \"attribution\": {\n \"type\": \"string\",\n \"doc\": \"Contains an attribution to be displayed when the map is shown to a user.\"\n },\n \"promoteId\": {\n \"type\": \"promoteId\",\n \"doc\": \"A property to use as a feature id (for feature state). Either a property name, or an object of the form `{<sourceLayer>: <propertyName>}`. If specified as a string for a vector tile source, the same property is used across all its source layers.\"\n },\n \"volatile\": {\n \"type\": \"boolean\",\n \"default\": false,\n \"doc\": \"A setting to determine whether a source's tiles are cached locally.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"android\": \"9.3.0\",\n \"ios\": \"5.10.0\"\n }\n }\n },\n \"*\": {\n \"type\": \"*\",\n \"doc\": \"Other keys to configure the data source.\"\n }\n },\n \"source_raster\": {\n \"type\": {\n \"required\": true,\n \"type\": \"enum\",\n \"values\": {\n \"raster\": {\n \"doc\": \"A raster tile source.\"\n }\n },\n \"doc\": \"The type of the source.\"\n },\n \"url\": {\n \"type\": \"string\",\n \"doc\": \"A URL to a TileJSON resource. Supported protocols are `http:` and `https:`.\"\n },\n \"tiles\": {\n \"type\": \"array\",\n \"value\": \"string\",\n \"doc\": \"An array of one or more tile source URLs, as in the TileJSON spec.\"\n },\n \"bounds\": {\n \"type\": \"array\",\n \"value\": \"number\",\n \"length\": 4,\n \"default\": [\n -180,\n -85.051129,\n 180,\n 85.051129\n ],\n \"doc\": \"An array containing the longitude and latitude of the southwest and northeast corners of the source's bounding box in the following order: `[sw.lng, sw.lat, ne.lng, ne.lat]`. When this property is included in a source, no tiles outside of the given bounds are requested by MapLibre GL.\"\n },\n \"minzoom\": {\n \"type\": \"number\",\n \"default\": 0,\n \"doc\": \"Minimum zoom level for which tiles are available, as in the TileJSON spec.\"\n },\n \"maxzoom\": {\n \"type\": \"number\",\n \"default\": 22,\n \"doc\": \"Maximum zoom level for which tiles are available, as in the TileJSON spec. Data from tiles at the maxzoom are used when displaying the map at higher zoom levels.\"\n },\n \"tileSize\": {\n \"type\": \"number\",\n \"default\": 512,\n \"units\": \"pixels\",\n \"doc\": \"The minimum visual size to display tiles for this layer. Only configurable for raster layers.\"\n },\n \"scheme\": {\n \"type\": \"enum\",\n \"values\": {\n \"xyz\": {\n \"doc\": \"Slippy map tilenames scheme.\"\n },\n \"tms\": {\n \"doc\": \"OSGeo spec scheme.\"\n }\n },\n \"default\": \"xyz\",\n \"doc\": \"Influences the y direction of the tile coordinates. The global-mercator (aka Spherical Mercator) profile is assumed.\"\n },\n \"attribution\": {\n \"type\": \"string\",\n \"doc\": \"Contains an attribution to be displayed when the map is shown to a user.\"\n },\n \"volatile\": {\n \"type\": \"boolean\",\n \"default\": false,\n \"doc\": \"A setting to determine whether a source's tiles are cached locally.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"android\": \"9.3.0\",\n \"ios\": \"5.10.0\"\n }\n }\n },\n \"*\": {\n \"type\": \"*\",\n \"doc\": \"Other keys to configure the data source.\"\n }\n },\n \"source_raster_dem\": {\n \"type\": {\n \"required\": true,\n \"type\": \"enum\",\n \"values\": {\n \"raster-dem\": {\n \"doc\": \"A RGB-encoded raster DEM source\"\n }\n },\n \"doc\": \"The type of the source.\"\n },\n \"url\": {\n \"type\": \"string\",\n \"doc\": \"A URL to a TileJSON resource. Supported protocols are `http:` and `https:`.\"\n },\n \"tiles\": {\n \"type\": \"array\",\n \"value\": \"string\",\n \"doc\": \"An array of one or more tile source URLs, as in the TileJSON spec.\"\n },\n \"bounds\": {\n \"type\": \"array\",\n \"value\": \"number\",\n \"length\": 4,\n \"default\": [\n -180,\n -85.051129,\n 180,\n 85.051129\n ],\n \"doc\": \"An array containing the longitude and latitude of the southwest and northeast corners of the source's bounding box in the following order: `[sw.lng, sw.lat, ne.lng, ne.lat]`. When this property is included in a source, no tiles outside of the given bounds are requested by MapLibre GL.\"\n },\n \"minzoom\": {\n \"type\": \"number\",\n \"default\": 0,\n \"doc\": \"Minimum zoom level for which tiles are available, as in the TileJSON spec.\"\n },\n \"maxzoom\": {\n \"type\": \"number\",\n \"default\": 22,\n \"doc\": \"Maximum zoom level for which tiles are available, as in the TileJSON spec. Data from tiles at the maxzoom are used when displaying the map at higher zoom levels.\"\n },\n \"tileSize\": {\n \"type\": \"number\",\n \"default\": 512,\n \"units\": \"pixels\",\n \"doc\": \"The minimum visual size to display tiles for this layer. Only configurable for raster layers.\"\n },\n \"attribution\": {\n \"type\": \"string\",\n \"doc\": \"Contains an attribution to be displayed when the map is shown to a user.\"\n },\n \"encoding\": {\n \"type\": \"enum\",\n \"values\": {\n \"terrarium\": {\n \"doc\": \"Terrarium format PNG tiles. See https://aws.amazon.com/es/public-datasets/terrain/ for more info.\"\n },\n \"mapbox\": {\n \"doc\": \"Mapbox Terrain RGB tiles. See https://www.mapbox.com/help/access-elevation-data/#mapbox-terrain-rgb for more info.\"\n }\n },\n \"default\": \"mapbox\",\n \"doc\": \"The encoding used by this source. Mapbox Terrain RGB is used by default\"\n },\n \"volatile\": {\n \"type\": \"boolean\",\n \"default\": false,\n \"doc\": \"A setting to determine whether a source's tiles are cached locally.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"android\": \"9.3.0\",\n \"ios\": \"5.10.0\"\n }\n }\n },\n \"*\": {\n \"type\": \"*\",\n \"doc\": \"Other keys to configure the data source.\"\n }\n },\n \"source_geojson\": {\n \"type\": {\n \"required\": true,\n \"type\": \"enum\",\n \"values\": {\n \"geojson\": {\n \"doc\": \"A GeoJSON data source.\"\n }\n },\n \"doc\": \"The data type of the GeoJSON source.\"\n },\n \"data\": {\n \"type\": \"*\",\n \"doc\": \"A URL to a GeoJSON file, or inline GeoJSON.\"\n },\n \"maxzoom\": {\n \"type\": \"number\",\n \"default\": 18,\n \"doc\": \"Maximum zoom level at which to create vector tiles (higher means greater detail at high zoom levels).\"\n },\n \"attribution\": {\n \"type\": \"string\",\n \"doc\": \"Contains an attribution to be displayed when the map is shown to a user.\"\n },\n \"buffer\": {\n \"type\": \"number\",\n \"default\": 128,\n \"maximum\": 512,\n \"minimum\": 0,\n \"doc\": \"Size of the tile buffer on each side. A value of 0 produces no buffer. A value of 512 produces a buffer as wide as the tile itself. Larger values produce fewer rendering artifacts near tile edges and slower performance.\"\n },\n \"filter\": {\n \"type\": \"*\",\n \"doc\": \"An expression for filtering features prior to processing them for rendering.\"\n },\n \"tolerance\": {\n \"type\": \"number\",\n \"default\": 0.375,\n \"doc\": \"Douglas-Peucker simplification tolerance (higher means simpler geometries and faster performance).\"\n },\n \"cluster\": {\n \"type\": \"boolean\",\n \"default\": false,\n \"doc\": \"If the data is a collection of point features, setting this to true clusters the points by radius into groups. Cluster groups become new `Point` features in the source with additional properties:\\n * `cluster` Is `true` if the point is a cluster \\n * `cluster_id` A unqiue id for the cluster to be used in conjunction with the [cluster inspection methods](https://www.mapbox.com/mapbox-gl-js/api/#geojsonsource#getclusterexpansionzoom)\\n * `point_count` Number of original points grouped into this cluster\\n * `point_count_abbreviated` An abbreviated point count\"\n },\n \"clusterRadius\": {\n \"type\": \"number\",\n \"default\": 50,\n \"minimum\": 0,\n \"doc\": \"Radius of each cluster if clustering is enabled. A value of 512 indicates a radius equal to the width of a tile.\"\n },\n \"clusterMaxZoom\": {\n \"type\": \"number\",\n \"doc\": \"Max zoom on which to cluster points if clustering is enabled. Defaults to one zoom less than maxzoom (so that last zoom features are not clustered). Clusters are re-evaluated at integer zoom levels so setting clusterMaxZoom to 14 means the clusters will be displayed until z15.\"\n },\n \"clusterMinPoints\": {\n \"type\": \"number\",\n \"doc\": \"Minimum number of points necessary to form a cluster if clustering is enabled. Defaults to `2`.\"\n },\n \"clusterProperties\": {\n \"type\": \"*\",\n \"doc\": \"An object defining custom properties on the generated clusters if clustering is enabled, aggregating values from clustered points. Has the form `{\\\"property_name\\\": [operator, map_expression]}`. `operator` is any expression function that accepts at least 2 operands (e.g. `\\\"+\\\"` or `\\\"max\\\"`) \u2014 it accumulates the property value from clusters/points the cluster contains; `map_expression` produces the value of a single point.\\n\\nExample: `{\\\"sum\\\": [\\\"+\\\", [\\\"get\\\", \\\"scalerank\\\"]]}`.\\n\\nFor more advanced use cases, in place of `operator`, you can use a custom reduce expression that references a special `[\\\"accumulated\\\"]` value, e.g.:\\n`{\\\"sum\\\": [[\\\"+\\\", [\\\"accumulated\\\"], [\\\"get\\\", \\\"sum\\\"]], [\\\"get\\\", \\\"scalerank\\\"]]}`\"\n },\n \"lineMetrics\": {\n \"type\": \"boolean\",\n \"default\": false,\n \"doc\": \"Whether to calculate line distance metrics. This is required for line layers that specify `line-gradient` values.\"\n },\n \"generateId\": {\n \"type\": \"boolean\",\n \"default\": false,\n \"doc\": \"Whether to generate ids for the geojson features. When enabled, the `feature.id` property will be auto assigned based on its index in the `features` array, over-writing any previous values.\"\n },\n \"promoteId\": {\n \"type\": \"promoteId\",\n \"doc\": \"A property to use as a feature id (for feature state). Either a property name, or an object of the form `{<sourceLayer>: <propertyName>}`.\"\n }\n },\n \"source_video\": {\n \"type\": {\n \"required\": true,\n \"type\": \"enum\",\n \"values\": {\n \"video\": {\n \"doc\": \"A video data source.\"\n }\n },\n \"doc\": \"The data type of the video source.\"\n },\n \"urls\": {\n \"required\": true,\n \"type\": \"array\",\n \"value\": \"string\",\n \"doc\": \"URLs to video content in order of preferred format.\"\n },\n \"coordinates\": {\n \"required\": true,\n \"doc\": \"Corners of video specified in longitude, latitude pairs.\",\n \"type\": \"array\",\n \"length\": 4,\n \"value\": {\n \"type\": \"array\",\n \"length\": 2,\n \"value\": \"number\",\n \"doc\": \"A single longitude, latitude pair.\"\n }\n }\n },\n \"source_image\": {\n \"type\": {\n \"required\": true,\n \"type\": \"enum\",\n \"values\": {\n \"image\": {\n \"doc\": \"An image data source.\"\n }\n },\n \"doc\": \"The data type of the image source.\"\n },\n \"url\": {\n \"required\": true,\n \"type\": \"string\",\n \"doc\": \"URL that points to an image.\"\n },\n \"coordinates\": {\n \"required\": true,\n \"doc\": \"Corners of image specified in longitude, latitude pairs.\",\n \"type\": \"array\",\n \"length\": 4,\n \"value\": {\n \"type\": \"array\",\n \"length\": 2,\n \"value\": \"number\",\n \"doc\": \"A single longitude, latitude pair.\"\n }\n }\n },\n \"layer\": {\n \"id\": {\n \"type\": \"string\",\n \"doc\": \"Unique layer name.\",\n \"required\": true\n },\n \"type\": {\n \"type\": \"enum\",\n \"values\": {\n \"fill\": {\n \"doc\": \"A filled polygon with an optional stroked border.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n }\n },\n \"line\": {\n \"doc\": \"A stroked line.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n }\n },\n \"symbol\": {\n \"doc\": \"An icon or a text label.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n }\n },\n \"circle\": {\n \"doc\": \"A filled circle.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n }\n },\n \"heatmap\": {\n \"doc\": \"A heatmap.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"fill-extrusion\": {\n \"doc\": \"An extruded (3D) polygon.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.27.0\",\n \"android\": \"5.1.0\",\n \"ios\": \"3.6.0\",\n \"macos\": \"0.5.0\"\n }\n }\n },\n \"raster\": {\n \"doc\": \"Raster map textures such as satellite imagery.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n }\n },\n \"hillshade\": {\n \"doc\": \"Client-side hillshading visualization based on DEM data. Currently, the implementation only supports Mapbox Terrain RGB and Mapzen Terrarium tiles.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.43.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"background\": {\n \"doc\": \"The background color or pattern of the map.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n }\n }\n },\n \"doc\": \"Rendering type of this layer.\",\n \"required\": true\n },\n \"metadata\": {\n \"type\": \"*\",\n \"doc\": \"Arbitrary properties useful to track with the layer, but do not influence rendering. Properties should be prefixed to avoid collisions, like 'mapbox:'.\"\n },\n \"source\": {\n \"type\": \"string\",\n \"doc\": \"Name of a source description to be used for this layer. Required for all layer types except `background`.\"\n },\n \"source-layer\": {\n \"type\": \"string\",\n \"doc\": \"Layer to use from a vector tile source. Required for vector tile sources; prohibited for all other source types, including GeoJSON sources.\"\n },\n \"minzoom\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 24,\n \"doc\": \"The minimum zoom level for the layer. At zoom levels less than the minzoom, the layer will be hidden.\"\n },\n \"maxzoom\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 24,\n \"doc\": \"The maximum zoom level for the layer. At zoom levels equal to or greater than the maxzoom, the layer will be hidden.\"\n },\n \"filter\": {\n \"type\": \"filter\",\n \"doc\": \"A expression specifying conditions on source features. Only features that match the filter are displayed. Zoom expressions in filters are only evaluated at integer zoom levels. The `feature-state` expression is not supported in filter expressions.\"\n },\n \"layout\": {\n \"type\": \"layout\",\n \"doc\": \"Layout properties for the layer.\"\n },\n \"paint\": {\n \"type\": \"paint\",\n \"doc\": \"Default paint properties for this layer.\"\n }\n },\n \"layout\": [\n \"layout_fill\",\n \"layout_line\",\n \"layout_circle\",\n \"layout_heatmap\",\n \"layout_fill-extrusion\",\n \"layout_symbol\",\n \"layout_raster\",\n \"layout_hillshade\",\n \"layout_background\"\n ],\n \"layout_background\": {\n \"visibility\": {\n \"type\": \"enum\",\n \"values\": {\n \"visible\": {\n \"doc\": \"The layer is shown.\"\n },\n \"none\": {\n \"doc\": \"The layer is not shown.\"\n }\n },\n \"default\": \"visible\",\n \"doc\": \"Whether this layer is displayed.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n },\n \"property-type\": \"constant\"\n }\n },\n \"layout_fill\": {\n \"fill-sort-key\": {\n \"type\": \"number\",\n \"doc\": \"Sorts features in ascending order based on this value. Features with a higher sort key will appear above features with a lower sort key.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"1.2.0\",\n \"android\": \"9.1.0\",\n \"ios\": \"5.8.0\",\n \"macos\": \"0.15.0\"\n },\n \"data-driven styling\": {\n \"js\": \"1.2.0\",\n \"android\": \"9.1.0\",\n \"ios\": \"5.8.0\",\n \"macos\": \"0.15.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\",\n \"feature\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"visibility\": {\n \"type\": \"enum\",\n \"values\": {\n \"visible\": {\n \"doc\": \"The layer is shown.\"\n },\n \"none\": {\n \"doc\": \"The layer is not shown.\"\n }\n },\n \"default\": \"visible\",\n \"doc\": \"Whether this layer is displayed.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n },\n \"property-type\": \"constant\"\n }\n },\n \"layout_circle\": {\n \"circle-sort-key\": {\n \"type\": \"number\",\n \"doc\": \"Sorts features in ascending order based on this value. Features with a higher sort key will appear above features with a lower sort key.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"1.2.0\",\n \"android\": \"9.2.0\",\n \"ios\": \"5.9.0\",\n \"macos\": \"0.16.0\"\n },\n \"data-driven styling\": {\n \"js\": \"1.2.0\",\n \"android\": \"9.2.0\",\n \"ios\": \"5.9.0\",\n \"macos\": \"0.16.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\",\n \"feature\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"visibility\": {\n \"type\": \"enum\",\n \"values\": {\n \"visible\": {\n \"doc\": \"The layer is shown.\"\n },\n \"none\": {\n \"doc\": \"The layer is not shown.\"\n }\n },\n \"default\": \"visible\",\n \"doc\": \"Whether this layer is displayed.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n },\n \"property-type\": \"constant\"\n }\n },\n \"layout_heatmap\": {\n \"visibility\": {\n \"type\": \"enum\",\n \"values\": {\n \"visible\": {\n \"doc\": \"The layer is shown.\"\n },\n \"none\": {\n \"doc\": \"The layer is not shown.\"\n }\n },\n \"default\": \"visible\",\n \"doc\": \"Whether this layer is displayed.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n },\n \"property-type\": \"constant\"\n }\n },\n \"layout_fill-extrusion\": {\n \"visibility\": {\n \"type\": \"enum\",\n \"values\": {\n \"visible\": {\n \"doc\": \"The layer is shown.\"\n },\n \"none\": {\n \"doc\": \"The layer is not shown.\"\n }\n },\n \"default\": \"visible\",\n \"doc\": \"Whether this layer is displayed.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.27.0\",\n \"android\": \"5.1.0\",\n \"ios\": \"3.6.0\",\n \"macos\": \"0.5.0\"\n }\n },\n \"property-type\": \"constant\"\n }\n },\n \"layout_line\": {\n \"line-cap\": {\n \"type\": \"enum\",\n \"values\": {\n \"butt\": {\n \"doc\": \"A cap with a squared-off end which is drawn to the exact endpoint of the line.\"\n },\n \"round\": {\n \"doc\": \"A cap with a rounded end which is drawn beyond the endpoint of the line at a radius of one-half of the line's width and centered on the endpoint of the line.\"\n },\n \"square\": {\n \"doc\": \"A cap with a squared-off end which is drawn beyond the endpoint of the line at a distance of one-half of the line's width.\"\n }\n },\n \"default\": \"butt\",\n \"doc\": \"The display of line endings.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"line-join\": {\n \"type\": \"enum\",\n \"values\": {\n \"bevel\": {\n \"doc\": \"A join with a squared-off end which is drawn beyond the endpoint of the line at a distance of one-half of the line's width.\"\n },\n \"round\": {\n \"doc\": \"A join with a rounded end which is drawn beyond the endpoint of the line at a radius of one-half of the line's width and centered on the endpoint of the line.\"\n },\n \"miter\": {\n \"doc\": \"A join with a sharp, angled corner which is drawn with the outer sides beyond the endpoint of the path until they meet.\"\n }\n },\n \"default\": \"miter\",\n \"doc\": \"The display of lines when joining.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.40.0\",\n \"android\": \"5.2.0\",\n \"ios\": \"3.7.0\",\n \"macos\": \"0.6.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\",\n \"feature\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"line-miter-limit\": {\n \"type\": \"number\",\n \"default\": 2,\n \"doc\": \"Used to automatically convert miter joins to bevel joins for sharp angles.\",\n \"requires\": [\n {\n \"line-join\": \"miter\"\n }\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"line-round-limit\": {\n \"type\": \"number\",\n \"default\": 1.05,\n \"doc\": \"Used to automatically convert round joins to miter joins for shallow angles.\",\n \"requires\": [\n {\n \"line-join\": \"round\"\n }\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"line-sort-key\": {\n \"type\": \"number\",\n \"doc\": \"Sorts features in ascending order based on this value. Features with a higher sort key will appear above features with a lower sort key.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"1.2.0\",\n \"android\": \"9.1.0\",\n \"ios\": \"5.8.0\",\n \"macos\": \"0.15.0\"\n },\n \"data-driven styling\": {\n \"js\": \"1.2.0\",\n \"android\": \"9.1.0\",\n \"ios\": \"5.8.0\",\n \"macos\": \"0.15.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\",\n \"feature\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"visibility\": {\n \"type\": \"enum\",\n \"values\": {\n \"visible\": {\n \"doc\": \"The layer is shown.\"\n },\n \"none\": {\n \"doc\": \"The layer is not shown.\"\n }\n },\n \"default\": \"visible\",\n \"doc\": \"Whether this layer is displayed.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n },\n \"property-type\": \"constant\"\n }\n },\n \"layout_symbol\": {\n \"symbol-placement\": {\n \"type\": \"enum\",\n \"values\": {\n \"point\": {\n \"doc\": \"The label is placed at the point where the geometry is located.\"\n },\n \"line\": {\n \"doc\": \"The label is placed along the line of the geometry. Can only be used on `LineString` and `Polygon` geometries.\"\n },\n \"line-center\": {\n \"doc\": \"The label is placed at the center of the line of the geometry. Can only be used on `LineString` and `Polygon` geometries. Note that a single feature in a vector tile may contain multiple line geometries.\"\n }\n },\n \"default\": \"point\",\n \"doc\": \"Label placement relative to its geometry.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"`line-center` value\": {\n \"js\": \"0.47.0\",\n \"android\": \"6.4.0\",\n \"ios\": \"4.3.0\",\n \"macos\": \"0.10.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"symbol-spacing\": {\n \"type\": \"number\",\n \"default\": 250,\n \"minimum\": 1,\n \"units\": \"pixels\",\n \"doc\": \"Distance between two symbol anchors.\",\n \"requires\": [\n {\n \"symbol-placement\": \"line\"\n }\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"symbol-avoid-edges\": {\n \"type\": \"boolean\",\n \"default\": false,\n \"doc\": \"If true, the symbols will not cross tile edges to avoid mutual collisions. Recommended in layers that don't have enough padding in the vector tile to prevent collisions, or if it is a point symbol layer placed after a line symbol layer. When using a client that supports global collision detection, like MapLibre GL JS version 0.42.0 or greater, enabling this property is not needed to prevent clipped labels at tile boundaries.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"symbol-sort-key\": {\n \"type\": \"number\",\n \"doc\": \"Sorts features in ascending order based on this value. Features with lower sort keys are drawn and placed first. When `icon-allow-overlap` or `text-allow-overlap` is `false`, features with a lower sort key will have priority during placement. When `icon-allow-overlap` or `text-allow-overlap` is set to `true`, features with a higher sort key will overlap over features with a lower sort key.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.53.0\",\n \"android\": \"7.4.0\",\n \"ios\": \"4.11.0\",\n \"macos\": \"0.14.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.53.0\",\n \"android\": \"7.4.0\",\n \"ios\": \"4.11.0\",\n \"macos\": \"0.14.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\",\n \"feature\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"symbol-z-order\": {\n \"type\": \"enum\",\n \"values\": {\n \"auto\": {\n \"doc\": \"Sorts symbols by `symbol-sort-key` if set. Otherwise, sorts symbols by their y-position relative to the viewport if `icon-allow-overlap` or `text-allow-overlap` is set to `true` or `icon-ignore-placement` or `text-ignore-placement` is `false`.\"\n },\n \"viewport-y\": {\n \"doc\": \"Sorts symbols by their y-position relative to the viewport if `icon-allow-overlap` or `text-allow-overlap` is set to `true` or `icon-ignore-placement` or `text-ignore-placement` is `false`.\"\n },\n \"source\": {\n \"doc\": \"Sorts symbols by `symbol-sort-key` if set. Otherwise, no sorting is applied; symbols are rendered in the same order as the source data.\"\n }\n },\n \"default\": \"auto\",\n \"doc\": \"Determines whether overlapping symbols in the same layer are rendered in the order that they appear in the data source or by their y-position relative to the viewport. To control the order and prioritization of symbols otherwise, use `symbol-sort-key`.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.49.0\",\n \"android\": \"6.6.0\",\n \"ios\": \"4.5.0\",\n \"macos\": \"0.12.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"icon-allow-overlap\": {\n \"type\": \"boolean\",\n \"default\": false,\n \"doc\": \"If true, the icon will be visible even if it collides with other previously drawn symbols.\",\n \"requires\": [\n \"icon-image\",\n {\n \"!\": \"icon-overlap\"\n }\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"icon-overlap\": {\n \"type\": \"enum\",\n \"values\": {\n \"never\": {\n \"doc\": \"The icon will be hidden if it collides with any other previously drawn symbol.\"\n },\n \"always\": {\n \"doc\": \"The icon will be visible even if it collides with any other previously drawn symbol.\"\n },\n \"cooperative\": {\n \"doc\": \"If the icon collides with another previously drawn symbol, the overlap mode for that symbol is checked. If the previous symbol was placed using `never` overlap mode, the new icon is hidden. If the previous symbol was placed using `always` or `cooperative` overlap mode, the new icon is visible.\"\n }\n },\n \"doc\": \"Allows for control over whether to show an icon when it overlaps other symbols on the map. If `icon-overlap` is not set, `icon-allow-overlap` is used instead.\",\n \"requires\": [\n \"icon-image\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"2.1.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"icon-ignore-placement\": {\n \"type\": \"boolean\",\n \"default\": false,\n \"doc\": \"If true, other symbols can be visible even if they collide with the icon.\",\n \"requires\": [\n \"icon-image\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"icon-optional\": {\n \"type\": \"boolean\",\n \"default\": false,\n \"doc\": \"If true, text will display without their corresponding icons when the icon collides with other symbols and the text does not.\",\n \"requires\": [\n \"icon-image\",\n \"text-field\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"icon-rotation-alignment\": {\n \"type\": \"enum\",\n \"values\": {\n \"map\": {\n \"doc\": \"When `symbol-placement` is set to `point`, aligns icons east-west. When `symbol-placement` is set to `line` or `line-center`, aligns icon x-axes with the line.\"\n },\n \"viewport\": {\n \"doc\": \"Produces icons whose x-axes are aligned with the x-axis of the viewport, regardless of the value of `symbol-placement`.\"\n },\n \"auto\": {\n \"doc\": \"When `symbol-placement` is set to `point`, this is equivalent to `viewport`. When `symbol-placement` is set to `line` or `line-center`, this is equivalent to `map`.\"\n }\n },\n \"default\": \"auto\",\n \"doc\": \"In combination with `symbol-placement`, determines the rotation behavior of icons.\",\n \"requires\": [\n \"icon-image\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"`auto` value\": {\n \"js\": \"0.25.0\",\n \"android\": \"4.2.0\",\n \"ios\": \"3.4.0\",\n \"macos\": \"0.3.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"icon-size\": {\n \"type\": \"number\",\n \"default\": 1,\n \"minimum\": 0,\n \"units\": \"factor of the original icon size\",\n \"doc\": \"Scales the original size of the icon by the provided factor. The new pixel size of the image will be the original pixel size multiplied by `icon-size`. 1 is the original size; 3 triples the size of the image.\",\n \"requires\": [\n \"icon-image\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.35.0\",\n \"android\": \"5.1.0\",\n \"ios\": \"3.6.0\",\n \"macos\": \"0.5.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\",\n \"feature\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"icon-text-fit\": {\n \"type\": \"enum\",\n \"values\": {\n \"none\": {\n \"doc\": \"The icon is displayed at its intrinsic aspect ratio.\"\n },\n \"width\": {\n \"doc\": \"The icon is scaled in the x-dimension to fit the width of the text.\"\n },\n \"height\": {\n \"doc\": \"The icon is scaled in the y-dimension to fit the height of the text.\"\n },\n \"both\": {\n \"doc\": \"The icon is scaled in both x- and y-dimensions.\"\n }\n },\n \"default\": \"none\",\n \"doc\": \"Scales the icon to fit around the associated text.\",\n \"requires\": [\n \"icon-image\",\n \"text-field\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.21.0\",\n \"android\": \"4.2.0\",\n \"ios\": \"3.4.0\",\n \"macos\": \"0.2.1\"\n },\n \"stretchable icons\": {\n \"js\": \"1.6.0\",\n \"android\": \"9.2.0\",\n \"ios\": \"5.8.0\",\n \"macos\": \"0.15.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"icon-text-fit-padding\": {\n \"type\": \"array\",\n \"value\": \"number\",\n \"length\": 4,\n \"default\": [\n 0,\n 0,\n 0,\n 0\n ],\n \"units\": \"pixels\",\n \"doc\": \"Size of the additional area added to dimensions determined by `icon-text-fit`, in clockwise order: top, right, bottom, left.\",\n \"requires\": [\n \"icon-image\",\n \"text-field\",\n {\n \"icon-text-fit\": [\n \"both\",\n \"width\",\n \"height\"\n ]\n }\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.21.0\",\n \"android\": \"4.2.0\",\n \"ios\": \"3.4.0\",\n \"macos\": \"0.2.1\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"icon-image\": {\n \"type\": \"resolvedImage\",\n \"doc\": \"Name of image in sprite to use for drawing an image background.\",\n \"tokens\": true,\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.35.0\",\n \"android\": \"5.1.0\",\n \"ios\": \"3.6.0\",\n \"macos\": \"0.5.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\",\n \"feature\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"icon-rotate\": {\n \"type\": \"number\",\n \"default\": 0,\n \"period\": 360,\n \"units\": \"degrees\",\n \"doc\": \"Rotates the icon clockwise.\",\n \"requires\": [\n \"icon-image\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.21.0\",\n \"android\": \"5.0.0\",\n \"ios\": \"3.5.0\",\n \"macos\": \"0.4.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\",\n \"feature\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"icon-padding\": {\n \"type\": \"padding\",\n \"default\": [2],\n \"units\": \"pixels\",\n \"doc\": \"Size of additional area round the icon bounding box used for detecting symbol collisions. Values are declared using CSS margin shorthand syntax: a single value applies to all four sides; two values apply to [top/bottom, left/right]; three values apply to [top, left/right, bottom]; four values apply to [top, right, bottom, left]. For backwards compatibility, a single bare number is accepted, and treated the same as a one-element array - padding applied to all sides.\",\n \"requires\": [\n \"icon-image\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"data-driven styling\": {\n \"js\": \"2.2.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\",\n \"feature\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"icon-keep-upright\": {\n \"type\": \"boolean\",\n \"default\": false,\n \"doc\": \"If true, the icon may be flipped to prevent it from being rendered upside-down.\",\n \"requires\": [\n \"icon-image\",\n {\n \"icon-rotation-alignment\": \"map\"\n },\n {\n \"symbol-placement\": [\n \"line\",\n \"line-center\"\n ]\n }\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"icon-offset\": {\n \"type\": \"array\",\n \"value\": \"number\",\n \"length\": 2,\n \"default\": [\n 0,\n 0\n ],\n \"doc\": \"Offset distance of icon from its anchor. Positive values indicate right and down, while negative values indicate left and up. Each component is multiplied by the value of `icon-size` to obtain the final offset in pixels. When combined with `icon-rotate` the offset will be as if the rotated direction was up.\",\n \"requires\": [\n \"icon-image\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.29.0\",\n \"android\": \"5.0.0\",\n \"ios\": \"3.5.0\",\n \"macos\": \"0.4.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\",\n \"feature\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"icon-anchor\": {\n \"type\": \"enum\",\n \"values\": {\n \"center\": {\n \"doc\": \"The center of the icon is placed closest to the anchor.\"\n },\n \"left\": {\n \"doc\": \"The left side of the icon is placed closest to the anchor.\"\n },\n \"right\": {\n \"doc\": \"The right side of the icon is placed closest to the anchor.\"\n },\n \"top\": {\n \"doc\": \"The top of the icon is placed closest to the anchor.\"\n },\n \"bottom\": {\n \"doc\": \"The bottom of the icon is placed closest to the anchor.\"\n },\n \"top-left\": {\n \"doc\": \"The top left corner of the icon is placed closest to the anchor.\"\n },\n \"top-right\": {\n \"doc\": \"The top right corner of the icon is placed closest to the anchor.\"\n },\n \"bottom-left\": {\n \"doc\": \"The bottom left corner of the icon is placed closest to the anchor.\"\n },\n \"bottom-right\": {\n \"doc\": \"The bottom right corner of the icon is placed closest to the anchor.\"\n }\n },\n \"default\": \"center\",\n \"doc\": \"Part of the icon placed closest to the anchor.\",\n \"requires\": [\n \"icon-image\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.40.0\",\n \"android\": \"5.2.0\",\n \"ios\": \"3.7.0\",\n \"macos\": \"0.6.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.40.0\",\n \"android\": \"5.2.0\",\n \"ios\": \"3.7.0\",\n \"macos\": \"0.6.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\",\n \"feature\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"icon-pitch-alignment\": {\n \"type\": \"enum\",\n \"values\": {\n \"map\": {\n \"doc\": \"The icon is aligned to the plane of the map.\"\n },\n \"viewport\": {\n \"doc\": \"The icon is aligned to the plane of the viewport.\"\n },\n \"auto\": {\n \"doc\": \"Automatically matches the value of `icon-rotation-alignment`.\"\n }\n },\n \"default\": \"auto\",\n \"doc\": \"Orientation of icon when map is pitched.\",\n \"requires\": [\n \"icon-image\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.39.0\",\n \"android\": \"5.2.0\",\n \"ios\": \"3.7.0\",\n \"macos\": \"0.6.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"text-pitch-alignment\": {\n \"type\": \"enum\",\n \"values\": {\n \"map\": {\n \"doc\": \"The text is aligned to the plane of the map.\"\n },\n \"viewport\": {\n \"doc\": \"The text is aligned to the plane of the viewport.\"\n },\n \"auto\": {\n \"doc\": \"Automatically matches the value of `text-rotation-alignment`.\"\n }\n },\n \"default\": \"auto\",\n \"doc\": \"Orientation of text when map is pitched.\",\n \"requires\": [\n \"text-field\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.21.0\",\n \"android\": \"4.2.0\",\n \"ios\": \"3.4.0\",\n \"macos\": \"0.2.1\"\n },\n \"`auto` value\": {\n \"js\": \"0.25.0\",\n \"android\": \"4.2.0\",\n \"ios\": \"3.4.0\",\n \"macos\": \"0.3.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"text-rotation-alignment\": {\n \"type\": \"enum\",\n \"values\": {\n \"map\": {\n \"doc\": \"When `symbol-placement` is set to `point`, aligns text east-west. When `symbol-placement` is set to `line` or `line-center`, aligns text x-axes with the line.\"\n },\n \"viewport\": {\n \"doc\": \"Produces glyphs whose x-axes are aligned with the x-axis of the viewport, regardless of the value of `symbol-placement`.\"\n },\n \"viewport-glyph\": {\n \"doc\": \"When `symbol-placement` is set to `point`, aligns text to the x-axis of the viewport. When `symbol-placement` is set to `line` or `line-center`, aligns glyphs to the x-axis of the viewport and places them along the line.\"\n },\n \"auto\": {\n \"doc\": \"When `symbol-placement` is set to `point`, this is equivalent to `viewport`. When `symbol-placement` is set to `line` or `line-center`, this is equivalent to `map`.\"\n }\n },\n \"default\": \"auto\",\n \"doc\": \"In combination with `symbol-placement`, determines the rotation behavior of the individual glyphs forming the text.\",\n \"requires\": [\n \"text-field\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"`auto` value\": {\n \"js\": \"0.25.0\",\n \"android\": \"4.2.0\",\n \"ios\": \"3.4.0\",\n \"macos\": \"0.3.0\"\n },\n \"`viewport-glyph` value\": {\n \"js\": \"2.1.8\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"text-field\": {\n \"type\": \"formatted\",\n \"default\": \"\",\n \"tokens\": true,\n \"doc\": \"Value to use for a text label. If a plain `string` is provided, it will be treated as a `formatted` with default/inherited formatting options.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.33.0\",\n \"android\": \"5.0.0\",\n \"ios\": \"3.5.0\",\n \"macos\": \"0.4.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\",\n \"feature\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"text-font\": {\n \"type\": \"array\",\n \"value\": \"string\",\n \"default\": [\n \"Open Sans Regular\",\n \"Arial Unicode MS Regular\"\n ],\n \"doc\": \"Font stack to use for displaying text.\",\n \"requires\": [\n \"text-field\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.43.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\",\n \"feature\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"text-size\": {\n \"type\": \"number\",\n \"default\": 16,\n \"minimum\": 0,\n \"units\": \"pixels\",\n \"doc\": \"Font size.\",\n \"requires\": [\n \"text-field\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.35.0\",\n \"android\": \"5.1.0\",\n \"ios\": \"3.6.0\",\n \"macos\": \"0.5.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\",\n \"feature\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"text-max-width\": {\n \"type\": \"number\",\n \"default\": 10,\n \"minimum\": 0,\n \"units\": \"ems\",\n \"doc\": \"The maximum line width for text wrapping.\",\n \"requires\": [\n \"text-field\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.40.0\",\n \"android\": \"5.2.0\",\n \"ios\": \"3.7.0\",\n \"macos\": \"0.6.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\",\n \"feature\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"text-line-height\": {\n \"type\": \"number\",\n \"default\": 1.2,\n \"units\": \"ems\",\n \"doc\": \"Text leading value for multi-line text.\",\n \"requires\": [\n \"text-field\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"text-letter-spacing\": {\n \"type\": \"number\",\n \"default\": 0,\n \"units\": \"ems\",\n \"doc\": \"Text tracking amount.\",\n \"requires\": [\n \"text-field\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.40.0\",\n \"android\": \"5.2.0\",\n \"ios\": \"3.7.0\",\n \"macos\": \"0.6.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\",\n \"feature\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"text-justify\": {\n \"type\": \"enum\",\n \"values\": {\n \"auto\": {\n \"doc\": \"The text is aligned towards the anchor position.\"\n },\n \"left\": {\n \"doc\": \"The text is aligned to the left.\"\n },\n \"center\": {\n \"doc\": \"The text is centered.\"\n },\n \"right\": {\n \"doc\": \"The text is aligned to the right.\"\n }\n },\n \"default\": \"center\",\n \"doc\": \"Text justification options.\",\n \"requires\": [\n \"text-field\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.39.0\",\n \"android\": \"5.2.0\",\n \"ios\": \"3.7.0\",\n \"macos\": \"0.6.0\"\n },\n \"auto\": {\n \"js\": \"0.54.0\",\n \"android\": \"7.4.0\",\n \"ios\": \"4.10.0\",\n \"macos\": \"0.14.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\",\n \"feature\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"text-radial-offset\": {\n \"type\": \"number\",\n \"units\": \"ems\",\n \"default\": 0,\n \"doc\": \"Radial offset of text, in the direction of the symbol's anchor. Useful in combination with `text-variable-anchor`, which defaults to using the two-dimensional `text-offset` if present.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.54.0\",\n \"android\": \"7.4.0\",\n \"ios\": \"4.10.0\",\n \"macos\": \"0.14.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.54.0\",\n \"android\": \"7.4.0\",\n \"ios\": \"4.10.0\",\n \"macos\": \"0.14.0\"\n }\n },\n \"requires\": [\n \"text-field\"\n ],\n \"property-type\": \"data-driven\",\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\",\n \"feature\"\n ]\n }\n },\n \"text-variable-anchor\": {\n \"type\": \"array\",\n \"value\": \"enum\",\n \"values\": {\n \"center\": {\n \"doc\": \"The center of the text is placed closest to the anchor.\"\n },\n \"left\": {\n \"doc\": \"The left side of the text is placed closest to the anchor.\"\n },\n \"right\": {\n \"doc\": \"The right side of the text is placed closest to the anchor.\"\n },\n \"top\": {\n \"doc\": \"The top of the text is placed closest to the anchor.\"\n },\n \"bottom\": {\n \"doc\": \"The bottom of the text is placed closest to the anchor.\"\n },\n \"top-left\": {\n \"doc\": \"The top left corner of the text is placed closest to the anchor.\"\n },\n \"top-right\": {\n \"doc\": \"The top right corner of the text is placed closest to the anchor.\"\n },\n \"bottom-left\": {\n \"doc\": \"The bottom left corner of the text is placed closest to the anchor.\"\n },\n \"bottom-right\": {\n \"doc\": \"The bottom right corner of the text is placed closest to the anchor.\"\n }\n },\n \"requires\": [\n \"text-field\",\n {\n \"symbol-placement\": [\n \"point\"\n ]\n }\n ],\n \"doc\": \"To increase the chance of placing high-priority labels on the map, you can provide an array of `text-anchor` locations: the renderer will attempt to place the label at each location, in order, before moving onto the next label. Use `text-justify: auto` to choose justification based on anchor position. To apply an offset, use the `text-radial-offset` or the two-dimensional `text-offset`.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.54.0\",\n \"android\": \"7.4.0\",\n \"ios\": \"4.10.0\",\n \"macos\": \"0.14.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"text-anchor\": {\n \"type\": \"enum\",\n \"values\": {\n \"center\": {\n \"doc\": \"The center of the text is placed closest to the anchor.\"\n },\n \"left\": {\n \"doc\": \"The left side of the text is placed closest to the anchor.\"\n },\n \"right\": {\n \"doc\": \"The right side of the text is placed closest to the anchor.\"\n },\n \"top\": {\n \"doc\": \"The top of the text is placed closest to the anchor.\"\n },\n \"bottom\": {\n \"doc\": \"The bottom of the text is placed closest to the anchor.\"\n },\n \"top-left\": {\n \"doc\": \"The top left corner of the text is placed closest to the anchor.\"\n },\n \"top-right\": {\n \"doc\": \"The top right corner of the text is placed closest to the anchor.\"\n },\n \"bottom-left\": {\n \"doc\": \"The bottom left corner of the text is placed closest to the anchor.\"\n },\n \"bottom-right\": {\n \"doc\": \"The bottom right corner of the text is placed closest to the anchor.\"\n }\n },\n \"default\": \"center\",\n \"doc\": \"Part of the text placed closest to the anchor.\",\n \"requires\": [\n \"text-field\",\n {\n \"!\": \"text-variable-anchor\"\n }\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.39.0\",\n \"android\": \"5.2.0\",\n \"ios\": \"3.7.0\",\n \"macos\": \"0.6.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\",\n \"feature\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"text-max-angle\": {\n \"type\": \"number\",\n \"default\": 45,\n \"units\": \"degrees\",\n \"doc\": \"Maximum angle change between adjacent characters.\",\n \"requires\": [\n \"text-field\",\n {\n \"symbol-placement\": [\n \"line\",\n \"line-center\"\n ]\n }\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"text-writing-mode\": {\n \"type\": \"array\",\n \"value\": \"enum\",\n \"values\": {\n \"horizontal\": {\n \"doc\": \"If a text's language supports horizontal writing mode, symbols with point placement would be laid out horizontally.\"\n },\n \"vertical\": {\n \"doc\": \"If a text's language supports vertical writing mode, symbols with point placement would be laid out vertically.\"\n }\n },\n \"doc\": \"The property allows control over a symbol's orientation. Note that the property values act as a hint, so that a symbol whose language doesn\u2019t support the provided orientation will be laid out in its natural orientation. Example: English point symbol will be rendered horizontally even if array value contains single 'vertical' enum value. The order of elements in an array define priority order for the placement of an orientation variant.\",\n \"requires\": [\n \"text-field\",\n {\n \"symbol-placement\": [\n \"point\"\n ]\n }\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"1.3.0\",\n \"android\": \"8.3.0\",\n \"ios\": \"5.3.0\",\n \"macos\": \"0.15.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"text-rotate\": {\n \"type\": \"number\",\n \"default\": 0,\n \"period\": 360,\n \"units\": \"degrees\",\n \"doc\": \"Rotates the text clockwise.\",\n \"requires\": [\n \"text-field\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.35.0\",\n \"android\": \"5.1.0\",\n \"ios\": \"3.6.0\",\n \"macos\": \"0.5.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\",\n \"feature\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"text-padding\": {\n \"type\": \"number\",\n \"default\": 2,\n \"minimum\": 0,\n \"units\": \"pixels\",\n \"doc\": \"Size of the additional area around the text bounding box used for detecting symbol collisions.\",\n \"requires\": [\n \"text-field\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"text-keep-upright\": {\n \"type\": \"boolean\",\n \"default\": true,\n \"doc\": \"If true, the text may be flipped vertically to prevent it from being rendered upside-down.\",\n \"requires\": [\n \"text-field\",\n {\n \"text-rotation-alignment\": \"map\"\n },\n {\n \"symbol-placement\": [\n \"line\",\n \"line-center\"\n ]\n }\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"text-transform\": {\n \"type\": \"enum\",\n \"values\": {\n \"none\": {\n \"doc\": \"The text is not altered.\"\n },\n \"uppercase\": {\n \"doc\": \"Forces all letters to be displayed in uppercase.\"\n },\n \"lowercase\": {\n \"doc\": \"Forces all letters to be displayed in lowercase.\"\n }\n },\n \"default\": \"none\",\n \"doc\": \"Specifies how to capitalize text, similar to the CSS `text-transform` property.\",\n \"requires\": [\n \"text-field\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.33.0\",\n \"android\": \"5.0.0\",\n \"ios\": \"3.5.0\",\n \"macos\": \"0.4.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\",\n \"feature\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"text-offset\": {\n \"type\": \"array\",\n \"doc\": \"Offset distance of text from its anchor. Positive values indicate right and down, while negative values indicate left and up. If used with text-variable-anchor, input values will be taken as absolute values. Offsets along the x- and y-axis will be applied automatically based on the anchor position.\",\n \"value\": \"number\",\n \"units\": \"ems\",\n \"length\": 2,\n \"default\": [\n 0,\n 0\n ],\n \"requires\": [\n \"text-field\",\n {\n \"!\": \"text-radial-offset\"\n }\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.35.0\",\n \"android\": \"5.1.0\",\n \"ios\": \"3.6.0\",\n \"macos\": \"0.5.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\",\n \"feature\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"text-allow-overlap\": {\n \"type\": \"boolean\",\n \"default\": false,\n \"doc\": \"If true, the text will be visible even if it collides with other previously drawn symbols.\",\n \"requires\": [\n \"text-field\",\n {\n \"!\": \"text-overlap\"\n }\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"text-overlap\": {\n \"type\": \"enum\",\n \"values\": {\n \"never\": {\n \"doc\": \"The text will be hidden if it collides with any other previously drawn symbol.\"\n },\n \"always\": {\n \"doc\": \"The text will be visible even if it collides with any other previously drawn symbol.\"\n },\n \"cooperative\": {\n \"doc\": \"If the text collides with another previously drawn symbol, the overlap mode for that symbol is checked. If the previous symbol was placed using `never` overlap mode, the new text is hidden. If the previous symbol was placed using `always` or `cooperative` overlap mode, the new text is visible.\"\n }\n },\n \"doc\": \"Allows for control over whether to show symbol text when it overlaps other symbols on the map. If `text-overlap` is not set, `text-allow-overlap` is used instead\",\n \"requires\": [\n \"text-field\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"2.1.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"text-ignore-placement\": {\n \"type\": \"boolean\",\n \"default\": false,\n \"doc\": \"If true, other symbols can be visible even if they collide with the text.\",\n \"requires\": [\n \"text-field\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"text-optional\": {\n \"type\": \"boolean\",\n \"default\": false,\n \"doc\": \"If true, icons will display without their corresponding text when the text collides with other symbols and the icon does not.\",\n \"requires\": [\n \"text-field\",\n \"icon-image\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"visibility\": {\n \"type\": \"enum\",\n \"values\": {\n \"visible\": {\n \"doc\": \"The layer is shown.\"\n },\n \"none\": {\n \"doc\": \"The layer is not shown.\"\n }\n },\n \"default\": \"visible\",\n \"doc\": \"Whether this layer is displayed.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n },\n \"property-type\": \"constant\"\n }\n },\n \"layout_raster\": {\n \"visibility\": {\n \"type\": \"enum\",\n \"values\": {\n \"visible\": {\n \"doc\": \"The layer is shown.\"\n },\n \"none\": {\n \"doc\": \"The layer is not shown.\"\n }\n },\n \"default\": \"visible\",\n \"doc\": \"Whether this layer is displayed.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n },\n \"property-type\": \"constant\"\n }\n },\n \"layout_hillshade\": {\n \"visibility\": {\n \"type\": \"enum\",\n \"values\": {\n \"visible\": {\n \"doc\": \"The layer is shown.\"\n },\n \"none\": {\n \"doc\": \"The layer is not shown.\"\n }\n },\n \"default\": \"visible\",\n \"doc\": \"Whether this layer is displayed.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.43.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n },\n \"property-type\": \"constant\"\n }\n },\n \"filter\": {\n \"type\": \"array\",\n \"value\": \"*\",\n \"doc\": \"A filter selects specific features from a layer.\"\n },\n \"filter_operator\": {\n \"type\": \"enum\",\n \"values\": {\n \"==\": {\n \"doc\": \"`[\\\"==\\\", key, value]` equality: `feature[key] = value`\"\n },\n \"!=\": {\n \"doc\": \"`[\\\"!=\\\", key, value]` inequality: `feature[key] \u2260 value`\"\n },\n \">\": {\n \"doc\": \"`[\\\">\\\", key, value]` greater than: `feature[key] > value`\"\n },\n \">=\": {\n \"doc\": \"`[\\\">=\\\", key, value]` greater than or equal: `feature[key] \u2265 value`\"\n },\n \"<\": {\n \"doc\": \"`[\\\"<\\\", key, value]` less than: `feature[key] < value`\"\n },\n \"<=\": {\n \"doc\": \"`[\\\"<=\\\", key, value]` less than or equal: `feature[key] \u2264 value`\"\n },\n \"in\": {\n \"doc\": \"`[\\\"in\\\", key, v0, ..., vn]` set inclusion: `feature[key] \u2208 {v0, ..., vn}`\"\n },\n \"!in\": {\n \"doc\": \"`[\\\"!in\\\", key, v0, ..., vn]` set exclusion: `feature[key] \u2209 {v0, ..., vn}`\"\n },\n \"all\": {\n \"doc\": \"`[\\\"all\\\", f0, ..., fn]` logical `AND`: `f0 \u2227 ... \u2227 fn`\"\n },\n \"any\": {\n \"doc\": \"`[\\\"any\\\", f0, ..., fn]` logical `OR`: `f0 \u2228 ... \u2228 fn`\"\n },\n \"none\": {\n \"doc\": \"`[\\\"none\\\", f0, ..., fn]` logical `NOR`: `\u00ACf0 \u2227 ... \u2227 \u00ACfn`\"\n },\n \"has\": {\n \"doc\": \"`[\\\"has\\\", key]` `feature[key]` exists\"\n },\n \"!has\": {\n \"doc\": \"`[\\\"!has\\\", key]` `feature[key]` does not exist\"\n },\n \"within\": {\n \"doc\": \"`[\\\"within\\\", object]` feature geometry is within object geometry\"\n }\n },\n \"doc\": \"The filter operator.\"\n },\n \"geometry_type\": {\n \"type\": \"enum\",\n \"values\": {\n \"Point\": {\n \"doc\": \"Filter to point geometries.\"\n },\n \"LineString\": {\n \"doc\": \"Filter to line geometries.\"\n },\n \"Polygon\": {\n \"doc\": \"Filter to polygon geometries.\"\n }\n },\n \"doc\": \"The geometry type for the filter to select.\"\n },\n \"function\": {\n \"expression\": {\n \"type\": \"expression\",\n \"doc\": \"An expression.\"\n },\n \"stops\": {\n \"type\": \"array\",\n \"doc\": \"An array of stops.\",\n \"value\": \"function_stop\"\n },\n \"base\": {\n \"type\": \"number\",\n \"default\": 1,\n \"minimum\": 0,\n \"doc\": \"The exponential base of the interpolation curve. It controls the rate at which the result increases. Higher values make the result increase more towards the high end of the range. With `1` the stops are interpolated linearly.\"\n },\n \"property\": {\n \"type\": \"string\",\n \"doc\": \"The name of a feature property to use as the function input.\",\n \"default\": \"$zoom\"\n },\n \"type\": {\n \"type\": \"enum\",\n \"values\": {\n \"identity\": {\n \"doc\": \"Return the input value as the output value.\"\n },\n \"exponential\": {\n \"doc\": \"Generate an output by interpolating between stops just less than and just greater than the function input.\"\n },\n \"interval\": {\n \"doc\": \"Return the output value of the stop just less than the function input.\"\n },\n \"categorical\": {\n \"doc\": \"Return the output value of the stop equal to the function input.\"\n }\n },\n \"doc\": \"The interpolation strategy to use in function evaluation.\",\n \"default\": \"exponential\"\n },\n \"colorSpace\": {\n \"type\": \"enum\",\n \"values\": {\n \"rgb\": {\n \"doc\": \"Use the RGB color space to interpolate color values\"\n },\n \"lab\": {\n \"doc\": \"Use the LAB color space to interpolate color values.\"\n },\n \"hcl\": {\n \"doc\": \"Use the HCL color space to interpolate color values, interpolating the Hue, Chroma, and Luminance channels individually.\"\n }\n },\n \"doc\": \"The color space in which colors interpolated. Interpolating colors in perceptual color spaces like LAB and HCL tend to produce color ramps that look more consistent and produce colors that can be differentiated more easily than those interpolated in RGB space.\",\n \"default\": \"rgb\"\n },\n \"default\": {\n \"type\": \"*\",\n \"required\": false,\n \"doc\": \"A value to serve as a fallback function result when a value isn't otherwise available. It is used in the following circumstances:\\n* In categorical functions, when the feature value does not match any of the stop domain values.\\n* In property and zoom-and-property functions, when a feature does not contain a value for the specified property.\\n* In identity functions, when the feature value is not valid for the style property (for example, if the function is being used for a `circle-color` property but the feature property value is not a string or not a valid color).\\n* In interval or exponential property and zoom-and-property functions, when the feature value is not numeric.\\nIf no default is provided, the style property's default is used in these circumstances.\"\n }\n },\n \"function_stop\": {\n \"type\": \"array\",\n \"minimum\": 0,\n \"maximum\": 24,\n \"value\": [\n \"number\",\n \"color\"\n ],\n \"length\": 2,\n \"doc\": \"Zoom level and value pair.\"\n },\n \"expression\": {\n \"type\": \"array\",\n \"value\": \"*\",\n \"minimum\": 1,\n \"doc\": \"An expression defines a function that can be used for data-driven style properties or feature filters.\"\n },\n \"expression_name\": {\n \"doc\": \"\",\n \"type\": \"enum\",\n \"values\": {\n \"let\": {\n \"doc\": \"Binds expressions to named variables, which can then be referenced in the result expression using [\\\"var\\\", \\\"variable_name\\\"].\",\n \"group\": \"Variable binding\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"var\": {\n \"doc\": \"References variable bound using \\\"let\\\".\",\n \"group\": \"Variable binding\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"literal\": {\n \"doc\": \"Provides a literal array or object value.\",\n \"group\": \"Types\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"array\": {\n \"doc\": \"Asserts that the input is an array (optionally with a specific item type and length). If, when the input expression is evaluated, it is not of the asserted type, then this assertion will cause the whole expression to be aborted.\",\n \"group\": \"Types\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"at\": {\n \"doc\": \"Retrieves an item from an array.\",\n \"group\": \"Lookup\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"in\": {\n \"doc\": \"Determines whether an item exists in an array or a substring exists in a string.\",\n \"group\": \"Lookup\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"1.6.0\",\n \"android\": \"9.1.0\",\n \"ios\": \"5.8.0\",\n \"macos\": \"0.15.0\"\n }\n }\n },\n \"index-of\": {\n \"doc\": \"Returns the first position at which an item can be found in an array or a substring can be found in a string, or `-1` if the input cannot be found. Accepts an optional index from where to begin the search.\",\n \"group\": \"Lookup\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"1.10.0\"\n }\n }\n },\n \"slice\": {\n \"doc\": \"Returns an item from an array or a substring from a string from a specified start index, or between a start index and an end index if set. The return value is inclusive of the start index but not of the end index.\",\n \"group\": \"Lookup\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"1.10.0\"\n }\n }\n },\n \"case\": {\n \"doc\": \"Selects the first output whose corresponding test condition evaluates to true, or the fallback value otherwise.\",\n \"group\": \"Decision\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"match\": {\n \"doc\": \"Selects the output whose label value matches the input value, or the fallback value if no match is found. The input can be any expression (e.g. `[\\\"get\\\", \\\"building_type\\\"]`). Each label must be either:\\n - a single literal value; or\\n - an array of literal values, whose values must be all strings or all numbers (e.g. `[100, 101]` or `[\\\"c\\\", \\\"b\\\"]`). The input matches if any of the values in the array matches, similar to the `\\\"in\\\"` operator.\\nEach label must be unique. If the input type does not match the type of the labels, the result will be the fallback value.\",\n \"group\": \"Decision\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"coalesce\": {\n \"doc\": \"Evaluates each expression in turn until the first non-null value is obtained, and returns that value.\",\n \"group\": \"Decision\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"step\": {\n \"doc\": \"Produces discrete, stepped results by evaluating a piecewise-constant function defined by pairs of input and output values (\\\"stops\\\"). The `input` may be any numeric expression (e.g., `[\\\"get\\\", \\\"population\\\"]`). Stop inputs must be numeric literals in strictly ascending order. Returns the output value of the stop just less than the input, or the first output if the input is less than the first stop.\",\n \"group\": \"Ramps, scales, curves\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.42.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"interpolate\": {\n \"doc\": \"Produces continuous, smooth results by interpolating between pairs of input and output values (\\\"stops\\\"). The `input` may be any numeric expression (e.g., `[\\\"get\\\", \\\"population\\\"]`). Stop inputs must be numeric literals in strictly ascending order. The output type must be `number`, `array<number>`, or `color`.\\n\\nInterpolation types:\\n- `[\\\"linear\\\"]`: Interpolates linearly between the pair of stops just less than and just greater than the input.\\n- `[\\\"exponential\\\", base]`: Interpolates exponentially between the stops just less than and just greater than the input. `base` controls the rate at which the output increases: higher values make the output increase more towards the high end of the range. With values close to 1 the output increases linearly.\\n- `[\\\"cubic-bezier\\\", x1, y1, x2, y2]`: Interpolates using the cubic bezier curve defined by the given control points.\",\n \"group\": \"Ramps, scales, curves\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.42.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"interpolate-hcl\": {\n \"doc\": \"Produces continuous, smooth results by interpolating between pairs of input and output values (\\\"stops\\\"). Works like `interpolate`, but the output type must be `color`, and the interpolation is performed in the Hue-Chroma-Luminance color space.\",\n \"group\": \"Ramps, scales, curves\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.49.0\"\n }\n }\n },\n \"interpolate-lab\": {\n \"doc\": \"Produces continuous, smooth results by interpolating between pairs of input and output values (\\\"stops\\\"). Works like `interpolate`, but the output type must be `color`, and the interpolation is performed in the CIELAB color space.\",\n \"group\": \"Ramps, scales, curves\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.49.0\"\n }\n }\n },\n \"ln2\": {\n \"doc\": \"Returns mathematical constant ln(2).\",\n \"group\": \"Math\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"pi\": {\n \"doc\": \"Returns the mathematical constant pi.\",\n \"group\": \"Math\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"e\": {\n \"doc\": \"Returns the mathematical constant e.\",\n \"group\": \"Math\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"typeof\": {\n \"doc\": \"Returns a string describing the type of the given value.\",\n \"group\": \"Types\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"string\": {\n \"doc\": \"Asserts that the input value is a string. If multiple values are provided, each one is evaluated in order until a string is obtained. If none of the inputs are strings, the expression is an error.\",\n \"group\": \"Types\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"number\": {\n \"doc\": \"Asserts that the input value is a number. If multiple values are provided, each one is evaluated in order until a number is obtained. If none of the inputs are numbers, the expression is an error.\",\n \"group\": \"Types\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"boolean\": {\n \"doc\": \"Asserts that the input value is a boolean. If multiple values are provided, each one is evaluated in order until a boolean is obtained. If none of the inputs are booleans, the expression is an error.\",\n \"group\": \"Types\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"object\": {\n \"doc\": \"Asserts that the input value is an object. If multiple values are provided, each one is evaluated in order until an object is obtained. If none of the inputs are objects, the expression is an error.\",\n \"group\": \"Types\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"collator\": {\n \"doc\": \"Returns a `collator` for use in locale-dependent comparison operations. The `case-sensitive` and `diacritic-sensitive` options default to `false`. The `locale` argument specifies the IETF language tag of the locale to use. If none is provided, the default locale is used. If the requested locale is not available, the `collator` will use a system-defined fallback locale. Use `resolved-locale` to test the results of locale fallback behavior.\",\n \"group\": \"Types\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.45.0\",\n \"android\": \"6.5.0\",\n \"ios\": \"4.2.0\",\n \"macos\": \"0.9.0\"\n }\n }\n },\n \"format\": {\n \"doc\": \"Returns a `formatted` string for displaying mixed-format text in the `text-field` property. The input may contain a string literal or expression, including an [`'image'`](#types-image) expression. Strings may be followed by a style override object that supports the following properties:\\n- `\\\"text-font\\\"`: Overrides the font stack specified by the root layout property.\\n- `\\\"text-color\\\"`: Overrides the color specified by the root paint property.\\n- `\\\"font-scale\\\"`: Applies a scaling factor on `text-size` as specified by the root layout property.\",\n \"group\": \"Types\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.48.0\",\n \"android\": \"6.7.0\",\n \"ios\": \"4.6.0\",\n \"macos\": \"0.12.0\"\n },\n \"text-font\": {\n \"js\": \"0.48.0\",\n \"android\": \"6.7.0\",\n \"ios\": \"4.6.0\",\n \"macos\": \"0.12.0\"\n },\n \"font-scale\": {\n \"js\": \"0.48.0\",\n \"android\": \"6.7.0\",\n \"ios\": \"4.6.0\",\n \"macos\": \"0.12.0\"\n },\n \"text-color\": {\n \"js\": \"1.3.0\",\n \"android\": \"7.3.0\",\n \"ios\": \"4.10.0\",\n \"macos\": \"0.14.0\"\n },\n \"image\": {\n \"js\": \"1.6.0\",\n \"android\": \"8.6.0\",\n \"ios\": \"5.7.0\",\n \"macos\": \"0.15.0\"\n }\n }\n },\n \"image\": {\n \"doc\": \"Returns an `image` type for use in `icon-image`, `*-pattern` entries and as a section in the `format` expression. If set, the `image` argument will check that the requested image exists in the style and will return either the resolved image name or `null`, depending on whether or not the image is currently in the style. This validation process is synchronous and requires the image to have been added to the style before requesting it in the `image` argument.\",\n \"group\": \"Types\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"1.4.0\",\n \"android\": \"8.6.0\",\n \"ios\": \"5.7.0\",\n \"macos\": \"0.15.0\"\n }\n }\n },\n \"number-format\": {\n \"doc\": \"Converts the input number into a string representation using the providing formatting rules. If set, the `locale` argument specifies the locale to use, as a BCP 47 language tag. If set, the `currency` argument specifies an ISO 4217 code to use for currency-style formatting. If set, the `min-fraction-digits` and `max-fraction-digits` arguments specify the minimum and maximum number of fractional digits to include.\",\n \"group\": \"Types\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.54.0\"\n }\n }\n },\n \"to-string\": {\n \"doc\": \"Converts the input value to a string. If the input is `null`, the result is `\\\"\\\"`. If the input is a boolean, the result is `\\\"true\\\"` or `\\\"false\\\"`. If the input is a number, it is converted to a string as specified by the [\\\"NumberToString\\\" algorithm](https://tc39.github.io/ecma262/#sec-tostring-applied-to-the-number-type) of the ECMAScript Language Specification. If the input is a color, it is converted to a string of the form `\\\"rgba(r,g,b,a)\\\"`, where `r`, `g`, and `b` are numerals ranging from 0 to 255, and `a` ranges from 0 to 1. Otherwise, the input is converted to a string in the format specified by the [`JSON.stringify`](https://tc39.github.io/ecma262/#sec-json.stringify) function of the ECMAScript Language Specification.\",\n \"group\": \"Types\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"to-number\": {\n \"doc\": \"Converts the input value to a number, if possible. If the input is `null` or `false`, the result is 0. If the input is `true`, the result is 1. If the input is a string, it is converted to a number as specified by the [\\\"ToNumber Applied to the String Type\\\" algorithm](https://tc39.github.io/ecma262/#sec-tonumber-applied-to-the-string-type) of the ECMAScript Language Specification. If multiple values are provided, each one is evaluated in order until the first successful conversion is obtained. If none of the inputs can be converted, the expression is an error.\",\n \"group\": \"Types\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"to-boolean\": {\n \"doc\": \"Converts the input value to a boolean. The result is `false` when then input is an empty string, 0, `false`, `null`, or `NaN`; otherwise it is `true`.\",\n \"group\": \"Types\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"to-rgba\": {\n \"doc\": \"Returns a four-element array containing the input color's red, green, blue, and alpha components, in that order.\",\n \"group\": \"Color\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"to-color\": {\n \"doc\": \"Converts the input value to a color. If multiple values are provided, each one is evaluated in order until the first successful conversion is obtained. If none of the inputs can be converted, the expression is an error.\",\n \"group\": \"Types\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"rgb\": {\n \"doc\": \"Creates a color value from red, green, and blue components, which must range between 0 and 255, and an alpha component of 1. If any component is out of range, the expression is an error.\",\n \"group\": \"Color\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"rgba\": {\n \"doc\": \"Creates a color value from red, green, blue components, which must range between 0 and 255, and an alpha component which must range between 0 and 1. If any component is out of range, the expression is an error.\",\n \"group\": \"Color\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"get\": {\n \"doc\": \"Retrieves a property value from the current feature's properties, or from another object if a second argument is provided. Returns null if the requested property is missing.\",\n \"group\": \"Lookup\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"has\": {\n \"doc\": \"Tests for the presence of an property value in the current feature's properties, or from another object if a second argument is provided.\",\n \"group\": \"Lookup\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"length\": {\n \"doc\": \"Gets the length of an array or string.\",\n \"group\": \"Lookup\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"properties\": {\n \"doc\": \"Gets the feature properties object. Note that in some cases, it may be more efficient to use [\\\"get\\\", \\\"property_name\\\"] directly.\",\n \"group\": \"Feature data\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"feature-state\": {\n \"doc\": \"Retrieves a property value from the current feature's state. Returns null if the requested property is not present on the feature's state. A feature's state is not part of the GeoJSON or vector tile data, and must be set programmatically on each feature. When `source.promoteId` is not provided, features are identified by their `id` attribute, which must be an integer or a string that can be cast to an integer. When `source.promoteId` is provided, features are identified by their `promoteId` property, which may be a number, string, or any primitive data type. Note that [\\\"feature-state\\\"] can only be used with paint properties that support data-driven styling.\",\n \"group\": \"Feature data\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.46.0\"\n }\n }\n },\n \"geometry-type\": {\n \"doc\": \"Gets the feature's geometry type: `Point`, `MultiPoint`, `LineString`, `MultiLineString`, `Polygon`, `MultiPolygon`.\",\n \"group\": \"Feature data\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"id\": {\n \"doc\": \"Gets the feature's id, if it has one.\",\n \"group\": \"Feature data\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"zoom\": {\n \"doc\": \"Gets the current zoom level. Note that in style layout and paint properties, [\\\"zoom\\\"] may only appear as the input to a top-level \\\"step\\\" or \\\"interpolate\\\" expression.\",\n \"group\": \"Zoom\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"heatmap-density\": {\n \"doc\": \"Gets the kernel density estimation of a pixel in a heatmap layer, which is a relative measure of how many data points are crowded around a particular pixel. Can only be used in the `heatmap-color` property.\",\n \"group\": \"Heatmap\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"line-progress\": {\n \"doc\": \"Gets the progress along a gradient line. Can only be used in the `line-gradient` property.\",\n \"group\": \"Feature data\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.45.0\",\n \"android\": \"6.5.0\",\n \"ios\": \"4.6.0\",\n \"macos\": \"0.12.0\"\n }\n }\n },\n \"accumulated\": {\n \"doc\": \"Gets the value of a cluster property accumulated so far. Can only be used in the `clusterProperties` option of a clustered GeoJSON source.\",\n \"group\": \"Feature data\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.53.0\"\n }\n }\n },\n \"+\": {\n \"doc\": \"Returns the sum of the inputs.\",\n \"group\": \"Math\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"*\": {\n \"doc\": \"Returns the product of the inputs.\",\n \"group\": \"Math\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"-\": {\n \"doc\": \"For two inputs, returns the result of subtracting the second input from the first. For a single input, returns the result of subtracting it from 0.\",\n \"group\": \"Math\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"/\": {\n \"doc\": \"Returns the result of floating point division of the first input by the second.\",\n \"group\": \"Math\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"%\": {\n \"doc\": \"Returns the remainder after integer division of the first input by the second.\",\n \"group\": \"Math\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"^\": {\n \"doc\": \"Returns the result of raising the first input to the power specified by the second.\",\n \"group\": \"Math\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"sqrt\": {\n \"doc\": \"Returns the square root of the input.\",\n \"group\": \"Math\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.42.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"log10\": {\n \"doc\": \"Returns the base-ten logarithm of the input.\",\n \"group\": \"Math\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"ln\": {\n \"doc\": \"Returns the natural logarithm of the input.\",\n \"group\": \"Math\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"log2\": {\n \"doc\": \"Returns the base-two logarithm of the input.\",\n \"group\": \"Math\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"sin\": {\n \"doc\": \"Returns the sine of the input.\",\n \"group\": \"Math\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"cos\": {\n \"doc\": \"Returns the cosine of the input.\",\n \"group\": \"Math\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"tan\": {\n \"doc\": \"Returns the tangent of the input.\",\n \"group\": \"Math\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"asin\": {\n \"doc\": \"Returns the arcsine of the input.\",\n \"group\": \"Math\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"acos\": {\n \"doc\": \"Returns the arccosine of the input.\",\n \"group\": \"Math\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"atan\": {\n \"doc\": \"Returns the arctangent of the input.\",\n \"group\": \"Math\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"min\": {\n \"doc\": \"Returns the minimum value of the inputs.\",\n \"group\": \"Math\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"max\": {\n \"doc\": \"Returns the maximum value of the inputs.\",\n \"group\": \"Math\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"round\": {\n \"doc\": \"Rounds the input to the nearest integer. Halfway values are rounded away from zero. For example, `[\\\"round\\\", -1.5]` evaluates to -2.\",\n \"group\": \"Math\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.45.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"abs\": {\n \"doc\": \"Returns the absolute value of the input.\",\n \"group\": \"Math\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.45.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"ceil\": {\n \"doc\": \"Returns the smallest integer that is greater than or equal to the input.\",\n \"group\": \"Math\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.45.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"floor\": {\n \"doc\": \"Returns the largest integer that is less than or equal to the input.\",\n \"group\": \"Math\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.45.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"distance\": {\n \"doc\": \"Returns the shortest distance in meters between the evaluated feature and the input geometry. The input value can be a valid GeoJSON of type `Point`, `MultiPoint`, `LineString`, `MultiLineString`, `Polygon`, `MultiPolygon`, `Feature`, or `FeatureCollection`. Distance values returned may vary in precision due to loss in precision from encoding geometries, particularly below zoom level 13.\",\n \"group\": \"Math\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"android\": \"9.2.0\",\n \"ios\": \"5.9.0\",\n \"macos\": \"0.16.0\"\n }\n }\n },\n \"==\": {\n \"doc\": \"Returns `true` if the input values are equal, `false` otherwise. The comparison is strictly typed: values of different runtime types are always considered unequal. Cases where the types are known to be different at parse time are considered invalid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.\",\n \"group\": \"Decision\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n },\n \"collator\": {\n \"js\": \"0.45.0\",\n \"android\": \"6.5.0\",\n \"ios\": \"4.2.0\",\n \"macos\": \"0.9.0\"\n }\n }\n },\n \"!=\": {\n \"doc\": \"Returns `true` if the input values are not equal, `false` otherwise. The comparison is strictly typed: values of different runtime types are always considered unequal. Cases where the types are known to be different at parse time are considered invalid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.\",\n \"group\": \"Decision\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n },\n \"collator\": {\n \"js\": \"0.45.0\",\n \"android\": \"6.5.0\",\n \"ios\": \"4.2.0\",\n \"macos\": \"0.9.0\"\n }\n }\n },\n \">\": {\n \"doc\": \"Returns `true` if the first input is strictly greater than the second, `false` otherwise. The arguments are required to be either both strings or both numbers; if during evaluation they are not, expression evaluation produces an error. Cases where this constraint is known not to hold at parse time are considered in valid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.\",\n \"group\": \"Decision\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n },\n \"collator\": {\n \"js\": \"0.45.0\",\n \"android\": \"6.5.0\",\n \"ios\": \"4.2.0\",\n \"macos\": \"0.9.0\"\n }\n }\n },\n \"<\": {\n \"doc\": \"Returns `true` if the first input is strictly less than the second, `false` otherwise. The arguments are required to be either both strings or both numbers; if during evaluation they are not, expression evaluation produces an error. Cases where this constraint is known not to hold at parse time are considered in valid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.\",\n \"group\": \"Decision\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n },\n \"collator\": {\n \"js\": \"0.45.0\",\n \"android\": \"6.5.0\",\n \"ios\": \"4.2.0\",\n \"macos\": \"0.9.0\"\n }\n }\n },\n \">=\": {\n \"doc\": \"Returns `true` if the first input is greater than or equal to the second, `false` otherwise. The arguments are required to be either both strings or both numbers; if during evaluation they are not, expression evaluation produces an error. Cases where this constraint is known not to hold at parse time are considered in valid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.\",\n \"group\": \"Decision\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n },\n \"collator\": {\n \"js\": \"0.45.0\",\n \"android\": \"6.5.0\",\n \"ios\": \"4.2.0\",\n \"macos\": \"0.9.0\"\n }\n }\n },\n \"<=\": {\n \"doc\": \"Returns `true` if the first input is less than or equal to the second, `false` otherwise. The arguments are required to be either both strings or both numbers; if during evaluation they are not, expression evaluation produces an error. Cases where this constraint is known not to hold at parse time are considered in valid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.\",\n \"group\": \"Decision\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n },\n \"collator\": {\n \"js\": \"0.45.0\",\n \"android\": \"6.5.0\",\n \"ios\": \"4.2.0\",\n \"macos\": \"0.9.0\"\n }\n }\n },\n \"all\": {\n \"doc\": \"Returns `true` if all the inputs are `true`, `false` otherwise. The inputs are evaluated in order, and evaluation is short-circuiting: once an input expression evaluates to `false`, the result is `false` and no further input expressions are evaluated.\",\n \"group\": \"Decision\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"any\": {\n \"doc\": \"Returns `true` if any of the inputs are `true`, `false` otherwise. The inputs are evaluated in order, and evaluation is short-circuiting: once an input expression evaluates to `true`, the result is `true` and no further input expressions are evaluated.\",\n \"group\": \"Decision\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"!\": {\n \"doc\": \"Logical negation. Returns `true` if the input is `false`, and `false` if the input is `true`.\",\n \"group\": \"Decision\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"within\": {\n \"doc\": \"Returns `true` if the evaluated feature is fully contained inside a boundary of the input geometry, `false` otherwise. The input value can be a valid GeoJSON of type `Polygon`, `MultiPolygon`, `Feature`, or `FeatureCollection`. Supported features for evaluation:\\n- `Point`: Returns `false` if a point is on the boundary or falls outside the boundary.\\n- `LineString`: Returns `false` if any part of a line falls outside the boundary, the line intersects the boundary, or a line's endpoint is on the boundary.\",\n \"group\": \"Decision\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"1.9.0\",\n \"android\": \"9.1.0\",\n \"ios\": \"5.8.0\",\n \"macos\": \"0.15.0\"\n }\n }\n },\n \"is-supported-script\": {\n \"doc\": \"Returns `true` if the input string is expected to render legibly. Returns `false` if the input string contains sections that cannot be rendered without potential loss of meaning (e.g. Indic scripts that require complex text shaping, or right-to-left scripts if the the `mapbox-gl-rtl-text` plugin is not in use in MapLibre GL JS).\",\n \"group\": \"String\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.45.0\",\n \"android\": \"6.6.0\"\n }\n }\n },\n \"upcase\": {\n \"doc\": \"Returns the input string converted to uppercase. Follows the Unicode Default Case Conversion algorithm and the locale-insensitive case mappings in the Unicode Character Database.\",\n \"group\": \"String\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"downcase\": {\n \"doc\": \"Returns the input string converted to lowercase. Follows the Unicode Default Case Conversion algorithm and the locale-insensitive case mappings in the Unicode Character Database.\",\n \"group\": \"String\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"concat\": {\n \"doc\": \"Returns a `string` consisting of the concatenation of the inputs. Each input is converted to a string as if by `to-string`.\",\n \"group\": \"String\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n }\n },\n \"resolved-locale\": {\n \"doc\": \"Returns the IETF language tag of the locale being used by the provided `collator`. This can be used to determine the default system locale, or to determine if a requested locale was successfully loaded.\",\n \"group\": \"String\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.45.0\",\n \"android\": \"6.5.0\",\n \"ios\": \"4.2.0\",\n \"macos\": \"0.9.0\"\n }\n }\n }\n }\n },\n \"light\": {\n \"anchor\": {\n \"type\": \"enum\",\n \"default\": \"viewport\",\n \"values\": {\n \"map\": {\n \"doc\": \"The position of the light source is aligned to the rotation of the map.\"\n },\n \"viewport\": {\n \"doc\": \"The position of the light source is aligned to the rotation of the viewport.\"\n }\n },\n \"property-type\": \"data-constant\",\n \"transition\": false,\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"doc\": \"Whether extruded geometries are lit relative to the map or viewport.\",\n \"example\": \"map\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.27.0\",\n \"android\": \"5.1.0\",\n \"ios\": \"3.6.0\",\n \"macos\": \"0.5.0\"\n }\n }\n },\n \"position\": {\n \"type\": \"array\",\n \"default\": [\n 1.15,\n 210,\n 30\n ],\n \"length\": 3,\n \"value\": \"number\",\n \"property-type\": \"data-constant\",\n \"transition\": true,\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"doc\": \"Position of the light source relative to lit (extruded) geometries, in [r radial coordinate, a azimuthal angle, p polar angle] where r indicates the distance from the center of the base of an object to its light, a indicates the position of the light relative to 0\u00B0 (0\u00B0 when `light.anchor` is set to `viewport` corresponds to the top of the viewport, or 0\u00B0 when `light.anchor` is set to `map` corresponds to due north, and degrees proceed clockwise), and p indicates the height of the light (from 0\u00B0, directly above, to 180\u00B0, directly below).\",\n \"example\": [\n 1.5,\n 90,\n 80\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.27.0\",\n \"android\": \"5.1.0\",\n \"ios\": \"3.6.0\",\n \"macos\": \"0.5.0\"\n }\n }\n },\n \"color\": {\n \"type\": \"color\",\n \"property-type\": \"data-constant\",\n \"default\": \"#ffffff\",\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"transition\": true,\n \"doc\": \"Color tint for lighting extruded geometries.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.27.0\",\n \"android\": \"5.1.0\",\n \"ios\": \"3.6.0\",\n \"macos\": \"0.5.0\"\n }\n }\n },\n \"intensity\": {\n \"type\": \"number\",\n \"property-type\": \"data-constant\",\n \"default\": 0.5,\n \"minimum\": 0,\n \"maximum\": 1,\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"transition\": true,\n \"doc\": \"Intensity of lighting (on a scale from 0 to 1). Higher numbers will present as more extreme contrast.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.27.0\",\n \"android\": \"5.1.0\",\n \"ios\": \"3.6.0\",\n \"macos\": \"0.5.0\"\n }\n }\n }\n },\n \"terrain\": {\n \"source\": {\n \"type\": \"string\",\n \"doc\": \"The source for the terrain data.\",\n \"required\": true,\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"2.2.0\"\n }\n }\n },\n \"exaggeration\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"doc\": \"The exaggeration of the terrain - how high it will look.\",\n \"default\": 1.0,\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"2.2.0\"\n }\n }\n },\n \"elevationOffset\": {\n \"type\": \"number\",\n \"doc\": \"The elevation offset.\",\n \"default\": 450,\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"2.2.0\"\n }\n }\n }\n },\n \"paint\": [\n \"paint_fill\",\n \"paint_line\",\n \"paint_circle\",\n \"paint_heatmap\",\n \"paint_fill-extrusion\",\n \"paint_symbol\",\n \"paint_raster\",\n \"paint_hillshade\",\n \"paint_background\"\n ],\n \"paint_fill\": {\n \"fill-antialias\": {\n \"type\": \"boolean\",\n \"default\": true,\n \"doc\": \"Whether or not the fill should be antialiased.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"fill-opacity\": {\n \"type\": \"number\",\n \"default\": 1,\n \"minimum\": 0,\n \"maximum\": 1,\n \"doc\": \"The opacity of the entire fill layer. In contrast to the `fill-color`, this value will also affect the 1px stroke around the fill, if the stroke is used.\",\n \"transition\": true,\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.21.0\",\n \"android\": \"5.0.0\",\n \"ios\": \"3.5.0\",\n \"macos\": \"0.4.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\",\n \"feature\",\n \"feature-state\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"fill-color\": {\n \"type\": \"color\",\n \"default\": \"#000000\",\n \"doc\": \"The color of the filled part of this layer. This color can be specified as `rgba` with an alpha component and the color's opacity will not affect the opacity of the 1px stroke, if it is used.\",\n \"transition\": true,\n \"requires\": [\n {\n \"!\": \"fill-pattern\"\n }\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.19.0\",\n \"android\": \"5.0.0\",\n \"ios\": \"3.5.0\",\n \"macos\": \"0.4.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\",\n \"feature\",\n \"feature-state\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"fill-outline-color\": {\n \"type\": \"color\",\n \"doc\": \"The outline color of the fill. Matches the value of `fill-color` if unspecified.\",\n \"transition\": true,\n \"requires\": [\n {\n \"!\": \"fill-pattern\"\n },\n {\n \"fill-antialias\": true\n }\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.19.0\",\n \"android\": \"5.0.0\",\n \"ios\": \"3.5.0\",\n \"macos\": \"0.4.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\",\n \"feature\",\n \"feature-state\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"fill-translate\": {\n \"type\": \"array\",\n \"value\": \"number\",\n \"length\": 2,\n \"default\": [\n 0,\n 0\n ],\n \"transition\": true,\n \"units\": \"pixels\",\n \"doc\": \"The geometry's offset. Values are [x, y] where negatives indicate left and up, respectively.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"fill-translate-anchor\": {\n \"type\": \"enum\",\n \"values\": {\n \"map\": {\n \"doc\": \"The fill is translated relative to the map.\"\n },\n \"viewport\": {\n \"doc\": \"The fill is translated relative to the viewport.\"\n }\n },\n \"doc\": \"Controls the frame of reference for `fill-translate`.\",\n \"default\": \"map\",\n \"requires\": [\n \"fill-translate\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"fill-pattern\": {\n \"type\": \"resolvedImage\",\n \"transition\": true,\n \"doc\": \"Name of image in sprite to use for drawing image fills. For seamless patterns, image width and height must be a factor of two (2, 4, 8, ..., 512). Note that zoom-dependent expressions will be evaluated only at integer zoom levels.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.49.0\",\n \"android\": \"6.5.0\",\n \"macos\": \"0.11.0\",\n \"ios\": \"4.4.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\",\n \"feature\"\n ]\n },\n \"property-type\": \"cross-faded-data-driven\"\n }\n },\n \"paint_fill-extrusion\": {\n \"fill-extrusion-opacity\": {\n \"type\": \"number\",\n \"default\": 1,\n \"minimum\": 0,\n \"maximum\": 1,\n \"doc\": \"The opacity of the entire fill extrusion layer. This is rendered on a per-layer, not per-feature, basis, and data-driven styling is not available.\",\n \"transition\": true,\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.27.0\",\n \"android\": \"5.1.0\",\n \"ios\": \"3.6.0\",\n \"macos\": \"0.5.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"fill-extrusion-color\": {\n \"type\": \"color\",\n \"default\": \"#000000\",\n \"doc\": \"The base color of the extruded fill. The extrusion's surfaces will be shaded differently based on this color in combination with the root `light` settings. If this color is specified as `rgba` with an alpha component, the alpha component will be ignored; use `fill-extrusion-opacity` to set layer opacity.\",\n \"transition\": true,\n \"requires\": [\n {\n \"!\": \"fill-extrusion-pattern\"\n }\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.27.0\",\n \"android\": \"5.1.0\",\n \"ios\": \"3.6.0\",\n \"macos\": \"0.5.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.27.0\",\n \"android\": \"5.1.0\",\n \"ios\": \"3.6.0\",\n \"macos\": \"0.5.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\",\n \"feature\",\n \"feature-state\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"fill-extrusion-translate\": {\n \"type\": \"array\",\n \"value\": \"number\",\n \"length\": 2,\n \"default\": [\n 0,\n 0\n ],\n \"transition\": true,\n \"units\": \"pixels\",\n \"doc\": \"The geometry's offset. Values are [x, y] where negatives indicate left and up (on the flat plane), respectively.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.27.0\",\n \"android\": \"5.1.0\",\n \"ios\": \"3.6.0\",\n \"macos\": \"0.5.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"fill-extrusion-translate-anchor\": {\n \"type\": \"enum\",\n \"values\": {\n \"map\": {\n \"doc\": \"The fill extrusion is translated relative to the map.\"\n },\n \"viewport\": {\n \"doc\": \"The fill extrusion is translated relative to the viewport.\"\n }\n },\n \"doc\": \"Controls the frame of reference for `fill-extrusion-translate`.\",\n \"default\": \"map\",\n \"requires\": [\n \"fill-extrusion-translate\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.27.0\",\n \"android\": \"5.1.0\",\n \"ios\": \"3.6.0\",\n \"macos\": \"0.5.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"fill-extrusion-pattern\": {\n \"type\": \"resolvedImage\",\n \"transition\": true,\n \"doc\": \"Name of image in sprite to use for drawing images on extruded fills. For seamless patterns, image width and height must be a factor of two (2, 4, 8, ..., 512). Note that zoom-dependent expressions will be evaluated only at integer zoom levels.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.27.0\",\n \"android\": \"5.1.0\",\n \"ios\": \"3.6.0\",\n \"macos\": \"0.5.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.49.0\",\n \"android\": \"6.5.0\",\n \"macos\": \"0.11.0\",\n \"ios\": \"4.4.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\",\n \"feature\"\n ]\n },\n \"property-type\": \"cross-faded-data-driven\"\n },\n \"fill-extrusion-height\": {\n \"type\": \"number\",\n \"default\": 0,\n \"minimum\": 0,\n \"units\": \"meters\",\n \"doc\": \"The height with which to extrude this layer.\",\n \"transition\": true,\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.27.0\",\n \"android\": \"5.1.0\",\n \"ios\": \"3.6.0\",\n \"macos\": \"0.5.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.27.0\",\n \"android\": \"5.1.0\",\n \"ios\": \"3.6.0\",\n \"macos\": \"0.5.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\",\n \"feature\",\n \"feature-state\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"fill-extrusion-base\": {\n \"type\": \"number\",\n \"default\": 0,\n \"minimum\": 0,\n \"units\": \"meters\",\n \"doc\": \"The height with which to extrude the base of this layer. Must be less than or equal to `fill-extrusion-height`.\",\n \"transition\": true,\n \"requires\": [\n \"fill-extrusion-height\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.27.0\",\n \"android\": \"5.1.0\",\n \"ios\": \"3.6.0\",\n \"macos\": \"0.5.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.27.0\",\n \"android\": \"5.1.0\",\n \"ios\": \"3.6.0\",\n \"macos\": \"0.5.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\",\n \"feature\",\n \"feature-state\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"fill-extrusion-vertical-gradient\": {\n \"type\": \"boolean\",\n \"default\": true,\n \"doc\": \"Whether to apply a vertical gradient to the sides of a fill-extrusion layer. If true, sides will be shaded slightly darker farther down.\",\n \"transition\": false,\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.50.0\",\n \"ios\": \"4.7.0\",\n \"macos\": \"0.13.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n }\n },\n \"paint_line\": {\n \"line-opacity\": {\n \"type\": \"number\",\n \"doc\": \"The opacity at which the line will be drawn.\",\n \"default\": 1,\n \"minimum\": 0,\n \"maximum\": 1,\n \"transition\": true,\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.29.0\",\n \"android\": \"5.0.0\",\n \"ios\": \"3.5.0\",\n \"macos\": \"0.4.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\",\n \"feature\",\n \"feature-state\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"line-color\": {\n \"type\": \"color\",\n \"doc\": \"The color with which the line will be drawn.\",\n \"default\": \"#000000\",\n \"transition\": true,\n \"requires\": [\n {\n \"!\": \"line-pattern\"\n }\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.23.0\",\n \"android\": \"5.0.0\",\n \"ios\": \"3.5.0\",\n \"macos\": \"0.4.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\",\n \"feature\",\n \"feature-state\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"line-translate\": {\n \"type\": \"array\",\n \"value\": \"number\",\n \"length\": 2,\n \"default\": [\n 0,\n 0\n ],\n \"transition\": true,\n \"units\": \"pixels\",\n \"doc\": \"The geometry's offset. Values are [x, y] where negatives indicate left and up, respectively.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"line-translate-anchor\": {\n \"type\": \"enum\",\n \"values\": {\n \"map\": {\n \"doc\": \"The line is translated relative to the map.\"\n },\n \"viewport\": {\n \"doc\": \"The line is translated relative to the viewport.\"\n }\n },\n \"doc\": \"Controls the frame of reference for `line-translate`.\",\n \"default\": \"map\",\n \"requires\": [\n \"line-translate\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"line-width\": {\n \"type\": \"number\",\n \"default\": 1,\n \"minimum\": 0,\n \"transition\": true,\n \"units\": \"pixels\",\n \"doc\": \"Stroke thickness.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.39.0\",\n \"android\": \"5.2.0\",\n \"ios\": \"3.7.0\",\n \"macos\": \"0.6.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\",\n \"feature\",\n \"feature-state\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"line-gap-width\": {\n \"type\": \"number\",\n \"default\": 0,\n \"minimum\": 0,\n \"doc\": \"Draws a line casing outside of a line's actual path. Value indicates the width of the inner gap.\",\n \"transition\": true,\n \"units\": \"pixels\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.29.0\",\n \"android\": \"5.0.0\",\n \"ios\": \"3.5.0\",\n \"macos\": \"0.4.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\",\n \"feature\",\n \"feature-state\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"line-offset\": {\n \"type\": \"number\",\n \"default\": 0,\n \"doc\": \"The line's offset. For linear features, a positive value offsets the line to the right, relative to the direction of the line, and a negative value to the left. For polygon features, a positive value results in an inset, and a negative value results in an outset.\",\n \"transition\": true,\n \"units\": \"pixels\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.12.1\",\n \"android\": \"3.0.0\",\n \"ios\": \"3.1.0\",\n \"macos\": \"0.1.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.29.0\",\n \"android\": \"5.0.0\",\n \"ios\": \"3.5.0\",\n \"macos\": \"0.4.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\",\n \"feature\",\n \"feature-state\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"line-blur\": {\n \"type\": \"number\",\n \"default\": 0,\n \"minimum\": 0,\n \"transition\": true,\n \"units\": \"pixels\",\n \"doc\": \"Blur applied to the line, in pixels.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.29.0\",\n \"android\": \"5.0.0\",\n \"ios\": \"3.5.0\",\n \"macos\": \"0.4.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\",\n \"feature\",\n \"feature-state\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"line-dasharray\": {\n \"type\": \"array\",\n \"value\": \"number\",\n \"doc\": \"Specifies the lengths of the alternating dashes and gaps that form the dash pattern. The lengths are later scaled by the line width. To convert a dash length to pixels, multiply the length by the current line width. Note that GeoJSON sources with `lineMetrics: true` specified won't render dashed lines to the expected scale. Also note that zoom-dependent expressions will be evaluated only at integer zoom levels.\",\n \"minimum\": 0,\n \"transition\": true,\n \"units\": \"line widths\",\n \"requires\": [\n {\n \"!\": \"line-pattern\"\n }\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"data-driven styling\": {}\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"cross-faded\"\n },\n \"line-pattern\": {\n \"type\": \"resolvedImage\",\n \"transition\": true,\n \"doc\": \"Name of image in sprite to use for drawing image lines. For seamless patterns, image width must be a factor of two (2, 4, 8, ..., 512). Note that zoom-dependent expressions will be evaluated only at integer zoom levels.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.49.0\",\n \"android\": \"6.5.0\",\n \"macos\": \"0.11.0\",\n \"ios\": \"4.4.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\",\n \"feature\"\n ]\n },\n \"property-type\": \"cross-faded-data-driven\"\n },\n \"line-gradient\": {\n \"type\": \"color\",\n \"doc\": \"Defines a gradient with which to color a line feature. Can only be used with GeoJSON sources that specify `\\\"lineMetrics\\\": true`.\",\n \"transition\": false,\n \"requires\": [\n {\n \"!\": \"line-dasharray\"\n },\n {\n \"!\": \"line-pattern\"\n },\n {\n \"source\": \"geojson\",\n \"has\": {\n \"lineMetrics\": true\n }\n }\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.45.0\",\n \"android\": \"6.5.0\",\n \"ios\": \"4.4.0\",\n \"macos\": \"0.11.0\"\n },\n \"data-driven styling\": {}\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"line-progress\"\n ]\n },\n \"property-type\": \"color-ramp\"\n }\n },\n \"paint_circle\": {\n \"circle-radius\": {\n \"type\": \"number\",\n \"default\": 5,\n \"minimum\": 0,\n \"transition\": true,\n \"units\": \"pixels\",\n \"doc\": \"Circle radius.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.18.0\",\n \"android\": \"5.0.0\",\n \"ios\": \"3.5.0\",\n \"macos\": \"0.4.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\",\n \"feature\",\n \"feature-state\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"circle-color\": {\n \"type\": \"color\",\n \"default\": \"#000000\",\n \"doc\": \"The fill color of the circle.\",\n \"transition\": true,\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.18.0\",\n \"android\": \"5.0.0\",\n \"ios\": \"3.5.0\",\n \"macos\": \"0.4.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\",\n \"feature\",\n \"feature-state\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"circle-blur\": {\n \"type\": \"number\",\n \"default\": 0,\n \"doc\": \"Amount to blur the circle. 1 blurs the circle such that only the centerpoint is full opacity.\",\n \"transition\": true,\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.20.0\",\n \"android\": \"5.0.0\",\n \"ios\": \"3.5.0\",\n \"macos\": \"0.4.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\",\n \"feature\",\n \"feature-state\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"circle-opacity\": {\n \"type\": \"number\",\n \"doc\": \"The opacity at which the circle will be drawn.\",\n \"default\": 1,\n \"minimum\": 0,\n \"maximum\": 1,\n \"transition\": true,\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.20.0\",\n \"android\": \"5.0.0\",\n \"ios\": \"3.5.0\",\n \"macos\": \"0.4.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\",\n \"feature\",\n \"feature-state\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"circle-translate\": {\n \"type\": \"array\",\n \"value\": \"number\",\n \"length\": 2,\n \"default\": [\n 0,\n 0\n ],\n \"transition\": true,\n \"units\": \"pixels\",\n \"doc\": \"The geometry's offset. Values are [x, y] where negatives indicate left and up, respectively.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"circle-translate-anchor\": {\n \"type\": \"enum\",\n \"values\": {\n \"map\": {\n \"doc\": \"The circle is translated relative to the map.\"\n },\n \"viewport\": {\n \"doc\": \"The circle is translated relative to the viewport.\"\n }\n },\n \"doc\": \"Controls the frame of reference for `circle-translate`.\",\n \"default\": \"map\",\n \"requires\": [\n \"circle-translate\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"circle-pitch-scale\": {\n \"type\": \"enum\",\n \"values\": {\n \"map\": {\n \"doc\": \"Circles are scaled according to their apparent distance to the camera.\"\n },\n \"viewport\": {\n \"doc\": \"Circles are not scaled.\"\n }\n },\n \"default\": \"map\",\n \"doc\": \"Controls the scaling behavior of the circle when the map is pitched.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.21.0\",\n \"android\": \"4.2.0\",\n \"ios\": \"3.4.0\",\n \"macos\": \"0.2.1\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"circle-pitch-alignment\": {\n \"type\": \"enum\",\n \"values\": {\n \"map\": {\n \"doc\": \"The circle is aligned to the plane of the map.\"\n },\n \"viewport\": {\n \"doc\": \"The circle is aligned to the plane of the viewport.\"\n }\n },\n \"default\": \"viewport\",\n \"doc\": \"Orientation of circle when map is pitched.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.39.0\",\n \"android\": \"5.2.0\",\n \"ios\": \"3.7.0\",\n \"macos\": \"0.6.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"circle-stroke-width\": {\n \"type\": \"number\",\n \"default\": 0,\n \"minimum\": 0,\n \"transition\": true,\n \"units\": \"pixels\",\n \"doc\": \"The width of the circle's stroke. Strokes are placed outside of the `circle-radius`.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.29.0\",\n \"android\": \"5.0.0\",\n \"ios\": \"3.5.0\",\n \"macos\": \"0.4.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.29.0\",\n \"android\": \"5.0.0\",\n \"ios\": \"3.5.0\",\n \"macos\": \"0.4.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\",\n \"feature\",\n \"feature-state\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"circle-stroke-color\": {\n \"type\": \"color\",\n \"default\": \"#000000\",\n \"doc\": \"The stroke color of the circle.\",\n \"transition\": true,\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.29.0\",\n \"android\": \"5.0.0\",\n \"ios\": \"3.5.0\",\n \"macos\": \"0.4.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.29.0\",\n \"android\": \"5.0.0\",\n \"ios\": \"3.5.0\",\n \"macos\": \"0.4.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\",\n \"feature\",\n \"feature-state\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"circle-stroke-opacity\": {\n \"type\": \"number\",\n \"doc\": \"The opacity of the circle's stroke.\",\n \"default\": 1,\n \"minimum\": 0,\n \"maximum\": 1,\n \"transition\": true,\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.29.0\",\n \"android\": \"5.0.0\",\n \"ios\": \"3.5.0\",\n \"macos\": \"0.4.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.29.0\",\n \"android\": \"5.0.0\",\n \"ios\": \"3.5.0\",\n \"macos\": \"0.4.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\",\n \"feature\",\n \"feature-state\"\n ]\n },\n \"property-type\": \"data-driven\"\n }\n },\n \"paint_heatmap\": {\n \"heatmap-radius\": {\n \"type\": \"number\",\n \"default\": 30,\n \"minimum\": 1,\n \"transition\": true,\n \"units\": \"pixels\",\n \"doc\": \"Radius of influence of one heatmap point in pixels. Increasing the value makes the heatmap smoother, but less detailed.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.43.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\",\n \"feature\",\n \"feature-state\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"heatmap-weight\": {\n \"type\": \"number\",\n \"default\": 1,\n \"minimum\": 0,\n \"transition\": false,\n \"doc\": \"A measure of how much an individual point contributes to the heatmap. A value of 10 would be equivalent to having 10 points of weight 1 in the same spot. Especially useful when combined with clustering.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\",\n \"feature\",\n \"feature-state\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"heatmap-intensity\": {\n \"type\": \"number\",\n \"default\": 1,\n \"minimum\": 0,\n \"transition\": true,\n \"doc\": \"Similar to `heatmap-weight` but controls the intensity of the heatmap globally. Primarily used for adjusting the heatmap based on zoom level.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"heatmap-color\": {\n \"type\": \"color\",\n \"default\": [\n \"interpolate\",\n [\n \"linear\"\n ],\n [\n \"heatmap-density\"\n ],\n 0,\n \"rgba(0, 0, 255, 0)\",\n 0.1,\n \"royalblue\",\n 0.3,\n \"cyan\",\n 0.5,\n \"lime\",\n 0.7,\n \"yellow\",\n 1,\n \"red\"\n ],\n \"doc\": \"Defines the color of each pixel based on its density value in a heatmap. Should be an expression that uses `[\\\"heatmap-density\\\"]` as input.\",\n \"transition\": false,\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n },\n \"data-driven styling\": {}\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"heatmap-density\"\n ]\n },\n \"property-type\": \"color-ramp\"\n },\n \"heatmap-opacity\": {\n \"type\": \"number\",\n \"doc\": \"The global opacity at which the heatmap layer will be drawn.\",\n \"default\": 1,\n \"minimum\": 0,\n \"maximum\": 1,\n \"transition\": true,\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.41.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n }\n },\n \"paint_symbol\": {\n \"icon-opacity\": {\n \"doc\": \"The opacity at which the icon will be drawn.\",\n \"type\": \"number\",\n \"default\": 1,\n \"minimum\": 0,\n \"maximum\": 1,\n \"transition\": true,\n \"requires\": [\n \"icon-image\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.33.0\",\n \"android\": \"5.0.0\",\n \"ios\": \"3.5.0\",\n \"macos\": \"0.4.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\",\n \"feature\",\n \"feature-state\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"icon-color\": {\n \"type\": \"color\",\n \"default\": \"#000000\",\n \"transition\": true,\n \"doc\": \"The color of the icon. This can only be used with sdf icons.\",\n \"requires\": [\n \"icon-image\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.33.0\",\n \"android\": \"5.0.0\",\n \"ios\": \"3.5.0\",\n \"macos\": \"0.4.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\",\n \"feature\",\n \"feature-state\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"icon-halo-color\": {\n \"type\": \"color\",\n \"default\": \"rgba(0, 0, 0, 0)\",\n \"transition\": true,\n \"doc\": \"The color of the icon's halo. Icon halos can only be used with SDF icons.\",\n \"requires\": [\n \"icon-image\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.33.0\",\n \"android\": \"5.0.0\",\n \"ios\": \"3.5.0\",\n \"macos\": \"0.4.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\",\n \"feature\",\n \"feature-state\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"icon-halo-width\": {\n \"type\": \"number\",\n \"default\": 0,\n \"minimum\": 0,\n \"transition\": true,\n \"units\": \"pixels\",\n \"doc\": \"Distance of halo to the icon outline.\",\n \"requires\": [\n \"icon-image\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.33.0\",\n \"android\": \"5.0.0\",\n \"ios\": \"3.5.0\",\n \"macos\": \"0.4.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\",\n \"feature\",\n \"feature-state\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"icon-halo-blur\": {\n \"type\": \"number\",\n \"default\": 0,\n \"minimum\": 0,\n \"transition\": true,\n \"units\": \"pixels\",\n \"doc\": \"Fade out the halo towards the outside.\",\n \"requires\": [\n \"icon-image\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.33.0\",\n \"android\": \"5.0.0\",\n \"ios\": \"3.5.0\",\n \"macos\": \"0.4.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\",\n \"feature\",\n \"feature-state\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"icon-translate\": {\n \"type\": \"array\",\n \"value\": \"number\",\n \"length\": 2,\n \"default\": [\n 0,\n 0\n ],\n \"transition\": true,\n \"units\": \"pixels\",\n \"doc\": \"Distance that the icon's anchor is moved from its original placement. Positive values indicate right and down, while negative values indicate left and up.\",\n \"requires\": [\n \"icon-image\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"icon-translate-anchor\": {\n \"type\": \"enum\",\n \"values\": {\n \"map\": {\n \"doc\": \"Icons are translated relative to the map.\"\n },\n \"viewport\": {\n \"doc\": \"Icons are translated relative to the viewport.\"\n }\n },\n \"doc\": \"Controls the frame of reference for `icon-translate`.\",\n \"default\": \"map\",\n \"requires\": [\n \"icon-image\",\n \"icon-translate\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"text-opacity\": {\n \"type\": \"number\",\n \"doc\": \"The opacity at which the text will be drawn.\",\n \"default\": 1,\n \"minimum\": 0,\n \"maximum\": 1,\n \"transition\": true,\n \"requires\": [\n \"text-field\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.33.0\",\n \"android\": \"5.0.0\",\n \"ios\": \"3.5.0\",\n \"macos\": \"0.4.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\",\n \"feature\",\n \"feature-state\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"text-color\": {\n \"type\": \"color\",\n \"doc\": \"The color with which the text will be drawn.\",\n \"default\": \"#000000\",\n \"transition\": true,\n \"overridable\": true,\n \"requires\": [\n \"text-field\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.33.0\",\n \"android\": \"5.0.0\",\n \"ios\": \"3.5.0\",\n \"macos\": \"0.4.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\",\n \"feature\",\n \"feature-state\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"text-halo-color\": {\n \"type\": \"color\",\n \"default\": \"rgba(0, 0, 0, 0)\",\n \"transition\": true,\n \"doc\": \"The color of the text's halo, which helps it stand out from backgrounds.\",\n \"requires\": [\n \"text-field\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.33.0\",\n \"android\": \"5.0.0\",\n \"ios\": \"3.5.0\",\n \"macos\": \"0.4.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\",\n \"feature\",\n \"feature-state\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"text-halo-width\": {\n \"type\": \"number\",\n \"default\": 0,\n \"minimum\": 0,\n \"transition\": true,\n \"units\": \"pixels\",\n \"doc\": \"Distance of halo to the font outline. Max text halo width is 1/4 of the font-size.\",\n \"requires\": [\n \"text-field\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.33.0\",\n \"android\": \"5.0.0\",\n \"ios\": \"3.5.0\",\n \"macos\": \"0.4.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\",\n \"feature\",\n \"feature-state\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"text-halo-blur\": {\n \"type\": \"number\",\n \"default\": 0,\n \"minimum\": 0,\n \"transition\": true,\n \"units\": \"pixels\",\n \"doc\": \"The halo's fadeout distance towards the outside.\",\n \"requires\": [\n \"text-field\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"data-driven styling\": {\n \"js\": \"0.33.0\",\n \"android\": \"5.0.0\",\n \"ios\": \"3.5.0\",\n \"macos\": \"0.4.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\",\n \"feature\",\n \"feature-state\"\n ]\n },\n \"property-type\": \"data-driven\"\n },\n \"text-translate\": {\n \"type\": \"array\",\n \"value\": \"number\",\n \"length\": 2,\n \"default\": [\n 0,\n 0\n ],\n \"transition\": true,\n \"units\": \"pixels\",\n \"doc\": \"Distance that the text's anchor is moved from its original placement. Positive values indicate right and down, while negative values indicate left and up.\",\n \"requires\": [\n \"text-field\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"text-translate-anchor\": {\n \"type\": \"enum\",\n \"values\": {\n \"map\": {\n \"doc\": \"The text is translated relative to the map.\"\n },\n \"viewport\": {\n \"doc\": \"The text is translated relative to the viewport.\"\n }\n },\n \"doc\": \"Controls the frame of reference for `text-translate`.\",\n \"default\": \"map\",\n \"requires\": [\n \"text-field\",\n \"text-translate\"\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n }\n },\n \"paint_raster\": {\n \"raster-opacity\": {\n \"type\": \"number\",\n \"doc\": \"The opacity at which the image will be drawn.\",\n \"default\": 1,\n \"minimum\": 0,\n \"maximum\": 1,\n \"transition\": true,\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"raster-hue-rotate\": {\n \"type\": \"number\",\n \"default\": 0,\n \"period\": 360,\n \"transition\": true,\n \"units\": \"degrees\",\n \"doc\": \"Rotates hues around the color wheel.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"raster-brightness-min\": {\n \"type\": \"number\",\n \"doc\": \"Increase or reduce the brightness of the image. The value is the minimum brightness.\",\n \"default\": 0,\n \"minimum\": 0,\n \"maximum\": 1,\n \"transition\": true,\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"raster-brightness-max\": {\n \"type\": \"number\",\n \"doc\": \"Increase or reduce the brightness of the image. The value is the maximum brightness.\",\n \"default\": 1,\n \"minimum\": 0,\n \"maximum\": 1,\n \"transition\": true,\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"raster-saturation\": {\n \"type\": \"number\",\n \"doc\": \"Increase or reduce the saturation of the image.\",\n \"default\": 0,\n \"minimum\": -1,\n \"maximum\": 1,\n \"transition\": true,\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"raster-contrast\": {\n \"type\": \"number\",\n \"doc\": \"Increase or reduce the contrast of the image.\",\n \"default\": 0,\n \"minimum\": -1,\n \"maximum\": 1,\n \"transition\": true,\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"raster-resampling\": {\n \"type\": \"enum\",\n \"doc\": \"The resampling/interpolation method to use for overscaling, also known as texture magnification filter\",\n \"values\": {\n \"linear\": {\n \"doc\": \"(Bi)linear filtering interpolates pixel values using the weighted average of the four closest original source pixels creating a smooth but blurry look when overscaled\"\n },\n \"nearest\": {\n \"doc\": \"Nearest neighbor filtering interpolates pixel values using the nearest original source pixel creating a sharp but pixelated look when overscaled\"\n }\n },\n \"default\": \"linear\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.47.0\",\n \"android\": \"6.3.0\",\n \"ios\": \"4.2.0\",\n \"macos\": \"0.9.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"raster-fade-duration\": {\n \"type\": \"number\",\n \"default\": 300,\n \"minimum\": 0,\n \"transition\": false,\n \"units\": \"milliseconds\",\n \"doc\": \"Fade duration when a new tile is added.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n }\n },\n \"paint_hillshade\": {\n \"hillshade-illumination-direction\": {\n \"type\": \"number\",\n \"default\": 335,\n \"minimum\": 0,\n \"maximum\": 359,\n \"doc\": \"The direction of the light source used to generate the hillshading with 0 as the top of the viewport if `hillshade-illumination-anchor` is set to `viewport` and due north if `hillshade-illumination-anchor` is set to `map`.\",\n \"transition\": false,\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.43.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"hillshade-illumination-anchor\": {\n \"type\": \"enum\",\n \"values\": {\n \"map\": {\n \"doc\": \"The hillshade illumination is relative to the north direction.\"\n },\n \"viewport\": {\n \"doc\": \"The hillshade illumination is relative to the top of the viewport.\"\n }\n },\n \"default\": \"viewport\",\n \"doc\": \"Direction of light source when map is rotated.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.43.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"hillshade-exaggeration\": {\n \"type\": \"number\",\n \"doc\": \"Intensity of the hillshade\",\n \"default\": 0.5,\n \"minimum\": 0,\n \"maximum\": 1,\n \"transition\": true,\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.43.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"hillshade-shadow-color\": {\n \"type\": \"color\",\n \"default\": \"#000000\",\n \"doc\": \"The shading color of areas that face away from the light source.\",\n \"transition\": true,\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.43.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"hillshade-highlight-color\": {\n \"type\": \"color\",\n \"default\": \"#FFFFFF\",\n \"doc\": \"The shading color of areas that faces towards the light source.\",\n \"transition\": true,\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.43.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"hillshade-accent-color\": {\n \"type\": \"color\",\n \"default\": \"#000000\",\n \"doc\": \"The shading color used to accentuate rugged terrain like sharp cliffs and gorges.\",\n \"transition\": true,\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.43.0\",\n \"android\": \"6.0.0\",\n \"ios\": \"4.0.0\",\n \"macos\": \"0.7.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n }\n },\n \"paint_background\": {\n \"background-color\": {\n \"type\": \"color\",\n \"default\": \"#000000\",\n \"doc\": \"The color with which the background will be drawn.\",\n \"transition\": true,\n \"requires\": [\n {\n \"!\": \"background-pattern\"\n }\n ],\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n },\n \"background-pattern\": {\n \"type\": \"resolvedImage\",\n \"transition\": true,\n \"doc\": \"Name of image in sprite to use for drawing an image background. For seamless patterns, image width and height must be a factor of two (2, 4, 8, ..., 512). Note that zoom-dependent expressions will be evaluated only at integer zoom levels.\",\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n },\n \"data-driven styling\": {}\n },\n \"expression\": {\n \"interpolated\": false,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"cross-faded\"\n },\n \"background-opacity\": {\n \"type\": \"number\",\n \"default\": 1,\n \"minimum\": 0,\n \"maximum\": 1,\n \"doc\": \"The opacity at which the background will be drawn.\",\n \"transition\": true,\n \"sdk-support\": {\n \"basic functionality\": {\n \"js\": \"0.10.0\",\n \"android\": \"2.0.1\",\n \"ios\": \"2.0.0\",\n \"macos\": \"0.1.0\"\n }\n },\n \"expression\": {\n \"interpolated\": true,\n \"parameters\": [\n \"zoom\"\n ]\n },\n \"property-type\": \"data-constant\"\n }\n },\n \"transition\": {\n \"duration\": {\n \"type\": \"number\",\n \"default\": 300,\n \"minimum\": 0,\n \"units\": \"milliseconds\",\n \"doc\": \"Time allotted for transitions to complete.\"\n },\n \"delay\": {\n \"type\": \"number\",\n \"default\": 0,\n \"minimum\": 0,\n \"units\": \"milliseconds\",\n \"doc\": \"Length of time before a transition begins.\"\n }\n },\n \"property-type\": {\n \"data-driven\": {\n \"type\": \"property-type\",\n \"doc\": \"Property is interpolable and can be represented using a property expression.\"\n },\n \"cross-faded\": {\n \"type\": \"property-type\",\n \"doc\": \"Property is non-interpolable; rather, its values will be cross-faded to smoothly transition between integer zooms.\"\n },\n \"cross-faded-data-driven\": {\n \"type\": \"property-type\",\n \"doc\": \"Property is non-interpolable; rather, its values will be cross-faded to smoothly transition between integer zooms. It can be represented using a property expression.\"\n },\n \"color-ramp\": {\n \"type\": \"property-type\",\n \"doc\": \"Property should be specified using a color ramp from which the output color can be sampled based on a property calculation.\"\n },\n \"data-constant\": {\n \"type\": \"property-type\",\n \"doc\": \"Property is interpolable but cannot be represented using a property expression.\"\n },\n \"constant\": {\n \"type\": \"property-type\",\n \"doc\": \"Property is constant across all zoom levels and property values.\"\n }\n },\n \"promoteId\": {\n \"*\": {\n \"type\": \"string\",\n \"doc\": \"A name of a feature property to use as ID for feature state.\"\n }\n }\n};\n\n// Note: This regex matches even invalid JSON strings, but since we\u2019re\n// working on the output of `JSON.stringify` we know that only valid strings\n// are present (unless the user supplied a weird `options.indent` but in\n// that case we don\u2019t care since the output would be invalid anyway).\nconst stringOrChar = /(\"(?:[^\\\\\"]|\\\\.)*\")|[:,]/g;\nfunction stringify(passedObj, options = {}) {\n const indent = JSON.stringify([1], undefined, options.indent === undefined ? 2 : options.indent).slice(2, -3);\n const maxLength = indent === '' ? Infinity : options.maxLength === undefined ? 80 : options.maxLength;\n let {replacer} = options;\n return function _stringify(obj, currentIndent, reserved) {\n if (obj && typeof obj.toJSON === 'function') {\n obj = obj.toJSON();\n }\n const string = JSON.stringify(obj, replacer);\n if (string === undefined) {\n return string;\n }\n const length = maxLength - currentIndent.length - reserved;\n if (string.length <= length) {\n const prettified = string.replace(stringOrChar, (match, stringLiteral) => {\n return stringLiteral || `${ match } `;\n });\n if (prettified.length <= length) {\n return prettified;\n }\n }\n if (replacer != null) {\n obj = JSON.parse(string);\n replacer = undefined;\n }\n if (typeof obj === 'object' && obj !== null) {\n const nextIndent = currentIndent + indent;\n const items = [];\n let index = 0;\n let start;\n let end;\n if (Array.isArray(obj)) {\n start = '[';\n end = ']';\n const {length} = obj;\n for (; index < length; index++) {\n items.push(_stringify(obj[index], nextIndent, index === length - 1 ? 0 : 1) || 'null');\n }\n } else {\n start = '{';\n end = '}';\n const keys = Object.keys(obj);\n const {length} = keys;\n for (; index < length; index++) {\n const key = keys[index];\n const keyPart = `${ JSON.stringify(key) }: `;\n const value = _stringify(obj[key], nextIndent, keyPart.length + (index === length - 1 ? 0 : 1));\n if (value !== undefined) {\n items.push(keyPart + value);\n }\n }\n }\n if (items.length > 0) {\n return [\n start,\n indent + items.join(`,\\n${ nextIndent }`),\n end\n ].join(`\\n${ currentIndent }`);\n }\n }\n return string;\n }(passedObj, '', 0);\n}\n\nfunction sortKeysBy(obj, reference) {\n const result = {};\n for (const key in reference) {\n if (obj[key] !== undefined) {\n result[key] = obj[key];\n }\n }\n for (const key in obj) {\n if (result[key] === undefined) {\n result[key] = obj[key];\n }\n }\n return result;\n}\n/**\n * Format a MapLibre GL Style. Returns a stringified style with its keys\n * sorted in the same order as the reference style.\n *\n * The optional `space` argument is passed to\n * [`JSON.stringify`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify)\n * to generate formatted output.\n *\n * If `space` is unspecified, a default of `2` spaces will be used.\n *\n * @private\n * @param {Object} style a MapLibre GL Style\n * @param {number} [space] space argument to pass to `JSON.stringify`\n * @returns {string} stringified formatted JSON\n * @example\n * var fs = require('fs');\n * var format = require('maplibre-gl-style-spec').format;\n * var style = fs.readFileSync('./source.json', 'utf8');\n * fs.writeFileSync('./dest.json', format(style));\n * fs.writeFileSync('./dest.min.json', format(style, 0));\n */\nfunction format(style, space = 2) {\n style = sortKeysBy(style, v8Spec.$root);\n if (style.layers) {\n style.layers = style.layers.map((layer) => sortKeysBy(layer, v8Spec.layer));\n }\n return stringify(style, { indent: space });\n}\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nvar url = {};\n\nvar punycode$1 = {exports: {}};\n\n/*! https://mths.be/punycode v1.3.2 by @mathias */\n\n(function (module, exports) {\n\t(function (root) {\n\t /** Detect free variables */\n\t var freeExports = exports && !exports.nodeType && exports;\n\t var freeModule = module && !module.nodeType && module;\n\t var freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal;\n\t if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal) {\n\t root = freeGlobal;\n\t }\n\t /**\n\t\t * The `punycode` object.\n\t\t * @name punycode\n\t\t * @type Object\n\t\t */\n\t var punycode,\n\t /** Highest positive signed 32-bit float value */\n\t maxInt = 2147483647,\n\t // aka. 0x7FFFFFFF or 2^31-1\n\t /** Bootstring parameters */\n\t base = 36, tMin = 1, tMax = 26, skew = 38, damp = 700, initialBias = 72, initialN = 128,\n\t // 0x80\n\t delimiter = '-',\n\t // '\\x2D'\n\t /** Regular expressions */\n\t regexPunycode = /^xn--/, regexNonASCII = /[^\\x20-\\x7E]/,\n\t // unprintable ASCII chars + non-ASCII chars\n\t regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g,\n\t // RFC 3490 separators\n\t /** Error messages */\n\t errors = {\n\t 'overflow': 'Overflow: input needs wider integers to process',\n\t 'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t 'invalid-input': 'Invalid input'\n\t },\n\t /** Convenience shortcuts */\n\t baseMinusTMin = base - tMin, floor = Math.floor, stringFromCharCode = String.fromCharCode,\n\t /** Temporary variable */\n\t key;\n\t /*--------------------------------------------------------------------------*/\n\t /**\n\t\t * A generic error utility function.\n\t\t * @private\n\t\t * @param {String} type The error type.\n\t\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t\t */\n\t function error(type) {\n\t throw RangeError(errors[type]);\n\t }\n\t /**\n\t\t * A generic `Array#map` utility function.\n\t\t * @private\n\t\t * @param {Array} array The array to iterate over.\n\t\t * @param {Function} callback The function that gets called for every array\n\t\t * item.\n\t\t * @returns {Array} A new array of values returned by the callback function.\n\t\t */\n\t function map(array, fn) {\n\t var length = array.length;\n\t var result = [];\n\t while (length--) {\n\t result[length] = fn(array[length]);\n\t }\n\t return result;\n\t }\n\t /**\n\t\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t\t * addresses.\n\t\t * @private\n\t\t * @param {String} domain The domain name or email address.\n\t\t * @param {Function} callback The function that gets called for every\n\t\t * character.\n\t\t * @returns {Array} A new string of characters returned by the callback\n\t\t * function.\n\t\t */\n\t function mapDomain(string, fn) {\n\t var parts = string.split('@');\n\t var result = '';\n\t if (parts.length > 1) {\n\t // In email addresses, only the domain name should be punycoded. Leave\n\t // the local part (i.e. everything up to `@`) intact.\n\t result = parts[0] + '@';\n\t string = parts[1];\n\t }\n\t // Avoid `split(regex)` for IE8 compatibility. See #17.\n\t string = string.replace(regexSeparators, '.');\n\t var labels = string.split('.');\n\t var encoded = map(labels, fn).join('.');\n\t return result + encoded;\n\t }\n\t /**\n\t\t * Creates an array containing the numeric code points of each Unicode\n\t\t * character in the string. While JavaScript uses UCS-2 internally,\n\t\t * this function will convert a pair of surrogate halves (each of which\n\t\t * UCS-2 exposes as separate characters) into a single code point,\n\t\t * matching UTF-16.\n\t\t * @see `punycode.ucs2.encode`\n\t\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t\t * @memberOf punycode.ucs2\n\t\t * @name decode\n\t\t * @param {String} string The Unicode input string (UCS-2).\n\t\t * @returns {Array} The new array of code points.\n\t\t */\n\t function ucs2decode(string) {\n\t var output = [], counter = 0, length = string.length, value, extra;\n\t while (counter < length) {\n\t value = string.charCodeAt(counter++);\n\t if (value >= 55296 && value <= 56319 && counter < length) {\n\t // high surrogate, and there is a next character\n\t extra = string.charCodeAt(counter++);\n\t if ((extra & 64512) == 56320) {\n\t // low surrogate\n\t output.push(((value & 1023) << 10) + (extra & 1023) + 65536);\n\t } else {\n\t // unmatched surrogate; only append this code unit, in case the next\n\t // code unit is the high surrogate of a surrogate pair\n\t output.push(value);\n\t counter--;\n\t }\n\t } else {\n\t output.push(value);\n\t }\n\t }\n\t return output;\n\t }\n\t /**\n\t\t * Creates a string based on an array of numeric code points.\n\t\t * @see `punycode.ucs2.decode`\n\t\t * @memberOf punycode.ucs2\n\t\t * @name encode\n\t\t * @param {Array} codePoints The array of numeric code points.\n\t\t * @returns {String} The new Unicode string (UCS-2).\n\t\t */\n\t function ucs2encode(array) {\n\t return map(array, function (value) {\n\t var output = '';\n\t if (value > 65535) {\n\t value -= 65536;\n\t output += stringFromCharCode(value >>> 10 & 1023 | 55296);\n\t value = 56320 | value & 1023;\n\t }\n\t output += stringFromCharCode(value);\n\t return output;\n\t }).join('');\n\t }\n\t /**\n\t\t * Converts a basic code point into a digit/integer.\n\t\t * @see `digitToBasic()`\n\t\t * @private\n\t\t * @param {Number} codePoint The basic numeric code point value.\n\t\t * @returns {Number} The numeric value of a basic code point (for use in\n\t\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t\t * the code point does not represent a value.\n\t\t */\n\t function basicToDigit(codePoint) {\n\t if (codePoint - 48 < 10) {\n\t return codePoint - 22;\n\t }\n\t if (codePoint - 65 < 26) {\n\t return codePoint - 65;\n\t }\n\t if (codePoint - 97 < 26) {\n\t return codePoint - 97;\n\t }\n\t return base;\n\t }\n\t /**\n\t\t * Converts a digit/integer into a basic code point.\n\t\t * @see `basicToDigit()`\n\t\t * @private\n\t\t * @param {Number} digit The numeric value of a basic code point.\n\t\t * @returns {Number} The basic code point whose value (when used for\n\t\t * representing integers) is `digit`, which needs to be in the range\n\t\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t\t * used; else, the lowercase form is used. The behavior is undefined\n\t\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t\t */\n\t function digitToBasic(digit, flag) {\n\t // 0..25 map to ASCII a..z or A..Z\n\t // 26..35 map to ASCII 0..9\n\t return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t }\n\t /**\n\t\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t\t * http://tools.ietf.org/html/rfc3492#section-3.4\n\t\t * @private\n\t\t */\n\t function adapt(delta, numPoints, firstTime) {\n\t var k = 0;\n\t delta = firstTime ? floor(delta / damp) : delta >> 1;\n\t delta += floor(delta / numPoints);\n\t for (; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t delta = floor(delta / baseMinusTMin);\n\t }\n\t return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t }\n\t /**\n\t\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t\t * symbols.\n\t\t * @memberOf punycode\n\t\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t\t * @returns {String} The resulting string of Unicode symbols.\n\t\t */\n\t function decode(input) {\n\t // Don't use UCS-2\n\t var output = [], inputLength = input.length, out, i = 0, n = initialN, bias = initialBias, basic, j, index, oldi, w, k, digit, t,\n\t /** Cached calculation results */\n\t baseMinusT;\n\t // Handle the basic code points: let `basic` be the number of input code\n\t // points before the last delimiter, or `0` if there is none, then copy\n\t // the first basic code points to the output.\n\t basic = input.lastIndexOf(delimiter);\n\t if (basic < 0) {\n\t basic = 0;\n\t }\n\t for (j = 0; j < basic; ++j) {\n\t // if it's not a basic code point\n\t if (input.charCodeAt(j) >= 128) {\n\t error('not-basic');\n\t }\n\t output.push(input.charCodeAt(j));\n\t }\n\t // Main decoding loop: start just after the last delimiter if any basic code\n\t // points were copied; start at the beginning otherwise.\n\t for (index = basic > 0 ? basic + 1 : 0; index < inputLength;) {\n\t // `index` is the index of the next character to be consumed.\n\t // Decode a generalized variable-length integer into `delta`,\n\t // which gets added to `i`. The overflow checking is easier\n\t // if we increase `i` as we go, then subtract off its starting\n\t // value at the end to obtain `delta`.\n\t for (oldi = i, w = 1, k = base;; k += base) {\n\t if (index >= inputLength) {\n\t error('invalid-input');\n\t }\n\t digit = basicToDigit(input.charCodeAt(index++));\n\t if (digit >= base || digit > floor((maxInt - i) / w)) {\n\t error('overflow');\n\t }\n\t i += digit * w;\n\t t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n\t if (digit < t) {\n\t break;\n\t }\n\t baseMinusT = base - t;\n\t if (w > floor(maxInt / baseMinusT)) {\n\t error('overflow');\n\t }\n\t w *= baseMinusT;\n\t }\n\t out = output.length + 1;\n\t bias = adapt(i - oldi, out, oldi == 0);\n\t // `i` was supposed to wrap around from `out` to `0`,\n\t // incrementing `n` each time, so we'll fix that now:\n\t if (floor(i / out) > maxInt - n) {\n\t error('overflow');\n\t }\n\t n += floor(i / out);\n\t i %= out;\n\t // Insert `n` at position `i` of the output\n\t output.splice(i++, 0, n);\n\t }\n\t return ucs2encode(output);\n\t }\n\t /**\n\t\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t\t * Punycode string of ASCII-only symbols.\n\t\t * @memberOf punycode\n\t\t * @param {String} input The string of Unicode symbols.\n\t\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t\t */\n\t function encode(input) {\n\t var n, delta, handledCPCount, basicLength, bias, j, m, q, k, t, currentValue, output = [],\n\t /** `inputLength` will hold the number of code points in `input`. */\n\t inputLength,\n\t /** Cached calculation results */\n\t handledCPCountPlusOne, baseMinusT, qMinusT;\n\t // Convert the input in UCS-2 to Unicode\n\t input = ucs2decode(input);\n\t // Cache the length\n\t inputLength = input.length;\n\t // Initialize the state\n\t n = initialN;\n\t delta = 0;\n\t bias = initialBias;\n\t // Handle the basic code points\n\t for (j = 0; j < inputLength; ++j) {\n\t currentValue = input[j];\n\t if (currentValue < 128) {\n\t output.push(stringFromCharCode(currentValue));\n\t }\n\t }\n\t handledCPCount = basicLength = output.length;\n\t // `handledCPCount` is the number of code points that have been handled;\n\t // `basicLength` is the number of basic code points.\n\t // Finish the basic string - if it is not empty - with a delimiter\n\t if (basicLength) {\n\t output.push(delimiter);\n\t }\n\t // Main encoding loop:\n\t while (handledCPCount < inputLength) {\n\t // All non-basic code points < n have been handled already. Find the next\n\t // larger one:\n\t for (m = maxInt, j = 0; j < inputLength; ++j) {\n\t currentValue = input[j];\n\t if (currentValue >= n && currentValue < m) {\n\t m = currentValue;\n\t }\n\t }\n\t // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t // but guard against overflow\n\t handledCPCountPlusOne = handledCPCount + 1;\n\t if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t error('overflow');\n\t }\n\t delta += (m - n) * handledCPCountPlusOne;\n\t n = m;\n\t for (j = 0; j < inputLength; ++j) {\n\t currentValue = input[j];\n\t if (currentValue < n && ++delta > maxInt) {\n\t error('overflow');\n\t }\n\t if (currentValue == n) {\n\t // Represent delta as a generalized variable-length integer\n\t for (q = delta, k = base;; k += base) {\n\t t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n\t if (q < t) {\n\t break;\n\t }\n\t qMinusT = q - t;\n\t baseMinusT = base - t;\n\t output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)));\n\t q = floor(qMinusT / baseMinusT);\n\t }\n\t output.push(stringFromCharCode(digitToBasic(q, 0)));\n\t bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t delta = 0;\n\t ++handledCPCount;\n\t }\n\t }\n\t ++delta;\n\t ++n;\n\t }\n\t return output.join('');\n\t }\n\t /**\n\t\t * Converts a Punycode string representing a domain name or an email address\n\t\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t\t * it doesn't matter if you call it on a string that has already been\n\t\t * converted to Unicode.\n\t\t * @memberOf punycode\n\t\t * @param {String} input The Punycoded domain name or email address to\n\t\t * convert to Unicode.\n\t\t * @returns {String} The Unicode representation of the given Punycode\n\t\t * string.\n\t\t */\n\t function toUnicode(input) {\n\t return mapDomain(input, function (string) {\n\t return regexPunycode.test(string) ? decode(string.slice(4).toLowerCase()) : string;\n\t });\n\t }\n\t /**\n\t\t * Converts a Unicode string representing a domain name or an email address to\n\t\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t\t * ASCII.\n\t\t * @memberOf punycode\n\t\t * @param {String} input The domain name or email address to convert, as a\n\t\t * Unicode string.\n\t\t * @returns {String} The Punycode representation of the given domain name or\n\t\t * email address.\n\t\t */\n\t function toASCII(input) {\n\t return mapDomain(input, function (string) {\n\t return regexNonASCII.test(string) ? 'xn--' + encode(string) : string;\n\t });\n\t }\n\t /*--------------------------------------------------------------------------*/\n\t /** Define the public API */\n\t punycode = {\n\t /**\n\t\t\t * A string representing the current Punycode.js version number.\n\t\t\t * @memberOf punycode\n\t\t\t * @type String\n\t\t\t */\n\t 'version': '1.3.2',\n\t /**\n\t\t\t * An object of methods to convert from JavaScript's internal character\n\t\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t\t\t * @memberOf punycode\n\t\t\t * @type Object\n\t\t\t */\n\t 'ucs2': {\n\t 'decode': ucs2decode,\n\t 'encode': ucs2encode\n\t },\n\t 'decode': decode,\n\t 'encode': encode,\n\t 'toASCII': toASCII,\n\t 'toUnicode': toUnicode\n\t };\n\t /** Expose `punycode` */\n\t // Some AMD build optimizers, like r.js, check for specific condition patterns\n\t // like the following:\n\t if (freeExports && freeModule) {\n\t if (module.exports == freeExports) {\n\t // in Node.js or RingoJS v0.8.0+\n\t freeModule.exports = punycode;\n\t } else {\n\t // in Narwhal or RingoJS v0.7.0-\n\t for (key in punycode) {\n\t punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t }\n\t }\n\t } else {\n\t // in Rhino or a web browser\n\t root.punycode = punycode;\n\t }\n\t}(commonjsGlobal));\n} (punycode$1, punycode$1.exports));\n\nvar util$3 = {\n isString: function (arg) {\n return typeof arg === 'string';\n },\n isObject: function (arg) {\n return typeof arg === 'object' && arg !== null;\n },\n isNull: function (arg) {\n return arg === null;\n },\n isNullOrUndefined: function (arg) {\n return arg == null;\n }\n};\n\nvar querystring$1 = {};\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty$1(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\nvar decode = function (qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n var regexp = /\\+/g;\n qs = qs.split(sep);\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'), idx = x.indexOf(eq), kstr, vstr, k, v;\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n if (!hasOwnProperty$1(obj, k)) {\n obj[k] = v;\n } else if (Array.isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [\n obj[k],\n v\n ];\n }\n }\n return obj;\n};\n\nvar stringifyPrimitive = function (v) {\n switch (typeof v) {\n case 'string':\n return v;\n case 'boolean':\n return v ? 'true' : 'false';\n case 'number':\n return isFinite(v) ? v : '';\n default:\n return '';\n }\n};\nvar encode = function (obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n if (typeof obj === 'object') {\n return Object.keys(obj).map(function (k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (Array.isArray(obj[k])) {\n return obj[k].map(function (v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n }\n if (!name)\n return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq + encodeURIComponent(stringifyPrimitive(obj));\n};\n\nquerystring$1.decode = querystring$1.parse = decode;\nquerystring$1.encode = querystring$1.stringify = encode;\n\nvar punycode = punycode$1.exports;\nvar util$2 = util$3;\nurl.parse = urlParse;\nurl.resolve = urlResolve;\nurl.resolveObject = urlResolveObject;\nurl.format = urlFormat;\nurl.Url = Url;\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n// Reference: RFC 3986, RFC 1808, RFC 2396\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i, portPattern = /:[0-9]*$/,\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = [\n '<',\n '>',\n '\"',\n '`',\n ' ',\n '\\r',\n '\\n',\n '\\t'\n ],\n // RFC 2396: characters not allowed for various reasons.\n unwise = [\n '{',\n '}',\n '|',\n '\\\\',\n '^',\n '`'\n ].concat(delims),\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = [\n '%',\n '/',\n '?',\n ';',\n '#'\n ].concat(autoEscape), hostEndingChars = [\n '/',\n '?',\n '#'\n ], hostnameMaxLen = 255, hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/, hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n }, querystring = querystring$1;\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util$2.isObject(url) && url instanceof Url)\n return url;\n var u = new Url();\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\nUrl.prototype.parse = function (url, parseQueryString, slashesDenoteHost) {\n if (!util$2.isString(url)) {\n throw new TypeError('Parameter \\'url\\' must be a string, not ' + typeof url);\n }\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n var queryIndex = url.indexOf('?'), splitter = queryIndex !== -1 && queryIndex < url.indexOf('#') ? '?' : '#', uSplit = url.split(splitter), slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n var rest = url;\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n if (!hostlessProtocol[proto] && (slashes || proto && !slashedProtocol[proto])) {\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n // pull out port.\n this.parseHost();\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' && this.hostname[this.hostname.length - 1] === ']';\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part)\n continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1)\n continue;\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest)\n this.pathname = rest;\n if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util$2.isString(obj))\n obj = urlParse(obj);\n if (!(obj instanceof Url))\n return Url.prototype.format.call(obj);\n return obj.format();\n}\nUrl.prototype.format = function () {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n var protocol = this.protocol || '', pathname = this.pathname || '', hash = this.hash || '', host = false, query = '';\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ? this.hostname : '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n if (this.query && util$2.isObject(this.query) && Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n var search = this.search || query && '?' + query || '';\n if (protocol && protocol.substr(-1) !== ':')\n protocol += ':';\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes || (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/')\n pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n if (hash && hash.charAt(0) !== '#')\n hash = '#' + hash;\n if (search && search.charAt(0) !== '?')\n search = '?' + search;\n pathname = pathname.replace(/[?#]/g, function (match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n return protocol + host + pathname + search + hash;\n};\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\nUrl.prototype.resolve = function (relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\nfunction urlResolveObject(source, relative) {\n if (!source)\n return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\nUrl.prototype.resolveObject = function (relative) {\n if (util$2.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol')\n result[rkey] = relative[rkey];\n }\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] && result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n result.href = result.format();\n return result;\n }\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host)\n relative.host = '';\n if (!relative.hostname)\n relative.hostname = '';\n if (relPath[0] !== '')\n relPath.unshift('');\n if (relPath.length < 2)\n relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n var isSourceAbs = result.pathname && result.pathname.charAt(0) === '/', isRelAbs = relative.host || relative.pathname && relative.pathname.charAt(0) === '/', mustEndAbs = isRelAbs || isSourceAbs || result.host && relative.pathname, removeAllDots = mustEndAbs, srcPath = result.pathname && result.pathname.split('/') || [], relPath = relative.pathname && relative.pathname.split('/') || [], psychotic = result.protocol && !slashedProtocol[result.protocol];\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '')\n srcPath[0] = result.host;\n else\n srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '')\n relPath[0] = relative.host;\n else\n relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n if (isRelAbs) {\n // it's absolute.\n result.host = relative.host || relative.host === '' ? relative.host : result.host;\n result.hostname = relative.hostname || relative.hostname === '' ? relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath; // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath)\n srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util$2.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!util$2.isNull(result.pathname) || !util$2.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (result.host || relative.host || srcPath.length > 1) && (last === '.' || last === '..') || last === '';\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n if (mustEndAbs && srcPath[0] !== '' && (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n if (hasTrailingSlash && srcPath.join('/').substr(-1) !== '/') {\n srcPath.push('');\n }\n var isAbsolute = srcPath[0] === '' || srcPath[0] && srcPath[0].charAt(0) === '/';\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' : srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n mustEndAbs = mustEndAbs || result.host && srcPath.length;\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n //to support request.http\n if (!util$2.isNull(result.pathname) || !util$2.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\nUrl.prototype.parseHost = function () {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host)\n this.hostname = host;\n};\n\nfunction getPropertyReference(propertyName) {\n for (let i = 0; i < v8Spec.layout.length; i++) {\n for (const key in v8Spec[v8Spec.layout[i]]) {\n if (key === propertyName)\n return v8Spec[v8Spec.layout[i]][key];\n }\n }\n for (let i = 0; i < v8Spec.paint.length; i++) {\n for (const key in v8Spec[v8Spec.paint[i]]) {\n if (key === propertyName)\n return v8Spec[v8Spec.paint[i]][key];\n }\n }\n return null;\n}\nfunction eachSource(style, callback) {\n for (const k in style.sources) {\n callback(style.sources[k]);\n }\n}\nfunction eachLayer(style, callback) {\n for (const layer of style.layers) {\n callback(layer);\n }\n}\nfunction eachProperty(style, options, callback) {\n function inner(layer, propertyType) {\n const properties = layer[propertyType];\n if (!properties)\n return;\n Object.keys(properties).forEach((key) => {\n callback({\n path: [layer.id, propertyType, key],\n key,\n value: properties[key],\n reference: getPropertyReference(key),\n set(x) {\n properties[key] = x;\n }\n });\n });\n }\n eachLayer(style, (layer) => {\n if (options.paint) {\n inner(layer, 'paint');\n }\n if (options.layout) {\n inner(layer, 'layout');\n }\n });\n}\n\nfunction eachLayout(layer, callback) {\n for (const k in layer) {\n if (k.indexOf('layout') === 0) {\n callback(layer[k], k);\n }\n }\n}\nfunction eachPaint(layer, callback) {\n for (const k in layer) {\n if (k.indexOf('paint') === 0) {\n callback(layer[k], k);\n }\n }\n}\nfunction resolveConstant(style, value) {\n if (typeof value === 'string' && value[0] === '@') {\n return resolveConstant(style, style.constants[value]);\n }\n else {\n return value;\n }\n}\nfunction isFunction$1(value) {\n return Array.isArray(value.stops);\n}\nfunction renameProperty(obj, from, to) {\n obj[to] = obj[from];\n delete obj[from];\n}\nfunction migrateV8(style) {\n style.version = 8;\n // Rename properties, reverse coordinates in source and layers\n eachSource(style, (source) => {\n if (source.type === 'video' && source['url'] !== undefined) {\n renameProperty(source, 'url', 'urls');\n }\n if (source.type === 'video') {\n source.coordinates.forEach((coord) => {\n return coord.reverse();\n });\n }\n });\n eachLayer(style, (layer) => {\n eachLayout(layer, (layout) => {\n if (layout['symbol-min-distance'] !== undefined) {\n renameProperty(layout, 'symbol-min-distance', 'symbol-spacing');\n }\n });\n eachPaint(layer, (paint) => {\n if (paint['background-image'] !== undefined) {\n renameProperty(paint, 'background-image', 'background-pattern');\n }\n if (paint['line-image'] !== undefined) {\n renameProperty(paint, 'line-image', 'line-pattern');\n }\n if (paint['fill-image'] !== undefined) {\n renameProperty(paint, 'fill-image', 'fill-pattern');\n }\n });\n });\n // Inline Constants\n eachProperty(style, { paint: true, layout: true }, (property) => {\n const value = resolveConstant(style, property.value);\n if (isFunction$1(value)) {\n value.stops.forEach((stop) => {\n stop[1] = resolveConstant(style, stop[1]);\n });\n }\n property.set(value);\n });\n delete style['constants'];\n eachLayer(style, (layer) => {\n // get rid of text-max-size, icon-max-size\n // turn text-size, icon-size into layout properties\n // https://github.com/mapbox/mapbox-gl-style-spec/issues/255\n eachLayout(layer, (layout) => {\n delete layout['text-max-size'];\n delete layout['icon-max-size'];\n });\n eachPaint(layer, (paint) => {\n if (paint['text-size']) {\n if (!layer.layout)\n layer.layout = {};\n layer.layout['text-size'] = paint['text-size'];\n delete paint['text-size'];\n }\n if (paint['icon-size']) {\n if (!layer.layout)\n layer.layout = {};\n layer.layout['icon-size'] = paint['icon-size'];\n delete paint['icon-size'];\n }\n });\n });\n function migrateFontstackURL(input) {\n const inputParsed = url.parse(input);\n const inputPathnameParts = inputParsed.pathname.split('/');\n if (inputParsed.protocol !== 'mapbox:') {\n return input;\n }\n else if (inputParsed.hostname === 'fontstack') {\n assert(decodeURI(inputParsed.pathname) === '/{fontstack}/{range}.pbf');\n return 'mapbox://fonts/mapbox/{fontstack}/{range}.pbf';\n }\n else if (inputParsed.hostname === 'fonts') {\n assert(inputPathnameParts[1] === 'v1');\n assert(decodeURI(inputPathnameParts[3]) === '{fontstack}');\n assert(decodeURI(inputPathnameParts[4]) === '{range}.pbf');\n return `mapbox://fonts/${inputPathnameParts[2]}/{fontstack}/{range}.pbf`;\n }\n else {\n assert(false);\n }\n function assert(predicate) {\n if (!predicate) {\n throw new Error(`Invalid font url: \"${input}\"`);\n }\n }\n }\n if (style.glyphs) {\n style.glyphs = migrateFontstackURL(style.glyphs);\n }\n function migrateFontStack(font) {\n function splitAndTrim(string) {\n return string.split(',').map((s) => {\n return s.trim();\n });\n }\n if (Array.isArray(font)) {\n // Assume it's a previously migrated font-array.\n return font;\n }\n else if (typeof font === 'string') {\n return splitAndTrim(font);\n }\n else if (typeof font === 'object') {\n font.stops.forEach((stop) => {\n stop[1] = splitAndTrim(stop[1]);\n });\n return font;\n }\n else {\n throw new Error('unexpected font value');\n }\n }\n eachLayer(style, (layer) => {\n eachLayout(layer, (layout) => {\n if (layout['text-font']) {\n layout['text-font'] = migrateFontStack(layout['text-font']);\n }\n });\n });\n // Reverse order of symbol layers. This is an imperfect migration.\n //\n // The order of a symbol layer in the layers list affects two things:\n // - how it is drawn relative to other layers (like oneway arrows below bridges)\n // - the placement priority compared to other layers\n //\n // It's impossible to reverse the placement priority without breaking the draw order\n // in some cases. This migration only reverses the order of symbol layers that\n // are above all other types of layers.\n //\n // Symbol layers that are at the top of the map preserve their priority.\n // Symbol layers that are below another type (line, fill) of layer preserve their draw order.\n let firstSymbolLayer = 0;\n for (let i = style.layers.length - 1; i >= 0; i--) {\n const layer = style.layers[i];\n if (layer.type !== 'symbol') {\n firstSymbolLayer = i + 1;\n break;\n }\n }\n const symbolLayers = style.layers.splice(firstSymbolLayer);\n symbolLayers.reverse();\n style.layers = style.layers.concat(symbolLayers);\n return style;\n}\n\nvar assert$1 = {exports: {}};\n\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\nfunction toObject(val) {\n if (val === null || val === undefined) {\n throw new TypeError('Object.assign cannot be called with null or undefined');\n }\n return Object(val);\n}\nfunction shouldUseNative() {\n try {\n if (!Object.assign) {\n return false;\n }\n // Detect buggy property enumeration order in older V8 versions.\n // https://bugs.chromium.org/p/v8/issues/detail?id=4118\n var test1 = new String('abc');\n // eslint-disable-line no-new-wrappers\n test1[5] = 'de';\n if (Object.getOwnPropertyNames(test1)[0] === '5') {\n return false;\n }\n // https://bugs.chromium.org/p/v8/issues/detail?id=3056\n var test2 = {};\n for (var i = 0; i < 10; i++) {\n test2['_' + String.fromCharCode(i)] = i;\n }\n var order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n return test2[n];\n });\n if (order2.join('') !== '0123456789') {\n return false;\n }\n // https://bugs.chromium.org/p/v8/issues/detail?id=3056\n var test3 = {};\n 'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n test3[letter] = letter;\n });\n if (Object.keys(Object.assign({}, test3)).join('') !== 'abcdefghijklmnopqrst') {\n return false;\n }\n return true;\n } catch (err) {\n // We don't expect any of the above to throw, but better to be safe.\n return false;\n }\n}\nvar objectAssign$1 = shouldUseNative() ? Object.assign : function (target, source) {\n var from;\n var to = toObject(target);\n var symbols;\n for (var s = 1; s < arguments.length; s++) {\n from = Object(arguments[s]);\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n to[key] = from[key];\n }\n }\n if (getOwnPropertySymbols) {\n symbols = getOwnPropertySymbols(from);\n for (var i = 0; i < symbols.length; i++) {\n if (propIsEnumerable.call(from, symbols[i])) {\n to[symbols[i]] = from[symbols[i]];\n }\n }\n }\n }\n return to;\n};\n\nvar util$1 = {};\n\nvar isBufferBrowser = function isBuffer(arg) {\n return arg && typeof arg === 'object' && typeof arg.copy === 'function' && typeof arg.fill === 'function' && typeof arg.readUInt8 === 'function';\n};\n\nvar inherits_browser = {exports: {}};\n\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n inherits_browser.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n inherits_browser.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {\n };\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n };\n}\n\n(function (exports) {\n\t// Copyright Joyent, Inc. and other Node contributors.\n\t//\n\t// Permission is hereby granted, free of charge, to any person obtaining a\n\t// copy of this software and associated documentation files (the\n\t// \"Software\"), to deal in the Software without restriction, including\n\t// without limitation the rights to use, copy, modify, merge, publish,\n\t// distribute, sublicense, and/or sell copies of the Software, and to permit\n\t// persons to whom the Software is furnished to do so, subject to the\n\t// following conditions:\n\t//\n\t// The above copyright notice and this permission notice shall be included\n\t// in all copies or substantial portions of the Software.\n\t//\n\t// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n\t// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n\t// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n\t// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n\t// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n\t// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n\t// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\tvar formatRegExp = /%[sdj%]/g;\n\texports.format = function (f) {\n\t if (!isString(f)) {\n\t var objects = [];\n\t for (var i = 0; i < arguments.length; i++) {\n\t objects.push(inspect(arguments[i]));\n\t }\n\t return objects.join(' ');\n\t }\n\t var i = 1;\n\t var args = arguments;\n\t var len = args.length;\n\t var str = String(f).replace(formatRegExp, function (x) {\n\t if (x === '%%')\n\t return '%';\n\t if (i >= len)\n\t return x;\n\t switch (x) {\n\t case '%s':\n\t return String(args[i++]);\n\t case '%d':\n\t return Number(args[i++]);\n\t case '%j':\n\t try {\n\t return JSON.stringify(args[i++]);\n\t } catch (_) {\n\t return '[Circular]';\n\t }\n\t default:\n\t return x;\n\t }\n\t });\n\t for (var x = args[i]; i < len; x = args[++i]) {\n\t if (isNull(x) || !isObject(x)) {\n\t str += ' ' + x;\n\t } else {\n\t str += ' ' + inspect(x);\n\t }\n\t }\n\t return str;\n\t};\n\t// Mark that a method should not be used.\n\t// Returns a modified function which warns once by default.\n\t// If --no-deprecation is set, then it is a no-op.\n\texports.deprecate = function (fn, msg) {\n\t // Allow for deprecating things in the process of starting up.\n\t if (isUndefined(commonjsGlobal.process)) {\n\t return function () {\n\t return exports.deprecate(fn, msg).apply(this, arguments);\n\t };\n\t }\n\t if (process.noDeprecation === true) {\n\t return fn;\n\t }\n\t var warned = false;\n\t function deprecated() {\n\t if (!warned) {\n\t if (process.throwDeprecation) {\n\t throw new Error(msg);\n\t } else if (process.traceDeprecation) {\n\t console.trace(msg);\n\t } else {\n\t console.error(msg);\n\t }\n\t warned = true;\n\t }\n\t return fn.apply(this, arguments);\n\t }\n\t return deprecated;\n\t};\n\tvar debugs = {};\n\tvar debugEnviron;\n\texports.debuglog = function (set) {\n\t if (isUndefined(debugEnviron))\n\t debugEnviron = process.env.NODE_DEBUG || '';\n\t set = set.toUpperCase();\n\t if (!debugs[set]) {\n\t if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n\t var pid = process.pid;\n\t debugs[set] = function () {\n\t var msg = exports.format.apply(exports, arguments);\n\t console.error('%s %d: %s', set, pid, msg);\n\t };\n\t } else {\n\t debugs[set] = function () {\n\t };\n\t }\n\t }\n\t return debugs[set];\n\t};\n\t/**\n\t * Echos the value of a value. Trys to print the value out\n\t * in the best way possible given the different types.\n\t *\n\t * @param {Object} obj The object to print out.\n\t * @param {Object} opts Optional options object that alters the output.\n\t */\n\t/* legacy: obj, showHidden, depth, colors*/\n\tfunction inspect(obj, opts) {\n\t // default options\n\t var ctx = {\n\t seen: [],\n\t stylize: stylizeNoColor\n\t };\n\t // legacy...\n\t if (arguments.length >= 3)\n\t ctx.depth = arguments[2];\n\t if (arguments.length >= 4)\n\t ctx.colors = arguments[3];\n\t if (isBoolean(opts)) {\n\t // legacy...\n\t ctx.showHidden = opts;\n\t } else if (opts) {\n\t // got an \"options\" object\n\t exports._extend(ctx, opts);\n\t }\n\t // set default options\n\t if (isUndefined(ctx.showHidden))\n\t ctx.showHidden = false;\n\t if (isUndefined(ctx.depth))\n\t ctx.depth = 2;\n\t if (isUndefined(ctx.colors))\n\t ctx.colors = false;\n\t if (isUndefined(ctx.customInspect))\n\t ctx.customInspect = true;\n\t if (ctx.colors)\n\t ctx.stylize = stylizeWithColor;\n\t return formatValue(ctx, obj, ctx.depth);\n\t}\n\texports.inspect = inspect;\n\t// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\n\tinspect.colors = {\n\t 'bold': [\n\t 1,\n\t 22\n\t ],\n\t 'italic': [\n\t 3,\n\t 23\n\t ],\n\t 'underline': [\n\t 4,\n\t 24\n\t ],\n\t 'inverse': [\n\t 7,\n\t 27\n\t ],\n\t 'white': [\n\t 37,\n\t 39\n\t ],\n\t 'grey': [\n\t 90,\n\t 39\n\t ],\n\t 'black': [\n\t 30,\n\t 39\n\t ],\n\t 'blue': [\n\t 34,\n\t 39\n\t ],\n\t 'cyan': [\n\t 36,\n\t 39\n\t ],\n\t 'green': [\n\t 32,\n\t 39\n\t ],\n\t 'magenta': [\n\t 35,\n\t 39\n\t ],\n\t 'red': [\n\t 31,\n\t 39\n\t ],\n\t 'yellow': [\n\t 33,\n\t 39\n\t ]\n\t};\n\t// Don't use 'blue' not visible on cmd.exe\n\tinspect.styles = {\n\t 'special': 'cyan',\n\t 'number': 'yellow',\n\t 'boolean': 'yellow',\n\t 'undefined': 'grey',\n\t 'null': 'bold',\n\t 'string': 'green',\n\t 'date': 'magenta',\n\t // \"name\": intentionally not styling\n\t 'regexp': 'red'\n\t};\n\tfunction stylizeWithColor(str, styleType) {\n\t var style = inspect.styles[styleType];\n\t if (style) {\n\t return '\\x1B[' + inspect.colors[style][0] + 'm' + str + '\\x1B[' + inspect.colors[style][1] + 'm';\n\t } else {\n\t return str;\n\t }\n\t}\n\tfunction stylizeNoColor(str, styleType) {\n\t return str;\n\t}\n\tfunction arrayToHash(array) {\n\t var hash = {};\n\t array.forEach(function (val, idx) {\n\t hash[val] = true;\n\t });\n\t return hash;\n\t}\n\tfunction formatValue(ctx, value, recurseTimes) {\n\t // Provide a hook for user-specified inspect functions.\n\t // Check that value is an object with an inspect function on it\n\t if (ctx.customInspect && value && isFunction(value.inspect) && // Filter out the util module, it's inspect function is special\n\t value.inspect !== exports.inspect && // Also filter out any prototype objects using the circular check.\n\t !(value.constructor && value.constructor.prototype === value)) {\n\t var ret = value.inspect(recurseTimes, ctx);\n\t if (!isString(ret)) {\n\t ret = formatValue(ctx, ret, recurseTimes);\n\t }\n\t return ret;\n\t }\n\t // Primitive types cannot have properties\n\t var primitive = formatPrimitive(ctx, value);\n\t if (primitive) {\n\t return primitive;\n\t }\n\t // Look up the keys of the object.\n\t var keys = Object.keys(value);\n\t var visibleKeys = arrayToHash(keys);\n\t if (ctx.showHidden) {\n\t keys = Object.getOwnPropertyNames(value);\n\t }\n\t // IE doesn't make error fields non-enumerable\n\t // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n\t if (isError(value) && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n\t return formatError(value);\n\t }\n\t // Some type of object without properties can be shortcutted.\n\t if (keys.length === 0) {\n\t if (isFunction(value)) {\n\t var name = value.name ? ': ' + value.name : '';\n\t return ctx.stylize('[Function' + name + ']', 'special');\n\t }\n\t if (isRegExp(value)) {\n\t return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n\t }\n\t if (isDate(value)) {\n\t return ctx.stylize(Date.prototype.toString.call(value), 'date');\n\t }\n\t if (isError(value)) {\n\t return formatError(value);\n\t }\n\t }\n\t var base = '', array = false, braces = [\n\t '{',\n\t '}'\n\t ];\n\t // Make Array say that they are Array\n\t if (isArray(value)) {\n\t array = true;\n\t braces = [\n\t '[',\n\t ']'\n\t ];\n\t }\n\t // Make functions say that they are functions\n\t if (isFunction(value)) {\n\t var n = value.name ? ': ' + value.name : '';\n\t base = ' [Function' + n + ']';\n\t }\n\t // Make RegExps say that they are RegExps\n\t if (isRegExp(value)) {\n\t base = ' ' + RegExp.prototype.toString.call(value);\n\t }\n\t // Make dates with properties first say the date\n\t if (isDate(value)) {\n\t base = ' ' + Date.prototype.toUTCString.call(value);\n\t }\n\t // Make error with message first say the error\n\t if (isError(value)) {\n\t base = ' ' + formatError(value);\n\t }\n\t if (keys.length === 0 && (!array || value.length == 0)) {\n\t return braces[0] + base + braces[1];\n\t }\n\t if (recurseTimes < 0) {\n\t if (isRegExp(value)) {\n\t return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n\t } else {\n\t return ctx.stylize('[Object]', 'special');\n\t }\n\t }\n\t ctx.seen.push(value);\n\t var output;\n\t if (array) {\n\t output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n\t } else {\n\t output = keys.map(function (key) {\n\t return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n\t });\n\t }\n\t ctx.seen.pop();\n\t return reduceToSingleString(output, base, braces);\n\t}\n\tfunction formatPrimitive(ctx, value) {\n\t if (isUndefined(value))\n\t return ctx.stylize('undefined', 'undefined');\n\t if (isString(value)) {\n\t var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '').replace(/'/g, '\\\\\\'').replace(/\\\\\"/g, '\"') + '\\'';\n\t return ctx.stylize(simple, 'string');\n\t }\n\t if (isNumber(value))\n\t return ctx.stylize('' + value, 'number');\n\t if (isBoolean(value))\n\t return ctx.stylize('' + value, 'boolean');\n\t // For some reason typeof null is \"object\", so special case here.\n\t if (isNull(value))\n\t return ctx.stylize('null', 'null');\n\t}\n\tfunction formatError(value) {\n\t return '[' + Error.prototype.toString.call(value) + ']';\n\t}\n\tfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n\t var output = [];\n\t for (var i = 0, l = value.length; i < l; ++i) {\n\t if (hasOwnProperty(value, String(i))) {\n\t output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, String(i), true));\n\t } else {\n\t output.push('');\n\t }\n\t }\n\t keys.forEach(function (key) {\n\t if (!key.match(/^\\d+$/)) {\n\t output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, key, true));\n\t }\n\t });\n\t return output;\n\t}\n\tfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n\t var name, str, desc;\n\t desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n\t if (desc.get) {\n\t if (desc.set) {\n\t str = ctx.stylize('[Getter/Setter]', 'special');\n\t } else {\n\t str = ctx.stylize('[Getter]', 'special');\n\t }\n\t } else {\n\t if (desc.set) {\n\t str = ctx.stylize('[Setter]', 'special');\n\t }\n\t }\n\t if (!hasOwnProperty(visibleKeys, key)) {\n\t name = '[' + key + ']';\n\t }\n\t if (!str) {\n\t if (ctx.seen.indexOf(desc.value) < 0) {\n\t if (isNull(recurseTimes)) {\n\t str = formatValue(ctx, desc.value, null);\n\t } else {\n\t str = formatValue(ctx, desc.value, recurseTimes - 1);\n\t }\n\t if (str.indexOf('\\n') > -1) {\n\t if (array) {\n\t str = str.split('\\n').map(function (line) {\n\t return ' ' + line;\n\t }).join('\\n').substr(2);\n\t } else {\n\t str = '\\n' + str.split('\\n').map(function (line) {\n\t return ' ' + line;\n\t }).join('\\n');\n\t }\n\t }\n\t } else {\n\t str = ctx.stylize('[Circular]', 'special');\n\t }\n\t }\n\t if (isUndefined(name)) {\n\t if (array && key.match(/^\\d+$/)) {\n\t return str;\n\t }\n\t name = JSON.stringify('' + key);\n\t if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n\t name = name.substr(1, name.length - 2);\n\t name = ctx.stylize(name, 'name');\n\t } else {\n\t name = name.replace(/'/g, '\\\\\\'').replace(/\\\\\"/g, '\"').replace(/(^\"|\"$)/g, '\\'');\n\t name = ctx.stylize(name, 'string');\n\t }\n\t }\n\t return name + ': ' + str;\n\t}\n\tfunction reduceToSingleString(output, base, braces) {\n\t var length = output.reduce(function (prev, cur) {\n\t if (cur.indexOf('\\n') >= 0)\n\t ;\n\t return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n\t }, 0);\n\t if (length > 60) {\n\t return braces[0] + (base === '' ? '' : base + '\\n ') + ' ' + output.join(',\\n ') + ' ' + braces[1];\n\t }\n\t return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n\t}\n\t// NOTE: These type checking functions intentionally don't use `instanceof`\n\t// because it is fragile and can be easily faked with `Object.create()`.\n\tfunction isArray(ar) {\n\t return Array.isArray(ar);\n\t}\n\texports.isArray = isArray;\n\tfunction isBoolean(arg) {\n\t return typeof arg === 'boolean';\n\t}\n\texports.isBoolean = isBoolean;\n\tfunction isNull(arg) {\n\t return arg === null;\n\t}\n\texports.isNull = isNull;\n\tfunction isNullOrUndefined(arg) {\n\t return arg == null;\n\t}\n\texports.isNullOrUndefined = isNullOrUndefined;\n\tfunction isNumber(arg) {\n\t return typeof arg === 'number';\n\t}\n\texports.isNumber = isNumber;\n\tfunction isString(arg) {\n\t return typeof arg === 'string';\n\t}\n\texports.isString = isString;\n\tfunction isSymbol(arg) {\n\t return typeof arg === 'symbol';\n\t}\n\texports.isSymbol = isSymbol;\n\tfunction isUndefined(arg) {\n\t return arg === void 0;\n\t}\n\texports.isUndefined = isUndefined;\n\tfunction isRegExp(re) {\n\t return isObject(re) && objectToString(re) === '[object RegExp]';\n\t}\n\texports.isRegExp = isRegExp;\n\tfunction isObject(arg) {\n\t return typeof arg === 'object' && arg !== null;\n\t}\n\texports.isObject = isObject;\n\tfunction isDate(d) {\n\t return isObject(d) && objectToString(d) === '[object Date]';\n\t}\n\texports.isDate = isDate;\n\tfunction isError(e) {\n\t return isObject(e) && (objectToString(e) === '[object Error]' || e instanceof Error);\n\t}\n\texports.isError = isError;\n\tfunction isFunction(arg) {\n\t return typeof arg === 'function';\n\t}\n\texports.isFunction = isFunction;\n\tfunction isPrimitive(arg) {\n\t return arg === null || typeof arg === 'boolean' || typeof arg === 'number' || typeof arg === 'string' || typeof arg === 'symbol' || // ES6 symbol\n\t typeof arg === 'undefined';\n\t}\n\texports.isPrimitive = isPrimitive;\n\texports.isBuffer = isBufferBrowser;\n\tfunction objectToString(o) {\n\t return Object.prototype.toString.call(o);\n\t}\n\tfunction pad(n) {\n\t return n < 10 ? '0' + n.toString(10) : n.toString(10);\n\t}\n\tvar months = [\n\t 'Jan',\n\t 'Feb',\n\t 'Mar',\n\t 'Apr',\n\t 'May',\n\t 'Jun',\n\t 'Jul',\n\t 'Aug',\n\t 'Sep',\n\t 'Oct',\n\t 'Nov',\n\t 'Dec'\n\t];\n\t// 26 Feb 16:19:34\n\tfunction timestamp() {\n\t var d = new Date();\n\t var time = [\n\t pad(d.getHours()),\n\t pad(d.getMinutes()),\n\t pad(d.getSeconds())\n\t ].join(':');\n\t return [\n\t d.getDate(),\n\t months[d.getMonth()],\n\t time\n\t ].join(' ');\n\t}\n\t// log is just a thin wrapper to console.log that prepends a timestamp\n\texports.log = function () {\n\t console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n\t};\n\t/**\n\t * Inherit the prototype methods from one constructor into another.\n\t *\n\t * The Function.prototype.inherits from lang.js rewritten as a standalone\n\t * function (not on Function.prototype). NOTE: If this file is to be loaded\n\t * during bootstrapping this function needs to be rewritten using some native\n\t * functions as prototype setup using normal JavaScript does not work as\n\t * expected during bootstrapping (see mirror.js in r114903).\n\t *\n\t * @param {function} ctor Constructor function which needs to inherit the\n\t * prototype.\n\t * @param {function} superCtor Constructor function to inherit prototype from.\n\t */\n\texports.inherits = inherits_browser.exports;\n\texports._extend = function (origin, add) {\n\t // Don't do anything if add isn't an object\n\t if (!add || !isObject(add))\n\t return origin;\n\t var keys = Object.keys(add);\n\t var i = keys.length;\n\t while (i--) {\n\t origin[keys[i]] = add[keys[i]];\n\t }\n\t return origin;\n\t};\n\tfunction hasOwnProperty(obj, prop) {\n\t return Object.prototype.hasOwnProperty.call(obj, prop);\n\t}\n} (util$1));\n\nvar objectAssign = objectAssign$1;\n// compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n */\nfunction compare$1(a, b) {\n if (a === b) {\n return 0;\n }\n var x = a.length;\n var y = b.length;\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n if (x < y) {\n return -1;\n }\n if (y < x) {\n return 1;\n }\n return 0;\n}\nfunction isBuffer(b) {\n if (commonjsGlobal.Buffer && typeof commonjsGlobal.Buffer.isBuffer === 'function') {\n return commonjsGlobal.Buffer.isBuffer(b);\n }\n return !!(b != null && b._isBuffer);\n}\n// based on node assert, original notice:\n// NB: The URL to the CommonJS spec is kept just for tradition.\n// node-assert has evolved a lot since then, both in API and behavior.\n// http://wiki.commonjs.org/wiki/Unit_Testing/1.0\n//\n// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!\n//\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the 'Software'), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\nvar util = util$1;\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar pSlice = Array.prototype.slice;\nvar functionsHaveNames = function () {\n return function foo() {\n }.name === 'foo';\n}();\nfunction pToString(obj) {\n return Object.prototype.toString.call(obj);\n}\nfunction isView(arrbuf) {\n if (isBuffer(arrbuf)) {\n return false;\n }\n if (typeof commonjsGlobal.ArrayBuffer !== 'function') {\n return false;\n }\n if (typeof ArrayBuffer.isView === 'function') {\n return ArrayBuffer.isView(arrbuf);\n }\n if (!arrbuf) {\n return false;\n }\n if (arrbuf instanceof DataView) {\n return true;\n }\n if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {\n return true;\n }\n return false;\n}\n// 1. The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\nvar assert = assert$1.exports = ok;\n// 2. The AssertionError is defined in assert.\n// new assert.AssertionError({ message: message,\n// actual: actual,\n// expected: expected })\nvar regex = /\\s*function\\s+([^\\(\\s]*)\\s*/;\n// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js\nfunction getName(func) {\n if (!util.isFunction(func)) {\n return;\n }\n if (functionsHaveNames) {\n return func.name;\n }\n var str = func.toString();\n var match = str.match(regex);\n return match && match[1];\n}\nassert.AssertionError = function AssertionError(options) {\n this.name = 'AssertionError';\n this.actual = options.actual;\n this.expected = options.expected;\n this.operator = options.operator;\n if (options.message) {\n this.message = options.message;\n this.generatedMessage = false;\n } else {\n this.message = getMessage(this);\n this.generatedMessage = true;\n }\n var stackStartFunction = options.stackStartFunction || fail;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, stackStartFunction);\n } else {\n // non v8 browsers so we can have a stacktrace\n var err = new Error();\n if (err.stack) {\n var out = err.stack;\n // try to strip useless frames\n var fn_name = getName(stackStartFunction);\n var idx = out.indexOf('\\n' + fn_name);\n if (idx >= 0) {\n // once we have located the function frame\n // we need to strip out everything before it (and its line)\n var next_line = out.indexOf('\\n', idx + 1);\n out = out.substring(next_line + 1);\n }\n this.stack = out;\n }\n }\n};\n// assert.AssertionError instanceof Error\nutil.inherits(assert.AssertionError, Error);\nfunction truncate(s, n) {\n if (typeof s === 'string') {\n return s.length < n ? s : s.slice(0, n);\n } else {\n return s;\n }\n}\nfunction inspect(something) {\n if (functionsHaveNames || !util.isFunction(something)) {\n return util.inspect(something);\n }\n var rawname = getName(something);\n var name = rawname ? ': ' + rawname : '';\n return '[Function' + name + ']';\n}\nfunction getMessage(self) {\n return truncate(inspect(self.actual), 128) + ' ' + self.operator + ' ' + truncate(inspect(self.expected), 128);\n}\n// At present only the three keys mentioned above are used and\n// understood by the spec. Implementations or sub modules can pass\n// other keys to the AssertionError's constructor - they will be\n// ignored.\n// 3. All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided. All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\nfunction fail(actual, expected, message, operator, stackStartFunction) {\n throw new assert.AssertionError({\n message: message,\n actual: actual,\n expected: expected,\n operator: operator,\n stackStartFunction: stackStartFunction\n });\n}\n// EXTENSION! allows for well behaved errors defined elsewhere.\nassert.fail = fail;\n// 4. Pure assertion tests whether a value is truthy, as determined\n// by !!guard.\n// assert.ok(guard, message_opt);\n// This statement is equivalent to assert.equal(true, !!guard,\n// message_opt);. To test strictly for the value true, use\n// assert.strictEqual(true, guard, message_opt);.\nfunction ok(value, message) {\n if (!value)\n fail(value, true, message, '==', assert.ok);\n}\nassert.ok = ok;\n// 5. The equality assertion tests shallow, coercive equality with\n// ==.\n// assert.equal(actual, expected, message_opt);\nassert.equal = function equal(actual, expected, message) {\n if (actual != expected)\n fail(actual, expected, message, '==', assert.equal);\n};\n// 6. The non-equality assertion tests for whether two objects are not equal\n// with != assert.notEqual(actual, expected, message_opt);\nassert.notEqual = function notEqual(actual, expected, message) {\n if (actual == expected) {\n fail(actual, expected, message, '!=', assert.notEqual);\n }\n};\n// 7. The equivalence assertion tests a deep equality relation.\n// assert.deepEqual(actual, expected, message_opt);\nassert.deepEqual = function deepEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'deepEqual', assert.deepEqual);\n }\n};\nassert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);\n }\n};\nfunction _deepEqual(actual, expected, strict, memos) {\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n } else if (isBuffer(actual) && isBuffer(expected)) {\n return compare$1(actual, expected) === 0; // 7.2. If the expected value is a Date object, the actual value is\n // equivalent if it is also a Date object that refers to the same time.\n } else if (util.isDate(actual) && util.isDate(expected)) {\n return actual.getTime() === expected.getTime(); // 7.3 If the expected value is a RegExp object, the actual value is\n // equivalent if it is also a RegExp object with the same source and\n // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).\n } else if (util.isRegExp(actual) && util.isRegExp(expected)) {\n return actual.source === expected.source && actual.global === expected.global && actual.multiline === expected.multiline && actual.lastIndex === expected.lastIndex && actual.ignoreCase === expected.ignoreCase; // 7.4. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if ((actual === null || typeof actual !== 'object') && (expected === null || typeof expected !== 'object')) {\n return strict ? actual === expected : actual == expected; // If both values are instances of typed arrays, wrap their underlying\n // ArrayBuffers in a Buffer each to increase performance\n // This optimization requires the arrays to have the same type as checked by\n // Object.prototype.toString (aka pToString). Never perform binary\n // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their\n // bit patterns are not identical.\n } else if (isView(actual) && isView(expected) && pToString(actual) === pToString(expected) && !(actual instanceof Float32Array || actual instanceof Float64Array)) {\n return compare$1(new Uint8Array(actual.buffer), new Uint8Array(expected.buffer)) === 0; // 7.5 For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else if (isBuffer(actual) !== isBuffer(expected)) {\n return false;\n } else {\n memos = memos || {\n actual: [],\n expected: []\n };\n var actualIndex = memos.actual.indexOf(actual);\n if (actualIndex !== -1) {\n if (actualIndex === memos.expected.indexOf(expected)) {\n return true;\n }\n }\n memos.actual.push(actual);\n memos.expected.push(expected);\n return objEquiv(actual, expected, strict, memos);\n }\n}\nfunction isArguments(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n}\nfunction objEquiv(a, b, strict, actualVisitedObjects) {\n if (a === null || a === undefined || b === null || b === undefined)\n return false;\n // if one is a primitive, the other must be same\n if (util.isPrimitive(a) || util.isPrimitive(b))\n return a === b;\n if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))\n return false;\n var aIsArgs = isArguments(a);\n var bIsArgs = isArguments(b);\n if (aIsArgs && !bIsArgs || !aIsArgs && bIsArgs)\n return false;\n if (aIsArgs) {\n a = pSlice.call(a);\n b = pSlice.call(b);\n return _deepEqual(a, b, strict);\n }\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n var key, i;\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length !== kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] !== kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))\n return false;\n }\n return true;\n}\n// 8. The non-equivalence assertion tests for any deep inequality.\n// assert.notDeepEqual(actual, expected, message_opt);\nassert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);\n }\n};\nassert.notDeepStrictEqual = notDeepStrictEqual;\nfunction notDeepStrictEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);\n }\n}\n// 9. The strict equality assertion tests strict equality, as determined by ===.\n// assert.strictEqual(actual, expected, message_opt);\nassert.strictEqual = function strictEqual(actual, expected, message) {\n if (actual !== expected) {\n fail(actual, expected, message, '===', assert.strictEqual);\n }\n};\n// 10. The strict non-equality assertion tests for strict inequality, as\n// determined by !==. assert.notStrictEqual(actual, expected, message_opt);\nassert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n if (actual === expected) {\n fail(actual, expected, message, '!==', assert.notStrictEqual);\n }\n};\nfunction expectedException(actual, expected) {\n if (!actual || !expected) {\n return false;\n }\n if (Object.prototype.toString.call(expected) == '[object RegExp]') {\n return expected.test(actual);\n }\n try {\n if (actual instanceof expected) {\n return true;\n }\n } catch (e) {\n }\n if (Error.isPrototypeOf(expected)) {\n return false;\n }\n return expected.call({}, actual) === true;\n}\nfunction _tryBlock(block) {\n var error;\n try {\n block();\n } catch (e) {\n error = e;\n }\n return error;\n}\nfunction _throws(shouldThrow, block, expected, message) {\n var actual;\n if (typeof block !== 'function') {\n throw new TypeError('\"block\" argument must be a function');\n }\n if (typeof expected === 'string') {\n message = expected;\n expected = null;\n }\n actual = _tryBlock(block);\n message = (expected && expected.name ? ' (' + expected.name + ').' : '.') + (message ? ' ' + message : '.');\n if (shouldThrow && !actual) {\n fail(actual, expected, 'Missing expected exception' + message);\n }\n var userProvidedMessage = typeof message === 'string';\n var isUnwantedException = !shouldThrow && util.isError(actual);\n var isUnexpectedException = !shouldThrow && actual && !expected;\n if (isUnwantedException && userProvidedMessage && expectedException(actual, expected) || isUnexpectedException) {\n fail(actual, expected, 'Got unwanted exception' + message);\n }\n if (shouldThrow && actual && expected && !expectedException(actual, expected) || !shouldThrow && actual) {\n throw actual;\n }\n}\n// 11. Expected to throw an error:\n// assert.throws(block, Error_opt, message_opt);\nassert.throws = function (block, error, message) {\n _throws(true, block, error, message);\n};\n// EXTENSION! This is annoying to write outside this module.\nassert.doesNotThrow = function (block, error, message) {\n _throws(false, block, error, message);\n};\nassert.ifError = function (err) {\n if (err)\n throw err;\n};\n// Expose a strict only variant of assert\nfunction strict(value, message) {\n if (!value)\n fail(value, true, message, '==', strict);\n}\nassert.strict = objectAssign(strict, assert, {\n equal: assert.strictEqual,\n deepEqual: assert.deepStrictEqual,\n notEqual: assert.notStrictEqual,\n notDeepEqual: assert.notDeepStrictEqual\n});\nassert.strict.strict = assert.strict;\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n if (hasOwn.call(obj, key))\n keys.push(key);\n }\n return keys;\n};\n\nfunction extendBy(output, ...inputs) {\n for (const input of inputs) {\n for (const k in input) {\n output[k] = input[k];\n }\n }\n return output;\n}\n\nclass ExpressionParsingError extends Error {\n constructor(key, message) {\n super(message);\n this.message = message;\n this.key = key;\n }\n}\n\n/**\n * Tracks `let` bindings during expression parsing.\n * @private\n */\nclass Scope {\n constructor(parent, bindings = []) {\n this.parent = parent;\n this.bindings = {};\n for (const [name, expression] of bindings) {\n this.bindings[name] = expression;\n }\n }\n concat(bindings) {\n return new Scope(this, bindings);\n }\n get(name) {\n if (this.bindings[name]) {\n return this.bindings[name];\n }\n if (this.parent) {\n return this.parent.get(name);\n }\n throw new Error(`${name} not found in scope.`);\n }\n has(name) {\n if (this.bindings[name])\n return true;\n return this.parent ? this.parent.has(name) : false;\n }\n}\n\nconst NullType = { kind: 'null' };\nconst NumberType = { kind: 'number' };\nconst StringType = { kind: 'string' };\nconst BooleanType = { kind: 'boolean' };\nconst ColorType = { kind: 'color' };\nconst ObjectType = { kind: 'object' };\nconst ValueType = { kind: 'value' };\nconst ErrorType = { kind: 'error' };\nconst CollatorType = { kind: 'collator' };\nconst FormattedType = { kind: 'formatted' };\nconst PaddingType = { kind: 'padding' };\nconst ResolvedImageType = { kind: 'resolvedImage' };\nfunction array$1(itemType, N) {\n return {\n kind: 'array',\n itemType,\n N\n };\n}\nfunction toString$1(type) {\n if (type.kind === 'array') {\n const itemType = toString$1(type.itemType);\n return typeof type.N === 'number' ?\n `array<${itemType}, ${type.N}>` :\n type.itemType.kind === 'value' ? 'array' : `array<${itemType}>`;\n }\n else {\n return type.kind;\n }\n}\nconst valueMemberTypes = [\n NullType,\n NumberType,\n StringType,\n BooleanType,\n ColorType,\n FormattedType,\n ObjectType,\n array$1(ValueType),\n PaddingType,\n ResolvedImageType\n];\n/**\n * Returns null if `t` is a subtype of `expected`; otherwise returns an\n * error message.\n * @private\n */\nfunction checkSubtype(expected, t) {\n if (t.kind === 'error') {\n // Error is a subtype of every type\n return null;\n }\n else if (expected.kind === 'array') {\n if (t.kind === 'array' &&\n ((t.N === 0 && t.itemType.kind === 'value') || !checkSubtype(expected.itemType, t.itemType)) &&\n (typeof expected.N !== 'number' || expected.N === t.N)) {\n return null;\n }\n }\n else if (expected.kind === t.kind) {\n return null;\n }\n else if (expected.kind === 'value') {\n for (const memberType of valueMemberTypes) {\n if (!checkSubtype(memberType, t)) {\n return null;\n }\n }\n }\n return `Expected ${toString$1(expected)} but found ${toString$1(t)} instead.`;\n}\nfunction isValidType(provided, allowedTypes) {\n return allowedTypes.some(t => t.kind === provided.kind);\n}\nfunction isValidNativeType(provided, allowedTypes) {\n return allowedTypes.some(t => {\n if (t === 'null') {\n return provided === null;\n }\n else if (t === 'array') {\n return Array.isArray(provided);\n }\n else if (t === 'object') {\n return provided && !Array.isArray(provided) && typeof provided === 'object';\n }\n else {\n return t === typeof provided;\n }\n });\n}\n\nvar csscolorparser = {};\n\nvar parseCSSColor_1;\n// (c) Dean McNamee <dean@gmail.com>, 2012.\n//\n// https://github.com/deanm/css-color-parser-js\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n// IN THE SOFTWARE.\n// http://www.w3.org/TR/css3-color/\nvar kCSSColorTable = {\n 'transparent': [\n 0,\n 0,\n 0,\n 0\n ],\n 'aliceblue': [\n 240,\n 248,\n 255,\n 1\n ],\n 'antiquewhite': [\n 250,\n 235,\n 215,\n 1\n ],\n 'aqua': [\n 0,\n 255,\n 255,\n 1\n ],\n 'aquamarine': [\n 127,\n 255,\n 212,\n 1\n ],\n 'azure': [\n 240,\n 255,\n 255,\n 1\n ],\n 'beige': [\n 245,\n 245,\n 220,\n 1\n ],\n 'bisque': [\n 255,\n 228,\n 196,\n 1\n ],\n 'black': [\n 0,\n 0,\n 0,\n 1\n ],\n 'blanchedalmond': [\n 255,\n 235,\n 205,\n 1\n ],\n 'blue': [\n 0,\n 0,\n 255,\n 1\n ],\n 'blueviolet': [\n 138,\n 43,\n 226,\n 1\n ],\n 'brown': [\n 165,\n 42,\n 42,\n 1\n ],\n 'burlywood': [\n 222,\n 184,\n 135,\n 1\n ],\n 'cadetblue': [\n 95,\n 158,\n 160,\n 1\n ],\n 'chartreuse': [\n 127,\n 255,\n 0,\n 1\n ],\n 'chocolate': [\n 210,\n 105,\n 30,\n 1\n ],\n 'coral': [\n 255,\n 127,\n 80,\n 1\n ],\n 'cornflowerblue': [\n 100,\n 149,\n 237,\n 1\n ],\n 'cornsilk': [\n 255,\n 248,\n 220,\n 1\n ],\n 'crimson': [\n 220,\n 20,\n 60,\n 1\n ],\n 'cyan': [\n 0,\n 255,\n 255,\n 1\n ],\n 'darkblue': [\n 0,\n 0,\n 139,\n 1\n ],\n 'darkcyan': [\n 0,\n 139,\n 139,\n 1\n ],\n 'darkgoldenrod': [\n 184,\n 134,\n 11,\n 1\n ],\n 'darkgray': [\n 169,\n 169,\n 169,\n 1\n ],\n 'darkgreen': [\n 0,\n 100,\n 0,\n 1\n ],\n 'darkgrey': [\n 169,\n 169,\n 169,\n 1\n ],\n 'darkkhaki': [\n 189,\n 183,\n 107,\n 1\n ],\n 'darkmagenta': [\n 139,\n 0,\n 139,\n 1\n ],\n 'darkolivegreen': [\n 85,\n 107,\n 47,\n 1\n ],\n 'darkorange': [\n 255,\n 140,\n 0,\n 1\n ],\n 'darkorchid': [\n 153,\n 50,\n 204,\n 1\n ],\n 'darkred': [\n 139,\n 0,\n 0,\n 1\n ],\n 'darksalmon': [\n 233,\n 150,\n 122,\n 1\n ],\n 'darkseagreen': [\n 143,\n 188,\n 143,\n 1\n ],\n 'darkslateblue': [\n 72,\n 61,\n 139,\n 1\n ],\n 'darkslategray': [\n 47,\n 79,\n 79,\n 1\n ],\n 'darkslategrey': [\n 47,\n 79,\n 79,\n 1\n ],\n 'darkturquoise': [\n 0,\n 206,\n 209,\n 1\n ],\n 'darkviolet': [\n 148,\n 0,\n 211,\n 1\n ],\n 'deeppink': [\n 255,\n 20,\n 147,\n 1\n ],\n 'deepskyblue': [\n 0,\n 191,\n 255,\n 1\n ],\n 'dimgray': [\n 105,\n 105,\n 105,\n 1\n ],\n 'dimgrey': [\n 105,\n 105,\n 105,\n 1\n ],\n 'dodgerblue': [\n 30,\n 144,\n 255,\n 1\n ],\n 'firebrick': [\n 178,\n 34,\n 34,\n 1\n ],\n 'floralwhite': [\n 255,\n 250,\n 240,\n 1\n ],\n 'forestgreen': [\n 34,\n 139,\n 34,\n 1\n ],\n 'fuchsia': [\n 255,\n 0,\n 255,\n 1\n ],\n 'gainsboro': [\n 220,\n 220,\n 220,\n 1\n ],\n 'ghostwhite': [\n 248,\n 248,\n 255,\n 1\n ],\n 'gold': [\n 255,\n 215,\n 0,\n 1\n ],\n 'goldenrod': [\n 218,\n 165,\n 32,\n 1\n ],\n 'gray': [\n 128,\n 128,\n 128,\n 1\n ],\n 'green': [\n 0,\n 128,\n 0,\n 1\n ],\n 'greenyellow': [\n 173,\n 255,\n 47,\n 1\n ],\n 'grey': [\n 128,\n 128,\n 128,\n 1\n ],\n 'honeydew': [\n 240,\n 255,\n 240,\n 1\n ],\n 'hotpink': [\n 255,\n 105,\n 180,\n 1\n ],\n 'indianred': [\n 205,\n 92,\n 92,\n 1\n ],\n 'indigo': [\n 75,\n 0,\n 130,\n 1\n ],\n 'ivory': [\n 255,\n 255,\n 240,\n 1\n ],\n 'khaki': [\n 240,\n 230,\n 140,\n 1\n ],\n 'lavender': [\n 230,\n 230,\n 250,\n 1\n ],\n 'lavenderblush': [\n 255,\n 240,\n 245,\n 1\n ],\n 'lawngreen': [\n 124,\n 252,\n 0,\n 1\n ],\n 'lemonchiffon': [\n 255,\n 250,\n 205,\n 1\n ],\n 'lightblue': [\n 173,\n 216,\n 230,\n 1\n ],\n 'lightcoral': [\n 240,\n 128,\n 128,\n 1\n ],\n 'lightcyan': [\n 224,\n 255,\n 255,\n 1\n ],\n 'lightgoldenrodyellow': [\n 250,\n 250,\n 210,\n 1\n ],\n 'lightgray': [\n 211,\n 211,\n 211,\n 1\n ],\n 'lightgreen': [\n 144,\n 238,\n 144,\n 1\n ],\n 'lightgrey': [\n 211,\n 211,\n 211,\n 1\n ],\n 'lightpink': [\n 255,\n 182,\n 193,\n 1\n ],\n 'lightsalmon': [\n 255,\n 160,\n 122,\n 1\n ],\n 'lightseagreen': [\n 32,\n 178,\n 170,\n 1\n ],\n 'lightskyblue': [\n 135,\n 206,\n 250,\n 1\n ],\n 'lightslategray': [\n 119,\n 136,\n 153,\n 1\n ],\n 'lightslategrey': [\n 119,\n 136,\n 153,\n 1\n ],\n 'lightsteelblue': [\n 176,\n 196,\n 222,\n 1\n ],\n 'lightyellow': [\n 255,\n 255,\n 224,\n 1\n ],\n 'lime': [\n 0,\n 255,\n 0,\n 1\n ],\n 'limegreen': [\n 50,\n 205,\n 50,\n 1\n ],\n 'linen': [\n 250,\n 240,\n 230,\n 1\n ],\n 'magenta': [\n 255,\n 0,\n 255,\n 1\n ],\n 'maroon': [\n 128,\n 0,\n 0,\n 1\n ],\n 'mediumaquamarine': [\n 102,\n 205,\n 170,\n 1\n ],\n 'mediumblue': [\n 0,\n 0,\n 205,\n 1\n ],\n 'mediumorchid': [\n 186,\n 85,\n 211,\n 1\n ],\n 'mediumpurple': [\n 147,\n 112,\n 219,\n 1\n ],\n 'mediumseagreen': [\n 60,\n 179,\n 113,\n 1\n ],\n 'mediumslateblue': [\n 123,\n 104,\n 238,\n 1\n ],\n 'mediumspringgreen': [\n 0,\n 250,\n 154,\n 1\n ],\n 'mediumturquoise': [\n 72,\n 209,\n 204,\n 1\n ],\n 'mediumvioletred': [\n 199,\n 21,\n 133,\n 1\n ],\n 'midnightblue': [\n 25,\n 25,\n 112,\n 1\n ],\n 'mintcream': [\n 245,\n 255,\n 250,\n 1\n ],\n 'mistyrose': [\n 255,\n 228,\n 225,\n 1\n ],\n 'moccasin': [\n 255,\n 228,\n 181,\n 1\n ],\n 'navajowhite': [\n 255,\n 222,\n 173,\n 1\n ],\n 'navy': [\n 0,\n 0,\n 128,\n 1\n ],\n 'oldlace': [\n 253,\n 245,\n 230,\n 1\n ],\n 'olive': [\n 128,\n 128,\n 0,\n 1\n ],\n 'olivedrab': [\n 107,\n 142,\n 35,\n 1\n ],\n 'orange': [\n 255,\n 165,\n 0,\n 1\n ],\n 'orangered': [\n 255,\n 69,\n 0,\n 1\n ],\n 'orchid': [\n 218,\n 112,\n 214,\n 1\n ],\n 'palegoldenrod': [\n 238,\n 232,\n 170,\n 1\n ],\n 'palegreen': [\n 152,\n 251,\n 152,\n 1\n ],\n 'paleturquoise': [\n 175,\n 238,\n 238,\n 1\n ],\n 'palevioletred': [\n 219,\n 112,\n 147,\n 1\n ],\n 'papayawhip': [\n 255,\n 239,\n 213,\n 1\n ],\n 'peachpuff': [\n 255,\n 218,\n 185,\n 1\n ],\n 'peru': [\n 205,\n 133,\n 63,\n 1\n ],\n 'pink': [\n 255,\n 192,\n 203,\n 1\n ],\n 'plum': [\n 221,\n 160,\n 221,\n 1\n ],\n 'powderblue': [\n 176,\n 224,\n 230,\n 1\n ],\n 'purple': [\n 128,\n 0,\n 128,\n 1\n ],\n 'rebeccapurple': [\n 102,\n 51,\n 153,\n 1\n ],\n 'red': [\n 255,\n 0,\n 0,\n 1\n ],\n 'rosybrown': [\n 188,\n 143,\n 143,\n 1\n ],\n 'royalblue': [\n 65,\n 105,\n 225,\n 1\n ],\n 'saddlebrown': [\n 139,\n 69,\n 19,\n 1\n ],\n 'salmon': [\n 250,\n 128,\n 114,\n 1\n ],\n 'sandybrown': [\n 244,\n 164,\n 96,\n 1\n ],\n 'seagreen': [\n 46,\n 139,\n 87,\n 1\n ],\n 'seashell': [\n 255,\n 245,\n 238,\n 1\n ],\n 'sienna': [\n 160,\n 82,\n 45,\n 1\n ],\n 'silver': [\n 192,\n 192,\n 192,\n 1\n ],\n 'skyblue': [\n 135,\n 206,\n 235,\n 1\n ],\n 'slateblue': [\n 106,\n 90,\n 205,\n 1\n ],\n 'slategray': [\n 112,\n 128,\n 144,\n 1\n ],\n 'slategrey': [\n 112,\n 128,\n 144,\n 1\n ],\n 'snow': [\n 255,\n 250,\n 250,\n 1\n ],\n 'springgreen': [\n 0,\n 255,\n 127,\n 1\n ],\n 'steelblue': [\n 70,\n 130,\n 180,\n 1\n ],\n 'tan': [\n 210,\n 180,\n 140,\n 1\n ],\n 'teal': [\n 0,\n 128,\n 128,\n 1\n ],\n 'thistle': [\n 216,\n 191,\n 216,\n 1\n ],\n 'tomato': [\n 255,\n 99,\n 71,\n 1\n ],\n 'turquoise': [\n 64,\n 224,\n 208,\n 1\n ],\n 'violet': [\n 238,\n 130,\n 238,\n 1\n ],\n 'wheat': [\n 245,\n 222,\n 179,\n 1\n ],\n 'white': [\n 255,\n 255,\n 255,\n 1\n ],\n 'whitesmoke': [\n 245,\n 245,\n 245,\n 1\n ],\n 'yellow': [\n 255,\n 255,\n 0,\n 1\n ],\n 'yellowgreen': [\n 154,\n 205,\n 50,\n 1\n ]\n};\nfunction clamp_css_byte(i) {\n // Clamp to integer 0 .. 255.\n i = Math.round(i);\n // Seems to be what Chrome does (vs truncation).\n return i < 0 ? 0 : i > 255 ? 255 : i;\n}\nfunction clamp_css_float(f) {\n // Clamp to float 0.0 .. 1.0.\n return f < 0 ? 0 : f > 1 ? 1 : f;\n}\nfunction parse_css_int(str) {\n // int or percentage.\n if (str[str.length - 1] === '%')\n return clamp_css_byte(parseFloat(str) / 100 * 255);\n return clamp_css_byte(parseInt(str));\n}\nfunction parse_css_float(str) {\n // float or percentage.\n if (str[str.length - 1] === '%')\n return clamp_css_float(parseFloat(str) / 100);\n return clamp_css_float(parseFloat(str));\n}\nfunction css_hue_to_rgb(m1, m2, h) {\n if (h < 0)\n h += 1;\n else if (h > 1)\n h -= 1;\n if (h * 6 < 1)\n return m1 + (m2 - m1) * h * 6;\n if (h * 2 < 1)\n return m2;\n if (h * 3 < 2)\n return m1 + (m2 - m1) * (2 / 3 - h) * 6;\n return m1;\n}\nfunction parseCSSColor(css_str) {\n // Remove all whitespace, not compliant, but should just be more accepting.\n var str = css_str.replace(/ /g, '').toLowerCase();\n // Color keywords (and transparent) lookup.\n if (str in kCSSColorTable)\n return kCSSColorTable[str].slice();\n // dup.\n // #abc and #abc123 syntax.\n if (str[0] === '#') {\n if (str.length === 4) {\n var iv = parseInt(str.substr(1), 16);\n // TODO(deanm): Stricter parsing.\n if (!(iv >= 0 && iv <= 4095))\n return null;\n // Covers NaN.\n return [\n (iv & 3840) >> 4 | (iv & 3840) >> 8,\n iv & 240 | (iv & 240) >> 4,\n iv & 15 | (iv & 15) << 4,\n 1\n ];\n } else if (str.length === 7) {\n var iv = parseInt(str.substr(1), 16);\n // TODO(deanm): Stricter parsing.\n if (!(iv >= 0 && iv <= 16777215))\n return null;\n // Covers NaN.\n return [\n (iv & 16711680) >> 16,\n (iv & 65280) >> 8,\n iv & 255,\n 1\n ];\n }\n return null;\n }\n var op = str.indexOf('('), ep = str.indexOf(')');\n if (op !== -1 && ep + 1 === str.length) {\n var fname = str.substr(0, op);\n var params = str.substr(op + 1, ep - (op + 1)).split(',');\n var alpha = 1;\n // To allow case fallthrough.\n switch (fname) {\n case 'rgba':\n if (params.length !== 4)\n return null;\n alpha = parse_css_float(params.pop());\n // Fall through.\n case 'rgb':\n if (params.length !== 3)\n return null;\n return [\n parse_css_int(params[0]),\n parse_css_int(params[1]),\n parse_css_int(params[2]),\n alpha\n ];\n case 'hsla':\n if (params.length !== 4)\n return null;\n alpha = parse_css_float(params.pop());\n // Fall through.\n case 'hsl':\n if (params.length !== 3)\n return null;\n var h = (parseFloat(params[0]) % 360 + 360) % 360 / 360;\n // 0 .. 1\n // NOTE(deanm): According to the CSS spec s/l should only be\n // percentages, but we don't bother and let float or percentage.\n var s = parse_css_float(params[1]);\n var l = parse_css_float(params[2]);\n var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n var m1 = l * 2 - m2;\n return [\n clamp_css_byte(css_hue_to_rgb(m1, m2, h + 1 / 3) * 255),\n clamp_css_byte(css_hue_to_rgb(m1, m2, h) * 255),\n clamp_css_byte(css_hue_to_rgb(m1, m2, h - 1 / 3) * 255),\n alpha\n ];\n default:\n return null;\n }\n }\n return null;\n}\ntry {\n parseCSSColor_1 = csscolorparser.parseCSSColor = parseCSSColor;\n} catch (e) {\n}\n\n/**\n * An RGBA color value. Create instances from color strings using the static\n * method `Color.parse`. The constructor accepts RGB channel values in the range\n * `[0, 1]`, premultiplied by A.\n *\n * @param {number} r The red channel.\n * @param {number} g The green channel.\n * @param {number} b The blue channel.\n * @param {number} a The alpha channel.\n * @private\n */\nclass Color {\n constructor(r, g, b, a = 1) {\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n }\n /**\n * Parses valid CSS color strings and returns a `Color` instance.\n * @returns A `Color` instance, or `undefined` if the input is not a valid color string.\n */\n static parse(input) {\n if (!input) {\n return undefined;\n }\n if (input instanceof Color) {\n return input;\n }\n if (typeof input !== 'string') {\n return undefined;\n }\n const rgba = parseCSSColor_1(input);\n if (!rgba) {\n return undefined;\n }\n return new Color(rgba[0] / 255 * rgba[3], rgba[1] / 255 * rgba[3], rgba[2] / 255 * rgba[3], rgba[3]);\n }\n /**\n * Returns an RGBA string representing the color value.\n *\n * @returns An RGBA string.\n * @example\n * var purple = new Color.parse('purple');\n * purple.toString; // = \"rgba(128,0,128,1)\"\n * var translucentGreen = new Color.parse('rgba(26, 207, 26, .73)');\n * translucentGreen.toString(); // = \"rgba(26,207,26,0.73)\"\n */\n toString() {\n const [r, g, b, a] = this.toArray();\n return `rgba(${Math.round(r)},${Math.round(g)},${Math.round(b)},${a})`;\n }\n toArray() {\n const { r, g, b, a } = this;\n return a === 0 ? [0, 0, 0, 0] : [\n r * 255 / a,\n g * 255 / a,\n b * 255 / a,\n a\n ];\n }\n}\nColor.black = new Color(0, 0, 0, 1);\nColor.white = new Color(1, 1, 1, 1);\nColor.transparent = new Color(0, 0, 0, 0);\nColor.red = new Color(1, 0, 0, 1);\n\n// Flow type declarations for Intl cribbed from\n// https://github.com/facebook/flow/issues/1270\nclass Collator {\n constructor(caseSensitive, diacriticSensitive, locale) {\n if (caseSensitive)\n this.sensitivity = diacriticSensitive ? 'variant' : 'case';\n else\n this.sensitivity = diacriticSensitive ? 'accent' : 'base';\n this.locale = locale;\n this.collator = new Intl.Collator(this.locale ? this.locale : [], { sensitivity: this.sensitivity, usage: 'search' });\n }\n compare(lhs, rhs) {\n return this.collator.compare(lhs, rhs);\n }\n resolvedLocale() {\n // We create a Collator without \"usage: search\" because we don't want\n // the search options encoded in our result (e.g. \"en-u-co-search\")\n return new Intl.Collator(this.locale ? this.locale : [])\n .resolvedOptions().locale;\n }\n}\n\nclass FormattedSection {\n constructor(text, image, scale, fontStack, textColor) {\n this.text = text;\n this.image = image;\n this.scale = scale;\n this.fontStack = fontStack;\n this.textColor = textColor;\n }\n}\nclass Formatted {\n constructor(sections) {\n this.sections = sections;\n }\n static fromString(unformatted) {\n return new Formatted([new FormattedSection(unformatted, null, null, null, null)]);\n }\n isEmpty() {\n if (this.sections.length === 0)\n return true;\n return !this.sections.some(section => section.text.length !== 0 ||\n (section.image && section.image.name.length !== 0));\n }\n static factory(text) {\n if (text instanceof Formatted) {\n return text;\n }\n else {\n return Formatted.fromString(text);\n }\n }\n toString() {\n if (this.sections.length === 0)\n return '';\n return this.sections.map(section => section.text).join('');\n }\n}\n\n/**\n * A set of four numbers representing padding around a box. Create instances from\n * bare arrays or numeric values using the static method `Padding.parse`.\n * @private\n */\nclass Padding {\n constructor(values) {\n this.values = values.slice();\n }\n /**\n * Numeric padding values\n * @returns A `Padding` instance, or `undefined` if the input is not a valid padding value.\n */\n static parse(input) {\n if (input instanceof Padding) {\n return input;\n }\n // Backwards compatibility: bare number is treated the same as array with single value.\n // Padding applies to all four sides.\n if (typeof input === 'number') {\n return new Padding([input, input, input, input]);\n }\n if (!Array.isArray(input)) {\n return undefined;\n }\n if (input.length < 1 || input.length > 4) {\n return undefined;\n }\n for (const val of input) {\n if (typeof val !== 'number') {\n return undefined;\n }\n }\n // Expand shortcut properties into explicit 4-sided values\n switch (input.length) {\n case 1:\n input = [input[0], input[0], input[0], input[0]];\n break;\n case 2:\n input = [input[0], input[1], input[0], input[1]];\n break;\n case 3:\n input = [input[0], input[1], input[2], input[1]];\n break;\n }\n return new Padding(input);\n }\n toString() {\n return JSON.stringify(this.values);\n }\n}\n\nclass ResolvedImage {\n constructor(options) {\n this.name = options.name;\n this.available = options.available;\n }\n toString() {\n return this.name;\n }\n static fromString(name) {\n if (!name)\n return null; // treat empty values as no image\n return new ResolvedImage({ name, available: false });\n }\n}\n\nfunction validateRGBA(r, g, b, a) {\n if (!(typeof r === 'number' && r >= 0 && r <= 255 &&\n typeof g === 'number' && g >= 0 && g <= 255 &&\n typeof b === 'number' && b >= 0 && b <= 255)) {\n const value = typeof a === 'number' ? [r, g, b, a] : [r, g, b];\n return `Invalid rgba value [${value.join(', ')}]: 'r', 'g', and 'b' must be between 0 and 255.`;\n }\n if (!(typeof a === 'undefined' || (typeof a === 'number' && a >= 0 && a <= 1))) {\n return `Invalid rgba value [${[r, g, b, a].join(', ')}]: 'a' must be between 0 and 1.`;\n }\n return null;\n}\nfunction isValue(mixed) {\n if (mixed === null) {\n return true;\n }\n else if (typeof mixed === 'string') {\n return true;\n }\n else if (typeof mixed === 'boolean') {\n return true;\n }\n else if (typeof mixed === 'number') {\n return true;\n }\n else if (mixed instanceof Color) {\n return true;\n }\n else if (mixed instanceof Collator) {\n return true;\n }\n else if (mixed instanceof Formatted) {\n return true;\n }\n else if (mixed instanceof Padding) {\n return true;\n }\n else if (mixed instanceof ResolvedImage) {\n return true;\n }\n else if (Array.isArray(mixed)) {\n for (const item of mixed) {\n if (!isValue(item)) {\n return false;\n }\n }\n return true;\n }\n else if (typeof mixed === 'object') {\n for (const key in mixed) {\n if (!isValue(mixed[key])) {\n return false;\n }\n }\n return true;\n }\n else {\n return false;\n }\n}\nfunction typeOf(value) {\n if (value === null) {\n return NullType;\n }\n else if (typeof value === 'string') {\n return StringType;\n }\n else if (typeof value === 'boolean') {\n return BooleanType;\n }\n else if (typeof value === 'number') {\n return NumberType;\n }\n else if (value instanceof Color) {\n return ColorType;\n }\n else if (value instanceof Collator) {\n return CollatorType;\n }\n else if (value instanceof Formatted) {\n return FormattedType;\n }\n else if (value instanceof Padding) {\n return PaddingType;\n }\n else if (value instanceof ResolvedImage) {\n return ResolvedImageType;\n }\n else if (Array.isArray(value)) {\n const length = value.length;\n let itemType;\n for (const item of value) {\n const t = typeOf(item);\n if (!itemType) {\n itemType = t;\n }\n else if (itemType === t) {\n continue;\n }\n else {\n itemType = ValueType;\n break;\n }\n }\n return array$1(itemType || ValueType, length);\n }\n else {\n assert$1.exports(typeof value === 'object');\n return ObjectType;\n }\n}\nfunction toString(value) {\n const type = typeof value;\n if (value === null) {\n return '';\n }\n else if (type === 'string' || type === 'number' || type === 'boolean') {\n return String(value);\n }\n else if (value instanceof Color || value instanceof Formatted || value instanceof Padding || value instanceof ResolvedImage) {\n return value.toString();\n }\n else {\n return JSON.stringify(value);\n }\n}\n\nclass Literal {\n constructor(type, value) {\n this.type = type;\n this.value = value;\n }\n static parse(args, context) {\n if (args.length !== 2)\n return context.error(`'literal' expression requires exactly one argument, but found ${args.length - 1} instead.`);\n if (!isValue(args[1]))\n return context.error('invalid value');\n const value = args[1];\n let type = typeOf(value);\n // special case: infer the item type if possible for zero-length arrays\n const expected = context.expectedType;\n if (type.kind === 'array' &&\n type.N === 0 &&\n expected &&\n expected.kind === 'array' &&\n (typeof expected.N !== 'number' || expected.N === 0)) {\n type = expected;\n }\n return new Literal(type, value);\n }\n evaluate() {\n return this.value;\n }\n eachChild() { }\n outputDefined() {\n return true;\n }\n}\n\nclass RuntimeError {\n constructor(message) {\n this.name = 'ExpressionEvaluationError';\n this.message = message;\n }\n toJSON() {\n return this.message;\n }\n}\n\nconst types$1 = {\n string: StringType,\n number: NumberType,\n boolean: BooleanType,\n object: ObjectType\n};\nclass Assertion {\n constructor(type, args) {\n this.type = type;\n this.args = args;\n }\n static parse(args, context) {\n if (args.length < 2)\n return context.error('Expected at least one argument.');\n let i = 1;\n let type;\n const name = args[0];\n if (name === 'array') {\n let itemType;\n if (args.length > 2) {\n const type = args[1];\n if (typeof type !== 'string' || !(type in types$1) || type === 'object')\n return context.error('The item type argument of \"array\" must be one of string, number, boolean', 1);\n itemType = types$1[type];\n i++;\n }\n else {\n itemType = ValueType;\n }\n let N;\n if (args.length > 3) {\n if (args[2] !== null &&\n (typeof args[2] !== 'number' ||\n args[2] < 0 ||\n args[2] !== Math.floor(args[2]))) {\n return context.error('The length argument to \"array\" must be a positive integer literal', 2);\n }\n N = args[2];\n i++;\n }\n type = array$1(itemType, N);\n }\n else {\n assert$1.exports(types$1[name], name);\n type = types$1[name];\n }\n const parsed = [];\n for (; i < args.length; i++) {\n const input = context.parse(args[i], i, ValueType);\n if (!input)\n return null;\n parsed.push(input);\n }\n return new Assertion(type, parsed);\n }\n evaluate(ctx) {\n for (let i = 0; i < this.args.length; i++) {\n const value = this.args[i].evaluate(ctx);\n const error = checkSubtype(this.type, typeOf(value));\n if (!error) {\n return value;\n }\n else if (i === this.args.length - 1) {\n throw new RuntimeError(`Expected value to be of type ${toString$1(this.type)}, but found ${toString$1(typeOf(value))} instead.`);\n }\n }\n assert$1.exports(false);\n return null;\n }\n eachChild(fn) {\n this.args.forEach(fn);\n }\n outputDefined() {\n return this.args.every(arg => arg.outputDefined());\n }\n}\n\nconst types = {\n 'to-boolean': BooleanType,\n 'to-color': ColorType,\n 'to-number': NumberType,\n 'to-string': StringType\n};\n/**\n * Special form for error-coalescing coercion expressions \"to-number\",\n * \"to-color\". Since these coercions can fail at runtime, they accept multiple\n * arguments, only evaluating one at a time until one succeeds.\n *\n * @private\n */\nclass Coercion {\n constructor(type, args) {\n this.type = type;\n this.args = args;\n }\n static parse(args, context) {\n if (args.length < 2)\n return context.error('Expected at least one argument.');\n const name = args[0];\n assert$1.exports(types[name], name);\n if ((name === 'to-boolean' || name === 'to-string') && args.length !== 2)\n return context.error('Expected one argument.');\n const type = types[name];\n const parsed = [];\n for (let i = 1; i < args.length; i++) {\n const input = context.parse(args[i], i, ValueType);\n if (!input)\n return null;\n parsed.push(input);\n }\n return new Coercion(type, parsed);\n }\n evaluate(ctx) {\n if (this.type.kind === 'boolean') {\n return Boolean(this.args[0].evaluate(ctx));\n }\n else if (this.type.kind === 'color') {\n let input;\n let error;\n for (const arg of this.args) {\n input = arg.evaluate(ctx);\n error = null;\n if (input instanceof Color) {\n return input;\n }\n else if (typeof input === 'string') {\n const c = ctx.parseColor(input);\n if (c)\n return c;\n }\n else if (Array.isArray(input)) {\n if (input.length < 3 || input.length > 4) {\n error = `Invalid rbga value ${JSON.stringify(input)}: expected an array containing either three or four numeric values.`;\n }\n else {\n error = validateRGBA(input[0], input[1], input[2], input[3]);\n }\n if (!error) {\n return new Color(input[0] / 255, input[1] / 255, input[2] / 255, input[3]);\n }\n }\n }\n throw new RuntimeError(error || `Could not parse color from value '${typeof input === 'string' ? input : JSON.stringify(input)}'`);\n }\n else if (this.type.kind === 'padding') {\n let input;\n for (const arg of this.args) {\n input = arg.evaluate(ctx);\n const pad = Padding.parse(input);\n if (pad) {\n return pad;\n }\n }\n throw new RuntimeError(`Could not parse padding from value '${typeof input === 'string' ? input : JSON.stringify(input)}'`);\n }\n else if (this.type.kind === 'number') {\n let value = null;\n for (const arg of this.args) {\n value = arg.evaluate(ctx);\n if (value === null)\n return 0;\n const num = Number(value);\n if (isNaN(num))\n continue;\n return num;\n }\n throw new RuntimeError(`Could not convert ${JSON.stringify(value)} to number.`);\n }\n else if (this.type.kind === 'formatted') {\n // There is no explicit 'to-formatted' but this coercion can be implicitly\n // created by properties that expect the 'formatted' type.\n return Formatted.fromString(toString(this.args[0].evaluate(ctx)));\n }\n else if (this.type.kind === 'resolvedImage') {\n return ResolvedImage.fromString(toString(this.args[0].evaluate(ctx)));\n }\n else {\n return toString(this.args[0].evaluate(ctx));\n }\n }\n eachChild(fn) {\n this.args.forEach(fn);\n }\n outputDefined() {\n return this.args.every(arg => arg.outputDefined());\n }\n}\n\nconst geometryTypes = ['Unknown', 'Point', 'LineString', 'Polygon'];\nclass EvaluationContext {\n constructor() {\n this.globals = null;\n this.feature = null;\n this.featureState = null;\n this.formattedSection = null;\n this._parseColorCache = {};\n this.availableImages = null;\n this.canonical = null;\n }\n id() {\n return this.feature && 'id' in this.feature ? this.feature.id : null;\n }\n geometryType() {\n return this.feature ? typeof this.feature.type === 'number' ? geometryTypes[this.feature.type] : this.feature.type : null;\n }\n geometry() {\n return this.feature && 'geometry' in this.feature ? this.feature.geometry : null;\n }\n canonicalID() {\n return this.canonical;\n }\n properties() {\n return this.feature && this.feature.properties || {};\n }\n parseColor(input) {\n let cached = this._parseColorCache[input];\n if (!cached) {\n cached = this._parseColorCache[input] = Color.parse(input);\n }\n return cached;\n }\n}\n\nclass CompoundExpression {\n constructor(name, type, evaluate, args) {\n this.name = name;\n this.type = type;\n this._evaluate = evaluate;\n this.args = args;\n }\n evaluate(ctx) {\n return this._evaluate(ctx, this.args);\n }\n eachChild(fn) {\n this.args.forEach(fn);\n }\n outputDefined() {\n return false;\n }\n static parse(args, context) {\n const op = args[0];\n const definition = CompoundExpression.definitions[op];\n if (!definition) {\n return context.error(`Unknown expression \"${op}\". If you wanted a literal array, use [\"literal\", [...]].`, 0);\n }\n // Now check argument types against each signature\n const type = Array.isArray(definition) ?\n definition[0] : definition.type;\n const availableOverloads = Array.isArray(definition) ?\n [[definition[1], definition[2]]] :\n definition.overloads;\n const overloads = availableOverloads.filter(([signature]) => (!Array.isArray(signature) || // varags\n signature.length === args.length - 1 // correct param count\n ));\n let signatureContext = null;\n for (const [params, evaluate] of overloads) {\n // Use a fresh context for each attempted signature so that, if\n // we eventually succeed, we haven't polluted `context.errors`.\n signatureContext = new ParsingContext(context.registry, context.path, null, context.scope);\n // First parse all the args, potentially coercing to the\n // types expected by this overload.\n const parsedArgs = [];\n let argParseFailed = false;\n for (let i = 1; i < args.length; i++) {\n const arg = args[i];\n const expectedType = Array.isArray(params) ?\n params[i - 1] :\n params.type;\n const parsed = signatureContext.parse(arg, 1 + parsedArgs.length, expectedType);\n if (!parsed) {\n argParseFailed = true;\n break;\n }\n parsedArgs.push(parsed);\n }\n if (argParseFailed) {\n // Couldn't coerce args of this overload to expected type, move\n // on to next one.\n continue;\n }\n if (Array.isArray(params)) {\n if (params.length !== parsedArgs.length) {\n signatureContext.error(`Expected ${params.length} arguments, but found ${parsedArgs.length} instead.`);\n continue;\n }\n }\n for (let i = 0; i < parsedArgs.length; i++) {\n const expected = Array.isArray(params) ? params[i] : params.type;\n const arg = parsedArgs[i];\n signatureContext.concat(i + 1).checkSubtype(expected, arg.type);\n }\n if (signatureContext.errors.length === 0) {\n return new CompoundExpression(op, type, evaluate, parsedArgs);\n }\n }\n assert$1.exports(!signatureContext || signatureContext.errors.length > 0);\n if (overloads.length === 1) {\n context.errors.push(...signatureContext.errors);\n }\n else {\n const expected = overloads.length ? overloads : availableOverloads;\n const signatures = expected\n .map(([params]) => stringifySignature(params))\n .join(' | ');\n const actualTypes = [];\n // For error message, re-parse arguments without trying to\n // apply any coercions\n for (let i = 1; i < args.length; i++) {\n const parsed = context.parse(args[i], 1 + actualTypes.length);\n if (!parsed)\n return null;\n actualTypes.push(toString$1(parsed.type));\n }\n context.error(`Expected arguments of type ${signatures}, but found (${actualTypes.join(', ')}) instead.`);\n }\n return null;\n }\n static register(registry, definitions) {\n assert$1.exports(!CompoundExpression.definitions);\n CompoundExpression.definitions = definitions;\n for (const name in definitions) {\n registry[name] = CompoundExpression;\n }\n }\n}\nfunction stringifySignature(signature) {\n if (Array.isArray(signature)) {\n return `(${signature.map(toString$1).join(', ')})`;\n }\n else {\n return `(${toString$1(signature.type)}...)`;\n }\n}\n\nclass CollatorExpression {\n constructor(caseSensitive, diacriticSensitive, locale) {\n this.type = CollatorType;\n this.locale = locale;\n this.caseSensitive = caseSensitive;\n this.diacriticSensitive = diacriticSensitive;\n }\n static parse(args, context) {\n if (args.length !== 2)\n return context.error('Expected one argument.');\n const options = args[1];\n if (typeof options !== 'object' || Array.isArray(options))\n return context.error('Collator options argument must be an object.');\n const caseSensitive = context.parse(options['case-sensitive'] === undefined ? false : options['case-sensitive'], 1, BooleanType);\n if (!caseSensitive)\n return null;\n const diacriticSensitive = context.parse(options['diacritic-sensitive'] === undefined ? false : options['diacritic-sensitive'], 1, BooleanType);\n if (!diacriticSensitive)\n return null;\n let locale = null;\n if (options['locale']) {\n locale = context.parse(options['locale'], 1, StringType);\n if (!locale)\n return null;\n }\n return new CollatorExpression(caseSensitive, diacriticSensitive, locale);\n }\n evaluate(ctx) {\n return new Collator(this.caseSensitive.evaluate(ctx), this.diacriticSensitive.evaluate(ctx), this.locale ? this.locale.evaluate(ctx) : null);\n }\n eachChild(fn) {\n fn(this.caseSensitive);\n fn(this.diacriticSensitive);\n if (this.locale) {\n fn(this.locale);\n }\n }\n outputDefined() {\n // Technically the set of possible outputs is the combinatoric set of Collators produced\n // by all possible outputs of locale/caseSensitive/diacriticSensitive\n // But for the primary use of Collators in comparison operators, we ignore the Collator's\n // possible outputs anyway, so we can get away with leaving this false for now.\n return false;\n }\n}\n\nconst EXTENT = 8192;\nfunction updateBBox(bbox, coord) {\n bbox[0] = Math.min(bbox[0], coord[0]);\n bbox[1] = Math.min(bbox[1], coord[1]);\n bbox[2] = Math.max(bbox[2], coord[0]);\n bbox[3] = Math.max(bbox[3], coord[1]);\n}\nfunction mercatorXfromLng(lng) {\n return (180 + lng) / 360;\n}\nfunction mercatorYfromLat(lat) {\n return (180 - (180 / Math.PI * Math.log(Math.tan(Math.PI / 4 + lat * Math.PI / 360)))) / 360;\n}\nfunction boxWithinBox(bbox1, bbox2) {\n if (bbox1[0] <= bbox2[0])\n return false;\n if (bbox1[2] >= bbox2[2])\n return false;\n if (bbox1[1] <= bbox2[1])\n return false;\n if (bbox1[3] >= bbox2[3])\n return false;\n return true;\n}\nfunction getTileCoordinates(p, canonical) {\n const x = mercatorXfromLng(p[0]);\n const y = mercatorYfromLat(p[1]);\n const tilesAtZoom = Math.pow(2, canonical.z);\n return [Math.round(x * tilesAtZoom * EXTENT), Math.round(y * tilesAtZoom * EXTENT)];\n}\nfunction onBoundary(p, p1, p2) {\n const x1 = p[0] - p1[0];\n const y1 = p[1] - p1[1];\n const x2 = p[0] - p2[0];\n const y2 = p[1] - p2[1];\n return (x1 * y2 - x2 * y1 === 0) && (x1 * x2 <= 0) && (y1 * y2 <= 0);\n}\nfunction rayIntersect(p, p1, p2) {\n return ((p1[1] > p[1]) !== (p2[1] > p[1])) && (p[0] < (p2[0] - p1[0]) * (p[1] - p1[1]) / (p2[1] - p1[1]) + p1[0]);\n}\n// ray casting algorithm for detecting if point is in polygon\nfunction pointWithinPolygon(point, rings) {\n let inside = false;\n for (let i = 0, len = rings.length; i < len; i++) {\n const ring = rings[i];\n for (let j = 0, len2 = ring.length; j < len2 - 1; j++) {\n if (onBoundary(point, ring[j], ring[j + 1]))\n return false;\n if (rayIntersect(point, ring[j], ring[j + 1]))\n inside = !inside;\n }\n }\n return inside;\n}\nfunction pointWithinPolygons(point, polygons) {\n for (let i = 0; i < polygons.length; i++) {\n if (pointWithinPolygon(point, polygons[i]))\n return true;\n }\n return false;\n}\nfunction perp(v1, v2) {\n return (v1[0] * v2[1] - v1[1] * v2[0]);\n}\n// check if p1 and p2 are in different sides of line segment q1->q2\nfunction twoSided(p1, p2, q1, q2) {\n // q1->p1 (x1, y1), q1->p2 (x2, y2), q1->q2 (x3, y3)\n const x1 = p1[0] - q1[0];\n const y1 = p1[1] - q1[1];\n const x2 = p2[0] - q1[0];\n const y2 = p2[1] - q1[1];\n const x3 = q2[0] - q1[0];\n const y3 = q2[1] - q1[1];\n const det1 = (x1 * y3 - x3 * y1);\n const det2 = (x2 * y3 - x3 * y2);\n if ((det1 > 0 && det2 < 0) || (det1 < 0 && det2 > 0))\n return true;\n return false;\n}\n// a, b are end points for line segment1, c and d are end points for line segment2\nfunction lineIntersectLine(a, b, c, d) {\n // check if two segments are parallel or not\n // precondition is end point a, b is inside polygon, if line a->b is\n // parallel to polygon edge c->d, then a->b won't intersect with c->d\n const vectorP = [b[0] - a[0], b[1] - a[1]];\n const vectorQ = [d[0] - c[0], d[1] - c[1]];\n if (perp(vectorQ, vectorP) === 0)\n return false;\n // If lines are intersecting with each other, the relative location should be:\n // a and b lie in different sides of segment c->d\n // c and d lie in different sides of segment a->b\n if (twoSided(a, b, c, d) && twoSided(c, d, a, b))\n return true;\n return false;\n}\nfunction lineIntersectPolygon(p1, p2, polygon) {\n for (const ring of polygon) {\n // loop through every edge of the ring\n for (let j = 0; j < ring.length - 1; ++j) {\n if (lineIntersectLine(p1, p2, ring[j], ring[j + 1])) {\n return true;\n }\n }\n }\n return false;\n}\nfunction lineStringWithinPolygon(line, polygon) {\n // First, check if geometry points of line segments are all inside polygon\n for (let i = 0; i < line.length; ++i) {\n if (!pointWithinPolygon(line[i], polygon)) {\n return false;\n }\n }\n // Second, check if there is line segment intersecting polygon edge\n for (let i = 0; i < line.length - 1; ++i) {\n if (lineIntersectPolygon(line[i], line[i + 1], polygon)) {\n return false;\n }\n }\n return true;\n}\nfunction lineStringWithinPolygons(line, polygons) {\n for (let i = 0; i < polygons.length; i++) {\n if (lineStringWithinPolygon(line, polygons[i]))\n return true;\n }\n return false;\n}\nfunction getTilePolygon(coordinates, bbox, canonical) {\n const polygon = [];\n for (let i = 0; i < coordinates.length; i++) {\n const ring = [];\n for (let j = 0; j < coordinates[i].length; j++) {\n const coord = getTileCoordinates(coordinates[i][j], canonical);\n updateBBox(bbox, coord);\n ring.push(coord);\n }\n polygon.push(ring);\n }\n return polygon;\n}\nfunction getTilePolygons(coordinates, bbox, canonical) {\n const polygons = [];\n for (let i = 0; i < coordinates.length; i++) {\n const polygon = getTilePolygon(coordinates[i], bbox, canonical);\n polygons.push(polygon);\n }\n return polygons;\n}\nfunction updatePoint(p, bbox, polyBBox, worldSize) {\n if (p[0] < polyBBox[0] || p[0] > polyBBox[2]) {\n const halfWorldSize = worldSize * 0.5;\n let shift = (p[0] - polyBBox[0] > halfWorldSize) ? -worldSize : (polyBBox[0] - p[0] > halfWorldSize) ? worldSize : 0;\n if (shift === 0) {\n shift = (p[0] - polyBBox[2] > halfWorldSize) ? -worldSize : (polyBBox[2] - p[0] > halfWorldSize) ? worldSize : 0;\n }\n p[0] += shift;\n }\n updateBBox(bbox, p);\n}\nfunction resetBBox(bbox) {\n bbox[0] = bbox[1] = Infinity;\n bbox[2] = bbox[3] = -Infinity;\n}\nfunction getTilePoints(geometry, pointBBox, polyBBox, canonical) {\n const worldSize = Math.pow(2, canonical.z) * EXTENT;\n const shifts = [canonical.x * EXTENT, canonical.y * EXTENT];\n const tilePoints = [];\n for (const points of geometry) {\n for (const point of points) {\n const p = [point.x + shifts[0], point.y + shifts[1]];\n updatePoint(p, pointBBox, polyBBox, worldSize);\n tilePoints.push(p);\n }\n }\n return tilePoints;\n}\nfunction getTileLines(geometry, lineBBox, polyBBox, canonical) {\n const worldSize = Math.pow(2, canonical.z) * EXTENT;\n const shifts = [canonical.x * EXTENT, canonical.y * EXTENT];\n const tileLines = [];\n for (const line of geometry) {\n const tileLine = [];\n for (const point of line) {\n const p = [point.x + shifts[0], point.y + shifts[1]];\n updateBBox(lineBBox, p);\n tileLine.push(p);\n }\n tileLines.push(tileLine);\n }\n if (lineBBox[2] - lineBBox[0] <= worldSize / 2) {\n resetBBox(lineBBox);\n for (const line of tileLines) {\n for (const p of line) {\n updatePoint(p, lineBBox, polyBBox, worldSize);\n }\n }\n }\n return tileLines;\n}\nfunction pointsWithinPolygons(ctx, polygonGeometry) {\n const pointBBox = [Infinity, Infinity, -Infinity, -Infinity];\n const polyBBox = [Infinity, Infinity, -Infinity, -Infinity];\n const canonical = ctx.canonicalID();\n if (polygonGeometry.type === 'Polygon') {\n const tilePolygon = getTilePolygon(polygonGeometry.coordinates, polyBBox, canonical);\n const tilePoints = getTilePoints(ctx.geometry(), pointBBox, polyBBox, canonical);\n if (!boxWithinBox(pointBBox, polyBBox))\n return false;\n for (const point of tilePoints) {\n if (!pointWithinPolygon(point, tilePolygon))\n return false;\n }\n }\n if (polygonGeometry.type === 'MultiPolygon') {\n const tilePolygons = getTilePolygons(polygonGeometry.coordinates, polyBBox, canonical);\n const tilePoints = getTilePoints(ctx.geometry(), pointBBox, polyBBox, canonical);\n if (!boxWithinBox(pointBBox, polyBBox))\n return false;\n for (const point of tilePoints) {\n if (!pointWithinPolygons(point, tilePolygons))\n return false;\n }\n }\n return true;\n}\nfunction linesWithinPolygons(ctx, polygonGeometry) {\n const lineBBox = [Infinity, Infinity, -Infinity, -Infinity];\n const polyBBox = [Infinity, Infinity, -Infinity, -Infinity];\n const canonical = ctx.canonicalID();\n if (polygonGeometry.type === 'Polygon') {\n const tilePolygon = getTilePolygon(polygonGeometry.coordinates, polyBBox, canonical);\n const tileLines = getTileLines(ctx.geometry(), lineBBox, polyBBox, canonical);\n if (!boxWithinBox(lineBBox, polyBBox))\n return false;\n for (const line of tileLines) {\n if (!lineStringWithinPolygon(line, tilePolygon))\n return false;\n }\n }\n if (polygonGeometry.type === 'MultiPolygon') {\n const tilePolygons = getTilePolygons(polygonGeometry.coordinates, polyBBox, canonical);\n const tileLines = getTileLines(ctx.geometry(), lineBBox, polyBBox, canonical);\n if (!boxWithinBox(lineBBox, polyBBox))\n return false;\n for (const line of tileLines) {\n if (!lineStringWithinPolygons(line, tilePolygons))\n return false;\n }\n }\n return true;\n}\nclass Within {\n constructor(geojson, geometries) {\n this.type = BooleanType;\n this.geojson = geojson;\n this.geometries = geometries;\n }\n static parse(args, context) {\n if (args.length !== 2)\n return context.error(`'within' expression requires exactly one argument, but found ${args.length - 1} instead.`);\n if (isValue(args[1])) {\n const geojson = args[1];\n if (geojson.type === 'FeatureCollection') {\n for (let i = 0; i < geojson.features.length; ++i) {\n const type = geojson.features[i].geometry.type;\n if (type === 'Polygon' || type === 'MultiPolygon') {\n return new Within(geojson, geojson.features[i].geometry);\n }\n }\n }\n else if (geojson.type === 'Feature') {\n const type = geojson.geometry.type;\n if (type === 'Polygon' || type === 'MultiPolygon') {\n return new Within(geojson, geojson.geometry);\n }\n }\n else if (geojson.type === 'Polygon' || geojson.type === 'MultiPolygon') {\n return new Within(geojson, geojson);\n }\n }\n return context.error('\\'within\\' expression requires valid geojson object that contains polygon geometry type.');\n }\n evaluate(ctx) {\n if (ctx.geometry() != null && ctx.canonicalID() != null) {\n if (ctx.geometryType() === 'Point') {\n return pointsWithinPolygons(ctx, this.geometries);\n }\n else if (ctx.geometryType() === 'LineString') {\n return linesWithinPolygons(ctx, this.geometries);\n }\n }\n return false;\n }\n eachChild() { }\n outputDefined() {\n return true;\n }\n}\n\nfunction isFeatureConstant(e) {\n if (e instanceof CompoundExpression) {\n if (e.name === 'get' && e.args.length === 1) {\n return false;\n }\n else if (e.name === 'feature-state') {\n return false;\n }\n else if (e.name === 'has' && e.args.length === 1) {\n return false;\n }\n else if (e.name === 'properties' ||\n e.name === 'geometry-type' ||\n e.name === 'id') {\n return false;\n }\n else if (/^filter-/.test(e.name)) {\n return false;\n }\n }\n if (e instanceof Within) {\n return false;\n }\n let result = true;\n e.eachChild(arg => {\n if (result && !isFeatureConstant(arg)) {\n result = false;\n }\n });\n return result;\n}\nfunction isStateConstant(e) {\n if (e instanceof CompoundExpression) {\n if (e.name === 'feature-state') {\n return false;\n }\n }\n let result = true;\n e.eachChild(arg => {\n if (result && !isStateConstant(arg)) {\n result = false;\n }\n });\n return result;\n}\nfunction isGlobalPropertyConstant(e, properties) {\n if (e instanceof CompoundExpression && properties.indexOf(e.name) >= 0) {\n return false;\n }\n let result = true;\n e.eachChild((arg) => {\n if (result && !isGlobalPropertyConstant(arg, properties)) {\n result = false;\n }\n });\n return result;\n}\n\nclass Var {\n constructor(name, boundExpression) {\n this.type = boundExpression.type;\n this.name = name;\n this.boundExpression = boundExpression;\n }\n static parse(args, context) {\n if (args.length !== 2 || typeof args[1] !== 'string')\n return context.error('\\'var\\' expression requires exactly one string literal argument.');\n const name = args[1];\n if (!context.scope.has(name)) {\n return context.error(`Unknown variable \"${name}\". Make sure \"${name}\" has been bound in an enclosing \"let\" expression before using it.`, 1);\n }\n return new Var(name, context.scope.get(name));\n }\n evaluate(ctx) {\n return this.boundExpression.evaluate(ctx);\n }\n eachChild() { }\n outputDefined() {\n return false;\n }\n}\n\n/**\n * State associated parsing at a given point in an expression tree.\n * @private\n */\nclass ParsingContext {\n constructor(registry, path = [], expectedType, scope = new Scope(), errors = []) {\n this.registry = registry;\n this.path = path;\n this.key = path.map(part => `[${part}]`).join('');\n this.scope = scope;\n this.errors = errors;\n this.expectedType = expectedType;\n }\n /**\n * @param expr the JSON expression to parse\n * @param index the optional argument index if this expression is an argument of a parent expression that's being parsed\n * @param options\n * @param options.omitTypeAnnotations set true to omit inferred type annotations. Caller beware: with this option set, the parsed expression's type will NOT satisfy `expectedType` if it would normally be wrapped in an inferred annotation.\n * @private\n */\n parse(expr, index, expectedType, bindings, options = {}) {\n if (index) {\n return this.concat(index, expectedType, bindings)._parse(expr, options);\n }\n return this._parse(expr, options);\n }\n _parse(expr, options) {\n if (expr === null || typeof expr === 'string' || typeof expr === 'boolean' || typeof expr === 'number') {\n expr = ['literal', expr];\n }\n function annotate(parsed, type, typeAnnotation) {\n if (typeAnnotation === 'assert') {\n return new Assertion(type, [parsed]);\n }\n else if (typeAnnotation === 'coerce') {\n return new Coercion(type, [parsed]);\n }\n else {\n return parsed;\n }\n }\n if (Array.isArray(expr)) {\n if (expr.length === 0) {\n return this.error('Expected an array with at least one element. If you wanted a literal array, use [\"literal\", []].');\n }\n const op = expr[0];\n if (typeof op !== 'string') {\n this.error(`Expression name must be a string, but found ${typeof op} instead. If you wanted a literal array, use [\"literal\", [...]].`, 0);\n return null;\n }\n const Expr = this.registry[op];\n if (Expr) {\n let parsed = Expr.parse(expr, this);\n if (!parsed)\n return null;\n if (this.expectedType) {\n const expected = this.expectedType;\n const actual = parsed.type;\n // When we expect a number, string, boolean, or array but have a value, wrap it in an assertion.\n // When we expect a color or formatted string, but have a string or value, wrap it in a coercion.\n // Otherwise, we do static type-checking.\n //\n // These behaviors are overridable for:\n // * The \"coalesce\" operator, which needs to omit type annotations.\n // * String-valued properties (e.g. `text-field`), where coercion is more convenient than assertion.\n //\n if ((expected.kind === 'string' || expected.kind === 'number' || expected.kind === 'boolean' || expected.kind === 'object' || expected.kind === 'array') && actual.kind === 'value') {\n parsed = annotate(parsed, expected, options.typeAnnotation || 'assert');\n }\n else if ((expected.kind === 'color' || expected.kind === 'formatted' || expected.kind === 'resolvedImage') && (actual.kind === 'value' || actual.kind === 'string')) {\n parsed = annotate(parsed, expected, options.typeAnnotation || 'coerce');\n }\n else if (expected.kind === 'padding' && (actual.kind === 'value' || actual.kind === 'number' || actual.kind === 'array')) {\n parsed = annotate(parsed, expected, options.typeAnnotation || 'coerce');\n }\n else if (this.checkSubtype(expected, actual)) {\n return null;\n }\n }\n // If an expression's arguments are all literals, we can evaluate\n // it immediately and replace it with a literal value in the\n // parsed/compiled result. Expressions that expect an image should\n // not be resolved here so we can later get the available images.\n if (!(parsed instanceof Literal) && (parsed.type.kind !== 'resolvedImage') && isConstant(parsed)) {\n const ec = new EvaluationContext();\n try {\n parsed = new Literal(parsed.type, parsed.evaluate(ec));\n }\n catch (e) {\n this.error(e.message);\n return null;\n }\n }\n return parsed;\n }\n return this.error(`Unknown expression \"${op}\". If you wanted a literal array, use [\"literal\", [...]].`, 0);\n }\n else if (typeof expr === 'undefined') {\n return this.error('\\'undefined\\' value invalid. Use null instead.');\n }\n else if (typeof expr === 'object') {\n return this.error('Bare objects invalid. Use [\"literal\", {...}] instead.');\n }\n else {\n return this.error(`Expected an array, but found ${typeof expr} instead.`);\n }\n }\n /**\n * Returns a copy of this context suitable for parsing the subexpression at\n * index `index`, optionally appending to 'let' binding map.\n *\n * Note that `errors` property, intended for collecting errors while\n * parsing, is copied by reference rather than cloned.\n * @private\n */\n concat(index, expectedType, bindings) {\n const path = typeof index === 'number' ? this.path.concat(index) : this.path;\n const scope = bindings ? this.scope.concat(bindings) : this.scope;\n return new ParsingContext(this.registry, path, expectedType || null, scope, this.errors);\n }\n /**\n * Push a parsing (or type checking) error into the `this.errors`\n * @param error The message\n * @param keys Optionally specify the source of the error at a child\n * of the current expression at `this.key`.\n * @private\n */\n error(error, ...keys) {\n const key = `${this.key}${keys.map(k => `[${k}]`).join('')}`;\n this.errors.push(new ExpressionParsingError(key, error));\n }\n /**\n * Returns null if `t` is a subtype of `expected`; otherwise returns an\n * error message and also pushes it to `this.errors`.\n */\n checkSubtype(expected, t) {\n const error = checkSubtype(expected, t);\n if (error)\n this.error(error);\n return error;\n }\n}\nfunction isConstant(expression) {\n if (expression instanceof Var) {\n return isConstant(expression.boundExpression);\n }\n else if (expression instanceof CompoundExpression && expression.name === 'error') {\n return false;\n }\n else if (expression instanceof CollatorExpression) {\n // Although the results of a Collator expression with fixed arguments\n // generally shouldn't change between executions, we can't serialize them\n // as constant expressions because results change based on environment.\n return false;\n }\n else if (expression instanceof Within) {\n return false;\n }\n const isTypeAnnotation = expression instanceof Coercion ||\n expression instanceof Assertion;\n let childrenConstant = true;\n expression.eachChild(child => {\n // We can _almost_ assume that if `expressions` children are constant,\n // they would already have been evaluated to Literal values when they\n // were parsed. Type annotations are the exception, because they might\n // have been inferred and added after a child was parsed.\n // So we recurse into isConstant() for the children of type annotations,\n // but otherwise simply check whether they are Literals.\n if (isTypeAnnotation) {\n childrenConstant = childrenConstant && isConstant(child);\n }\n else {\n childrenConstant = childrenConstant && child instanceof Literal;\n }\n });\n if (!childrenConstant) {\n return false;\n }\n return isFeatureConstant(expression) &&\n isGlobalPropertyConstant(expression, ['zoom', 'heatmap-density', 'line-progress', 'accumulated', 'is-supported-script']);\n}\n\n/**\n * Returns the index of the last stop <= input, or 0 if it doesn't exist.\n * @private\n */\nfunction findStopLessThanOrEqualTo(stops, input) {\n const lastIndex = stops.length - 1;\n let lowerIndex = 0;\n let upperIndex = lastIndex;\n let currentIndex = 0;\n let currentValue, nextValue;\n while (lowerIndex <= upperIndex) {\n currentIndex = Math.floor((lowerIndex + upperIndex) / 2);\n currentValue = stops[currentIndex];\n nextValue = stops[currentIndex + 1];\n if (currentValue <= input) {\n if (currentIndex === lastIndex || input < nextValue) { // Search complete\n return currentIndex;\n }\n lowerIndex = currentIndex + 1;\n }\n else if (currentValue > input) {\n upperIndex = currentIndex - 1;\n }\n else {\n throw new RuntimeError('Input is not a number.');\n }\n }\n return 0;\n}\n\nclass Step {\n constructor(type, input, stops) {\n this.type = type;\n this.input = input;\n this.labels = [];\n this.outputs = [];\n for (const [label, expression] of stops) {\n this.labels.push(label);\n this.outputs.push(expression);\n }\n }\n static parse(args, context) {\n if (args.length - 1 < 4) {\n return context.error(`Expected at least 4 arguments, but found only ${args.length - 1}.`);\n }\n if ((args.length - 1) % 2 !== 0) {\n return context.error('Expected an even number of arguments.');\n }\n const input = context.parse(args[1], 1, NumberType);\n if (!input)\n return null;\n const stops = [];\n let outputType = null;\n if (context.expectedType && context.expectedType.kind !== 'value') {\n outputType = context.expectedType;\n }\n for (let i = 1; i < args.length; i += 2) {\n const label = i === 1 ? -Infinity : args[i];\n const value = args[i + 1];\n const labelKey = i;\n const valueKey = i + 1;\n if (typeof label !== 'number') {\n return context.error('Input/output pairs for \"step\" expressions must be defined using literal numeric values (not computed expressions) for the input values.', labelKey);\n }\n if (stops.length && stops[stops.length - 1][0] >= label) {\n return context.error('Input/output pairs for \"step\" expressions must be arranged with input values in strictly ascending order.', labelKey);\n }\n const parsed = context.parse(value, valueKey, outputType);\n if (!parsed)\n return null;\n outputType = outputType || parsed.type;\n stops.push([label, parsed]);\n }\n return new Step(outputType, input, stops);\n }\n evaluate(ctx) {\n const labels = this.labels;\n const outputs = this.outputs;\n if (labels.length === 1) {\n return outputs[0].evaluate(ctx);\n }\n const value = this.input.evaluate(ctx);\n if (value <= labels[0]) {\n return outputs[0].evaluate(ctx);\n }\n const stopCount = labels.length;\n if (value >= labels[stopCount - 1]) {\n return outputs[stopCount - 1].evaluate(ctx);\n }\n const index = findStopLessThanOrEqualTo(labels, value);\n return outputs[index].evaluate(ctx);\n }\n eachChild(fn) {\n fn(this.input);\n for (const expression of this.outputs) {\n fn(expression);\n }\n }\n outputDefined() {\n return this.outputs.every(out => out.outputDefined());\n }\n}\n\nvar unitbezier = UnitBezier;\nfunction UnitBezier(p1x, p1y, p2x, p2y) {\n // Calculate the polynomial coefficients, implicit first and last control points are (0,0) and (1,1).\n this.cx = 3 * p1x;\n this.bx = 3 * (p2x - p1x) - this.cx;\n this.ax = 1 - this.cx - this.bx;\n this.cy = 3 * p1y;\n this.by = 3 * (p2y - p1y) - this.cy;\n this.ay = 1 - this.cy - this.by;\n this.p1x = p1x;\n this.p1y = p1y;\n this.p2x = p2x;\n this.p2y = p2y;\n}\nUnitBezier.prototype = {\n sampleCurveX: function (t) {\n // `ax t^3 + bx t^2 + cx t' expanded using Horner's rule.\n return ((this.ax * t + this.bx) * t + this.cx) * t;\n },\n sampleCurveY: function (t) {\n return ((this.ay * t + this.by) * t + this.cy) * t;\n },\n sampleCurveDerivativeX: function (t) {\n return (3 * this.ax * t + 2 * this.bx) * t + this.cx;\n },\n solveCurveX: function (x, epsilon) {\n if (epsilon === undefined)\n epsilon = 0.000001;\n if (x < 0)\n return 0;\n if (x > 1)\n return 1;\n var t = x;\n // First try a few iterations of Newton's method - normally very fast.\n for (var i = 0; i < 8; i++) {\n var x2 = this.sampleCurveX(t) - x;\n if (Math.abs(x2) < epsilon)\n return t;\n var d2 = this.sampleCurveDerivativeX(t);\n if (Math.abs(d2) < 0.000001)\n break;\n t = t - x2 / d2;\n }\n // Fall back to the bisection method for reliability.\n var t0 = 0;\n var t1 = 1;\n t = x;\n for (i = 0; i < 20; i++) {\n x2 = this.sampleCurveX(t);\n if (Math.abs(x2 - x) < epsilon)\n break;\n if (x > x2) {\n t0 = t;\n } else {\n t1 = t;\n }\n t = (t1 - t0) * 0.5 + t0;\n }\n return t;\n },\n solve: function (x, epsilon) {\n return this.sampleCurveY(this.solveCurveX(x, epsilon));\n }\n};\n\nfunction number(a, b, t) {\n return (a * (1 - t)) + (b * t);\n}\nfunction color(from, to, t) {\n return new Color(number(from.r, to.r, t), number(from.g, to.g, t), number(from.b, to.b, t), number(from.a, to.a, t));\n}\nfunction array(from, to, t) {\n return from.map((d, i) => {\n return number(d, to[i], t);\n });\n}\nfunction padding(from, to, t) {\n const fromVal = from.values;\n const toVal = to.values;\n return new Padding([\n number(fromVal[0], toVal[0], t),\n number(fromVal[1], toVal[1], t),\n number(fromVal[2], toVal[2], t),\n number(fromVal[3], toVal[3], t)\n ]);\n}\n\nvar interpolate = /*#__PURE__*/Object.freeze({\n __proto__: null,\n number: number,\n color: color,\n array: array,\n padding: padding\n});\n\n// Constants\nconst Xn = 0.950470, // D65 standard referent\nYn = 1, Zn = 1.088830, t0 = 4 / 29, t1 = 6 / 29, t2 = 3 * t1 * t1, t3 = t1 * t1 * t1, deg2rad = Math.PI / 180, rad2deg = 180 / Math.PI;\n// Utilities\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\nfunction xyz2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\nfunction rgb2xyz(x) {\n x /= 255;\n return x <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n// LAB\nfunction rgbToLab(rgbColor) {\n const b = rgb2xyz(rgbColor.r), a = rgb2xyz(rgbColor.g), l = rgb2xyz(rgbColor.b), x = xyz2lab((0.4124564 * b + 0.3575761 * a + 0.1804375 * l) / Xn), y = xyz2lab((0.2126729 * b + 0.7151522 * a + 0.0721750 * l) / Yn), z = xyz2lab((0.0193339 * b + 0.1191920 * a + 0.9503041 * l) / Zn);\n return {\n l: 116 * y - 16,\n a: 500 * (x - y),\n b: 200 * (y - z),\n alpha: rgbColor.a\n };\n}\nfunction labToRgb(labColor) {\n let y = (labColor.l + 16) / 116, x = isNaN(labColor.a) ? y : y + labColor.a / 500, z = isNaN(labColor.b) ? y : y - labColor.b / 200;\n y = Yn * lab2xyz(y);\n x = Xn * lab2xyz(x);\n z = Zn * lab2xyz(z);\n return new Color(xyz2rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z), // D65 -> sRGB\n xyz2rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z), xyz2rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z), labColor.alpha);\n}\nfunction interpolateLab(from, to, t) {\n return {\n l: number(from.l, to.l, t),\n a: number(from.a, to.a, t),\n b: number(from.b, to.b, t),\n alpha: number(from.alpha, to.alpha, t)\n };\n}\n// HCL\nfunction rgbToHcl(rgbColor) {\n const { l, a, b } = rgbToLab(rgbColor);\n const h = Math.atan2(b, a) * rad2deg;\n return {\n h: h < 0 ? h + 360 : h,\n c: Math.sqrt(a * a + b * b),\n l,\n alpha: rgbColor.a\n };\n}\nfunction hclToRgb(hclColor) {\n const h = hclColor.h * deg2rad, c = hclColor.c, l = hclColor.l;\n return labToRgb({\n l,\n a: Math.cos(h) * c,\n b: Math.sin(h) * c,\n alpha: hclColor.alpha\n });\n}\nfunction interpolateHue(a, b, t) {\n const d = b - a;\n return a + t * (d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d);\n}\nfunction interpolateHcl(from, to, t) {\n return {\n h: interpolateHue(from.h, to.h, t),\n c: number(from.c, to.c, t),\n l: number(from.l, to.l, t),\n alpha: number(from.alpha, to.alpha, t)\n };\n}\nconst lab = {\n forward: rgbToLab,\n reverse: labToRgb,\n interpolate: interpolateLab\n};\nconst hcl = {\n forward: rgbToHcl,\n reverse: hclToRgb,\n interpolate: interpolateHcl\n};\n\nvar colorSpaces = /*#__PURE__*/Object.freeze({\n __proto__: null,\n lab: lab,\n hcl: hcl\n});\n\nclass Interpolate {\n constructor(type, operator, interpolation, input, stops) {\n this.type = type;\n this.operator = operator;\n this.interpolation = interpolation;\n this.input = input;\n this.labels = [];\n this.outputs = [];\n for (const [label, expression] of stops) {\n this.labels.push(label);\n this.outputs.push(expression);\n }\n }\n static interpolationFactor(interpolation, input, lower, upper) {\n let t = 0;\n if (interpolation.name === 'exponential') {\n t = exponentialInterpolation(input, interpolation.base, lower, upper);\n }\n else if (interpolation.name === 'linear') {\n t = exponentialInterpolation(input, 1, lower, upper);\n }\n else if (interpolation.name === 'cubic-bezier') {\n const c = interpolation.controlPoints;\n const ub = new unitbezier(c[0], c[1], c[2], c[3]);\n t = ub.solve(exponentialInterpolation(input, 1, lower, upper));\n }\n return t;\n }\n static parse(args, context) {\n let [operator, interpolation, input, ...rest] = args;\n if (!Array.isArray(interpolation) || interpolation.length === 0) {\n return context.error('Expected an interpolation type expression.', 1);\n }\n if (interpolation[0] === 'linear') {\n interpolation = { name: 'linear' };\n }\n else if (interpolation[0] === 'exponential') {\n const base = interpolation[1];\n if (typeof base !== 'number')\n return context.error('Exponential interpolation requires a numeric base.', 1, 1);\n interpolation = {\n name: 'exponential',\n base\n };\n }\n else if (interpolation[0] === 'cubic-bezier') {\n const controlPoints = interpolation.slice(1);\n if (controlPoints.length !== 4 ||\n controlPoints.some(t => typeof t !== 'number' || t < 0 || t > 1)) {\n return context.error('Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.', 1);\n }\n interpolation = {\n name: 'cubic-bezier',\n controlPoints: controlPoints\n };\n }\n else {\n return context.error(`Unknown interpolation type ${String(interpolation[0])}`, 1, 0);\n }\n if (args.length - 1 < 4) {\n return context.error(`Expected at least 4 arguments, but found only ${args.length - 1}.`);\n }\n if ((args.length - 1) % 2 !== 0) {\n return context.error('Expected an even number of arguments.');\n }\n input = context.parse(input, 2, NumberType);\n if (!input)\n return null;\n const stops = [];\n let outputType = null;\n if (operator === 'interpolate-hcl' || operator === 'interpolate-lab') {\n outputType = ColorType;\n }\n else if (context.expectedType && context.expectedType.kind !== 'value') {\n outputType = context.expectedType;\n }\n for (let i = 0; i < rest.length; i += 2) {\n const label = rest[i];\n const value = rest[i + 1];\n const labelKey = i + 3;\n const valueKey = i + 4;\n if (typeof label !== 'number') {\n return context.error('Input/output pairs for \"interpolate\" expressions must be defined using literal numeric values (not computed expressions) for the input values.', labelKey);\n }\n if (stops.length && stops[stops.length - 1][0] >= label) {\n return context.error('Input/output pairs for \"interpolate\" expressions must be arranged with input values in strictly ascending order.', labelKey);\n }\n const parsed = context.parse(value, valueKey, outputType);\n if (!parsed)\n return null;\n outputType = outputType || parsed.type;\n stops.push([label, parsed]);\n }\n if (outputType.kind !== 'number' &&\n outputType.kind !== 'color' &&\n outputType.kind !== 'padding' &&\n !(outputType.kind === 'array' &&\n outputType.itemType.kind === 'number' &&\n typeof outputType.N === 'number')) {\n return context.error(`Type ${toString$1(outputType)} is not interpolatable.`);\n }\n return new Interpolate(outputType, operator, interpolation, input, stops);\n }\n evaluate(ctx) {\n const labels = this.labels;\n const outputs = this.outputs;\n if (labels.length === 1) {\n return outputs[0].evaluate(ctx);\n }\n const value = this.input.evaluate(ctx);\n if (value <= labels[0]) {\n return outputs[0].evaluate(ctx);\n }\n const stopCount = labels.length;\n if (value >= labels[stopCount - 1]) {\n return outputs[stopCount - 1].evaluate(ctx);\n }\n const index = findStopLessThanOrEqualTo(labels, value);\n const lower = labels[index];\n const upper = labels[index + 1];\n const t = Interpolate.interpolationFactor(this.interpolation, value, lower, upper);\n const outputLower = outputs[index].evaluate(ctx);\n const outputUpper = outputs[index + 1].evaluate(ctx);\n if (this.operator === 'interpolate') {\n return interpolate[this.type.kind.toLowerCase()](outputLower, outputUpper, t); // eslint-disable-line import/namespace\n }\n else if (this.operator === 'interpolate-hcl') {\n return hcl.reverse(hcl.interpolate(hcl.forward(outputLower), hcl.forward(outputUpper), t));\n }\n else {\n return lab.reverse(lab.interpolate(lab.forward(outputLower), lab.forward(outputUpper), t));\n }\n }\n eachChild(fn) {\n fn(this.input);\n for (const expression of this.outputs) {\n fn(expression);\n }\n }\n outputDefined() {\n return this.outputs.every(out => out.outputDefined());\n }\n}\n/**\n * Returns a ratio that can be used to interpolate between exponential function\n * stops.\n * How it works: Two consecutive stop values define a (scaled and shifted) exponential function `f(x) = a * base^x + b`, where `base` is the user-specified base,\n * and `a` and `b` are constants affording sufficient degrees of freedom to fit\n * the function to the given stops.\n *\n * Here's a bit of algebra that lets us compute `f(x)` directly from the stop\n * values without explicitly solving for `a` and `b`:\n *\n * First stop value: `f(x0) = y0 = a * base^x0 + b`\n * Second stop value: `f(x1) = y1 = a * base^x1 + b`\n * => `y1 - y0 = a(base^x1 - base^x0)`\n * => `a = (y1 - y0)/(base^x1 - base^x0)`\n *\n * Desired value: `f(x) = y = a * base^x + b`\n * => `f(x) = y0 + a * (base^x - base^x0)`\n *\n * From the above, we can replace the `a` in `a * (base^x - base^x0)` and do a\n * little algebra:\n * ```\n * a * (base^x - base^x0) = (y1 - y0)/(base^x1 - base^x0) * (base^x - base^x0)\n * = (y1 - y0) * (base^x - base^x0) / (base^x1 - base^x0)\n * ```\n *\n * If we let `(base^x - base^x0) / (base^x1 base^x0)`, then we have\n * `f(x) = y0 + (y1 - y0) * ratio`. In other words, `ratio` may be treated as\n * an interpolation factor between the two stops' output values.\n *\n * (Note: a slightly different form for `ratio`,\n * `(base^(x-x0) - 1) / (base^(x1-x0) - 1) `, is equivalent, but requires fewer\n * expensive `Math.pow()` operations.)\n *\n * @private\n*/\nfunction exponentialInterpolation(input, base, lowerValue, upperValue) {\n const difference = upperValue - lowerValue;\n const progress = input - lowerValue;\n if (difference === 0) {\n return 0;\n }\n else if (base === 1) {\n return progress / difference;\n }\n else {\n return (Math.pow(base, progress) - 1) / (Math.pow(base, difference) - 1);\n }\n}\n\nclass Coalesce {\n constructor(type, args) {\n this.type = type;\n this.args = args;\n }\n static parse(args, context) {\n if (args.length < 2) {\n return context.error('Expectected at least one argument.');\n }\n let outputType = null;\n const expectedType = context.expectedType;\n if (expectedType && expectedType.kind !== 'value') {\n outputType = expectedType;\n }\n const parsedArgs = [];\n for (const arg of args.slice(1)) {\n const parsed = context.parse(arg, 1 + parsedArgs.length, outputType, undefined, { typeAnnotation: 'omit' });\n if (!parsed)\n return null;\n outputType = outputType || parsed.type;\n parsedArgs.push(parsed);\n }\n assert$1.exports(outputType);\n // Above, we parse arguments without inferred type annotation so that\n // they don't produce a runtime error for `null` input, which would\n // preempt the desired null-coalescing behavior.\n // Thus, if any of our arguments would have needed an annotation, we\n // need to wrap the enclosing coalesce expression with it instead.\n const needsAnnotation = expectedType &&\n parsedArgs.some(arg => checkSubtype(expectedType, arg.type));\n return needsAnnotation ?\n new Coalesce(ValueType, parsedArgs) :\n new Coalesce(outputType, parsedArgs);\n }\n evaluate(ctx) {\n let result = null;\n let argCount = 0;\n let requestedImageName;\n for (const arg of this.args) {\n argCount++;\n result = arg.evaluate(ctx);\n // we need to keep track of the first requested image in a coalesce statement\n // if coalesce can't find a valid image, we return the first image name so styleimagemissing can fire\n if (result && result instanceof ResolvedImage && !result.available) {\n if (!requestedImageName) {\n requestedImageName = result.name;\n }\n result = null;\n if (argCount === this.args.length) {\n result = requestedImageName;\n }\n }\n if (result !== null)\n break;\n }\n return result;\n }\n eachChild(fn) {\n this.args.forEach(fn);\n }\n outputDefined() {\n return this.args.every(arg => arg.outputDefined());\n }\n}\n\nclass Let {\n constructor(bindings, result) {\n this.type = result.type;\n this.bindings = [].concat(bindings);\n this.result = result;\n }\n evaluate(ctx) {\n return this.result.evaluate(ctx);\n }\n eachChild(fn) {\n for (const binding of this.bindings) {\n fn(binding[1]);\n }\n fn(this.result);\n }\n static parse(args, context) {\n if (args.length < 4)\n return context.error(`Expected at least 3 arguments, but found ${args.length - 1} instead.`);\n const bindings = [];\n for (let i = 1; i < args.length - 1; i += 2) {\n const name = args[i];\n if (typeof name !== 'string') {\n return context.error(`Expected string, but found ${typeof name} instead.`, i);\n }\n if (/[^a-zA-Z0-9_]/.test(name)) {\n return context.error('Variable names must contain only alphanumeric characters or \\'_\\'.', i);\n }\n const value = context.parse(args[i + 1], i + 1);\n if (!value)\n return null;\n bindings.push([name, value]);\n }\n const result = context.parse(args[args.length - 1], args.length - 1, context.expectedType, bindings);\n if (!result)\n return null;\n return new Let(bindings, result);\n }\n outputDefined() {\n return this.result.outputDefined();\n }\n}\n\nclass At {\n constructor(type, index, input) {\n this.type = type;\n this.index = index;\n this.input = input;\n }\n static parse(args, context) {\n if (args.length !== 3)\n return context.error(`Expected 2 arguments, but found ${args.length - 1} instead.`);\n const index = context.parse(args[1], 1, NumberType);\n const input = context.parse(args[2], 2, array$1(context.expectedType || ValueType));\n if (!index || !input)\n return null;\n const t = input.type;\n return new At(t.itemType, index, input);\n }\n evaluate(ctx) {\n const index = this.index.evaluate(ctx);\n const array = this.input.evaluate(ctx);\n if (index < 0) {\n throw new RuntimeError(`Array index out of bounds: ${index} < 0.`);\n }\n if (index >= array.length) {\n throw new RuntimeError(`Array index out of bounds: ${index} > ${array.length - 1}.`);\n }\n if (index !== Math.floor(index)) {\n throw new RuntimeError(`Array index must be an integer, but found ${index} instead.`);\n }\n return array[index];\n }\n eachChild(fn) {\n fn(this.index);\n fn(this.input);\n }\n outputDefined() {\n return false;\n }\n}\n\nclass In {\n constructor(needle, haystack) {\n this.type = BooleanType;\n this.needle = needle;\n this.haystack = haystack;\n }\n static parse(args, context) {\n if (args.length !== 3) {\n return context.error(`Expected 2 arguments, but found ${args.length - 1} instead.`);\n }\n const needle = context.parse(args[1], 1, ValueType);\n const haystack = context.parse(args[2], 2, ValueType);\n if (!needle || !haystack)\n return null;\n if (!isValidType(needle.type, [BooleanType, StringType, NumberType, NullType, ValueType])) {\n return context.error(`Expected first argument to be of type boolean, string, number or null, but found ${toString$1(needle.type)} instead`);\n }\n return new In(needle, haystack);\n }\n evaluate(ctx) {\n const needle = this.needle.evaluate(ctx);\n const haystack = this.haystack.evaluate(ctx);\n if (!haystack)\n return false;\n if (!isValidNativeType(needle, ['boolean', 'string', 'number', 'null'])) {\n throw new RuntimeError(`Expected first argument to be of type boolean, string, number or null, but found ${toString$1(typeOf(needle))} instead.`);\n }\n if (!isValidNativeType(haystack, ['string', 'array'])) {\n throw new RuntimeError(`Expected second argument to be of type array or string, but found ${toString$1(typeOf(haystack))} instead.`);\n }\n return haystack.indexOf(needle) >= 0;\n }\n eachChild(fn) {\n fn(this.needle);\n fn(this.haystack);\n }\n outputDefined() {\n return true;\n }\n}\n\nclass IndexOf {\n constructor(needle, haystack, fromIndex) {\n this.type = NumberType;\n this.needle = needle;\n this.haystack = haystack;\n this.fromIndex = fromIndex;\n }\n static parse(args, context) {\n if (args.length <= 2 || args.length >= 5) {\n return context.error(`Expected 3 or 4 arguments, but found ${args.length - 1} instead.`);\n }\n const needle = context.parse(args[1], 1, ValueType);\n const haystack = context.parse(args[2], 2, ValueType);\n if (!needle || !haystack)\n return null;\n if (!isValidType(needle.type, [BooleanType, StringType, NumberType, NullType, ValueType])) {\n return context.error(`Expected first argument to be of type boolean, string, number or null, but found ${toString$1(needle.type)} instead`);\n }\n if (args.length === 4) {\n const fromIndex = context.parse(args[3], 3, NumberType);\n if (!fromIndex)\n return null;\n return new IndexOf(needle, haystack, fromIndex);\n }\n else {\n return new IndexOf(needle, haystack);\n }\n }\n evaluate(ctx) {\n const needle = this.needle.evaluate(ctx);\n const haystack = this.haystack.evaluate(ctx);\n if (!isValidNativeType(needle, ['boolean', 'string', 'number', 'null'])) {\n throw new RuntimeError(`Expected first argument to be of type boolean, string, number or null, but found ${toString$1(typeOf(needle))} instead.`);\n }\n if (!isValidNativeType(haystack, ['string', 'array'])) {\n throw new RuntimeError(`Expected second argument to be of type array or string, but found ${toString$1(typeOf(haystack))} instead.`);\n }\n if (this.fromIndex) {\n const fromIndex = this.fromIndex.evaluate(ctx);\n return haystack.indexOf(needle, fromIndex);\n }\n return haystack.indexOf(needle);\n }\n eachChild(fn) {\n fn(this.needle);\n fn(this.haystack);\n if (this.fromIndex) {\n fn(this.fromIndex);\n }\n }\n outputDefined() {\n return false;\n }\n}\n\nclass Match {\n constructor(inputType, outputType, input, cases, outputs, otherwise) {\n this.inputType = inputType;\n this.type = outputType;\n this.input = input;\n this.cases = cases;\n this.outputs = outputs;\n this.otherwise = otherwise;\n }\n static parse(args, context) {\n if (args.length < 5)\n return context.error(`Expected at least 4 arguments, but found only ${args.length - 1}.`);\n if (args.length % 2 !== 1)\n return context.error('Expected an even number of arguments.');\n let inputType;\n let outputType;\n if (context.expectedType && context.expectedType.kind !== 'value') {\n outputType = context.expectedType;\n }\n const cases = {};\n const outputs = [];\n for (let i = 2; i < args.length - 1; i += 2) {\n let labels = args[i];\n const value = args[i + 1];\n if (!Array.isArray(labels)) {\n labels = [labels];\n }\n const labelContext = context.concat(i);\n if (labels.length === 0) {\n return labelContext.error('Expected at least one branch label.');\n }\n for (const label of labels) {\n if (typeof label !== 'number' && typeof label !== 'string') {\n return labelContext.error('Branch labels must be numbers or strings.');\n }\n else if (typeof label === 'number' && Math.abs(label) > Number.MAX_SAFE_INTEGER) {\n return labelContext.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);\n }\n else if (typeof label === 'number' && Math.floor(label) !== label) {\n return labelContext.error('Numeric branch labels must be integer values.');\n }\n else if (!inputType) {\n inputType = typeOf(label);\n }\n else if (labelContext.checkSubtype(inputType, typeOf(label))) {\n return null;\n }\n if (typeof cases[String(label)] !== 'undefined') {\n return labelContext.error('Branch labels must be unique.');\n }\n cases[String(label)] = outputs.length;\n }\n const result = context.parse(value, i, outputType);\n if (!result)\n return null;\n outputType = outputType || result.type;\n outputs.push(result);\n }\n const input = context.parse(args[1], 1, ValueType);\n if (!input)\n return null;\n const otherwise = context.parse(args[args.length - 1], args.length - 1, outputType);\n if (!otherwise)\n return null;\n assert$1.exports(inputType && outputType);\n if (input.type.kind !== 'value' && context.concat(1).checkSubtype(inputType, input.type)) {\n return null;\n }\n return new Match(inputType, outputType, input, cases, outputs, otherwise);\n }\n evaluate(ctx) {\n const input = this.input.evaluate(ctx);\n const output = (typeOf(input) === this.inputType && this.outputs[this.cases[input]]) || this.otherwise;\n return output.evaluate(ctx);\n }\n eachChild(fn) {\n fn(this.input);\n this.outputs.forEach(fn);\n fn(this.otherwise);\n }\n outputDefined() {\n return this.outputs.every(out => out.outputDefined()) && this.otherwise.outputDefined();\n }\n}\n\nclass Case {\n constructor(type, branches, otherwise) {\n this.type = type;\n this.branches = branches;\n this.otherwise = otherwise;\n }\n static parse(args, context) {\n if (args.length < 4)\n return context.error(`Expected at least 3 arguments, but found only ${args.length - 1}.`);\n if (args.length % 2 !== 0)\n return context.error('Expected an odd number of arguments.');\n let outputType;\n if (context.expectedType && context.expectedType.kind !== 'value') {\n outputType = context.expectedType;\n }\n const branches = [];\n for (let i = 1; i < args.length - 1; i += 2) {\n const test = context.parse(args[i], i, BooleanType);\n if (!test)\n return null;\n const result = context.parse(args[i + 1], i + 1, outputType);\n if (!result)\n return null;\n branches.push([test, result]);\n outputType = outputType || result.type;\n }\n const otherwise = context.parse(args[args.length - 1], args.length - 1, outputType);\n if (!otherwise)\n return null;\n assert$1.exports(outputType);\n return new Case(outputType, branches, otherwise);\n }\n evaluate(ctx) {\n for (const [test, expression] of this.branches) {\n if (test.evaluate(ctx)) {\n return expression.evaluate(ctx);\n }\n }\n return this.otherwise.evaluate(ctx);\n }\n eachChild(fn) {\n for (const [test, expression] of this.branches) {\n fn(test);\n fn(expression);\n }\n fn(this.otherwise);\n }\n outputDefined() {\n return this.branches.every(([_, out]) => out.outputDefined()) && this.otherwise.outputDefined();\n }\n}\n\nclass Slice {\n constructor(type, input, beginIndex, endIndex) {\n this.type = type;\n this.input = input;\n this.beginIndex = beginIndex;\n this.endIndex = endIndex;\n }\n static parse(args, context) {\n if (args.length <= 2 || args.length >= 5) {\n return context.error(`Expected 3 or 4 arguments, but found ${args.length - 1} instead.`);\n }\n const input = context.parse(args[1], 1, ValueType);\n const beginIndex = context.parse(args[2], 2, NumberType);\n if (!input || !beginIndex)\n return null;\n if (!isValidType(input.type, [array$1(ValueType), StringType, ValueType])) {\n return context.error(`Expected first argument to be of type array or string, but found ${toString$1(input.type)} instead`);\n }\n if (args.length === 4) {\n const endIndex = context.parse(args[3], 3, NumberType);\n if (!endIndex)\n return null;\n return new Slice(input.type, input, beginIndex, endIndex);\n }\n else {\n return new Slice(input.type, input, beginIndex);\n }\n }\n evaluate(ctx) {\n const input = this.input.evaluate(ctx);\n const beginIndex = this.beginIndex.evaluate(ctx);\n if (!isValidNativeType(input, ['string', 'array'])) {\n throw new RuntimeError(`Expected first argument to be of type array or string, but found ${toString$1(typeOf(input))} instead.`);\n }\n if (this.endIndex) {\n const endIndex = this.endIndex.evaluate(ctx);\n return input.slice(beginIndex, endIndex);\n }\n return input.slice(beginIndex);\n }\n eachChild(fn) {\n fn(this.input);\n fn(this.beginIndex);\n if (this.endIndex) {\n fn(this.endIndex);\n }\n }\n outputDefined() {\n return false;\n }\n}\n\nfunction isComparableType(op, type) {\n if (op === '==' || op === '!=') {\n // equality operator\n return type.kind === 'boolean' ||\n type.kind === 'string' ||\n type.kind === 'number' ||\n type.kind === 'null' ||\n type.kind === 'value';\n }\n else {\n // ordering operator\n return type.kind === 'string' ||\n type.kind === 'number' ||\n type.kind === 'value';\n }\n}\nfunction eq(ctx, a, b) { return a === b; }\nfunction neq(ctx, a, b) { return a !== b; }\nfunction lt(ctx, a, b) { return a < b; }\nfunction gt(ctx, a, b) { return a > b; }\nfunction lteq(ctx, a, b) { return a <= b; }\nfunction gteq(ctx, a, b) { return a >= b; }\nfunction eqCollate(ctx, a, b, c) { return c.compare(a, b) === 0; }\nfunction neqCollate(ctx, a, b, c) { return !eqCollate(ctx, a, b, c); }\nfunction ltCollate(ctx, a, b, c) { return c.compare(a, b) < 0; }\nfunction gtCollate(ctx, a, b, c) { return c.compare(a, b) > 0; }\nfunction lteqCollate(ctx, a, b, c) { return c.compare(a, b) <= 0; }\nfunction gteqCollate(ctx, a, b, c) { return c.compare(a, b) >= 0; }\n/**\n * Special form for comparison operators, implementing the signatures:\n * - (T, T, ?Collator) => boolean\n * - (T, value, ?Collator) => boolean\n * - (value, T, ?Collator) => boolean\n *\n * For inequalities, T must be either value, string, or number. For ==/!=, it\n * can also be boolean or null.\n *\n * Equality semantics are equivalent to Javascript's strict equality (===/!==)\n * -- i.e., when the arguments' types don't match, == evaluates to false, != to\n * true.\n *\n * When types don't match in an ordering comparison, a runtime error is thrown.\n *\n * @private\n */\nfunction makeComparison(op, compareBasic, compareWithCollator) {\n const isOrderComparison = op !== '==' && op !== '!=';\n return class Comparison {\n constructor(lhs, rhs, collator) {\n this.type = BooleanType;\n this.lhs = lhs;\n this.rhs = rhs;\n this.collator = collator;\n this.hasUntypedArgument = lhs.type.kind === 'value' || rhs.type.kind === 'value';\n }\n static parse(args, context) {\n if (args.length !== 3 && args.length !== 4)\n return context.error('Expected two or three arguments.');\n const op = args[0];\n let lhs = context.parse(args[1], 1, ValueType);\n if (!lhs)\n return null;\n if (!isComparableType(op, lhs.type)) {\n return context.concat(1).error(`\"${op}\" comparisons are not supported for type '${toString$1(lhs.type)}'.`);\n }\n let rhs = context.parse(args[2], 2, ValueType);\n if (!rhs)\n return null;\n if (!isComparableType(op, rhs.type)) {\n return context.concat(2).error(`\"${op}\" comparisons are not supported for type '${toString$1(rhs.type)}'.`);\n }\n if (lhs.type.kind !== rhs.type.kind &&\n lhs.type.kind !== 'value' &&\n rhs.type.kind !== 'value') {\n return context.error(`Cannot compare types '${toString$1(lhs.type)}' and '${toString$1(rhs.type)}'.`);\n }\n if (isOrderComparison) {\n // typing rules specific to less/greater than operators\n if (lhs.type.kind === 'value' && rhs.type.kind !== 'value') {\n // (value, T)\n lhs = new Assertion(rhs.type, [lhs]);\n }\n else if (lhs.type.kind !== 'value' && rhs.type.kind === 'value') {\n // (T, value)\n rhs = new Assertion(lhs.type, [rhs]);\n }\n }\n let collator = null;\n if (args.length === 4) {\n if (lhs.type.kind !== 'string' &&\n rhs.type.kind !== 'string' &&\n lhs.type.kind !== 'value' &&\n rhs.type.kind !== 'value') {\n return context.error('Cannot use collator to compare non-string types.');\n }\n collator = context.parse(args[3], 3, CollatorType);\n if (!collator)\n return null;\n }\n return new Comparison(lhs, rhs, collator);\n }\n evaluate(ctx) {\n const lhs = this.lhs.evaluate(ctx);\n const rhs = this.rhs.evaluate(ctx);\n if (isOrderComparison && this.hasUntypedArgument) {\n const lt = typeOf(lhs);\n const rt = typeOf(rhs);\n // check that type is string or number, and equal\n if (lt.kind !== rt.kind || !(lt.kind === 'string' || lt.kind === 'number')) {\n throw new RuntimeError(`Expected arguments for \"${op}\" to be (string, string) or (number, number), but found (${lt.kind}, ${rt.kind}) instead.`);\n }\n }\n if (this.collator && !isOrderComparison && this.hasUntypedArgument) {\n const lt = typeOf(lhs);\n const rt = typeOf(rhs);\n if (lt.kind !== 'string' || rt.kind !== 'string') {\n return compareBasic(ctx, lhs, rhs);\n }\n }\n return this.collator ?\n compareWithCollator(ctx, lhs, rhs, this.collator.evaluate(ctx)) :\n compareBasic(ctx, lhs, rhs);\n }\n eachChild(fn) {\n fn(this.lhs);\n fn(this.rhs);\n if (this.collator) {\n fn(this.collator);\n }\n }\n outputDefined() {\n return true;\n }\n };\n}\nconst Equals = makeComparison('==', eq, eqCollate);\nconst NotEquals = makeComparison('!=', neq, neqCollate);\nconst LessThan = makeComparison('<', lt, ltCollate);\nconst GreaterThan = makeComparison('>', gt, gtCollate);\nconst LessThanOrEqual = makeComparison('<=', lteq, lteqCollate);\nconst GreaterThanOrEqual = makeComparison('>=', gteq, gteqCollate);\n\nclass NumberFormat {\n constructor(number, locale, currency, minFractionDigits, maxFractionDigits) {\n this.type = StringType;\n this.number = number;\n this.locale = locale;\n this.currency = currency;\n this.minFractionDigits = minFractionDigits;\n this.maxFractionDigits = maxFractionDigits;\n }\n static parse(args, context) {\n if (args.length !== 3)\n return context.error('Expected two arguments.');\n const number = context.parse(args[1], 1, NumberType);\n if (!number)\n return null;\n const options = args[2];\n if (typeof options !== 'object' || Array.isArray(options))\n return context.error('NumberFormat options argument must be an object.');\n let locale = null;\n if (options['locale']) {\n locale = context.parse(options['locale'], 1, StringType);\n if (!locale)\n return null;\n }\n let currency = null;\n if (options['currency']) {\n currency = context.parse(options['currency'], 1, StringType);\n if (!currency)\n return null;\n }\n let minFractionDigits = null;\n if (options['min-fraction-digits']) {\n minFractionDigits = context.parse(options['min-fraction-digits'], 1, NumberType);\n if (!minFractionDigits)\n return null;\n }\n let maxFractionDigits = null;\n if (options['max-fraction-digits']) {\n maxFractionDigits = context.parse(options['max-fraction-digits'], 1, NumberType);\n if (!maxFractionDigits)\n return null;\n }\n return new NumberFormat(number, locale, currency, minFractionDigits, maxFractionDigits);\n }\n evaluate(ctx) {\n return new Intl.NumberFormat(this.locale ? this.locale.evaluate(ctx) : [], {\n style: this.currency ? 'currency' : 'decimal',\n currency: this.currency ? this.currency.evaluate(ctx) : undefined,\n minimumFractionDigits: this.minFractionDigits ? this.minFractionDigits.evaluate(ctx) : undefined,\n maximumFractionDigits: this.maxFractionDigits ? this.maxFractionDigits.evaluate(ctx) : undefined,\n }).format(this.number.evaluate(ctx));\n }\n eachChild(fn) {\n fn(this.number);\n if (this.locale) {\n fn(this.locale);\n }\n if (this.currency) {\n fn(this.currency);\n }\n if (this.minFractionDigits) {\n fn(this.minFractionDigits);\n }\n if (this.maxFractionDigits) {\n fn(this.maxFractionDigits);\n }\n }\n outputDefined() {\n return false;\n }\n}\n\nclass FormatExpression {\n constructor(sections) {\n this.type = FormattedType;\n this.sections = sections;\n }\n static parse(args, context) {\n if (args.length < 2) {\n return context.error('Expected at least one argument.');\n }\n const firstArg = args[1];\n if (!Array.isArray(firstArg) && typeof firstArg === 'object') {\n return context.error('First argument must be an image or text section.');\n }\n const sections = [];\n let nextTokenMayBeObject = false;\n for (let i = 1; i <= args.length - 1; ++i) {\n const arg = args[i];\n if (nextTokenMayBeObject && typeof arg === 'object' && !Array.isArray(arg)) {\n nextTokenMayBeObject = false;\n let scale = null;\n if (arg['font-scale']) {\n scale = context.parse(arg['font-scale'], 1, NumberType);\n if (!scale)\n return null;\n }\n let font = null;\n if (arg['text-font']) {\n font = context.parse(arg['text-font'], 1, array$1(StringType));\n if (!font)\n return null;\n }\n let textColor = null;\n if (arg['text-color']) {\n textColor = context.parse(arg['text-color'], 1, ColorType);\n if (!textColor)\n return null;\n }\n const lastExpression = sections[sections.length - 1];\n lastExpression.scale = scale;\n lastExpression.font = font;\n lastExpression.textColor = textColor;\n }\n else {\n const content = context.parse(args[i], 1, ValueType);\n if (!content)\n return null;\n const kind = content.type.kind;\n if (kind !== 'string' && kind !== 'value' && kind !== 'null' && kind !== 'resolvedImage')\n return context.error('Formatted text type must be \\'string\\', \\'value\\', \\'image\\' or \\'null\\'.');\n nextTokenMayBeObject = true;\n sections.push({ content, scale: null, font: null, textColor: null });\n }\n }\n return new FormatExpression(sections);\n }\n evaluate(ctx) {\n const evaluateSection = section => {\n const evaluatedContent = section.content.evaluate(ctx);\n if (typeOf(evaluatedContent) === ResolvedImageType) {\n return new FormattedSection('', evaluatedContent, null, null, null);\n }\n return new FormattedSection(toString(evaluatedContent), null, section.scale ? section.scale.evaluate(ctx) : null, section.font ? section.font.evaluate(ctx).join(',') : null, section.textColor ? section.textColor.evaluate(ctx) : null);\n };\n return new Formatted(this.sections.map(evaluateSection));\n }\n eachChild(fn) {\n for (const section of this.sections) {\n fn(section.content);\n if (section.scale) {\n fn(section.scale);\n }\n if (section.font) {\n fn(section.font);\n }\n if (section.textColor) {\n fn(section.textColor);\n }\n }\n }\n outputDefined() {\n // Technically the combinatoric set of all children\n // Usually, this.text will be undefined anyway\n return false;\n }\n}\n\nclass ImageExpression {\n constructor(input) {\n this.type = ResolvedImageType;\n this.input = input;\n }\n static parse(args, context) {\n if (args.length !== 2) {\n return context.error('Expected two arguments.');\n }\n const name = context.parse(args[1], 1, StringType);\n if (!name)\n return context.error('No image name provided.');\n return new ImageExpression(name);\n }\n evaluate(ctx) {\n const evaluatedImageName = this.input.evaluate(ctx);\n const value = ResolvedImage.fromString(evaluatedImageName);\n if (value && ctx.availableImages)\n value.available = ctx.availableImages.indexOf(evaluatedImageName) > -1;\n return value;\n }\n eachChild(fn) {\n fn(this.input);\n }\n outputDefined() {\n // The output of image is determined by the list of available images in the evaluation context\n return false;\n }\n}\n\nclass Length {\n constructor(input) {\n this.type = NumberType;\n this.input = input;\n }\n static parse(args, context) {\n if (args.length !== 2)\n return context.error(`Expected 1 argument, but found ${args.length - 1} instead.`);\n const input = context.parse(args[1], 1);\n if (!input)\n return null;\n if (input.type.kind !== 'array' && input.type.kind !== 'string' && input.type.kind !== 'value')\n return context.error(`Expected argument of type string or array, but found ${toString$1(input.type)} instead.`);\n return new Length(input);\n }\n evaluate(ctx) {\n const input = this.input.evaluate(ctx);\n if (typeof input === 'string') {\n return input.length;\n }\n else if (Array.isArray(input)) {\n return input.length;\n }\n else {\n throw new RuntimeError(`Expected value to be of type string or array, but found ${toString$1(typeOf(input))} instead.`);\n }\n }\n eachChild(fn) {\n fn(this.input);\n }\n outputDefined() {\n return false;\n }\n}\n\nconst expressions$1 = {\n // special forms\n '==': Equals,\n '!=': NotEquals,\n '>': GreaterThan,\n '<': LessThan,\n '>=': GreaterThanOrEqual,\n '<=': LessThanOrEqual,\n 'array': Assertion,\n 'at': At,\n 'boolean': Assertion,\n 'case': Case,\n 'coalesce': Coalesce,\n 'collator': CollatorExpression,\n 'format': FormatExpression,\n 'image': ImageExpression,\n 'in': In,\n 'index-of': IndexOf,\n 'interpolate': Interpolate,\n 'interpolate-hcl': Interpolate,\n 'interpolate-lab': Interpolate,\n 'length': Length,\n 'let': Let,\n 'literal': Literal,\n 'match': Match,\n 'number': Assertion,\n 'number-format': NumberFormat,\n 'object': Assertion,\n 'slice': Slice,\n 'step': Step,\n 'string': Assertion,\n 'to-boolean': Coercion,\n 'to-color': Coercion,\n 'to-number': Coercion,\n 'to-string': Coercion,\n 'var': Var,\n 'within': Within\n};\nfunction rgba(ctx, [r, g, b, a]) {\n r = r.evaluate(ctx);\n g = g.evaluate(ctx);\n b = b.evaluate(ctx);\n const alpha = a ? a.evaluate(ctx) : 1;\n const error = validateRGBA(r, g, b, alpha);\n if (error)\n throw new RuntimeError(error);\n return new Color(r / 255 * alpha, g / 255 * alpha, b / 255 * alpha, alpha);\n}\nfunction has(key, obj) {\n return key in obj;\n}\nfunction get(key, obj) {\n const v = obj[key];\n return typeof v === 'undefined' ? null : v;\n}\nfunction binarySearch(v, a, i, j) {\n while (i <= j) {\n const m = (i + j) >> 1;\n if (a[m] === v)\n return true;\n if (a[m] > v)\n j = m - 1;\n else\n i = m + 1;\n }\n return false;\n}\nfunction varargs(type) {\n return { type };\n}\nCompoundExpression.register(expressions$1, {\n 'error': [\n ErrorType,\n [StringType],\n (ctx, [v]) => { throw new RuntimeError(v.evaluate(ctx)); }\n ],\n 'typeof': [\n StringType,\n [ValueType],\n (ctx, [v]) => toString$1(typeOf(v.evaluate(ctx)))\n ],\n 'to-rgba': [\n array$1(NumberType, 4),\n [ColorType],\n (ctx, [v]) => {\n return v.evaluate(ctx).toArray();\n }\n ],\n 'rgb': [\n ColorType,\n [NumberType, NumberType, NumberType],\n rgba\n ],\n 'rgba': [\n ColorType,\n [NumberType, NumberType, NumberType, NumberType],\n rgba\n ],\n 'has': {\n type: BooleanType,\n overloads: [\n [\n [StringType],\n (ctx, [key]) => has(key.evaluate(ctx), ctx.properties())\n ], [\n [StringType, ObjectType],\n (ctx, [key, obj]) => has(key.evaluate(ctx), obj.evaluate(ctx))\n ]\n ]\n },\n 'get': {\n type: ValueType,\n overloads: [\n [\n [StringType],\n (ctx, [key]) => get(key.evaluate(ctx), ctx.properties())\n ], [\n [StringType, ObjectType],\n (ctx, [key, obj]) => get(key.evaluate(ctx), obj.evaluate(ctx))\n ]\n ]\n },\n 'feature-state': [\n ValueType,\n [StringType],\n (ctx, [key]) => get(key.evaluate(ctx), ctx.featureState || {})\n ],\n 'properties': [\n ObjectType,\n [],\n (ctx) => ctx.properties()\n ],\n 'geometry-type': [\n StringType,\n [],\n (ctx) => ctx.geometryType()\n ],\n 'id': [\n ValueType,\n [],\n (ctx) => ctx.id()\n ],\n 'zoom': [\n NumberType,\n [],\n (ctx) => ctx.globals.zoom\n ],\n 'heatmap-density': [\n NumberType,\n [],\n (ctx) => ctx.globals.heatmapDensity || 0\n ],\n 'line-progress': [\n NumberType,\n [],\n (ctx) => ctx.globals.lineProgress || 0\n ],\n 'accumulated': [\n ValueType,\n [],\n (ctx) => ctx.globals.accumulated === undefined ? null : ctx.globals.accumulated\n ],\n '+': [\n NumberType,\n varargs(NumberType),\n (ctx, args) => {\n let result = 0;\n for (const arg of args) {\n result += arg.evaluate(ctx);\n }\n return result;\n }\n ],\n '*': [\n NumberType,\n varargs(NumberType),\n (ctx, args) => {\n let result = 1;\n for (const arg of args) {\n result *= arg.evaluate(ctx);\n }\n return result;\n }\n ],\n '-': {\n type: NumberType,\n overloads: [\n [\n [NumberType, NumberType],\n (ctx, [a, b]) => a.evaluate(ctx) - b.evaluate(ctx)\n ], [\n [NumberType],\n (ctx, [a]) => -a.evaluate(ctx)\n ]\n ]\n },\n '/': [\n NumberType,\n [NumberType, NumberType],\n (ctx, [a, b]) => a.evaluate(ctx) / b.evaluate(ctx)\n ],\n '%': [\n NumberType,\n [NumberType, NumberType],\n (ctx, [a, b]) => a.evaluate(ctx) % b.evaluate(ctx)\n ],\n 'ln2': [\n NumberType,\n [],\n () => Math.LN2\n ],\n 'pi': [\n NumberType,\n [],\n () => Math.PI\n ],\n 'e': [\n NumberType,\n [],\n () => Math.E\n ],\n '^': [\n NumberType,\n [NumberType, NumberType],\n (ctx, [b, e]) => Math.pow(b.evaluate(ctx), e.evaluate(ctx))\n ],\n 'sqrt': [\n NumberType,\n [NumberType],\n (ctx, [x]) => Math.sqrt(x.evaluate(ctx))\n ],\n 'log10': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.log(n.evaluate(ctx)) / Math.LN10\n ],\n 'ln': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.log(n.evaluate(ctx))\n ],\n 'log2': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.log(n.evaluate(ctx)) / Math.LN2\n ],\n 'sin': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.sin(n.evaluate(ctx))\n ],\n 'cos': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.cos(n.evaluate(ctx))\n ],\n 'tan': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.tan(n.evaluate(ctx))\n ],\n 'asin': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.asin(n.evaluate(ctx))\n ],\n 'acos': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.acos(n.evaluate(ctx))\n ],\n 'atan': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.atan(n.evaluate(ctx))\n ],\n 'min': [\n NumberType,\n varargs(NumberType),\n (ctx, args) => Math.min(...args.map(arg => arg.evaluate(ctx)))\n ],\n 'max': [\n NumberType,\n varargs(NumberType),\n (ctx, args) => Math.max(...args.map(arg => arg.evaluate(ctx)))\n ],\n 'abs': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.abs(n.evaluate(ctx))\n ],\n 'round': [\n NumberType,\n [NumberType],\n (ctx, [n]) => {\n const v = n.evaluate(ctx);\n // Javascript's Math.round() rounds towards +Infinity for halfway\n // values, even when they're negative. It's more common to round\n // away from 0 (e.g., this is what python and C++ do)\n return v < 0 ? -Math.round(-v) : Math.round(v);\n }\n ],\n 'floor': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.floor(n.evaluate(ctx))\n ],\n 'ceil': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.ceil(n.evaluate(ctx))\n ],\n 'filter-==': [\n BooleanType,\n [StringType, ValueType],\n (ctx, [k, v]) => ctx.properties()[k.value] === v.value\n ],\n 'filter-id-==': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => ctx.id() === v.value\n ],\n 'filter-type-==': [\n BooleanType,\n [StringType],\n (ctx, [v]) => ctx.geometryType() === v.value\n ],\n 'filter-<': [\n BooleanType,\n [StringType, ValueType],\n (ctx, [k, v]) => {\n const a = ctx.properties()[k.value];\n const b = v.value;\n return typeof a === typeof b && a < b;\n }\n ],\n 'filter-id-<': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => {\n const a = ctx.id();\n const b = v.value;\n return typeof a === typeof b && a < b;\n }\n ],\n 'filter->': [\n BooleanType,\n [StringType, ValueType],\n (ctx, [k, v]) => {\n const a = ctx.properties()[k.value];\n const b = v.value;\n return typeof a === typeof b && a > b;\n }\n ],\n 'filter-id->': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => {\n const a = ctx.id();\n const b = v.value;\n return typeof a === typeof b && a > b;\n }\n ],\n 'filter-<=': [\n BooleanType,\n [StringType, ValueType],\n (ctx, [k, v]) => {\n const a = ctx.properties()[k.value];\n const b = v.value;\n return typeof a === typeof b && a <= b;\n }\n ],\n 'filter-id-<=': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => {\n const a = ctx.id();\n const b = v.value;\n return typeof a === typeof b && a <= b;\n }\n ],\n 'filter->=': [\n BooleanType,\n [StringType, ValueType],\n (ctx, [k, v]) => {\n const a = ctx.properties()[k.value];\n const b = v.value;\n return typeof a === typeof b && a >= b;\n }\n ],\n 'filter-id->=': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => {\n const a = ctx.id();\n const b = v.value;\n return typeof a === typeof b && a >= b;\n }\n ],\n 'filter-has': [\n BooleanType,\n [ValueType],\n (ctx, [k]) => k.value in ctx.properties()\n ],\n 'filter-has-id': [\n BooleanType,\n [],\n (ctx) => (ctx.id() !== null && ctx.id() !== undefined)\n ],\n 'filter-type-in': [\n BooleanType,\n [array$1(StringType)],\n (ctx, [v]) => v.value.indexOf(ctx.geometryType()) >= 0\n ],\n 'filter-id-in': [\n BooleanType,\n [array$1(ValueType)],\n (ctx, [v]) => v.value.indexOf(ctx.id()) >= 0\n ],\n 'filter-in-small': [\n BooleanType,\n [StringType, array$1(ValueType)],\n // assumes v is an array literal\n (ctx, [k, v]) => v.value.indexOf(ctx.properties()[k.value]) >= 0\n ],\n 'filter-in-large': [\n BooleanType,\n [StringType, array$1(ValueType)],\n // assumes v is a array literal with values sorted in ascending order and of a single type\n (ctx, [k, v]) => binarySearch(ctx.properties()[k.value], v.value, 0, v.value.length - 1)\n ],\n 'all': {\n type: BooleanType,\n overloads: [\n [\n [BooleanType, BooleanType],\n (ctx, [a, b]) => a.evaluate(ctx) && b.evaluate(ctx)\n ],\n [\n varargs(BooleanType),\n (ctx, args) => {\n for (const arg of args) {\n if (!arg.evaluate(ctx))\n return false;\n }\n return true;\n }\n ]\n ]\n },\n 'any': {\n type: BooleanType,\n overloads: [\n [\n [BooleanType, BooleanType],\n (ctx, [a, b]) => a.evaluate(ctx) || b.evaluate(ctx)\n ],\n [\n varargs(BooleanType),\n (ctx, args) => {\n for (const arg of args) {\n if (arg.evaluate(ctx))\n return true;\n }\n return false;\n }\n ]\n ]\n },\n '!': [\n BooleanType,\n [BooleanType],\n (ctx, [b]) => !b.evaluate(ctx)\n ],\n 'is-supported-script': [\n BooleanType,\n [StringType],\n // At parse time this will always return true, so we need to exclude this expression with isGlobalPropertyConstant\n (ctx, [s]) => {\n const isSupportedScript = ctx.globals && ctx.globals.isSupportedScript;\n if (isSupportedScript) {\n return isSupportedScript(s.evaluate(ctx));\n }\n return true;\n }\n ],\n 'upcase': [\n StringType,\n [StringType],\n (ctx, [s]) => s.evaluate(ctx).toUpperCase()\n ],\n 'downcase': [\n StringType,\n [StringType],\n (ctx, [s]) => s.evaluate(ctx).toLowerCase()\n ],\n 'concat': [\n StringType,\n varargs(ValueType),\n (ctx, args) => args.map(arg => toString(arg.evaluate(ctx))).join('')\n ],\n 'resolved-locale': [\n StringType,\n [CollatorType],\n (ctx, [collator]) => collator.evaluate(ctx).resolvedLocale()\n ]\n});\n\nfunction success(value) {\n return { result: 'success', value };\n}\nfunction error(value) {\n return { result: 'error', value };\n}\n\nfunction supportsPropertyExpression(spec) {\n return spec['property-type'] === 'data-driven' || spec['property-type'] === 'cross-faded-data-driven';\n}\nfunction supportsZoomExpression(spec) {\n return !!spec.expression && spec.expression.parameters.indexOf('zoom') > -1;\n}\nfunction supportsInterpolation(spec) {\n return !!spec.expression && spec.expression.interpolated;\n}\n\nfunction getType(val) {\n if (val instanceof Number) {\n return 'number';\n }\n else if (val instanceof String) {\n return 'string';\n }\n else if (val instanceof Boolean) {\n return 'boolean';\n }\n else if (Array.isArray(val)) {\n return 'array';\n }\n else if (val === null) {\n return 'null';\n }\n else {\n return typeof val;\n }\n}\n\nfunction isFunction(value) {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\nfunction identityFunction(x) {\n return x;\n}\nfunction createFunction(parameters, propertySpec) {\n const isColor = propertySpec.type === 'color';\n const zoomAndFeatureDependent = parameters.stops && typeof parameters.stops[0][0] === 'object';\n const featureDependent = zoomAndFeatureDependent || parameters.property !== undefined;\n const zoomDependent = zoomAndFeatureDependent || !featureDependent;\n const type = parameters.type || (supportsInterpolation(propertySpec) ? 'exponential' : 'interval');\n if (isColor || propertySpec.type === 'padding') {\n const parseFn = isColor ? Color.parse : Padding.parse;\n parameters = extendBy({}, parameters);\n if (parameters.stops) {\n parameters.stops = parameters.stops.map((stop) => {\n return [stop[0], parseFn(stop[1])];\n });\n }\n if (parameters.default) {\n parameters.default = parseFn(parameters.default);\n }\n else {\n parameters.default = parseFn(propertySpec.default);\n }\n }\n if (parameters.colorSpace && parameters.colorSpace !== 'rgb' && !colorSpaces[parameters.colorSpace]) { // eslint-disable-line import/namespace\n throw new Error(`Unknown color space: ${parameters.colorSpace}`);\n }\n let innerFun;\n let hashedStops;\n let categoricalKeyType;\n if (type === 'exponential') {\n innerFun = evaluateExponentialFunction;\n }\n else if (type === 'interval') {\n innerFun = evaluateIntervalFunction;\n }\n else if (type === 'categorical') {\n innerFun = evaluateCategoricalFunction;\n // For categorical functions, generate an Object as a hashmap of the stops for fast searching\n hashedStops = Object.create(null);\n for (const stop of parameters.stops) {\n hashedStops[stop[0]] = stop[1];\n }\n // Infer key type based on first stop key-- used to encforce strict type checking later\n categoricalKeyType = typeof parameters.stops[0][0];\n }\n else if (type === 'identity') {\n innerFun = evaluateIdentityFunction;\n }\n else {\n throw new Error(`Unknown function type \"${type}\"`);\n }\n if (zoomAndFeatureDependent) {\n const featureFunctions = {};\n const zoomStops = [];\n for (let s = 0; s < parameters.stops.length; s++) {\n const stop = parameters.stops[s];\n const zoom = stop[0].zoom;\n if (featureFunctions[zoom] === undefined) {\n featureFunctions[zoom] = {\n zoom,\n type: parameters.type,\n property: parameters.property,\n default: parameters.default,\n stops: []\n };\n zoomStops.push(zoom);\n }\n featureFunctions[zoom].stops.push([stop[0].value, stop[1]]);\n }\n const featureFunctionStops = [];\n for (const z of zoomStops) {\n featureFunctionStops.push([featureFunctions[z].zoom, createFunction(featureFunctions[z], propertySpec)]);\n }\n const interpolationType = { name: 'linear' };\n return {\n kind: 'composite',\n interpolationType,\n interpolationFactor: Interpolate.interpolationFactor.bind(undefined, interpolationType),\n zoomStops: featureFunctionStops.map(s => s[0]),\n evaluate({ zoom }, properties) {\n return evaluateExponentialFunction({\n stops: featureFunctionStops,\n base: parameters.base\n }, propertySpec, zoom).evaluate(zoom, properties);\n }\n };\n }\n else if (zoomDependent) {\n const interpolationType = type === 'exponential' ?\n { name: 'exponential', base: parameters.base !== undefined ? parameters.base : 1 } : null;\n return {\n kind: 'camera',\n interpolationType,\n interpolationFactor: Interpolate.interpolationFactor.bind(undefined, interpolationType),\n zoomStops: parameters.stops.map(s => s[0]),\n evaluate: ({ zoom }) => innerFun(parameters, propertySpec, zoom, hashedStops, categoricalKeyType)\n };\n }\n else {\n return {\n kind: 'source',\n evaluate(_, feature) {\n const value = feature && feature.properties ? feature.properties[parameters.property] : undefined;\n if (value === undefined) {\n return coalesce$1(parameters.default, propertySpec.default);\n }\n return innerFun(parameters, propertySpec, value, hashedStops, categoricalKeyType);\n }\n };\n }\n}\nfunction coalesce$1(a, b, c) {\n if (a !== undefined)\n return a;\n if (b !== undefined)\n return b;\n if (c !== undefined)\n return c;\n}\nfunction evaluateCategoricalFunction(parameters, propertySpec, input, hashedStops, keyType) {\n const evaluated = typeof input === keyType ? hashedStops[input] : undefined; // Enforce strict typing on input\n return coalesce$1(evaluated, parameters.default, propertySpec.default);\n}\nfunction evaluateIntervalFunction(parameters, propertySpec, input) {\n // Edge cases\n if (getType(input) !== 'number')\n return coalesce$1(parameters.default, propertySpec.default);\n const n = parameters.stops.length;\n if (n === 1)\n return parameters.stops[0][1];\n if (input <= parameters.stops[0][0])\n return parameters.stops[0][1];\n if (input >= parameters.stops[n - 1][0])\n return parameters.stops[n - 1][1];\n const index = findStopLessThanOrEqualTo(parameters.stops.map((stop) => stop[0]), input);\n return parameters.stops[index][1];\n}\nfunction evaluateExponentialFunction(parameters, propertySpec, input) {\n const base = parameters.base !== undefined ? parameters.base : 1;\n // Edge cases\n if (getType(input) !== 'number')\n return coalesce$1(parameters.default, propertySpec.default);\n const n = parameters.stops.length;\n if (n === 1)\n return parameters.stops[0][1];\n if (input <= parameters.stops[0][0])\n return parameters.stops[0][1];\n if (input >= parameters.stops[n - 1][0])\n return parameters.stops[n - 1][1];\n const index = findStopLessThanOrEqualTo(parameters.stops.map((stop) => stop[0]), input);\n const t = interpolationFactor(input, base, parameters.stops[index][0], parameters.stops[index + 1][0]);\n const outputLower = parameters.stops[index][1];\n const outputUpper = parameters.stops[index + 1][1];\n let interp = interpolate[propertySpec.type] || identityFunction; // eslint-disable-line import/namespace\n if (parameters.colorSpace && parameters.colorSpace !== 'rgb') {\n const colorspace = colorSpaces[parameters.colorSpace]; // eslint-disable-line import/namespace\n interp = (a, b) => colorspace.reverse(colorspace.interpolate(colorspace.forward(a), colorspace.forward(b), t));\n }\n if (typeof outputLower.evaluate === 'function') {\n return {\n evaluate(...args) {\n const evaluatedLower = outputLower.evaluate.apply(undefined, args);\n const evaluatedUpper = outputUpper.evaluate.apply(undefined, args);\n // Special case for fill-outline-color, which has no spec default.\n if (evaluatedLower === undefined || evaluatedUpper === undefined) {\n return undefined;\n }\n return interp(evaluatedLower, evaluatedUpper, t);\n }\n };\n }\n return interp(outputLower, outputUpper, t);\n}\nfunction evaluateIdentityFunction(parameters, propertySpec, input) {\n switch (propertySpec.type) {\n case 'color':\n input = Color.parse(input);\n break;\n case 'formatted':\n input = Formatted.fromString(input.toString());\n break;\n case 'resolvedImage':\n input = ResolvedImage.fromString(input.toString());\n break;\n case 'padding':\n input = Padding.parse(input);\n break;\n default:\n if (getType(input) !== propertySpec.type && (propertySpec.type !== 'enum' || !propertySpec.values[input])) {\n input = undefined;\n }\n }\n return coalesce$1(input, parameters.default, propertySpec.default);\n}\n/**\n * Returns a ratio that can be used to interpolate between exponential function\n * stops.\n *\n * How it works:\n * Two consecutive stop values define a (scaled and shifted) exponential\n * function `f(x) = a * base^x + b`, where `base` is the user-specified base,\n * and `a` and `b` are constants affording sufficient degrees of freedom to fit\n * the function to the given stops.\n *\n * Here's a bit of algebra that lets us compute `f(x)` directly from the stop\n * values without explicitly solving for `a` and `b`:\n *\n * First stop value: `f(x0) = y0 = a * base^x0 + b`\n * Second stop value: `f(x1) = y1 = a * base^x1 + b`\n * => `y1 - y0 = a(base^x1 - base^x0)`\n * => `a = (y1 - y0)/(base^x1 - base^x0)`\n *\n * Desired value: `f(x) = y = a * base^x + b`\n * => `f(x) = y0 + a * (base^x - base^x0)`\n *\n * From the above, we can replace the `a` in `a * (base^x - base^x0)` and do a\n * little algebra:\n * ```\n * a * (base^x - base^x0) = (y1 - y0)/(base^x1 - base^x0) * (base^x - base^x0)\n * = (y1 - y0) * (base^x - base^x0) / (base^x1 - base^x0)\n * ```\n *\n * If we let `(base^x - base^x0) / (base^x1 base^x0)`, then we have\n * `f(x) = y0 + (y1 - y0) * ratio`. In other words, `ratio` may be treated as\n * an interpolation factor between the two stops' output values.\n *\n * (Note: a slightly different form for `ratio`,\n * `(base^(x-x0) - 1) / (base^(x1-x0) - 1) `, is equivalent, but requires fewer\n * expensive `Math.pow()` operations.)\n *\n * @private\n */\nfunction interpolationFactor(input, base, lowerValue, upperValue) {\n const difference = upperValue - lowerValue;\n const progress = input - lowerValue;\n if (difference === 0) {\n return 0;\n }\n else if (base === 1) {\n return progress / difference;\n }\n else {\n return (Math.pow(base, progress) - 1) / (Math.pow(base, difference) - 1);\n }\n}\n\nclass StyleExpression {\n constructor(expression, propertySpec) {\n this.expression = expression;\n this._warningHistory = {};\n this._evaluator = new EvaluationContext();\n this._defaultValue = propertySpec ? getDefaultValue(propertySpec) : null;\n this._enumValues = propertySpec && propertySpec.type === 'enum' ? propertySpec.values : null;\n }\n evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection) {\n this._evaluator.globals = globals;\n this._evaluator.feature = feature;\n this._evaluator.featureState = featureState;\n this._evaluator.canonical = canonical;\n this._evaluator.availableImages = availableImages || null;\n this._evaluator.formattedSection = formattedSection;\n return this.expression.evaluate(this._evaluator);\n }\n evaluate(globals, feature, featureState, canonical, availableImages, formattedSection) {\n this._evaluator.globals = globals;\n this._evaluator.feature = feature || null;\n this._evaluator.featureState = featureState || null;\n this._evaluator.canonical = canonical;\n this._evaluator.availableImages = availableImages || null;\n this._evaluator.formattedSection = formattedSection || null;\n try {\n const val = this.expression.evaluate(this._evaluator);\n // eslint-disable-next-line no-self-compare\n if (val === null || val === undefined || (typeof val === 'number' && val !== val)) {\n return this._defaultValue;\n }\n if (this._enumValues && !(val in this._enumValues)) {\n throw new RuntimeError(`Expected value to be one of ${Object.keys(this._enumValues).map(v => JSON.stringify(v)).join(', ')}, but found ${JSON.stringify(val)} instead.`);\n }\n return val;\n }\n catch (e) {\n if (!this._warningHistory[e.message]) {\n this._warningHistory[e.message] = true;\n if (typeof console !== 'undefined') {\n console.warn(e.message);\n }\n }\n return this._defaultValue;\n }\n }\n}\nfunction isExpression(expression) {\n return Array.isArray(expression) && expression.length > 0 &&\n typeof expression[0] === 'string' && expression[0] in expressions$1;\n}\n/**\n * Parse and typecheck the given style spec JSON expression. If\n * options.defaultValue is provided, then the resulting StyleExpression's\n * `evaluate()` method will handle errors by logging a warning (once per\n * message) and returning the default value. Otherwise, it will throw\n * evaluation errors.\n *\n * @private\n */\nfunction createExpression(expression, propertySpec) {\n const parser = new ParsingContext(expressions$1, [], propertySpec ? getExpectedType(propertySpec) : undefined);\n // For string-valued properties, coerce to string at the top level rather than asserting.\n const parsed = parser.parse(expression, undefined, undefined, undefined, propertySpec && propertySpec.type === 'string' ? { typeAnnotation: 'coerce' } : undefined);\n if (!parsed) {\n assert$1.exports(parser.errors.length > 0);\n return error(parser.errors);\n }\n return success(new StyleExpression(parsed, propertySpec));\n}\nclass ZoomConstantExpression {\n constructor(kind, expression) {\n this.kind = kind;\n this._styleExpression = expression;\n this.isStateDependent = kind !== 'constant' && !isStateConstant(expression.expression);\n }\n evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection) {\n return this._styleExpression.evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection);\n }\n evaluate(globals, feature, featureState, canonical, availableImages, formattedSection) {\n return this._styleExpression.evaluate(globals, feature, featureState, canonical, availableImages, formattedSection);\n }\n}\nclass ZoomDependentExpression {\n constructor(kind, expression, zoomStops, interpolationType) {\n this.kind = kind;\n this.zoomStops = zoomStops;\n this._styleExpression = expression;\n this.isStateDependent = kind !== 'camera' && !isStateConstant(expression.expression);\n this.interpolationType = interpolationType;\n }\n evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection) {\n return this._styleExpression.evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection);\n }\n evaluate(globals, feature, featureState, canonical, availableImages, formattedSection) {\n return this._styleExpression.evaluate(globals, feature, featureState, canonical, availableImages, formattedSection);\n }\n interpolationFactor(input, lower, upper) {\n if (this.interpolationType) {\n return Interpolate.interpolationFactor(this.interpolationType, input, lower, upper);\n }\n else {\n return 0;\n }\n }\n}\nfunction createPropertyExpression(expressionInput, propertySpec) {\n const expression = createExpression(expressionInput, propertySpec);\n if (expression.result === 'error') {\n return expression;\n }\n const parsed = expression.value.expression;\n const isFeatureConstant$1 = isFeatureConstant(parsed);\n if (!isFeatureConstant$1 && !supportsPropertyExpression(propertySpec)) {\n return error([new ExpressionParsingError('', 'data expressions not supported')]);\n }\n const isZoomConstant = isGlobalPropertyConstant(parsed, ['zoom']);\n if (!isZoomConstant && !supportsZoomExpression(propertySpec)) {\n return error([new ExpressionParsingError('', 'zoom expressions not supported')]);\n }\n const zoomCurve = findZoomCurve(parsed);\n if (!zoomCurve && !isZoomConstant) {\n return error([new ExpressionParsingError('', '\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.')]);\n }\n else if (zoomCurve instanceof ExpressionParsingError) {\n return error([zoomCurve]);\n }\n else if (zoomCurve instanceof Interpolate && !supportsInterpolation(propertySpec)) {\n return error([new ExpressionParsingError('', '\"interpolate\" expressions cannot be used with this property')]);\n }\n if (!zoomCurve) {\n return success(isFeatureConstant$1 ?\n new ZoomConstantExpression('constant', expression.value) :\n new ZoomConstantExpression('source', expression.value));\n }\n const interpolationType = zoomCurve instanceof Interpolate ? zoomCurve.interpolation : undefined;\n return success(isFeatureConstant$1 ?\n new ZoomDependentExpression('camera', expression.value, zoomCurve.labels, interpolationType) :\n new ZoomDependentExpression('composite', expression.value, zoomCurve.labels, interpolationType));\n}\n// serialization wrapper for old-style stop functions normalized to the\n// expression interface\nclass StylePropertyFunction {\n constructor(parameters, specification) {\n this._parameters = parameters;\n this._specification = specification;\n extendBy(this, createFunction(this._parameters, this._specification));\n }\n static deserialize(serialized) {\n return new StylePropertyFunction(serialized._parameters, serialized._specification);\n }\n static serialize(input) {\n return {\n _parameters: input._parameters,\n _specification: input._specification\n };\n }\n}\nfunction normalizePropertyExpression(value, specification) {\n if (isFunction(value)) {\n return new StylePropertyFunction(value, specification);\n }\n else if (isExpression(value)) {\n const expression = createPropertyExpression(value, specification);\n if (expression.result === 'error') {\n // this should have been caught in validation\n throw new Error(expression.value.map(err => `${err.key}: ${err.message}`).join(', '));\n }\n return expression.value;\n }\n else {\n let constant = value;\n if (specification.type === 'color' && typeof value === 'string') {\n constant = Color.parse(value);\n }\n else if (specification.type === 'padding' && (typeof value === 'number' || Array.isArray(value))) {\n constant = Padding.parse(value);\n }\n return {\n kind: 'constant',\n evaluate: () => constant\n };\n }\n}\n// Zoom-dependent expressions may only use [\"zoom\"] as the input to a top-level \"step\" or \"interpolate\"\n// expression (collectively referred to as a \"curve\"). The curve may be wrapped in one or more \"let\" or\n// \"coalesce\" expressions.\nfunction findZoomCurve(expression) {\n let result = null;\n if (expression instanceof Let) {\n result = findZoomCurve(expression.result);\n }\n else if (expression instanceof Coalesce) {\n for (const arg of expression.args) {\n result = findZoomCurve(arg);\n if (result) {\n break;\n }\n }\n }\n else if ((expression instanceof Step || expression instanceof Interpolate) &&\n expression.input instanceof CompoundExpression &&\n expression.input.name === 'zoom') {\n result = expression;\n }\n if (result instanceof ExpressionParsingError) {\n return result;\n }\n expression.eachChild((child) => {\n const childResult = findZoomCurve(child);\n if (childResult instanceof ExpressionParsingError) {\n result = childResult;\n }\n else if (!result && childResult) {\n result = new ExpressionParsingError('', '\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.');\n }\n else if (result && childResult && result !== childResult) {\n result = new ExpressionParsingError('', 'Only one zoom-based \"step\" or \"interpolate\" subexpression may be used in an expression.');\n }\n });\n return result;\n}\nfunction getExpectedType(spec) {\n const types = {\n color: ColorType,\n string: StringType,\n number: NumberType,\n enum: StringType,\n boolean: BooleanType,\n formatted: FormattedType,\n padding: PaddingType,\n resolvedImage: ResolvedImageType\n };\n if (spec.type === 'array') {\n return array$1(types[spec.value] || ValueType, spec.length);\n }\n return types[spec.type];\n}\nfunction getDefaultValue(spec) {\n if (spec.type === 'color' && isFunction(spec.default)) {\n // Special case for heatmap-color: it uses the 'default:' to define a\n // default color ramp, but createExpression expects a simple value to fall\n // back to in case of runtime errors\n return new Color(0, 0, 0, 0);\n }\n else if (spec.type === 'color') {\n return Color.parse(spec.default) || null;\n }\n else if (spec.type === 'padding') {\n return Padding.parse(spec.default) || null;\n }\n else if (spec.default === undefined) {\n return null;\n }\n else {\n return spec.default;\n }\n}\n\nfunction convertLiteral(value) {\n return typeof value === 'object' ? ['literal', value] : value;\n}\nfunction convertFunction(parameters, propertySpec) {\n let stops = parameters.stops;\n if (!stops) {\n // identity function\n return convertIdentityFunction(parameters, propertySpec);\n }\n const zoomAndFeatureDependent = stops && typeof stops[0][0] === 'object';\n const featureDependent = zoomAndFeatureDependent || parameters.property !== undefined;\n const zoomDependent = zoomAndFeatureDependent || !featureDependent;\n stops = stops.map((stop) => {\n if (!featureDependent && propertySpec.tokens && typeof stop[1] === 'string') {\n return [stop[0], convertTokenString(stop[1])];\n }\n return [stop[0], convertLiteral(stop[1])];\n });\n if (zoomAndFeatureDependent) {\n return convertZoomAndPropertyFunction(parameters, propertySpec, stops);\n }\n else if (zoomDependent) {\n return convertZoomFunction(parameters, propertySpec, stops);\n }\n else {\n return convertPropertyFunction(parameters, propertySpec, stops);\n }\n}\nfunction convertIdentityFunction(parameters, propertySpec) {\n const get = ['get', parameters.property];\n if (parameters.default === undefined) {\n // By default, expressions for string-valued properties get coerced. To preserve\n // legacy function semantics, insert an explicit assertion instead.\n return propertySpec.type === 'string' ? ['string', get] : get;\n }\n else if (propertySpec.type === 'enum') {\n return [\n 'match',\n get,\n Object.keys(propertySpec.values),\n get,\n parameters.default\n ];\n }\n else {\n const expression = [propertySpec.type === 'color' ? 'to-color' : propertySpec.type, get, convertLiteral(parameters.default)];\n if (propertySpec.type === 'array') {\n expression.splice(1, 0, propertySpec.value, propertySpec.length || null);\n }\n return expression;\n }\n}\nfunction getInterpolateOperator(parameters) {\n switch (parameters.colorSpace) {\n case 'hcl': return 'interpolate-hcl';\n case 'lab': return 'interpolate-lab';\n default: return 'interpolate';\n }\n}\nfunction convertZoomAndPropertyFunction(parameters, propertySpec, stops) {\n const featureFunctionParameters = {};\n const featureFunctionStops = {};\n const zoomStops = [];\n for (let s = 0; s < stops.length; s++) {\n const stop = stops[s];\n const zoom = stop[0].zoom;\n if (featureFunctionParameters[zoom] === undefined) {\n featureFunctionParameters[zoom] = {\n zoom,\n type: parameters.type,\n property: parameters.property,\n default: parameters.default,\n };\n featureFunctionStops[zoom] = [];\n zoomStops.push(zoom);\n }\n featureFunctionStops[zoom].push([stop[0].value, stop[1]]);\n }\n // the interpolation type for the zoom dimension of a zoom-and-property\n // function is determined directly from the style property specification\n // for which it's being used: linear for interpolatable properties, step\n // otherwise.\n const functionType = getFunctionType({}, propertySpec);\n if (functionType === 'exponential') {\n const expression = [getInterpolateOperator(parameters), ['linear'], ['zoom']];\n for (const z of zoomStops) {\n const output = convertPropertyFunction(featureFunctionParameters[z], propertySpec, featureFunctionStops[z]);\n appendStopPair(expression, z, output, false);\n }\n return expression;\n }\n else {\n const expression = ['step', ['zoom']];\n for (const z of zoomStops) {\n const output = convertPropertyFunction(featureFunctionParameters[z], propertySpec, featureFunctionStops[z]);\n appendStopPair(expression, z, output, true);\n }\n fixupDegenerateStepCurve(expression);\n return expression;\n }\n}\nfunction coalesce(a, b) {\n if (a !== undefined)\n return a;\n if (b !== undefined)\n return b;\n}\nfunction getFallback(parameters, propertySpec) {\n const defaultValue = convertLiteral(coalesce(parameters.default, propertySpec.default));\n /*\n * Some fields with type: resolvedImage have an undefined default.\n * Because undefined is an invalid value for resolvedImage, set fallback to\n * an empty string instead of undefined to ensure output\n * passes validation.\n */\n if (defaultValue === undefined && propertySpec.type === 'resolvedImage') {\n return '';\n }\n return defaultValue;\n}\nfunction convertPropertyFunction(parameters, propertySpec, stops) {\n const type = getFunctionType(parameters, propertySpec);\n const get = ['get', parameters.property];\n if (type === 'categorical' && typeof stops[0][0] === 'boolean') {\n assert$1.exports(parameters.stops.length > 0 && parameters.stops.length <= 2);\n const expression = ['case'];\n for (const stop of stops) {\n expression.push(['==', get, stop[0]], stop[1]);\n }\n expression.push(getFallback(parameters, propertySpec));\n return expression;\n }\n else if (type === 'categorical') {\n const expression = ['match', get];\n for (const stop of stops) {\n appendStopPair(expression, stop[0], stop[1], false);\n }\n expression.push(getFallback(parameters, propertySpec));\n return expression;\n }\n else if (type === 'interval') {\n const expression = ['step', ['number', get]];\n for (const stop of stops) {\n appendStopPair(expression, stop[0], stop[1], true);\n }\n fixupDegenerateStepCurve(expression);\n return parameters.default === undefined ? expression : [\n 'case',\n ['==', ['typeof', get], 'number'],\n expression,\n convertLiteral(parameters.default)\n ];\n }\n else if (type === 'exponential') {\n const base = parameters.base !== undefined ? parameters.base : 1;\n const expression = [\n getInterpolateOperator(parameters),\n base === 1 ? ['linear'] : ['exponential', base],\n ['number', get]\n ];\n for (const stop of stops) {\n appendStopPair(expression, stop[0], stop[1], false);\n }\n return parameters.default === undefined ? expression : [\n 'case',\n ['==', ['typeof', get], 'number'],\n expression,\n convertLiteral(parameters.default)\n ];\n }\n else {\n throw new Error(`Unknown property function type ${type}`);\n }\n}\nfunction convertZoomFunction(parameters, propertySpec, stops, input = ['zoom']) {\n const type = getFunctionType(parameters, propertySpec);\n let expression;\n let isStep = false;\n if (type === 'interval') {\n expression = ['step', input];\n isStep = true;\n }\n else if (type === 'exponential') {\n const base = parameters.base !== undefined ? parameters.base : 1;\n expression = [getInterpolateOperator(parameters), base === 1 ? ['linear'] : ['exponential', base], input];\n }\n else {\n throw new Error(`Unknown zoom function type \"${type}\"`);\n }\n for (const stop of stops) {\n appendStopPair(expression, stop[0], stop[1], isStep);\n }\n fixupDegenerateStepCurve(expression);\n return expression;\n}\nfunction fixupDegenerateStepCurve(expression) {\n // degenerate step curve (i.e. a constant function): add a noop stop\n if (expression[0] === 'step' && expression.length === 3) {\n expression.push(0);\n expression.push(expression[3]);\n }\n}\nfunction appendStopPair(curve, input, output, isStep) {\n // Skip duplicate stop values. They were not validated for functions, but they are for expressions.\n // https://github.com/mapbox/mapbox-gl-js/issues/4107\n if (curve.length > 3 && input === curve[curve.length - 2]) {\n return;\n }\n // step curves don't get the first input value, as it is redundant.\n if (!(isStep && curve.length === 2)) {\n curve.push(input);\n }\n curve.push(output);\n}\nfunction getFunctionType(parameters, propertySpec) {\n if (parameters.type) {\n return parameters.type;\n }\n else {\n assert$1.exports(propertySpec.expression);\n return propertySpec.expression.interpolated ? 'exponential' : 'interval';\n }\n}\n// \"String with {name} token\" => [\"concat\", \"String with \", [\"get\", \"name\"], \" token\"]\nfunction convertTokenString(s) {\n const result = ['concat'];\n const re = /{([^{}]+)}/g;\n let pos = 0;\n for (let match = re.exec(s); match !== null; match = re.exec(s)) {\n const literal = s.slice(pos, re.lastIndex - match[0].length);\n pos = re.lastIndex;\n if (literal.length > 0)\n result.push(literal);\n result.push(['get', match[1]]);\n }\n if (result.length === 1) {\n return s;\n }\n if (pos < s.length) {\n result.push(s.slice(pos));\n }\n else if (result.length === 2) {\n return ['to-string', result[1]];\n }\n return result;\n}\n\nfunction isExpressionFilter(filter) {\n if (filter === true || filter === false) {\n return true;\n }\n if (!Array.isArray(filter) || filter.length === 0) {\n return false;\n }\n switch (filter[0]) {\n case 'has':\n return filter.length >= 2 && filter[1] !== '$id' && filter[1] !== '$type';\n case 'in':\n return filter.length >= 3 && (typeof filter[1] !== 'string' || Array.isArray(filter[2]));\n case '!in':\n case '!has':\n case 'none':\n return false;\n case '==':\n case '!=':\n case '>':\n case '>=':\n case '<':\n case '<=':\n return filter.length !== 3 || (Array.isArray(filter[1]) || Array.isArray(filter[2]));\n case 'any':\n case 'all':\n for (const f of filter.slice(1)) {\n if (!isExpressionFilter(f) && typeof f !== 'boolean') {\n return false;\n }\n }\n return true;\n default:\n return true;\n }\n}\nconst filterSpec = {\n 'type': 'boolean',\n 'default': false,\n 'transition': false,\n 'property-type': 'data-driven',\n 'expression': {\n 'interpolated': false,\n 'parameters': ['zoom', 'feature']\n }\n};\n/**\n * Given a filter expressed as nested arrays, return a new function\n * that evaluates whether a given feature (with a .properties or .tags property)\n * passes its test.\n *\n * @private\n * @param {Array} filter maplibre gl filter\n * @returns {Function} filter-evaluating function\n */\nfunction createFilter(filter) {\n if (filter === null || filter === undefined) {\n return { filter: () => true, needGeometry: false };\n }\n if (!isExpressionFilter(filter)) {\n filter = convertFilter$1(filter);\n }\n const compiled = createExpression(filter, filterSpec);\n if (compiled.result === 'error') {\n throw new Error(compiled.value.map(err => `${err.key}: ${err.message}`).join(', '));\n }\n else {\n const needGeometry = geometryNeeded(filter);\n return { filter: (globalProperties, feature, canonical) => compiled.value.evaluate(globalProperties, feature, {}, canonical),\n needGeometry };\n }\n}\n// Comparison function to sort numbers and strings\nfunction compare(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n}\nfunction geometryNeeded(filter) {\n if (!Array.isArray(filter))\n return false;\n if (filter[0] === 'within')\n return true;\n for (let index = 1; index < filter.length; index++) {\n if (geometryNeeded(filter[index]))\n return true;\n }\n return false;\n}\nfunction convertFilter$1(filter) {\n if (!filter)\n return true;\n const op = filter[0];\n if (filter.length <= 1)\n return (op !== 'any');\n const converted = op === '==' ? convertComparisonOp$1(filter[1], filter[2], '==') :\n op === '!=' ? convertNegation(convertComparisonOp$1(filter[1], filter[2], '==')) :\n op === '<' ||\n op === '>' ||\n op === '<=' ||\n op === '>=' ? convertComparisonOp$1(filter[1], filter[2], op) :\n op === 'any' ? convertDisjunctionOp(filter.slice(1)) :\n op === 'all' ? ['all'].concat(filter.slice(1).map(convertFilter$1)) :\n op === 'none' ? ['all'].concat(filter.slice(1).map(convertFilter$1).map(convertNegation)) :\n op === 'in' ? convertInOp$1(filter[1], filter.slice(2)) :\n op === '!in' ? convertNegation(convertInOp$1(filter[1], filter.slice(2))) :\n op === 'has' ? convertHasOp$1(filter[1]) :\n op === '!has' ? convertNegation(convertHasOp$1(filter[1])) :\n op === 'within' ? filter :\n true;\n return converted;\n}\nfunction convertComparisonOp$1(property, value, op) {\n switch (property) {\n case '$type':\n return [`filter-type-${op}`, value];\n case '$id':\n return [`filter-id-${op}`, value];\n default:\n return [`filter-${op}`, property, value];\n }\n}\nfunction convertDisjunctionOp(filters) {\n return ['any'].concat(filters.map(convertFilter$1));\n}\nfunction convertInOp$1(property, values) {\n if (values.length === 0) {\n return false;\n }\n switch (property) {\n case '$type':\n return ['filter-type-in', ['literal', values]];\n case '$id':\n return ['filter-id-in', ['literal', values]];\n default:\n if (values.length > 200 && !values.some(v => typeof v !== typeof values[0])) {\n return ['filter-in-large', property, ['literal', values.sort(compare)]];\n }\n else {\n return ['filter-in-small', property, ['literal', values]];\n }\n }\n}\nfunction convertHasOp$1(property) {\n switch (property) {\n case '$type':\n return true;\n case '$id':\n return ['filter-has-id'];\n default:\n return ['filter-has', property];\n }\n}\nfunction convertNegation(filter) {\n return ['!', filter];\n}\n\n/*\n * Convert the given filter to an expression, storing the expected types for\n * any feature properties referenced in expectedTypes.\n *\n * These expected types are needed in order to construct preflight type checks\n * needed for handling 'any' filters. A preflight type check is necessary in\n * order to mimic legacy filters' semantics around expected type mismatches.\n * For example, consider the legacy filter:\n *\n * [\"any\", [\"all\", [\">\", \"y\", 0], [\">\", \"y\", 0]], [\">\", \"x\", 0]]\n *\n * Naively, we might convert this to the expression:\n *\n * [\"any\", [\"all\", [\">\", [\"get\", \"y\"], 0], [\">\", [\"get\", \"z\"], 0]], [\">\", [\"get\", \"x\"], 0]]\n *\n * But if we tried to evaluate this against, say `{x: 1, y: null, z: 0}`, the\n * [\">\", [\"get\", \"y\"], 0] would cause an evaluation error, leading to the\n * entire filter returning false. Legacy filter semantics, though, ask for\n * [\">\", \"y\", 0] to simply return `false` when `y` is of the wrong type,\n * allowing the subsequent terms of the outer \"any\" expression to be evaluated\n * (resulting, in this case, in a `true` value, because x > 0).\n *\n * We account for this by inserting a preflight type-checking expression before\n * each \"any\" term, allowing us to avoid evaluating the actual converted filter\n * if any type mismatches would cause it to produce an evalaution error:\n *\n * [\"any\",\n * [\"case\",\n * [\"all\", [\"==\", [\"typeof\", [\"get\", \"y\"]], \"number\"], [\"==\", [\"typeof\", [\"get\", \"z\"], \"number]],\n * [\"all\", [\">\", [\"get\", \"y\"], 0], [\">\", [\"get\", \"z\"], 0]],\n * false\n * ],\n * [\"case\",\n * [\"==\", [\"typeof\", [\"get\", \"x\"], \"number\"]],\n * [\">\", [\"get\", \"x\"], 0],\n * false\n * ]\n * ]\n *\n * An alternative, possibly more direct approach would be to use type checks\n * in the conversion of each comparison operator, so that the converted version\n * of each individual ==, >=, etc. would mimic the legacy filter semantics. The\n * downside of this approach is that it can lead to many more type checks than\n * would otherwise be necessary: outside the context of an \"any\" expression,\n * bailing out due to a runtime type error (expression semantics) and returning\n * false (legacy filter semantics) are equivalent: they cause the filter to\n * produce a `false` result.\n */\nfunction convertFilter(filter, expectedTypes = {}) {\n if (isExpressionFilter(filter))\n return filter;\n if (!filter)\n return true;\n const legacyFilter = filter;\n const legacyOp = legacyFilter[0];\n if (filter.length <= 1)\n return (legacyOp !== 'any');\n switch (legacyOp) {\n case '==':\n case '!=':\n case '<':\n case '>':\n case '<=':\n case '>=': {\n const [, property, value] = filter;\n return convertComparisonOp(property, value, legacyOp, expectedTypes);\n }\n case 'any': {\n const [, ...conditions] = legacyFilter;\n const children = conditions.map((f) => {\n const types = {};\n const child = convertFilter(f, types);\n const typechecks = runtimeTypeChecks(types);\n return typechecks === true ? child : ['case', typechecks, child, false];\n });\n return ['any', ...children];\n }\n case 'all': {\n const [, ...conditions] = legacyFilter;\n const children = conditions.map(f => convertFilter(f, expectedTypes));\n return children.length > 1 ? ['all', ...children] : children[0];\n }\n case 'none': {\n const [, ...conditions] = legacyFilter;\n return ['!', convertFilter(['any', ...conditions], {})];\n }\n case 'in': {\n const [, property, ...values] = legacyFilter;\n return convertInOp(property, values);\n }\n case '!in': {\n const [, property, ...values] = legacyFilter;\n return convertInOp(property, values, true);\n }\n case 'has':\n return convertHasOp(legacyFilter[1]);\n case '!has':\n return ['!', convertHasOp(legacyFilter[1])];\n default:\n return true;\n }\n}\n// Given a set of feature properties and an expected type for each one,\n// construct an boolean expression that tests whether each property has the\n// right type.\n// E.g.: for {name: 'string', population: 'number'}, return\n// [ 'all',\n// ['==', ['typeof', ['get', 'name'], 'string']],\n// ['==', ['typeof', ['get', 'population'], 'number]]\n// ]\nfunction runtimeTypeChecks(expectedTypes) {\n const conditions = [];\n for (const property in expectedTypes) {\n const get = property === '$id' ? ['id'] : ['get', property];\n conditions.push(['==', ['typeof', get], expectedTypes[property]]);\n }\n if (conditions.length === 0)\n return true;\n if (conditions.length === 1)\n return conditions[0];\n return ['all', ...conditions];\n}\nfunction convertComparisonOp(property, value, op, expectedTypes) {\n let get;\n if (property === '$type') {\n return [op, ['geometry-type'], value];\n }\n else if (property === '$id') {\n get = ['id'];\n }\n else {\n get = ['get', property];\n }\n if (expectedTypes && value !== null) {\n const type = typeof value;\n expectedTypes[property] = type;\n }\n if (op === '==' && property !== '$id' && value === null) {\n return [\n 'all',\n ['has', property],\n ['==', get, null]\n ];\n }\n else if (op === '!=' && property !== '$id' && value === null) {\n return [\n 'any',\n ['!', ['has', property]],\n ['!=', get, null]\n ];\n }\n return [op, get, value];\n}\nfunction convertInOp(property, values, negate = false) {\n if (values.length === 0)\n return negate;\n let get;\n if (property === '$type') {\n get = ['geometry-type'];\n }\n else if (property === '$id') {\n get = ['id'];\n }\n else {\n get = ['get', property];\n }\n // Determine if the list of values to be searched is homogenously typed.\n // If so (and if the type is string or number), then we can use a\n // [match, input, [...values], true, false] construction rather than a\n // bunch of `==` tests.\n let uniformTypes = true;\n const type = typeof values[0];\n for (const value of values) {\n if (typeof value !== type) {\n uniformTypes = false;\n break;\n }\n }\n if (uniformTypes && (type === 'string' || type === 'number')) {\n // Match expressions must have unique values.\n const uniqueValues = values.sort().filter((v, i) => i === 0 || values[i - 1] !== v);\n return ['match', get, uniqueValues, !negate, negate];\n }\n if (negate) {\n return ['all', ...values.map(v => ['!=', get, v])];\n }\n else {\n return ['any', ...values.map(v => ['==', get, v])];\n }\n}\nfunction convertHasOp(property) {\n if (property === '$type') {\n return true;\n }\n else if (property === '$id') {\n return ['!=', ['id'], null];\n }\n else {\n return ['has', property];\n }\n}\n\n/**\n * Migrate the given style object in place to use expressions. Specifically,\n * this will convert (a) \"stop\" functions, and (b) legacy filters to their\n * expression equivalents.\n */\nfunction expressions(style) {\n const converted = [];\n eachLayer(style, (layer) => {\n if (layer.filter) {\n layer.filter = convertFilter(layer.filter);\n }\n });\n eachProperty(style, { paint: true, layout: true }, ({ path, value, reference, set }) => {\n if (isExpression(value))\n return;\n if (typeof value === 'object' && !Array.isArray(value)) {\n set(convertFunction(value, reference));\n converted.push(path.join('.'));\n }\n else if (reference.tokens && typeof value === 'string') {\n set(convertTokenString(value));\n }\n });\n return style;\n}\n\n/**\n * Migrate a Mapbox GL Style to the latest version.\n *\n * @private\n * @alias migrate\n * @param {StyleSpecification} style a MapLibre GL Style\n * @returns {StyleSpecification} a migrated style\n * @example\n * var fs = require('fs');\n * var migrate = require('maplibre-gl-style-spec').migrate;\n * var style = fs.readFileSync('./style.json', 'utf8');\n * fs.writeFileSync('./style.json', JSON.stringify(migrate(style)));\n */\nfunction migrate(style) {\n let migrated = false;\n if (style.version === 7) {\n style = migrateV8(style);\n migrated = true;\n }\n if (style.version === 8) {\n migrated = !!expressions(style);\n migrated = true;\n }\n if (!migrated) {\n throw new Error(`Cannot migrate from ${style.version}`);\n }\n return style;\n}\n\nfunction composite(style) {\n const styleIDs = [];\n const sourceIDs = [];\n const compositedSourceLayers = [];\n for (const id in style.sources) {\n const source = style.sources[id];\n if (source.type !== 'vector')\n continue;\n const match = /^mapbox:\\/\\/(.*)/.exec(source.url);\n if (!match)\n continue;\n styleIDs.push(id);\n sourceIDs.push(match[1]);\n }\n if (styleIDs.length < 2)\n return style;\n styleIDs.forEach((id) => {\n delete style.sources[id];\n });\n const compositeID = sourceIDs.join(',');\n style.sources[compositeID] = {\n 'type': 'vector',\n 'url': `mapbox://${compositeID}`\n };\n style.layers.forEach((layer) => {\n if (styleIDs.indexOf(layer.source) >= 0) {\n layer.source = compositeID;\n if ('source-layer' in layer) {\n if (compositedSourceLayers.indexOf(layer['source-layer']) >= 0) {\n throw new Error('Conflicting source layer names');\n }\n else {\n compositedSourceLayers.push(layer['source-layer']);\n }\n }\n }\n });\n return style;\n}\n\nconst refProperties = ['type', 'source', 'source-layer', 'minzoom', 'maxzoom', 'filter', 'layout'];\n\nfunction deref(layer, parent) {\n const result = {};\n for (const k in layer) {\n if (k !== 'ref') {\n result[k] = layer[k];\n }\n }\n refProperties.forEach((k) => {\n if (k in parent) {\n result[k] = parent[k];\n }\n });\n return result;\n}\n/**\n * Given an array of layers, some of which may contain `ref` properties\n * whose value is the `id` of another property, return a new array where\n * such layers have been augmented with the 'type', 'source', etc. properties\n * from the parent layer, and the `ref` property has been removed.\n *\n * The input is not modified. The output may contain references to portions\n * of the input.\n *\n * @private\n * @param {Array<Layer>} layers\n * @returns {Array<Layer>}\n */\nfunction derefLayers(layers) {\n layers = layers.slice();\n const map = Object.create(null);\n for (let i = 0; i < layers.length; i++) {\n map[layers[i].id] = layers[i];\n }\n for (let i = 0; i < layers.length; i++) {\n if ('ref' in layers[i]) {\n layers[i] = deref(layers[i], map[layers[i].ref]);\n }\n }\n return layers;\n}\n\n/**\n * Deeply compares two object literals.\n *\n * @private\n */\nfunction deepEqual(a, b) {\n if (Array.isArray(a)) {\n if (!Array.isArray(b) || a.length !== b.length)\n return false;\n for (let i = 0; i < a.length; i++) {\n if (!deepEqual(a[i], b[i]))\n return false;\n }\n return true;\n }\n if (typeof a === 'object' && a !== null && b !== null) {\n if (!(typeof b === 'object'))\n return false;\n const keys = Object.keys(a);\n if (keys.length !== Object.keys(b).length)\n return false;\n for (const key in a) {\n if (!deepEqual(a[key], b[key]))\n return false;\n }\n return true;\n }\n return a === b;\n}\n\nconst operations = {\n /*\n * { command: 'setStyle', args: [stylesheet] }\n */\n setStyle: 'setStyle',\n /*\n * { command: 'addLayer', args: [layer, 'beforeLayerId'] }\n */\n addLayer: 'addLayer',\n /*\n * { command: 'removeLayer', args: ['layerId'] }\n */\n removeLayer: 'removeLayer',\n /*\n * { command: 'setPaintProperty', args: ['layerId', 'prop', value] }\n */\n setPaintProperty: 'setPaintProperty',\n /*\n * { command: 'setLayoutProperty', args: ['layerId', 'prop', value] }\n */\n setLayoutProperty: 'setLayoutProperty',\n /*\n * { command: 'setFilter', args: ['layerId', filter] }\n */\n setFilter: 'setFilter',\n /*\n * { command: 'addSource', args: ['sourceId', source] }\n */\n addSource: 'addSource',\n /*\n * { command: 'removeSource', args: ['sourceId'] }\n */\n removeSource: 'removeSource',\n /*\n * { command: 'setGeoJSONSourceData', args: ['sourceId', data] }\n */\n setGeoJSONSourceData: 'setGeoJSONSourceData',\n /*\n * { command: 'setLayerZoomRange', args: ['layerId', 0, 22] }\n */\n setLayerZoomRange: 'setLayerZoomRange',\n /*\n * { command: 'setLayerProperty', args: ['layerId', 'prop', value] }\n */\n setLayerProperty: 'setLayerProperty',\n /*\n * { command: 'setCenter', args: [[lon, lat]] }\n */\n setCenter: 'setCenter',\n /*\n * { command: 'setZoom', args: [zoom] }\n */\n setZoom: 'setZoom',\n /*\n * { command: 'setBearing', args: [bearing] }\n */\n setBearing: 'setBearing',\n /*\n * { command: 'setPitch', args: [pitch] }\n */\n setPitch: 'setPitch',\n /*\n * { command: 'setSprite', args: ['spriteUrl'] }\n */\n setSprite: 'setSprite',\n /*\n * { command: 'setGlyphs', args: ['glyphsUrl'] }\n */\n setGlyphs: 'setGlyphs',\n /*\n * { command: 'setTransition', args: [transition] }\n */\n setTransition: 'setTransition',\n /*\n * { command: 'setLighting', args: [lightProperties] }\n */\n setLight: 'setLight'\n};\nfunction addSource(sourceId, after, commands) {\n commands.push({ command: operations.addSource, args: [sourceId, after[sourceId]] });\n}\nfunction removeSource(sourceId, commands, sourcesRemoved) {\n commands.push({ command: operations.removeSource, args: [sourceId] });\n sourcesRemoved[sourceId] = true;\n}\nfunction updateSource(sourceId, after, commands, sourcesRemoved) {\n removeSource(sourceId, commands, sourcesRemoved);\n addSource(sourceId, after, commands);\n}\nfunction canUpdateGeoJSON(before, after, sourceId) {\n let prop;\n for (prop in before[sourceId]) {\n if (!Object.prototype.hasOwnProperty.call(before[sourceId], prop))\n continue;\n if (prop !== 'data' && !deepEqual(before[sourceId][prop], after[sourceId][prop])) {\n return false;\n }\n }\n for (prop in after[sourceId]) {\n if (!Object.prototype.hasOwnProperty.call(after[sourceId], prop))\n continue;\n if (prop !== 'data' && !deepEqual(before[sourceId][prop], after[sourceId][prop])) {\n return false;\n }\n }\n return true;\n}\nfunction diffSources(before, after, commands, sourcesRemoved) {\n before = before || {};\n after = after || {};\n let sourceId;\n // look for sources to remove\n for (sourceId in before) {\n if (!Object.prototype.hasOwnProperty.call(before, sourceId))\n continue;\n if (!Object.prototype.hasOwnProperty.call(after, sourceId)) {\n removeSource(sourceId, commands, sourcesRemoved);\n }\n }\n // look for sources to add/update\n for (sourceId in after) {\n if (!Object.prototype.hasOwnProperty.call(after, sourceId))\n continue;\n if (!Object.prototype.hasOwnProperty.call(before, sourceId)) {\n addSource(sourceId, after, commands);\n }\n else if (!deepEqual(before[sourceId], after[sourceId])) {\n if (before[sourceId].type === 'geojson' && after[sourceId].type === 'geojson' && canUpdateGeoJSON(before, after, sourceId)) {\n commands.push({ command: operations.setGeoJSONSourceData, args: [sourceId, after[sourceId].data] });\n }\n else {\n // no update command, must remove then add\n updateSource(sourceId, after, commands, sourcesRemoved);\n }\n }\n }\n}\nfunction diffLayerPropertyChanges(before, after, commands, layerId, klass, command) {\n before = before || {};\n after = after || {};\n let prop;\n for (prop in before) {\n if (!Object.prototype.hasOwnProperty.call(before, prop))\n continue;\n if (!deepEqual(before[prop], after[prop])) {\n commands.push({ command, args: [layerId, prop, after[prop], klass] });\n }\n }\n for (prop in after) {\n if (!Object.prototype.hasOwnProperty.call(after, prop) || Object.prototype.hasOwnProperty.call(before, prop))\n continue;\n if (!deepEqual(before[prop], after[prop])) {\n commands.push({ command, args: [layerId, prop, after[prop], klass] });\n }\n }\n}\nfunction pluckId(layer) {\n return layer.id;\n}\nfunction indexById(group, layer) {\n group[layer.id] = layer;\n return group;\n}\nfunction diffLayers(before, after, commands) {\n before = before || [];\n after = after || [];\n // order of layers by id\n const beforeOrder = before.map(pluckId);\n const afterOrder = after.map(pluckId);\n // index of layer by id\n const beforeIndex = before.reduce(indexById, {});\n const afterIndex = after.reduce(indexById, {});\n // track order of layers as if they have been mutated\n const tracker = beforeOrder.slice();\n // layers that have been added do not need to be diffed\n const clean = Object.create(null);\n let i, d, layerId, beforeLayer, afterLayer, insertBeforeLayerId, prop;\n // remove layers\n for (i = 0, d = 0; i < beforeOrder.length; i++) {\n layerId = beforeOrder[i];\n if (!Object.prototype.hasOwnProperty.call(afterIndex, layerId)) {\n commands.push({ command: operations.removeLayer, args: [layerId] });\n tracker.splice(tracker.indexOf(layerId, d), 1);\n }\n else {\n // limit where in tracker we need to look for a match\n d++;\n }\n }\n // add/reorder layers\n for (i = 0, d = 0; i < afterOrder.length; i++) {\n // work backwards as insert is before an existing layer\n layerId = afterOrder[afterOrder.length - 1 - i];\n if (tracker[tracker.length - 1 - i] === layerId)\n continue;\n if (Object.prototype.hasOwnProperty.call(beforeIndex, layerId)) {\n // remove the layer before we insert at the correct position\n commands.push({ command: operations.removeLayer, args: [layerId] });\n tracker.splice(tracker.lastIndexOf(layerId, tracker.length - d), 1);\n }\n else {\n // limit where in tracker we need to look for a match\n d++;\n }\n // add layer at correct position\n insertBeforeLayerId = tracker[tracker.length - i];\n commands.push({ command: operations.addLayer, args: [afterIndex[layerId], insertBeforeLayerId] });\n tracker.splice(tracker.length - i, 0, layerId);\n clean[layerId] = true;\n }\n // update layers\n for (i = 0; i < afterOrder.length; i++) {\n layerId = afterOrder[i];\n beforeLayer = beforeIndex[layerId];\n afterLayer = afterIndex[layerId];\n // no need to update if previously added (new or moved)\n if (clean[layerId] || deepEqual(beforeLayer, afterLayer))\n continue;\n // If source, source-layer, or type have changes, then remove the layer\n // and add it back 'from scratch'.\n if (!deepEqual(beforeLayer.source, afterLayer.source) || !deepEqual(beforeLayer['source-layer'], afterLayer['source-layer']) || !deepEqual(beforeLayer.type, afterLayer.type)) {\n commands.push({ command: operations.removeLayer, args: [layerId] });\n // we add the layer back at the same position it was already in, so\n // there's no need to update the `tracker`\n insertBeforeLayerId = tracker[tracker.lastIndexOf(layerId) + 1];\n commands.push({ command: operations.addLayer, args: [afterLayer, insertBeforeLayerId] });\n continue;\n }\n // layout, paint, filter, minzoom, maxzoom\n diffLayerPropertyChanges(beforeLayer.layout, afterLayer.layout, commands, layerId, null, operations.setLayoutProperty);\n diffLayerPropertyChanges(beforeLayer.paint, afterLayer.paint, commands, layerId, null, operations.setPaintProperty);\n if (!deepEqual(beforeLayer.filter, afterLayer.filter)) {\n commands.push({ command: operations.setFilter, args: [layerId, afterLayer.filter] });\n }\n if (!deepEqual(beforeLayer.minzoom, afterLayer.minzoom) || !deepEqual(beforeLayer.maxzoom, afterLayer.maxzoom)) {\n commands.push({ command: operations.setLayerZoomRange, args: [layerId, afterLayer.minzoom, afterLayer.maxzoom] });\n }\n // handle all other layer props, including paint.*\n for (prop in beforeLayer) {\n if (!Object.prototype.hasOwnProperty.call(beforeLayer, prop))\n continue;\n if (prop === 'layout' || prop === 'paint' || prop === 'filter' ||\n prop === 'metadata' || prop === 'minzoom' || prop === 'maxzoom')\n continue;\n if (prop.indexOf('paint.') === 0) {\n diffLayerPropertyChanges(beforeLayer[prop], afterLayer[prop], commands, layerId, prop.slice(6), operations.setPaintProperty);\n }\n else if (!deepEqual(beforeLayer[prop], afterLayer[prop])) {\n commands.push({ command: operations.setLayerProperty, args: [layerId, prop, afterLayer[prop]] });\n }\n }\n for (prop in afterLayer) {\n if (!Object.prototype.hasOwnProperty.call(afterLayer, prop) || Object.prototype.hasOwnProperty.call(beforeLayer, prop))\n continue;\n if (prop === 'layout' || prop === 'paint' || prop === 'filter' ||\n prop === 'metadata' || prop === 'minzoom' || prop === 'maxzoom')\n continue;\n if (prop.indexOf('paint.') === 0) {\n diffLayerPropertyChanges(beforeLayer[prop], afterLayer[prop], commands, layerId, prop.slice(6), operations.setPaintProperty);\n }\n else if (!deepEqual(beforeLayer[prop], afterLayer[prop])) {\n commands.push({ command: operations.setLayerProperty, args: [layerId, prop, afterLayer[prop]] });\n }\n }\n }\n}\n/**\n * Diff two stylesheet\n *\n * Creates semanticly aware diffs that can easily be applied at runtime.\n * Operations produced by the diff closely resemble the maplibre-gl-js API. Any\n * error creating the diff will fall back to the 'setStyle' operation.\n *\n * Example diff:\n * [\n * { command: 'setConstant', args: ['@water', '#0000FF'] },\n * { command: 'setPaintProperty', args: ['background', 'background-color', 'black'] }\n * ]\n *\n * @private\n * @param {*} [before] stylesheet to compare from\n * @param {*} after stylesheet to compare to\n * @returns Array list of changes\n */\nfunction diffStyles(before, after) {\n if (!before)\n return [{ command: operations.setStyle, args: [after] }];\n let commands = [];\n try {\n // Handle changes to top-level properties\n if (!deepEqual(before.version, after.version)) {\n return [{ command: operations.setStyle, args: [after] }];\n }\n if (!deepEqual(before.center, after.center)) {\n commands.push({ command: operations.setCenter, args: [after.center] });\n }\n if (!deepEqual(before.zoom, after.zoom)) {\n commands.push({ command: operations.setZoom, args: [after.zoom] });\n }\n if (!deepEqual(before.bearing, after.bearing)) {\n commands.push({ command: operations.setBearing, args: [after.bearing] });\n }\n if (!deepEqual(before.pitch, after.pitch)) {\n commands.push({ command: operations.setPitch, args: [after.pitch] });\n }\n if (!deepEqual(before.sprite, after.sprite)) {\n commands.push({ command: operations.setSprite, args: [after.sprite] });\n }\n if (!deepEqual(before.glyphs, after.glyphs)) {\n commands.push({ command: operations.setGlyphs, args: [after.glyphs] });\n }\n if (!deepEqual(before.transition, after.transition)) {\n commands.push({ command: operations.setTransition, args: [after.transition] });\n }\n if (!deepEqual(before.light, after.light)) {\n commands.push({ command: operations.setLight, args: [after.light] });\n }\n // Handle changes to `sources`\n // If a source is to be removed, we also--before the removeSource\n // command--need to remove all the style layers that depend on it.\n const sourcesRemoved = {};\n // First collect the {add,remove}Source commands\n const removeOrAddSourceCommands = [];\n diffSources(before.sources, after.sources, removeOrAddSourceCommands, sourcesRemoved);\n // Push a removeLayer command for each style layer that depends on a\n // source that's being removed.\n // Also, exclude any such layers them from the input to `diffLayers`\n // below, so that diffLayers produces the appropriate `addLayers`\n // command\n const beforeLayers = [];\n if (before.layers) {\n before.layers.forEach((layer) => {\n if (sourcesRemoved[layer.source]) {\n commands.push({ command: operations.removeLayer, args: [layer.id] });\n }\n else {\n beforeLayers.push(layer);\n }\n });\n }\n commands = commands.concat(removeOrAddSourceCommands);\n // Handle changes to `layers`\n diffLayers(beforeLayers, after.layers, commands);\n }\n catch (e) {\n // fall back to setStyle\n console.warn('Unable to compute style diff:', e);\n commands = [{ command: operations.setStyle, args: [after] }];\n }\n return commands;\n}\n\n// Note: Do not inherit from Error. It breaks when transpiling to ES5.\nclass ValidationError {\n constructor(key, value, message, identifier) {\n this.message = (key ? `${key}: ` : '') + message;\n if (identifier)\n this.identifier = identifier;\n if (value !== null && value !== undefined && value.__line__) {\n this.line = value.__line__;\n }\n }\n}\n\n// Note: Do not inherit from Error. It breaks when transpiling to ES5.\nclass ParsingError {\n constructor(error) {\n this.error = error;\n this.message = error.message;\n const match = error.message.match(/line (\\d+)/);\n this.line = match ? parseInt(match[1], 10) : 0;\n }\n}\n\nfunction validateConstants(options) {\n const key = options.key;\n const constants = options.value;\n if (constants) {\n return [new ValidationError(key, constants, 'constants have been deprecated as of v8')];\n }\n else {\n return [];\n }\n}\n\n// Turn jsonlint-lines-primitives objects into primitive objects\nfunction unbundle(value) {\n if (value instanceof Number || value instanceof String || value instanceof Boolean) {\n return value.valueOf();\n }\n else {\n return value;\n }\n}\nfunction deepUnbundle(value) {\n if (Array.isArray(value)) {\n return value.map(deepUnbundle);\n }\n else if (value instanceof Object && !(value instanceof Number || value instanceof String || value instanceof Boolean)) {\n const unbundledValue = {};\n for (const key in value) {\n unbundledValue[key] = deepUnbundle(value[key]);\n }\n return unbundledValue;\n }\n return unbundle(value);\n}\n\nfunction validateObject(options) {\n const key = options.key;\n const object = options.value;\n const elementSpecs = options.valueSpec || {};\n const elementValidators = options.objectElementValidators || {};\n const style = options.style;\n const styleSpec = options.styleSpec;\n let errors = [];\n const type = getType(object);\n if (type !== 'object') {\n return [new ValidationError(key, object, `object expected, ${type} found`)];\n }\n for (const objectKey in object) {\n const elementSpecKey = objectKey.split('.')[0]; // treat 'paint.*' as 'paint'\n const elementSpec = elementSpecs[elementSpecKey] || elementSpecs['*'];\n let validateElement;\n if (elementValidators[elementSpecKey]) {\n validateElement = elementValidators[elementSpecKey];\n }\n else if (elementSpecs[elementSpecKey]) {\n validateElement = validate;\n }\n else if (elementValidators['*']) {\n validateElement = elementValidators['*'];\n }\n else if (elementSpecs['*']) {\n validateElement = validate;\n }\n else {\n errors.push(new ValidationError(key, object[objectKey], `unknown property \"${objectKey}\"`));\n continue;\n }\n errors = errors.concat(validateElement({\n key: (key ? `${key}.` : key) + objectKey,\n value: object[objectKey],\n valueSpec: elementSpec,\n style,\n styleSpec,\n object,\n objectKey\n }, object));\n }\n for (const elementSpecKey in elementSpecs) {\n // Don't check `required` when there's a custom validator for that property.\n if (elementValidators[elementSpecKey]) {\n continue;\n }\n if (elementSpecs[elementSpecKey].required && elementSpecs[elementSpecKey]['default'] === undefined && object[elementSpecKey] === undefined) {\n errors.push(new ValidationError(key, object, `missing required property \"${elementSpecKey}\"`));\n }\n }\n return errors;\n}\n\nfunction validateArray(options) {\n const array = options.value;\n const arraySpec = options.valueSpec;\n const style = options.style;\n const styleSpec = options.styleSpec;\n const key = options.key;\n const validateArrayElement = options.arrayElementValidator || validate;\n if (getType(array) !== 'array') {\n return [new ValidationError(key, array, `array expected, ${getType(array)} found`)];\n }\n if (arraySpec.length && array.length !== arraySpec.length) {\n return [new ValidationError(key, array, `array length ${arraySpec.length} expected, length ${array.length} found`)];\n }\n if (arraySpec['min-length'] && array.length < arraySpec['min-length']) {\n return [new ValidationError(key, array, `array length at least ${arraySpec['min-length']} expected, length ${array.length} found`)];\n }\n let arrayElementSpec = {\n 'type': arraySpec.value,\n 'values': arraySpec.values\n };\n if (styleSpec.$version < 7) {\n arrayElementSpec['function'] = arraySpec.function;\n }\n if (getType(arraySpec.value) === 'object') {\n arrayElementSpec = arraySpec.value;\n }\n let errors = [];\n for (let i = 0; i < array.length; i++) {\n errors = errors.concat(validateArrayElement({\n array,\n arrayIndex: i,\n value: array[i],\n valueSpec: arrayElementSpec,\n style,\n styleSpec,\n key: `${key}[${i}]`\n }));\n }\n return errors;\n}\n\nfunction validateNumber(options) {\n const key = options.key;\n const value = options.value;\n const valueSpec = options.valueSpec;\n let type = getType(value);\n // eslint-disable-next-line no-self-compare\n if (type === 'number' && value !== value) {\n type = 'NaN';\n }\n if (type !== 'number') {\n return [new ValidationError(key, value, `number expected, ${type} found`)];\n }\n if ('minimum' in valueSpec && value < valueSpec.minimum) {\n return [new ValidationError(key, value, `${value} is less than the minimum value ${valueSpec.minimum}`)];\n }\n if ('maximum' in valueSpec && value > valueSpec.maximum) {\n return [new ValidationError(key, value, `${value} is greater than the maximum value ${valueSpec.maximum}`)];\n }\n return [];\n}\n\nfunction validateFunction(options) {\n const functionValueSpec = options.valueSpec;\n const functionType = unbundle(options.value.type);\n let stopKeyType;\n let stopDomainValues = {};\n let previousStopDomainValue;\n let previousStopDomainZoom;\n const isZoomFunction = functionType !== 'categorical' && options.value.property === undefined;\n const isPropertyFunction = !isZoomFunction;\n const isZoomAndPropertyFunction = getType(options.value.stops) === 'array' &&\n getType(options.value.stops[0]) === 'array' &&\n getType(options.value.stops[0][0]) === 'object';\n const errors = validateObject({\n key: options.key,\n value: options.value,\n valueSpec: options.styleSpec.function,\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: {\n stops: validateFunctionStops,\n default: validateFunctionDefault\n }\n });\n if (functionType === 'identity' && isZoomFunction) {\n errors.push(new ValidationError(options.key, options.value, 'missing required property \"property\"'));\n }\n if (functionType !== 'identity' && !options.value.stops) {\n errors.push(new ValidationError(options.key, options.value, 'missing required property \"stops\"'));\n }\n if (functionType === 'exponential' && options.valueSpec.expression && !supportsInterpolation(options.valueSpec)) {\n errors.push(new ValidationError(options.key, options.value, 'exponential functions not supported'));\n }\n if (options.styleSpec.$version >= 8) {\n if (isPropertyFunction && !supportsPropertyExpression(options.valueSpec)) {\n errors.push(new ValidationError(options.key, options.value, 'property functions not supported'));\n }\n else if (isZoomFunction && !supportsZoomExpression(options.valueSpec)) {\n errors.push(new ValidationError(options.key, options.value, 'zoom functions not supported'));\n }\n }\n if ((functionType === 'categorical' || isZoomAndPropertyFunction) && options.value.property === undefined) {\n errors.push(new ValidationError(options.key, options.value, '\"property\" property is required'));\n }\n return errors;\n function validateFunctionStops(options) {\n if (functionType === 'identity') {\n return [new ValidationError(options.key, options.value, 'identity function may not have a \"stops\" property')];\n }\n let errors = [];\n const value = options.value;\n errors = errors.concat(validateArray({\n key: options.key,\n value,\n valueSpec: options.valueSpec,\n style: options.style,\n styleSpec: options.styleSpec,\n arrayElementValidator: validateFunctionStop\n }));\n if (getType(value) === 'array' && value.length === 0) {\n errors.push(new ValidationError(options.key, value, 'array must have at least one stop'));\n }\n return errors;\n }\n function validateFunctionStop(options) {\n let errors = [];\n const value = options.value;\n const key = options.key;\n if (getType(value) !== 'array') {\n return [new ValidationError(key, value, `array expected, ${getType(value)} found`)];\n }\n if (value.length !== 2) {\n return [new ValidationError(key, value, `array length 2 expected, length ${value.length} found`)];\n }\n if (isZoomAndPropertyFunction) {\n if (getType(value[0]) !== 'object') {\n return [new ValidationError(key, value, `object expected, ${getType(value[0])} found`)];\n }\n if (value[0].zoom === undefined) {\n return [new ValidationError(key, value, 'object stop key must have zoom')];\n }\n if (value[0].value === undefined) {\n return [new ValidationError(key, value, 'object stop key must have value')];\n }\n if (previousStopDomainZoom && previousStopDomainZoom > unbundle(value[0].zoom)) {\n return [new ValidationError(key, value[0].zoom, 'stop zoom values must appear in ascending order')];\n }\n if (unbundle(value[0].zoom) !== previousStopDomainZoom) {\n previousStopDomainZoom = unbundle(value[0].zoom);\n previousStopDomainValue = undefined;\n stopDomainValues = {};\n }\n errors = errors.concat(validateObject({\n key: `${key}[0]`,\n value: value[0],\n valueSpec: { zoom: {} },\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: { zoom: validateNumber, value: validateStopDomainValue }\n }));\n }\n else {\n errors = errors.concat(validateStopDomainValue({\n key: `${key}[0]`,\n value: value[0],\n valueSpec: {},\n style: options.style,\n styleSpec: options.styleSpec\n }, value));\n }\n if (isExpression(deepUnbundle(value[1]))) {\n return errors.concat([new ValidationError(`${key}[1]`, value[1], 'expressions are not allowed in function stops.')]);\n }\n return errors.concat(validate({\n key: `${key}[1]`,\n value: value[1],\n valueSpec: functionValueSpec,\n style: options.style,\n styleSpec: options.styleSpec\n }));\n }\n function validateStopDomainValue(options, stop) {\n const type = getType(options.value);\n const value = unbundle(options.value);\n const reportValue = options.value !== null ? options.value : stop;\n if (!stopKeyType) {\n stopKeyType = type;\n }\n else if (type !== stopKeyType) {\n return [new ValidationError(options.key, reportValue, `${type} stop domain type must match previous stop domain type ${stopKeyType}`)];\n }\n if (type !== 'number' && type !== 'string' && type !== 'boolean') {\n return [new ValidationError(options.key, reportValue, 'stop domain value must be a number, string, or boolean')];\n }\n if (type !== 'number' && functionType !== 'categorical') {\n let message = `number expected, ${type} found`;\n if (supportsPropertyExpression(functionValueSpec) && functionType === undefined) {\n message += '\\nIf you intended to use a categorical function, specify `\"type\": \"categorical\"`.';\n }\n return [new ValidationError(options.key, reportValue, message)];\n }\n if (functionType === 'categorical' && type === 'number' && (!isFinite(value) || Math.floor(value) !== value)) {\n return [new ValidationError(options.key, reportValue, `integer expected, found ${value}`)];\n }\n if (functionType !== 'categorical' && type === 'number' && previousStopDomainValue !== undefined && value < previousStopDomainValue) {\n return [new ValidationError(options.key, reportValue, 'stop domain values must appear in ascending order')];\n }\n else {\n previousStopDomainValue = value;\n }\n if (functionType === 'categorical' && value in stopDomainValues) {\n return [new ValidationError(options.key, reportValue, 'stop domain values must be unique')];\n }\n else {\n stopDomainValues[value] = true;\n }\n return [];\n }\n function validateFunctionDefault(options) {\n return validate({\n key: options.key,\n value: options.value,\n valueSpec: functionValueSpec,\n style: options.style,\n styleSpec: options.styleSpec\n });\n }\n}\n\nfunction validateExpression(options) {\n const expression = (options.expressionContext === 'property' ? createPropertyExpression : createExpression)(deepUnbundle(options.value), options.valueSpec);\n if (expression.result === 'error') {\n return expression.value.map((error) => {\n return new ValidationError(`${options.key}${error.key}`, options.value, error.message);\n });\n }\n const expressionObj = expression.value.expression || expression.value._styleExpression.expression;\n if (options.expressionContext === 'property' && (options.propertyKey === 'text-font') &&\n !expressionObj.outputDefined()) {\n return [new ValidationError(options.key, options.value, `Invalid data expression for \"${options.propertyKey}\". Output values must be contained as literals within the expression.`)];\n }\n if (options.expressionContext === 'property' && options.propertyType === 'layout' &&\n (!isStateConstant(expressionObj))) {\n return [new ValidationError(options.key, options.value, '\"feature-state\" data expressions are not supported with layout properties.')];\n }\n if (options.expressionContext === 'filter' && !isStateConstant(expressionObj)) {\n return [new ValidationError(options.key, options.value, '\"feature-state\" data expressions are not supported with filters.')];\n }\n if (options.expressionContext && options.expressionContext.indexOf('cluster') === 0) {\n if (!isGlobalPropertyConstant(expressionObj, ['zoom', 'feature-state'])) {\n return [new ValidationError(options.key, options.value, '\"zoom\" and \"feature-state\" expressions are not supported with cluster properties.')];\n }\n if (options.expressionContext === 'cluster-initial' && !isFeatureConstant(expressionObj)) {\n return [new ValidationError(options.key, options.value, 'Feature data expressions are not supported with initial expression part of cluster properties.')];\n }\n }\n return [];\n}\n\nfunction validateBoolean(options) {\n const value = options.value;\n const key = options.key;\n const type = getType(value);\n if (type !== 'boolean') {\n return [new ValidationError(key, value, `boolean expected, ${type} found`)];\n }\n return [];\n}\n\nfunction validateColor(options) {\n const key = options.key;\n const value = options.value;\n const type = getType(value);\n if (type !== 'string') {\n return [new ValidationError(key, value, `color expected, ${type} found`)];\n }\n if (parseCSSColor_1(value) === null) {\n return [new ValidationError(key, value, `color expected, \"${value}\" found`)];\n }\n return [];\n}\n\nfunction validateEnum(options) {\n const key = options.key;\n const value = options.value;\n const valueSpec = options.valueSpec;\n const errors = [];\n if (Array.isArray(valueSpec.values)) { // <=v7\n if (valueSpec.values.indexOf(unbundle(value)) === -1) {\n errors.push(new ValidationError(key, value, `expected one of [${valueSpec.values.join(', ')}], ${JSON.stringify(value)} found`));\n }\n }\n else { // >=v8\n if (Object.keys(valueSpec.values).indexOf(unbundle(value)) === -1) {\n errors.push(new ValidationError(key, value, `expected one of [${Object.keys(valueSpec.values).join(', ')}], ${JSON.stringify(value)} found`));\n }\n }\n return errors;\n}\n\nfunction validateFilter(options) {\n if (isExpressionFilter(deepUnbundle(options.value))) {\n return validateExpression(extendBy({}, options, {\n expressionContext: 'filter',\n valueSpec: { value: 'boolean' }\n }));\n }\n else {\n return validateNonExpressionFilter(options);\n }\n}\nfunction validateNonExpressionFilter(options) {\n const value = options.value;\n const key = options.key;\n if (getType(value) !== 'array') {\n return [new ValidationError(key, value, `array expected, ${getType(value)} found`)];\n }\n const styleSpec = options.styleSpec;\n let type;\n let errors = [];\n if (value.length < 1) {\n return [new ValidationError(key, value, 'filter array must have at least 1 element')];\n }\n errors = errors.concat(validateEnum({\n key: `${key}[0]`,\n value: value[0],\n valueSpec: styleSpec.filter_operator,\n style: options.style,\n styleSpec: options.styleSpec\n }));\n switch (unbundle(value[0])) {\n case '<':\n case '<=':\n case '>':\n case '>=':\n if (value.length >= 2 && unbundle(value[1]) === '$type') {\n errors.push(new ValidationError(key, value, `\"$type\" cannot be use with operator \"${value[0]}\"`));\n }\n /* falls through */\n case '==':\n case '!=':\n if (value.length !== 3) {\n errors.push(new ValidationError(key, value, `filter array for operator \"${value[0]}\" must have 3 elements`));\n }\n /* falls through */\n case 'in':\n case '!in':\n if (value.length >= 2) {\n type = getType(value[1]);\n if (type !== 'string') {\n errors.push(new ValidationError(`${key}[1]`, value[1], `string expected, ${type} found`));\n }\n }\n for (let i = 2; i < value.length; i++) {\n type = getType(value[i]);\n if (unbundle(value[1]) === '$type') {\n errors = errors.concat(validateEnum({\n key: `${key}[${i}]`,\n value: value[i],\n valueSpec: styleSpec.geometry_type,\n style: options.style,\n styleSpec: options.styleSpec\n }));\n }\n else if (type !== 'string' && type !== 'number' && type !== 'boolean') {\n errors.push(new ValidationError(`${key}[${i}]`, value[i], `string, number, or boolean expected, ${type} found`));\n }\n }\n break;\n case 'any':\n case 'all':\n case 'none':\n for (let i = 1; i < value.length; i++) {\n errors = errors.concat(validateNonExpressionFilter({\n key: `${key}[${i}]`,\n value: value[i],\n style: options.style,\n styleSpec: options.styleSpec\n }));\n }\n break;\n case 'has':\n case '!has':\n type = getType(value[1]);\n if (value.length !== 2) {\n errors.push(new ValidationError(key, value, `filter array for \"${value[0]}\" operator must have 2 elements`));\n }\n else if (type !== 'string') {\n errors.push(new ValidationError(`${key}[1]`, value[1], `string expected, ${type} found`));\n }\n break;\n case 'within':\n type = getType(value[1]);\n if (value.length !== 2) {\n errors.push(new ValidationError(key, value, `filter array for \"${value[0]}\" operator must have 2 elements`));\n }\n else if (type !== 'object') {\n errors.push(new ValidationError(`${key}[1]`, value[1], `object expected, ${type} found`));\n }\n break;\n }\n return errors;\n}\n\nfunction validateProperty(options, propertyType) {\n const key = options.key;\n const style = options.style;\n const styleSpec = options.styleSpec;\n const value = options.value;\n const propertyKey = options.objectKey;\n const layerSpec = styleSpec[`${propertyType}_${options.layerType}`];\n if (!layerSpec)\n return [];\n const transitionMatch = propertyKey.match(/^(.*)-transition$/);\n if (propertyType === 'paint' && transitionMatch && layerSpec[transitionMatch[1]] && layerSpec[transitionMatch[1]].transition) {\n return validate({\n key,\n value,\n valueSpec: styleSpec.transition,\n style,\n styleSpec\n });\n }\n const valueSpec = options.valueSpec || layerSpec[propertyKey];\n if (!valueSpec) {\n return [new ValidationError(key, value, `unknown property \"${propertyKey}\"`)];\n }\n let tokenMatch;\n if (getType(value) === 'string' && supportsPropertyExpression(valueSpec) && !valueSpec.tokens && (tokenMatch = /^{([^}]+)}$/.exec(value))) {\n return [new ValidationError(key, value, `\"${propertyKey}\" does not support interpolation syntax\\n` +\n `Use an identity property function instead: \\`{ \"type\": \"identity\", \"property\": ${JSON.stringify(tokenMatch[1])} }\\`.`)];\n }\n const errors = [];\n if (options.layerType === 'symbol') {\n if (propertyKey === 'text-field' && style && !style.glyphs) {\n errors.push(new ValidationError(key, value, 'use of \"text-field\" requires a style \"glyphs\" property'));\n }\n if (propertyKey === 'text-font' && isFunction(deepUnbundle(value)) && unbundle(value.type) === 'identity') {\n errors.push(new ValidationError(key, value, '\"text-font\" does not support identity functions'));\n }\n }\n return errors.concat(validate({\n key: options.key,\n value,\n valueSpec,\n style,\n styleSpec,\n expressionContext: 'property',\n propertyType,\n propertyKey\n }));\n}\n\nfunction validatePaintProperty(options) {\n return validateProperty(options, 'paint');\n}\n\nfunction validateLayoutProperty(options) {\n return validateProperty(options, 'layout');\n}\n\nfunction validateLayer(options) {\n let errors = [];\n const layer = options.value;\n const key = options.key;\n const style = options.style;\n const styleSpec = options.styleSpec;\n if (!layer.type && !layer.ref) {\n errors.push(new ValidationError(key, layer, 'either \"type\" or \"ref\" is required'));\n }\n let type = unbundle(layer.type);\n const ref = unbundle(layer.ref);\n if (layer.id) {\n const layerId = unbundle(layer.id);\n for (let i = 0; i < options.arrayIndex; i++) {\n const otherLayer = style.layers[i];\n if (unbundle(otherLayer.id) === layerId) {\n errors.push(new ValidationError(key, layer.id, `duplicate layer id \"${layer.id}\", previously used at line ${otherLayer.id.__line__}`));\n }\n }\n }\n if ('ref' in layer) {\n ['type', 'source', 'source-layer', 'filter', 'layout'].forEach((p) => {\n if (p in layer) {\n errors.push(new ValidationError(key, layer[p], `\"${p}\" is prohibited for ref layers`));\n }\n });\n let parent;\n style.layers.forEach((layer) => {\n if (unbundle(layer.id) === ref)\n parent = layer;\n });\n if (!parent) {\n errors.push(new ValidationError(key, layer.ref, `ref layer \"${ref}\" not found`));\n }\n else if (parent.ref) {\n errors.push(new ValidationError(key, layer.ref, 'ref cannot reference another ref layer'));\n }\n else {\n type = unbundle(parent.type);\n }\n }\n else if (type !== 'background') {\n if (!layer.source) {\n errors.push(new ValidationError(key, layer, 'missing required property \"source\"'));\n }\n else {\n const source = style.sources && style.sources[layer.source];\n const sourceType = source && unbundle(source.type);\n if (!source) {\n errors.push(new ValidationError(key, layer.source, `source \"${layer.source}\" not found`));\n }\n else if (sourceType === 'vector' && type === 'raster') {\n errors.push(new ValidationError(key, layer.source, `layer \"${layer.id}\" requires a raster source`));\n }\n else if (sourceType === 'raster' && type !== 'raster') {\n errors.push(new ValidationError(key, layer.source, `layer \"${layer.id}\" requires a vector source`));\n }\n else if (sourceType === 'vector' && !layer['source-layer']) {\n errors.push(new ValidationError(key, layer, `layer \"${layer.id}\" must specify a \"source-layer\"`));\n }\n else if (sourceType === 'raster-dem' && type !== 'hillshade') {\n errors.push(new ValidationError(key, layer.source, 'raster-dem source can only be used with layer type \\'hillshade\\'.'));\n }\n else if (type === 'line' && layer.paint && layer.paint['line-gradient'] &&\n (sourceType !== 'geojson' || !source.lineMetrics)) {\n errors.push(new ValidationError(key, layer, `layer \"${layer.id}\" specifies a line-gradient, which requires a GeoJSON source with \\`lineMetrics\\` enabled.`));\n }\n }\n }\n errors = errors.concat(validateObject({\n key,\n value: layer,\n valueSpec: styleSpec.layer,\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: {\n '*'() {\n return [];\n },\n // We don't want to enforce the spec's `\"requires\": true` for backward compatibility with refs;\n // the actual requirement is validated above. See https://github.com/mapbox/mapbox-gl-js/issues/5772.\n type() {\n return validate({\n key: `${key}.type`,\n value: layer.type,\n valueSpec: styleSpec.layer.type,\n style: options.style,\n styleSpec: options.styleSpec,\n object: layer,\n objectKey: 'type'\n });\n },\n filter: validateFilter,\n layout(options) {\n return validateObject({\n layer,\n key: options.key,\n value: options.value,\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: {\n '*'(options) {\n return validateLayoutProperty(extendBy({ layerType: type }, options));\n }\n }\n });\n },\n paint(options) {\n return validateObject({\n layer,\n key: options.key,\n value: options.value,\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: {\n '*'(options) {\n return validatePaintProperty(extendBy({ layerType: type }, options));\n }\n }\n });\n }\n }\n }));\n return errors;\n}\n\nfunction validateString(options) {\n const value = options.value;\n const key = options.key;\n const type = getType(value);\n if (type !== 'string') {\n return [new ValidationError(key, value, `string expected, ${type} found`)];\n }\n return [];\n}\n\nconst objectElementValidators = {\n promoteId: validatePromoteId\n};\nfunction validateSource(options) {\n const value = options.value;\n const key = options.key;\n const styleSpec = options.styleSpec;\n const style = options.style;\n if (!value.type) {\n return [new ValidationError(key, value, '\"type\" is required')];\n }\n const type = unbundle(value.type);\n let errors;\n switch (type) {\n case 'vector':\n case 'raster':\n case 'raster-dem':\n errors = validateObject({\n key,\n value,\n valueSpec: styleSpec[`source_${type.replace('-', '_')}`],\n style: options.style,\n styleSpec,\n objectElementValidators\n });\n return errors;\n case 'geojson':\n errors = validateObject({\n key,\n value,\n valueSpec: styleSpec.source_geojson,\n style,\n styleSpec,\n objectElementValidators\n });\n if (value.cluster) {\n for (const prop in value.clusterProperties) {\n const [operator, mapExpr] = value.clusterProperties[prop];\n const reduceExpr = typeof operator === 'string' ? [operator, ['accumulated'], ['get', prop]] : operator;\n errors.push(...validateExpression({\n key: `${key}.${prop}.map`,\n value: mapExpr,\n expressionContext: 'cluster-map'\n }));\n errors.push(...validateExpression({\n key: `${key}.${prop}.reduce`,\n value: reduceExpr,\n expressionContext: 'cluster-reduce'\n }));\n }\n }\n return errors;\n case 'video':\n return validateObject({\n key,\n value,\n valueSpec: styleSpec.source_video,\n style,\n styleSpec\n });\n case 'image':\n return validateObject({\n key,\n value,\n valueSpec: styleSpec.source_image,\n style,\n styleSpec\n });\n case 'canvas':\n return [new ValidationError(key, null, 'Please use runtime APIs to add canvas sources, rather than including them in stylesheets.', 'source.canvas')];\n default:\n return validateEnum({\n key: `${key}.type`,\n value: value.type,\n valueSpec: { values: ['vector', 'raster', 'raster-dem', 'geojson', 'video', 'image'] },\n style,\n styleSpec\n });\n }\n}\nfunction validatePromoteId({ key, value }) {\n if (getType(value) === 'string') {\n return validateString({ key, value });\n }\n else {\n const errors = [];\n for (const prop in value) {\n errors.push(...validateString({ key: `${key}.${prop}`, value: value[prop] }));\n }\n return errors;\n }\n}\n\nfunction validateLight(options) {\n const light = options.value;\n const styleSpec = options.styleSpec;\n const lightSpec = styleSpec.light;\n const style = options.style;\n let errors = [];\n const rootType = getType(light);\n if (light === undefined) {\n return errors;\n }\n else if (rootType !== 'object') {\n errors = errors.concat([new ValidationError('light', light, `object expected, ${rootType} found`)]);\n return errors;\n }\n for (const key in light) {\n const transitionMatch = key.match(/^(.*)-transition$/);\n if (transitionMatch && lightSpec[transitionMatch[1]] && lightSpec[transitionMatch[1]].transition) {\n errors = errors.concat(validate({\n key,\n value: light[key],\n valueSpec: styleSpec.transition,\n style,\n styleSpec\n }));\n }\n else if (lightSpec[key]) {\n errors = errors.concat(validate({\n key,\n value: light[key],\n valueSpec: lightSpec[key],\n style,\n styleSpec\n }));\n }\n else {\n errors = errors.concat([new ValidationError(key, light[key], `unknown property \"${key}\"`)]);\n }\n }\n return errors;\n}\n\nfunction validateTerrain(options) {\n const terrain = options.value;\n const styleSpec = options.styleSpec;\n const terrainSpec = styleSpec.terrain;\n const style = options.style;\n let errors = [];\n const rootType = getType(terrain);\n if (terrain === undefined) {\n return errors;\n }\n else if (rootType !== 'object') {\n errors = errors.concat([new ValidationError('terrain', terrain, `object expected, ${rootType} found`)]);\n return errors;\n }\n for (const key in terrain) {\n if (terrainSpec[key]) {\n errors = errors.concat(validate({\n key,\n value: terrain[key],\n valueSpec: terrainSpec[key],\n style,\n styleSpec\n }));\n }\n else {\n errors = errors.concat([new ValidationError(key, terrain[key], `unknown property \"${key}\"`)]);\n }\n }\n return errors;\n}\n\nfunction validateFormatted(options) {\n if (validateString(options).length === 0) {\n return [];\n }\n return validateExpression(options);\n}\n\nfunction validateImage(options) {\n if (validateString(options).length === 0) {\n return [];\n }\n return validateExpression(options);\n}\n\nfunction validatePadding(options) {\n const key = options.key;\n const value = options.value;\n const type = getType(value);\n if (type === 'array') {\n if (value.length < 1 || value.length > 4) {\n return [new ValidationError(key, value, `padding requires 1 to 4 values; ${value.length} values found`)];\n }\n const arrayElementSpec = {\n type: 'number'\n };\n let errors = [];\n for (let i = 0; i < value.length; i++) {\n errors = errors.concat(validate({\n key: `${key}[${i}]`,\n value: value[i],\n valueSpec: arrayElementSpec\n }));\n }\n return errors;\n }\n else {\n return validateNumber({\n key,\n value,\n valueSpec: {}\n });\n }\n}\n\nconst VALIDATORS = {\n '*'() {\n return [];\n },\n 'array': validateArray,\n 'boolean': validateBoolean,\n 'number': validateNumber,\n 'color': validateColor,\n 'constants': validateConstants,\n 'enum': validateEnum,\n 'filter': validateFilter,\n 'function': validateFunction,\n 'layer': validateLayer,\n 'object': validateObject,\n 'source': validateSource,\n 'light': validateLight,\n 'terrain': validateTerrain,\n 'string': validateString,\n 'formatted': validateFormatted,\n 'resolvedImage': validateImage,\n 'padding': validatePadding\n};\n// Main recursive validation function. Tracks:\n//\n// - key: string representing location of validation in style tree. Used only\n// for more informative error reporting.\n// - value: current value from style being evaluated. May be anything from a\n// high level object that needs to be descended into deeper or a simple\n// scalar value.\n// - valueSpec: current spec being evaluated. Tracks value.\n// - styleSpec: current full spec being evaluated.\nfunction validate(options) {\n const value = options.value;\n const valueSpec = options.valueSpec;\n const styleSpec = options.styleSpec;\n if (valueSpec.expression && isFunction(unbundle(value))) {\n return validateFunction(options);\n }\n else if (valueSpec.expression && isExpression(deepUnbundle(value))) {\n return validateExpression(options);\n }\n else if (valueSpec.type && VALIDATORS[valueSpec.type]) {\n return VALIDATORS[valueSpec.type](options);\n }\n else {\n const valid = validateObject(extendBy({}, options, {\n valueSpec: valueSpec.type ? styleSpec[valueSpec.type] : valueSpec\n }));\n return valid;\n }\n}\n\nfunction validateGlyphsUrl(options) {\n const value = options.value;\n const key = options.key;\n const errors = validateString(options);\n if (errors.length)\n return errors;\n if (value.indexOf('{fontstack}') === -1) {\n errors.push(new ValidationError(key, value, '\"glyphs\" url must include a \"{fontstack}\" token'));\n }\n if (value.indexOf('{range}') === -1) {\n errors.push(new ValidationError(key, value, '\"glyphs\" url must include a \"{range}\" token'));\n }\n return errors;\n}\n\n/**\n * Validate a MapLibre GL style against the style specification. This entrypoint,\n * `maplibre-gl-style-spec/lib/validate_style.min`, is designed to produce as\n * small a browserify bundle as possible by omitting unnecessary functionality\n * and legacy style specifications.\n *\n * @private\n * @param {Object} style The style to be validated.\n * @param {Object} [styleSpec] The style specification to validate against.\n * If omitted, the latest style spec is used.\n * @returns {Array<ValidationError>}\n * @example\n * var validate = require('maplibre-gl-style-spec/lib/validate_style.min');\n * var errors = validate(style);\n */\nfunction validateStyleMin(style, styleSpec = v8Spec) {\n let errors = [];\n errors = errors.concat(validate({\n key: '',\n value: style,\n valueSpec: styleSpec.$root,\n styleSpec,\n style,\n objectElementValidators: {\n glyphs: validateGlyphsUrl,\n '*'() {\n return [];\n }\n }\n }));\n if (style['constants']) {\n errors = errors.concat(validateConstants({\n key: 'constants',\n value: style['constants'],\n style,\n styleSpec\n }));\n }\n return sortErrors(errors);\n}\nvalidateStyleMin.source = wrapCleanErrors(validateSource);\nvalidateStyleMin.light = wrapCleanErrors(validateLight);\nvalidateStyleMin.terrain = wrapCleanErrors(validateTerrain);\nvalidateStyleMin.layer = wrapCleanErrors(validateLayer);\nvalidateStyleMin.filter = wrapCleanErrors(validateFilter);\nvalidateStyleMin.paintProperty = wrapCleanErrors(validatePaintProperty);\nvalidateStyleMin.layoutProperty = wrapCleanErrors(validateLayoutProperty);\nfunction sortErrors(errors) {\n return [].concat(errors).sort((a, b) => {\n return a.line - b.line;\n });\n}\nfunction wrapCleanErrors(inner) {\n return function (...args) {\n return sortErrors(inner.apply(this, args));\n };\n}\n\nfunction commonjsRequire(path) {\n\tthrow new Error('Could not dynamically require \"' + path + '\". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');\n}\n\nvar jsonlint = {};\n\n/* parser generated by jison 0.4.15 */\n\n(function (exports) {\n\t/*\n\t Returns a Parser object of the following structure:\n\n\t Parser: {\n\t yy: {}\n\t }\n\n\t Parser.prototype: {\n\t yy: {},\n\t trace: function(),\n\t symbols_: {associative list: name ==> number},\n\t terminals_: {associative list: number ==> name},\n\t productions_: [...],\n\t performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n\t table: [...],\n\t defaultActions: {...},\n\t parseError: function(str, hash),\n\t parse: function(input),\n\n\t lexer: {\n\t EOF: 1,\n\t parseError: function(str, hash),\n\t setInput: function(input),\n\t input: function(),\n\t unput: function(str),\n\t more: function(),\n\t less: function(n),\n\t pastInput: function(),\n\t upcomingInput: function(),\n\t showPosition: function(),\n\t test_match: function(regex_match_array, rule_index),\n\t next: function(),\n\t lex: function(),\n\t begin: function(condition),\n\t popState: function(),\n\t _currentRules: function(),\n\t topState: function(),\n\t pushState: function(condition),\n\n\t options: {\n\t ranges: boolean (optional: true ==> token location info will include a .range[] member)\n\t flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n\t backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n\t },\n\n\t performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n\t rules: [...],\n\t conditions: {associative list: name ==> set},\n\t }\n\t }\n\n\n\t token location info (@$, _$, etc.): {\n\t first_line: n,\n\t last_line: n,\n\t first_column: n,\n\t last_column: n,\n\t range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n\t }\n\n\n\t the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n\t text: (matched text)\n\t token: (the produced terminal token, if any)\n\t line: (yylineno)\n\t }\n\t while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n\t loc: (yylloc)\n\t expected: (string describing the set of expected tokens)\n\t recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n\t }\n\t*/\n\tvar parser = function () {\n\t var o = function (k, v, o, l) {\n\t for (o = o || {}, l = k.length; l--; o[k[l]] = v);\n\t return o;\n\t }, $V0 = [\n\t 1,\n\t 12\n\t ], $V1 = [\n\t 1,\n\t 13\n\t ], $V2 = [\n\t 1,\n\t 9\n\t ], $V3 = [\n\t 1,\n\t 10\n\t ], $V4 = [\n\t 1,\n\t 11\n\t ], $V5 = [\n\t 1,\n\t 14\n\t ], $V6 = [\n\t 1,\n\t 15\n\t ], $V7 = [\n\t 14,\n\t 18,\n\t 22,\n\t 24\n\t ], $V8 = [\n\t 18,\n\t 22\n\t ], $V9 = [\n\t 22,\n\t 24\n\t ];\n\t var parser = {\n\t trace: function trace() {\n\t },\n\t yy: {},\n\t symbols_: {\n\t 'error': 2,\n\t 'JSONString': 3,\n\t 'STRING': 4,\n\t 'JSONNumber': 5,\n\t 'NUMBER': 6,\n\t 'JSONNullLiteral': 7,\n\t 'NULL': 8,\n\t 'JSONBooleanLiteral': 9,\n\t 'TRUE': 10,\n\t 'FALSE': 11,\n\t 'JSONText': 12,\n\t 'JSONValue': 13,\n\t 'EOF': 14,\n\t 'JSONObject': 15,\n\t 'JSONArray': 16,\n\t '{': 17,\n\t '}': 18,\n\t 'JSONMemberList': 19,\n\t 'JSONMember': 20,\n\t ':': 21,\n\t ',': 22,\n\t '[': 23,\n\t ']': 24,\n\t 'JSONElementList': 25,\n\t '$accept': 0,\n\t '$end': 1\n\t },\n\t terminals_: {\n\t 2: 'error',\n\t 4: 'STRING',\n\t 6: 'NUMBER',\n\t 8: 'NULL',\n\t 10: 'TRUE',\n\t 11: 'FALSE',\n\t 14: 'EOF',\n\t 17: '{',\n\t 18: '}',\n\t 21: ':',\n\t 22: ',',\n\t 23: '[',\n\t 24: ']'\n\t },\n\t productions_: [\n\t 0,\n\t [\n\t 3,\n\t 1\n\t ],\n\t [\n\t 5,\n\t 1\n\t ],\n\t [\n\t 7,\n\t 1\n\t ],\n\t [\n\t 9,\n\t 1\n\t ],\n\t [\n\t 9,\n\t 1\n\t ],\n\t [\n\t 12,\n\t 2\n\t ],\n\t [\n\t 13,\n\t 1\n\t ],\n\t [\n\t 13,\n\t 1\n\t ],\n\t [\n\t 13,\n\t 1\n\t ],\n\t [\n\t 13,\n\t 1\n\t ],\n\t [\n\t 13,\n\t 1\n\t ],\n\t [\n\t 13,\n\t 1\n\t ],\n\t [\n\t 15,\n\t 2\n\t ],\n\t [\n\t 15,\n\t 3\n\t ],\n\t [\n\t 20,\n\t 3\n\t ],\n\t [\n\t 19,\n\t 1\n\t ],\n\t [\n\t 19,\n\t 3\n\t ],\n\t [\n\t 16,\n\t 2\n\t ],\n\t [\n\t 16,\n\t 3\n\t ],\n\t [\n\t 25,\n\t 1\n\t ],\n\t [\n\t 25,\n\t 3\n\t ]\n\t ],\n\t performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n\t /* this == yyval */\n\t var $0 = $$.length - 1;\n\t switch (yystate) {\n\t case 1:\n\t // replace escaped characters with actual character\n\t this.$ = new String(yytext.replace(/\\\\(\\\\|\")/g, '$' + '1').replace(/\\\\n/g, '\\n').replace(/\\\\r/g, '\\r').replace(/\\\\t/g, '\\t').replace(/\\\\v/g, '\\x0B').replace(/\\\\f/g, '\\f').replace(/\\\\b/g, '\\b'));\n\t this.$.__line__ = this._$.first_line;\n\t break;\n\t case 2:\n\t this.$ = new Number(yytext);\n\t this.$.__line__ = this._$.first_line;\n\t break;\n\t case 3:\n\t this.$ = null;\n\t break;\n\t case 4:\n\t this.$ = new Boolean(true);\n\t this.$.__line__ = this._$.first_line;\n\t break;\n\t case 5:\n\t this.$ = new Boolean(false);\n\t this.$.__line__ = this._$.first_line;\n\t break;\n\t case 6:\n\t return this.$ = $$[$0 - 1];\n\t case 13:\n\t this.$ = {};\n\t Object.defineProperty(this.$, '__line__', {\n\t value: this._$.first_line,\n\t enumerable: false\n\t });\n\t break;\n\t case 14:\n\t case 19:\n\t this.$ = $$[$0 - 1];\n\t Object.defineProperty(this.$, '__line__', {\n\t value: this._$.first_line,\n\t enumerable: false\n\t });\n\t break;\n\t case 15:\n\t this.$ = [\n\t $$[$0 - 2],\n\t $$[$0]\n\t ];\n\t break;\n\t case 16:\n\t this.$ = {};\n\t this.$[$$[$0][0]] = $$[$0][1];\n\t break;\n\t case 17:\n\t this.$ = $$[$0 - 2];\n\t $$[$0 - 2][$$[$0][0]] = $$[$0][1];\n\t break;\n\t case 18:\n\t this.$ = [];\n\t Object.defineProperty(this.$, '__line__', {\n\t value: this._$.first_line,\n\t enumerable: false\n\t });\n\t break;\n\t case 20:\n\t this.$ = [$$[$0]];\n\t break;\n\t case 21:\n\t this.$ = $$[$0 - 2];\n\t $$[$0 - 2].push($$[$0]);\n\t break;\n\t }\n\t },\n\t table: [\n\t {\n\t 3: 5,\n\t 4: $V0,\n\t 5: 6,\n\t 6: $V1,\n\t 7: 3,\n\t 8: $V2,\n\t 9: 4,\n\t 10: $V3,\n\t 11: $V4,\n\t 12: 1,\n\t 13: 2,\n\t 15: 7,\n\t 16: 8,\n\t 17: $V5,\n\t 23: $V6\n\t },\n\t { 1: [3] },\n\t {\n\t 14: [\n\t 1,\n\t 16\n\t ]\n\t },\n\t o($V7, [\n\t 2,\n\t 7\n\t ]),\n\t o($V7, [\n\t 2,\n\t 8\n\t ]),\n\t o($V7, [\n\t 2,\n\t 9\n\t ]),\n\t o($V7, [\n\t 2,\n\t 10\n\t ]),\n\t o($V7, [\n\t 2,\n\t 11\n\t ]),\n\t o($V7, [\n\t 2,\n\t 12\n\t ]),\n\t o($V7, [\n\t 2,\n\t 3\n\t ]),\n\t o($V7, [\n\t 2,\n\t 4\n\t ]),\n\t o($V7, [\n\t 2,\n\t 5\n\t ]),\n\t o([\n\t 14,\n\t 18,\n\t 21,\n\t 22,\n\t 24\n\t ], [\n\t 2,\n\t 1\n\t ]),\n\t o($V7, [\n\t 2,\n\t 2\n\t ]),\n\t {\n\t 3: 20,\n\t 4: $V0,\n\t 18: [\n\t 1,\n\t 17\n\t ],\n\t 19: 18,\n\t 20: 19\n\t },\n\t {\n\t 3: 5,\n\t 4: $V0,\n\t 5: 6,\n\t 6: $V1,\n\t 7: 3,\n\t 8: $V2,\n\t 9: 4,\n\t 10: $V3,\n\t 11: $V4,\n\t 13: 23,\n\t 15: 7,\n\t 16: 8,\n\t 17: $V5,\n\t 23: $V6,\n\t 24: [\n\t 1,\n\t 21\n\t ],\n\t 25: 22\n\t },\n\t {\n\t 1: [\n\t 2,\n\t 6\n\t ]\n\t },\n\t o($V7, [\n\t 2,\n\t 13\n\t ]),\n\t {\n\t 18: [\n\t 1,\n\t 24\n\t ],\n\t 22: [\n\t 1,\n\t 25\n\t ]\n\t },\n\t o($V8, [\n\t 2,\n\t 16\n\t ]),\n\t {\n\t 21: [\n\t 1,\n\t 26\n\t ]\n\t },\n\t o($V7, [\n\t 2,\n\t 18\n\t ]),\n\t {\n\t 22: [\n\t 1,\n\t 28\n\t ],\n\t 24: [\n\t 1,\n\t 27\n\t ]\n\t },\n\t o($V9, [\n\t 2,\n\t 20\n\t ]),\n\t o($V7, [\n\t 2,\n\t 14\n\t ]),\n\t {\n\t 3: 20,\n\t 4: $V0,\n\t 20: 29\n\t },\n\t {\n\t 3: 5,\n\t 4: $V0,\n\t 5: 6,\n\t 6: $V1,\n\t 7: 3,\n\t 8: $V2,\n\t 9: 4,\n\t 10: $V3,\n\t 11: $V4,\n\t 13: 30,\n\t 15: 7,\n\t 16: 8,\n\t 17: $V5,\n\t 23: $V6\n\t },\n\t o($V7, [\n\t 2,\n\t 19\n\t ]),\n\t {\n\t 3: 5,\n\t 4: $V0,\n\t 5: 6,\n\t 6: $V1,\n\t 7: 3,\n\t 8: $V2,\n\t 9: 4,\n\t 10: $V3,\n\t 11: $V4,\n\t 13: 31,\n\t 15: 7,\n\t 16: 8,\n\t 17: $V5,\n\t 23: $V6\n\t },\n\t o($V8, [\n\t 2,\n\t 17\n\t ]),\n\t o($V8, [\n\t 2,\n\t 15\n\t ]),\n\t o($V9, [\n\t 2,\n\t 21\n\t ])\n\t ],\n\t defaultActions: {\n\t 16: [\n\t 2,\n\t 6\n\t ]\n\t },\n\t parseError: function parseError(str, hash) {\n\t if (hash.recoverable) {\n\t this.trace(str);\n\t } else {\n\t throw new Error(str);\n\t }\n\t },\n\t parse: function parse(input) {\n\t var self = this, stack = [0], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n\t var args = lstack.slice.call(arguments, 1);\n\t var lexer = Object.create(this.lexer);\n\t var sharedState = { yy: {} };\n\t for (var k in this.yy) {\n\t if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n\t sharedState.yy[k] = this.yy[k];\n\t }\n\t }\n\t lexer.setInput(input, sharedState.yy);\n\t sharedState.yy.lexer = lexer;\n\t sharedState.yy.parser = this;\n\t if (typeof lexer.yylloc == 'undefined') {\n\t lexer.yylloc = {};\n\t }\n\t var yyloc = lexer.yylloc;\n\t lstack.push(yyloc);\n\t var ranges = lexer.options && lexer.options.ranges;\n\t if (typeof sharedState.yy.parseError === 'function') {\n\t this.parseError = sharedState.yy.parseError;\n\t } else {\n\t this.parseError = Object.getPrototypeOf(this).parseError;\n\t }\n\t function lex() {\n\t var token;\n\t token = lexer.lex() || EOF;\n\t if (typeof token !== 'number') {\n\t token = self.symbols_[token] || token;\n\t }\n\t return token;\n\t }\n\t var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n\t while (true) {\n\t state = stack[stack.length - 1];\n\t if (this.defaultActions[state]) {\n\t action = this.defaultActions[state];\n\t } else {\n\t if (symbol === null || typeof symbol == 'undefined') {\n\t symbol = lex();\n\t }\n\t action = table[state] && table[state][symbol];\n\t }\n\t if (typeof action === 'undefined' || !action.length || !action[0]) {\n\t var errStr = '';\n\t expected = [];\n\t for (p in table[state]) {\n\t if (this.terminals_[p] && p > TERROR) {\n\t expected.push('\\'' + this.terminals_[p] + '\\'');\n\t }\n\t }\n\t if (lexer.showPosition) {\n\t errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n\t } else {\n\t errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n\t }\n\t this.parseError(errStr, {\n\t text: lexer.match,\n\t token: this.terminals_[symbol] || symbol,\n\t line: lexer.yylineno,\n\t loc: yyloc,\n\t expected: expected\n\t });\n\t }\n\t if (action[0] instanceof Array && action.length > 1) {\n\t throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n\t }\n\t switch (action[0]) {\n\t case 1:\n\t stack.push(symbol);\n\t vstack.push(lexer.yytext);\n\t lstack.push(lexer.yylloc);\n\t stack.push(action[1]);\n\t symbol = null;\n\t {\n\t yyleng = lexer.yyleng;\n\t yytext = lexer.yytext;\n\t yylineno = lexer.yylineno;\n\t yyloc = lexer.yylloc;\n\t }\n\t break;\n\t case 2:\n\t len = this.productions_[action[1]][1];\n\t yyval.$ = vstack[vstack.length - len];\n\t yyval._$ = {\n\t first_line: lstack[lstack.length - (len || 1)].first_line,\n\t last_line: lstack[lstack.length - 1].last_line,\n\t first_column: lstack[lstack.length - (len || 1)].first_column,\n\t last_column: lstack[lstack.length - 1].last_column\n\t };\n\t if (ranges) {\n\t yyval._$.range = [\n\t lstack[lstack.length - (len || 1)].range[0],\n\t lstack[lstack.length - 1].range[1]\n\t ];\n\t }\n\t r = this.performAction.apply(yyval, [\n\t yytext,\n\t yyleng,\n\t yylineno,\n\t sharedState.yy,\n\t action[1],\n\t vstack,\n\t lstack\n\t ].concat(args));\n\t if (typeof r !== 'undefined') {\n\t return r;\n\t }\n\t if (len) {\n\t stack = stack.slice(0, -1 * len * 2);\n\t vstack = vstack.slice(0, -1 * len);\n\t lstack = lstack.slice(0, -1 * len);\n\t }\n\t stack.push(this.productions_[action[1]][0]);\n\t vstack.push(yyval.$);\n\t lstack.push(yyval._$);\n\t newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n\t stack.push(newState);\n\t break;\n\t case 3:\n\t return true;\n\t }\n\t }\n\t return true;\n\t }\n\t };\n\t /* generated by jison-lex 0.3.4 */\n\t var lexer = function () {\n\t var lexer = {\n\t EOF: 1,\n\t parseError: function parseError(str, hash) {\n\t if (this.yy.parser) {\n\t this.yy.parser.parseError(str, hash);\n\t } else {\n\t throw new Error(str);\n\t }\n\t },\n\t // resets the lexer, sets new input\n\t setInput: function (input, yy) {\n\t this.yy = yy || this.yy || {};\n\t this._input = input;\n\t this._more = this._backtrack = this.done = false;\n\t this.yylineno = this.yyleng = 0;\n\t this.yytext = this.matched = this.match = '';\n\t this.conditionStack = ['INITIAL'];\n\t this.yylloc = {\n\t first_line: 1,\n\t first_column: 0,\n\t last_line: 1,\n\t last_column: 0\n\t };\n\t if (this.options.ranges) {\n\t this.yylloc.range = [\n\t 0,\n\t 0\n\t ];\n\t }\n\t this.offset = 0;\n\t return this;\n\t },\n\t // consumes and returns one char from the input\n\t input: function () {\n\t var ch = this._input[0];\n\t this.yytext += ch;\n\t this.yyleng++;\n\t this.offset++;\n\t this.match += ch;\n\t this.matched += ch;\n\t var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n\t if (lines) {\n\t this.yylineno++;\n\t this.yylloc.last_line++;\n\t } else {\n\t this.yylloc.last_column++;\n\t }\n\t if (this.options.ranges) {\n\t this.yylloc.range[1]++;\n\t }\n\t this._input = this._input.slice(1);\n\t return ch;\n\t },\n\t // unshifts one char (or a string) into the input\n\t unput: function (ch) {\n\t var len = ch.length;\n\t var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\t this._input = ch + this._input;\n\t this.yytext = this.yytext.substr(0, this.yytext.length - len);\n\t //this.yyleng -= len;\n\t this.offset -= len;\n\t var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n\t this.match = this.match.substr(0, this.match.length - 1);\n\t this.matched = this.matched.substr(0, this.matched.length - 1);\n\t if (lines.length - 1) {\n\t this.yylineno -= lines.length - 1;\n\t }\n\t var r = this.yylloc.range;\n\t this.yylloc = {\n\t first_line: this.yylloc.first_line,\n\t last_line: this.yylineno + 1,\n\t first_column: this.yylloc.first_column,\n\t last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n\t };\n\t if (this.options.ranges) {\n\t this.yylloc.range = [\n\t r[0],\n\t r[0] + this.yyleng - len\n\t ];\n\t }\n\t this.yyleng = this.yytext.length;\n\t return this;\n\t },\n\t // When called from action, caches matched text and appends it on next action\n\t more: function () {\n\t this._more = true;\n\t return this;\n\t },\n\t // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n\t reject: function () {\n\t if (this.options.backtrack_lexer) {\n\t this._backtrack = true;\n\t } else {\n\t return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n\t text: '',\n\t token: null,\n\t line: this.yylineno\n\t });\n\t }\n\t return this;\n\t },\n\t // retain first n characters of the match\n\t less: function (n) {\n\t this.unput(this.match.slice(n));\n\t },\n\t // displays already matched input, i.e. for error messages\n\t pastInput: function () {\n\t var past = this.matched.substr(0, this.matched.length - this.match.length);\n\t return (past.length > 20 ? '...' : '') + past.substr(-20).replace(/\\n/g, '');\n\t },\n\t // displays upcoming input, i.e. for error messages\n\t upcomingInput: function () {\n\t var next = this.match;\n\t if (next.length < 20) {\n\t next += this._input.substr(0, 20 - next.length);\n\t }\n\t return (next.substr(0, 20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, '');\n\t },\n\t // displays the character position where the lexing error occurred, i.e. for error messages\n\t showPosition: function () {\n\t var pre = this.pastInput();\n\t var c = new Array(pre.length + 1).join('-');\n\t return pre + this.upcomingInput() + '\\n' + c + '^';\n\t },\n\t // test the lexed token: return FALSE when not a match, otherwise return token\n\t test_match: function (match, indexed_rule) {\n\t var token, lines, backup;\n\t if (this.options.backtrack_lexer) {\n\t // save context\n\t backup = {\n\t yylineno: this.yylineno,\n\t yylloc: {\n\t first_line: this.yylloc.first_line,\n\t last_line: this.last_line,\n\t first_column: this.yylloc.first_column,\n\t last_column: this.yylloc.last_column\n\t },\n\t yytext: this.yytext,\n\t match: this.match,\n\t matches: this.matches,\n\t matched: this.matched,\n\t yyleng: this.yyleng,\n\t offset: this.offset,\n\t _more: this._more,\n\t _input: this._input,\n\t yy: this.yy,\n\t conditionStack: this.conditionStack.slice(0),\n\t done: this.done\n\t };\n\t if (this.options.ranges) {\n\t backup.yylloc.range = this.yylloc.range.slice(0);\n\t }\n\t }\n\t lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n\t if (lines) {\n\t this.yylineno += lines.length;\n\t }\n\t this.yylloc = {\n\t first_line: this.yylloc.last_line,\n\t last_line: this.yylineno + 1,\n\t first_column: this.yylloc.last_column,\n\t last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n\t };\n\t this.yytext += match[0];\n\t this.match += match[0];\n\t this.matches = match;\n\t this.yyleng = this.yytext.length;\n\t if (this.options.ranges) {\n\t this.yylloc.range = [\n\t this.offset,\n\t this.offset += this.yyleng\n\t ];\n\t }\n\t this._more = false;\n\t this._backtrack = false;\n\t this._input = this._input.slice(match[0].length);\n\t this.matched += match[0];\n\t token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n\t if (this.done && this._input) {\n\t this.done = false;\n\t }\n\t if (token) {\n\t return token;\n\t } else if (this._backtrack) {\n\t // recover context\n\t for (var k in backup) {\n\t this[k] = backup[k];\n\t }\n\t return false; // rule action called reject() implying the next rule should be tested instead.\n\t }\n\t return false;\n\t },\n\t // return next match in input\n\t next: function () {\n\t if (this.done) {\n\t return this.EOF;\n\t }\n\t if (!this._input) {\n\t this.done = true;\n\t }\n\t var token, match, tempMatch, index;\n\t if (!this._more) {\n\t this.yytext = '';\n\t this.match = '';\n\t }\n\t var rules = this._currentRules();\n\t for (var i = 0; i < rules.length; i++) {\n\t tempMatch = this._input.match(this.rules[rules[i]]);\n\t if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n\t match = tempMatch;\n\t index = i;\n\t if (this.options.backtrack_lexer) {\n\t token = this.test_match(tempMatch, rules[i]);\n\t if (token !== false) {\n\t return token;\n\t } else if (this._backtrack) {\n\t match = false;\n\t continue; // rule action called reject() implying a rule MISmatch.\n\t } else {\n\t // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n\t return false;\n\t }\n\t } else if (!this.options.flex) {\n\t break;\n\t }\n\t }\n\t }\n\t if (match) {\n\t token = this.test_match(match, rules[index]);\n\t if (token !== false) {\n\t return token;\n\t }\n\t // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n\t return false;\n\t }\n\t if (this._input === '') {\n\t return this.EOF;\n\t } else {\n\t return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n\t text: '',\n\t token: null,\n\t line: this.yylineno\n\t });\n\t }\n\t },\n\t // return next match that has a token\n\t lex: function lex() {\n\t var r = this.next();\n\t if (r) {\n\t return r;\n\t } else {\n\t return this.lex();\n\t }\n\t },\n\t // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n\t begin: function begin(condition) {\n\t this.conditionStack.push(condition);\n\t },\n\t // pop the previously active lexer condition state off the condition stack\n\t popState: function popState() {\n\t var n = this.conditionStack.length - 1;\n\t if (n > 0) {\n\t return this.conditionStack.pop();\n\t } else {\n\t return this.conditionStack[0];\n\t }\n\t },\n\t // produce the lexer rule set which is active for the currently active lexer condition state\n\t _currentRules: function _currentRules() {\n\t if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n\t return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n\t } else {\n\t return this.conditions['INITIAL'].rules;\n\t }\n\t },\n\t // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n\t topState: function topState(n) {\n\t n = this.conditionStack.length - 1 - Math.abs(n || 0);\n\t if (n >= 0) {\n\t return this.conditionStack[n];\n\t } else {\n\t return 'INITIAL';\n\t }\n\t },\n\t // alias for begin(condition)\n\t pushState: function pushState(condition) {\n\t this.begin(condition);\n\t },\n\t // return the number of states currently on the stack\n\t stateStackSize: function stateStackSize() {\n\t return this.conditionStack.length;\n\t },\n\t options: {},\n\t performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n\t switch ($avoiding_name_collisions) {\n\t case 0:\n\t /* skip whitespace */\n\t break;\n\t case 1:\n\t return 6;\n\t case 2:\n\t yy_.yytext = yy_.yytext.substr(1, yy_.yyleng - 2);\n\t return 4;\n\t case 3:\n\t return 17;\n\t case 4:\n\t return 18;\n\t case 5:\n\t return 23;\n\t case 6:\n\t return 24;\n\t case 7:\n\t return 22;\n\t case 8:\n\t return 21;\n\t case 9:\n\t return 10;\n\t case 10:\n\t return 11;\n\t case 11:\n\t return 8;\n\t case 12:\n\t return 14;\n\t case 13:\n\t return 'INVALID';\n\t }\n\t },\n\t rules: [\n\t /^(?:\\s+)/,\n\t /^(?:(-?([0-9]|[1-9][0-9]+))(\\.[0-9]+)?([eE][-+]?[0-9]+)?\\b)/,\n\t /^(?:\"(?:\\\\[\\\\\"bfnrt/]|\\\\u[a-fA-F0-9]{4}|[^\\\\\\0-\\x09\\x0a-\\x1f\"])*\")/,\n\t /^(?:\\{)/,\n\t /^(?:\\})/,\n\t /^(?:\\[)/,\n\t /^(?:\\])/,\n\t /^(?:,)/,\n\t /^(?::)/,\n\t /^(?:true\\b)/,\n\t /^(?:false\\b)/,\n\t /^(?:null\\b)/,\n\t /^(?:$)/,\n\t /^(?:.)/\n\t ],\n\t conditions: {\n\t 'INITIAL': {\n\t 'rules': [\n\t 0,\n\t 1,\n\t 2,\n\t 3,\n\t 4,\n\t 5,\n\t 6,\n\t 7,\n\t 8,\n\t 9,\n\t 10,\n\t 11,\n\t 12,\n\t 13\n\t ],\n\t 'inclusive': true\n\t }\n\t }\n\t };\n\t return lexer;\n\t }();\n\t parser.lexer = lexer;\n\t function Parser() {\n\t this.yy = {};\n\t }\n\t Parser.prototype = parser;\n\t parser.Parser = Parser;\n\t return new Parser();\n\t}();\n\tif (typeof commonjsRequire !== 'undefined' && 'object' !== 'undefined') {\n\t exports.parser = parser;\n\t exports.Parser = parser.Parser;\n\t exports.parse = function () {\n\t return parser.parse.apply(parser, arguments);\n\t };\n\t}\n} (jsonlint));\n\nfunction readStyle(style) {\n if (style instanceof String || typeof style === 'string' || style instanceof Buffer) {\n try {\n return jsonlint.parse(style.toString());\n }\n catch (e) {\n throw new ParsingError(e);\n }\n }\n return style;\n}\n\n/**\n * Validate a Mapbox GL style against the style specification.\n *\n * @private\n * @alias validate\n * @param {StyleSpecification|string|Buffer} style The style to be validated. If a `String`\n * or `Buffer` is provided, the returned errors will contain line numbers.\n * @param {Object} [styleSpec] The style specification to validate against.\n * If omitted, the spec version is inferred from the stylesheet.\n * @returns {Array<ValidationError|ParsingError>}\n * @example\n * var validate = require('maplibre-gl-style-spec').validate;\n * var style = fs.readFileSync('./style.json', 'utf8');\n * var errors = validate(style);\n */\nfunction validateStyle(style, styleSpec = v8) {\n let s = style;\n try {\n s = readStyle(s);\n }\n catch (e) {\n return [e];\n }\n return validateStyleMin(s, styleSpec);\n}\n\nconst v8 = v8Spec;\nconst expression = {\n StyleExpression,\n isExpression,\n isExpressionFilter,\n createExpression,\n createPropertyExpression,\n normalizePropertyExpression,\n ZoomConstantExpression,\n ZoomDependentExpression,\n StylePropertyFunction\n};\nconst styleFunction = {\n convertFunction,\n createFunction,\n isFunction\n};\nconst visit = { eachSource, eachLayer, eachProperty };\n\nexport { Color, Padding, ParsingError, ValidationError, composite, convertFilter, derefLayers, diffStyles as diff, expression, createFilter as featureFilter, format, styleFunction as function, v8Spec as latest, migrate, v8, validateStyle as validate, visit };\n//# sourceMappingURL=index.mjs.map\n", "/**\n *\n * A parser for converting Flow.js to MaplibreGL style expressions.\n *\n * Individual expressions can be parsed e.g.:\n * 1 + 2 * 3 -> ['+', ['*', 2, 3]]\n *\n * A whole 'style program' can also be parsed e.g.:\n * circle-color: @featureParam * 10;\n * circle-radius: min(@featureParam * 2, 10);\n *\n * Reactive state lookup and palette expansion is also supported. Expressions are\n * parsed once to MaplibreGL format and then expansion is performed as a separate step\n * in a reactive context to avoid having to re-parse when reactive values change.\n *\n * See: https://github.com/jneen/parsimmon\n */\n\n/**\n * Copyright \u00A9 2020 Emu Analytics\n */\n\nimport P from 'parsimmon';\nimport { PREFIX, BINARY_RIGHT, BINARY_LEFT, TERNARY_RIGHT } from './parser-helpers';\nimport { ParserExpression, ParserProgram } from './types';\n\n\n/**\n * @internal\n */\nexport class FlowCoreParser {\n private readonly language: P.Language;\n\n constructor() {\n this.language = this.createLanguage();\n }\n\n /**\n * Parse an expression\n *\n * @param expr Expression to parse\n */\n parseExpression(expr: string): P.Result<ParserExpression> {\n return this.language.Expr.parse(expr);\n }\n\n /**\n * Parse a complete assignment program of the form:\n * a: expr1;\n * b: expr2;\n *\n * @param program Program to parse\n */\n parseProgram(program: string): P.Result<ParserProgram> {\n return this.language.ProgramOrEmpty.parse(program);\n }\n\n private createLanguage() {\n // This table defines operator precedence and associativity - higher precedence first\n const operatorTable = [\n { type: PREFIX, ops: this.operators({ '-': '-', '!': '!' }) },\n { type: BINARY_RIGHT, ops: this.operators({ '^': '**' }) },\n { type: BINARY_LEFT, ops: this.operators({ '*': '*', '/': '/', '%': '%' }) },\n { type: BINARY_LEFT, ops: this.operators({ '+': '+', '-': '-' }) },\n { type: BINARY_LEFT, ops: this.operators({ '>=': '>=', '<=': '<=' }) },\n { type: BINARY_LEFT, ops: this.operators({ '<': '<', '>': '>' }) },\n { type: BINARY_LEFT, ops: this.operators({ '==': '==', '!=': '!=' }) },\n { type: BINARY_LEFT, ops: this.operators({ all: '&&' }) },\n { type: BINARY_LEFT, ops: this.operators({ any: '||' }) },\n { type: TERNARY_RIGHT, ops: this.operators({ case: '?' }) }\n ];\n\n return P.createLanguage({\n Whitespace: () => P.regexp(/[ \\n]*/).desc('whitespace'),\n NotNewline: () => P.regexp(/[^\\n]*/).desc('non-newline'),\n LineComment: r => r.NotNewline.wrap(P.string('//'), P.alt(P.string('\\n'), P.eof)),\n BlockComment: () => P.regexp(/\\/\\*[\\s\\S]*?\\*\\//),\n Comment: r => P.alt(r.LineComment, r.BlockComment).desc('comment'),\n End: () => P.alt(P.string(';'), P.eof),\n _: r => r.Comment.sepBy(r.Whitespace).trim(r.Whitespace),\n Integer: () => {\n return P.regexp(/-?[0-9]+/).map(Number);\n },\n Decimal: () => {\n return P.regexp(/-?[0-9]+\\.[0-9]+/).map(Number);\n },\n Number: r => {\n return P.alt(r.Decimal, r.Integer).desc('number');\n },\n Boolean: () => {\n return P.alt(P.string('true'), P.string('false'))\n .map(val => val === 'true')\n .desc('boolean');\n },\n Null: () => {\n return P.string('null')\n .result(null)\n .desc('null');\n },\n DoubleQuoteString: () => {\n return P.regexp(/\"((?:\\\\.|.)*?)\"/, 1).desc('string');\n },\n SingleQuoteString: () => {\n return P.regexp(/'((?:\\\\.|.)*?)'/, 1).desc('string');\n },\n UnquotedString: () => {\n return P.regexp(/[a-zA-Z_][a-zA-Z0-9_-]*/).desc('string');\n },\n HexColor: () => {\n return P.regexp(/#(?:[0-9a-f]{3}){1,2}/i).desc('hex color');\n },\n String: r => {\n return P.alt(r.SingleQuoteString, r.DoubleQuoteString, r.HexColor, r.UnquotedString).map(s => s.replace(/\\\\n/gm, '\\n'));\n },\n Symbol: () => {\n return P.regexp(/[a-zA-Z_][a-zA-Z0-9_-]*/).desc('symbol');\n },\n PartialSymbol: () => {\n return P.regexp(/[a-zA-Z0-9_-]+/).desc('symbol');\n },\n Feature: r => {\n return P.seqMap(P.string('@'), r.PartialSymbol.sepBy(P.string('.')), (_feat, symbols) => ['get'].concat(symbols));\n },\n FeatureState: r => {\n return P.seqMap(P.string('@@'), r.PartialSymbol.sepBy(P.string('.')), (_feat, symbols) => this.expandFeatureState(symbols));\n },\n Array: r =>\n P.string('[')\n .trim(r._)\n .then(r.Value.trim(r._).sepBy(P.string(',')))\n .skip(P.string(']')),\n State: r => {\n return P.seqMap(P.string('$'), r.PartialSymbol.sepBy(P.string('.')), (_state, symbols) => ['state'].concat(symbols));\n },\n Paren: r => {\n return P.seqMap(P.string('('), r.Expr.trim(r._), P.string(')'), (_lb, expr, _rb) => expr);\n },\n Func: r => {\n return P.seqMap(\n r.Symbol.trim(r._),\n P.string('('),\n r.Expr.trim(r._).sepBy(P.string(',')),\n P.string(')'),\n (func, _lb, args, _rb) => [func, ...args]\n );\n },\n Value: r => {\n return P.alt(r.Paren, r.Array, r.Func, r.Boolean, r.Null, r.Number, r.String, r.FeatureState, r.Feature, r.State);\n },\n Expr: r => {\n return this.tableParser(operatorTable, r.Value);\n },\n PropertyName: () => {\n return P.regexp(/[a-zA-Z_-][a-zA-Z0-9_-]*/).desc('symbol');\n },\n Assignment: r => {\n return P.seqMap(\n r.PropertyName,\n P.string(':').trim(r._),\n r.Expr.trim(r._).node('expr'),\n r.End,\n (key, _colon, node) => [key, { expr: node.value, start: node.start, end: node.end }]\n );\n },\n Program: r => {\n return r.Assignment.trim(r._)\n .many()\n .map(statements => {\n return statements\n .filter(s => s !== '')\n .reduce((acc, s) => {\n acc[s[0]] = s[1];\n return acc;\n }, {});\n });\n },\n EmptyProgram: r => {\n return P.seqMap(r._, P.eof, () => null);\n },\n ProgramOrEmpty: r => {\n return P.alt(r.EmptyProgram, r.Program)\n }\n });\n }\n\n /**\n * Helper function to create a parser that parsers a set of operators at the same precedence level\n *\n * @param ops Operator table\n */\n private operators(ops: { [key: string]: string }): P.Parser<string> {\n const keys = Object.keys(ops).sort();\n const ps = keys.map(k =>\n P.string(ops[k])\n .trim(P.optWhitespace)\n .result(k)\n );\n\n return P.alt.apply(null, ps);\n }\n\n /**\n * Helper function to create a table-driver operator parser\n *\n */\n private tableParser(operatorTable: any, valueParser: P.Parser<any>) {\n return operatorTable.reduce((acc: any, level: any) => level.type(level.ops, acc), valueParser);\n }\n\n private expandFeatureState(symbols: string[]) {\n let expandedFeatureState: any[] = ['feature-state', symbols.shift()];\n symbols.forEach(s => expandedFeatureState = ['get', s, expandedFeatureState]);\n return expandedFeatureState;\n }\n}\n", "import P from 'parsimmon';\n\n/**\n * @internal\n */\n// Takes a parser for the prefix operator, and a parser for the base thing being\n// parsed, and parses as many occurrences as possible of the prefix operator.\n// Note that the parser is created using `P.lazy` because it's recursive. It's\n// valid for there to be zero occurrences of the prefix operator.\nexport function PREFIX(operatorsParser: P.Parser<any>, nextParser: P.Parser<any>) {\n const parser: P.Parser<any> = P.lazy(() => {\n return P.seq(operatorsParser, parser).or(nextParser);\n });\n return parser;\n}\n\n/**\n * @internal\n */\n// Ideally this function would be just like `PREFIX` but reordered like\n// `P.seq(parser, operatorsParser).or(nextParser)`, but that doesn't work. The\n// reason for that is that Parsimmon will get stuck in infinite recursion, since\n// the very first rule. Inside `parser` is to match parser again. Alternatively,\n// you might think to try `nextParser.or(P.seq(parser, operatorsParser))`, but\n// that won't work either because in a call to `.or` (aka `P.alt`), Parsimmon\n// takes the first possible match, even if subsequent matches are longer, so the\n// parser will never actually look far enough ahead to see the postfix\n// operators.\n\n/* Not used\nexport function POSTFIX(operatorsParser: P.Parser<any>, nextParser: P.Parser<any>) {\n // Because we can't use recursion like stated above, we just match a flat list\n // of as many occurrences of the postfix operator as possible, then use\n // `.reduce` to manually nest the list.\n //\n // Example:\n //\n // INPUT :: \"4!!!\"\n // PARSE :: [4, \"factorial\", \"factorial\", \"factorial\"]\n // REDUCE :: [\"factorial\", [\"factorial\", [\"factorial\", 4]]]\n return P.seqMap(nextParser, operatorsParser.many(), (x1, suffixes) => suffixes.reduce((acc, x2) => [x2, acc], x1));\n}\n*/\n\n/**\n * @internal\n */\n// Takes a parser for all the operators at this precedence level, and a parser\n// that parsers everything at the next precedence level, and returns a parser\n// that parses as many binary operations as possible, associating them to the\n// right. (e.g. 1^2^3 is 1^(2^3) not (1^2)^3)\nexport function BINARY_RIGHT(operatorsParser: P.Parser<any>, nextParser: P.Parser<any>) {\n const parser: P.Parser<any> = P.lazy(() => nextParser.chain(next => P.seq(operatorsParser, P.of(next), parser).or(P.of(next))));\n return parser;\n}\n\n/**\n * @internal\n */\nexport function TERNARY_RIGHT(operatorsParser: P.Parser<any>, nextParser: P.Parser<any>) {\n const parser: P.Parser<any> = P.lazy(() =>\n nextParser.chain(next =>\n P.seqMap(\n operatorsParser,\n P.of(next),\n parser,\n P.string(':').trim(P.optWhitespace),\n parser,\n (op, cond, val1, _colon, val2) => [op, ['to-boolean', cond], val1, val2]\n ).or(P.of(next))\n )\n );\n\n return parser;\n}\n\n/**\n * @internal\n */\nexport function BINARY_LEFT(operatorsParser: P.Parser<any>, nextParser: P.Parser<any>) {\n // We run into a similar problem as with the `POSTFIX` parser above where we\n // can't recurse in the direction we want, so we have to resort to parsing an\n // entire list of operator chunks and then using `.reduce` to manually nest\n // them again.\n //\n // Example:\n //\n // INPUT :: \"1+2+3\"\n // PARSE :: [1, [\"+\", 2], [\"+\", 3]]\n // REDUCE :: [\"+\", [\"+\", 1, 2], 3]\n return P.seqMap(nextParser, P.seq(operatorsParser, nextParser).many(), (first, rest) => {\n return rest.reduce((acc, ch) => {\n const [op, another] = ch;\n return [op, acc, another];\n }, first);\n });\n}\n", "export const isUndefined = (val: unknown): val is undefined => typeof val === 'undefined';\nexport const isNull = (val: unknown): val is null => val === null;\nexport const isNil = (val: unknown): val is null | undefined => isUndefined(val) || isNull(val);\nexport const isDefined = <T>(val: T): val is Exclude<T, null | undefined> => !isNil(val);\nexport const isString = (val: unknown): val is string => typeof val === 'string';\nexport const hasLength = (val: unknown): boolean => isDefined(val) && (val as any).length > 0;\nexport const isStringFull = (val: unknown): val is string => isString(val) && hasLength(val);\nexport const isArray = (val: unknown): val is unknown[] => Array.isArray(val);\nexport const isArrayFull = (val: unknown): val is unknown[] => Array.isArray(val) && hasLength(val);\nexport const isArrayStrings = (val: unknown): val is string[] => isArrayFull(val) && (val as string[]).every(v => isStringFull(v));\nexport const isObject = (val: unknown): val is object => typeof val === 'object' && !isNull(val);\nexport const isObjectFull = (val: unknown) => isObject(val) && hasLength(Object.keys(val));\nexport const isNumber = (val: unknown): val is number => typeof val === 'number' && !Number.isNaN(val) && Number.isFinite(val);\nexport const isFalse = (val: unknown): val is false => val === false;\nexport const isTrue = (val: unknown): val is true => val === true;\nexport const isIn = (val: unknown, arr: any[]): boolean => isArrayFull(arr) && arr.some(o => val === o);\nexport const isBoolean = (val: unknown): val is boolean => typeof val === 'boolean';\nexport const isNumeric = (val: unknown): boolean => isString(val) && /^[+-]?([0-9]*[.])?[0-9]+$/.test(val);\nexport const isDate = (val: unknown): val is Date => val instanceof Date;\nexport const isValue = (val: unknown): boolean => isStringFull(val) || isNumber(val) || isBoolean(val) || isDate(val);\nexport const hasValue = (val: unknown): boolean =>\n isArrayFull(val) ? (val as unknown[]).every(o => isValue(o)) : isValue(val);\nexport const isFunction = (val: unknown): val is Function => typeof val === 'function';\n\n\nexport function isPlainObject(o: unknown) {\n let ctor: any;\n let prot: any;\n\n if (!isObject(o)) {\n return false;\n }\n\n // If has modified constructor\n ctor = o.constructor;\n /* istanbul ignore if */\n if (ctor === undefined) {\n return true;\n }\n\n // If has modified prototype\n prot = ctor.prototype;\n /* istanbul ignore if */\n if (isObject(prot) === false) {\n return false;\n }\n\n // If constructor does not have an Object-specific method\n /* istanbul ignore if */\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n}\n\nconst urlRegex = new RegExp(\n '^(https?:\\\\/\\\\/)?' + // protocol\n '((([a-z\\\\d]([a-z\\\\d-]*[a-z\\\\d])*)\\\\.)+[a-z]{2,}|' + // domain name\n '((\\\\d{1,3}\\\\.){3}\\\\d{1,3}))' + // OR ip (v4) address\n '(\\\\:\\\\d+)?(\\\\/[-a-z\\\\d%_.~+]*)*' + // port and path\n '(\\\\?[;&a-z\\\\d%_.~+=-]*)?' + // query string\n '(\\\\#[-a-z\\\\d_]*)?$', // fragment locator\n 'i'\n);\n\nexport function isURL(val: unknown): val is string {\n return isString(val) && !!urlRegex.test(val);\n}\n", "const niceErrors = {\n 0: `Invalid value for configuration 'enforceActions', expected 'never', 'always' or 'observed'`,\n 1(annotationType, key: PropertyKey) {\n return `Cannot apply '${annotationType}' to '${key.toString()}': Field not found.`\n },\n /*\n 2(prop) {\n return `invalid decorator for '${prop.toString()}'`\n },\n 3(prop) {\n return `Cannot decorate '${prop.toString()}': action can only be used on properties with a function value.`\n },\n 4(prop) {\n return `Cannot decorate '${prop.toString()}': computed can only be used on getter properties.`\n },\n */\n 5: \"'keys()' can only be used on observable objects, arrays, sets and maps\",\n 6: \"'values()' can only be used on observable objects, arrays, sets and maps\",\n 7: \"'entries()' can only be used on observable objects, arrays and maps\",\n 8: \"'set()' can only be used on observable objects, arrays and maps\",\n 9: \"'remove()' can only be used on observable objects, arrays and maps\",\n 10: \"'has()' can only be used on observable objects, arrays and maps\",\n 11: \"'get()' can only be used on observable objects, arrays and maps\",\n 12: `Invalid annotation`,\n 13: `Dynamic observable objects cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)`,\n 14: \"Intercept handlers should return nothing or a change object\",\n 15: `Observable arrays cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)`,\n 16: `Modification exception: the internal structure of an observable array was changed.`,\n 17(index, length) {\n return `[mobx.array] Index out of bounds, ${index} is larger than ${length}`\n },\n 18: \"mobx.map requires Map polyfill for the current browser. Check babel-polyfill or core-js/es6/map.js\",\n 19(other) {\n return \"Cannot initialize from classes that inherit from Map: \" + other.constructor.name\n },\n 20(other) {\n return \"Cannot initialize map from \" + other\n },\n 21(dataStructure) {\n return `Cannot convert to map from '${dataStructure}'`\n },\n 22: \"mobx.set requires Set polyfill for the current browser. Check babel-polyfill or core-js/es6/set.js\",\n 23: \"It is not possible to get index atoms from arrays\",\n 24(thing) {\n return \"Cannot obtain administration from \" + thing\n },\n 25(property, name) {\n return `the entry '${property}' does not exist in the observable map '${name}'`\n },\n 26: \"please specify a property\",\n 27(property, name) {\n return `no observable property '${property.toString()}' found on the observable object '${name}'`\n },\n 28(thing) {\n return \"Cannot obtain atom from \" + thing\n },\n 29: \"Expecting some object\",\n 30: \"invalid action stack. did you forget to finish an action?\",\n 31: \"missing option for computed: get\",\n 32(name, derivation) {\n return `Cycle detected in computation ${name}: ${derivation}`\n },\n 33(name) {\n return `The setter of computed value '${name}' is trying to update itself. Did you intend to update an _observable_ value, instead of the computed property?`\n },\n 34(name) {\n return `[ComputedValue '${name}'] It is not possible to assign a new value to a computed value.`\n },\n 35: \"There are multiple, different versions of MobX active. Make sure MobX is loaded only once or use `configure({ isolateGlobalState: true })`\",\n 36: \"isolateGlobalState should be called before MobX is running any reactions\",\n 37(method) {\n return `[mobx] \\`observableArray.${method}()\\` mutates the array in-place, which is not allowed inside a derivation. Use \\`array.slice().${method}()\\` instead`\n },\n 38: \"'ownKeys()' can only be used on observable objects\",\n 39: \"'defineProperty()' can only be used on observable objects\"\n} as const\n\nconst errors: typeof niceErrors = __DEV__ ? niceErrors : ({} as any)\n\nexport function die(error: string | keyof typeof errors, ...args: any[]): never {\n if (__DEV__) {\n let e: any = typeof error === \"string\" ? error : errors[error]\n if (typeof e === \"function\") e = e.apply(null, args as any)\n throw new Error(`[MobX] ${e}`)\n }\n throw new Error(\n typeof error === \"number\"\n ? `[MobX] minified error nr: ${error}${\n args.length ? \" \" + args.map(String).join(\",\") : \"\"\n }. Find the full error at: https://github.com/mobxjs/mobx/blob/main/packages/mobx/src/errors.ts`\n : `[MobX] ${error}`\n )\n}\n", "declare const window: any\ndeclare const self: any\n\nconst mockGlobal = {}\n\nexport function getGlobal() {\n if (typeof globalThis !== \"undefined\") {\n return globalThis\n }\n if (typeof window !== \"undefined\") {\n return window\n }\n if (typeof global !== \"undefined\") {\n return global\n }\n if (typeof self !== \"undefined\") {\n return self\n }\n return mockGlobal\n}\n", "import { globalState, die } from \"../internal\"\n\n// We shorten anything used > 5 times\nexport const assign = Object.assign\nexport const getDescriptor = Object.getOwnPropertyDescriptor\nexport const defineProperty = Object.defineProperty\nexport const objectPrototype = Object.prototype\n\nexport const EMPTY_ARRAY = []\nObject.freeze(EMPTY_ARRAY)\n\nexport const EMPTY_OBJECT = {}\nObject.freeze(EMPTY_OBJECT)\n\nexport interface Lambda {\n (): void\n name?: string\n}\n\nconst hasProxy = typeof Proxy !== \"undefined\"\nconst plainObjectString = Object.toString()\n\nexport function assertProxies() {\n if (!hasProxy) {\n die(\n __DEV__\n ? \"`Proxy` objects are not available in the current environment. Please configure MobX to enable a fallback implementation.`\"\n : \"Proxy not available\"\n )\n }\n}\n\nexport function warnAboutProxyRequirement(msg: string) {\n if (__DEV__ && globalState.verifyProxies) {\n die(\n \"MobX is currently configured to be able to run in ES5 mode, but in ES5 MobX won't be able to \" +\n msg\n )\n }\n}\n\nexport function getNextId() {\n return ++globalState.mobxGuid\n}\n\n/**\n * Makes sure that the provided function is invoked at most once.\n */\nexport function once(func: Lambda): Lambda {\n let invoked = false\n return function () {\n if (invoked) {\n return\n }\n invoked = true\n return (func as any).apply(this, arguments)\n }\n}\n\nexport const noop = () => {}\n\nexport function isFunction(fn: any): fn is Function {\n return typeof fn === \"function\"\n}\n\nexport function isString(value: any): value is string {\n return typeof value === \"string\"\n}\n\nexport function isStringish(value: any): value is string | number | symbol {\n const t = typeof value\n switch (t) {\n case \"string\":\n case \"symbol\":\n case \"number\":\n return true\n }\n return false\n}\n\nexport function isObject(value: any): value is Object {\n return value !== null && typeof value === \"object\"\n}\n\nexport function isPlainObject(value: any) {\n if (!isObject(value)) {\n return false\n }\n const proto = Object.getPrototypeOf(value)\n if (proto == null) {\n return true\n }\n const protoConstructor = Object.hasOwnProperty.call(proto, \"constructor\") && proto.constructor\n return (\n typeof protoConstructor === \"function\" && protoConstructor.toString() === plainObjectString\n )\n}\n\n// https://stackoverflow.com/a/37865170\nexport function isGenerator(obj: any): boolean {\n const constructor = obj?.constructor\n if (!constructor) {\n return false\n }\n if (\n \"GeneratorFunction\" === constructor.name ||\n \"GeneratorFunction\" === constructor.displayName\n ) {\n return true\n }\n return false\n}\n\nexport function addHiddenProp(object: any, propName: PropertyKey, value: any) {\n defineProperty(object, propName, {\n enumerable: false,\n writable: true,\n configurable: true,\n value\n })\n}\n\nexport function addHiddenFinalProp(object: any, propName: PropertyKey, value: any) {\n defineProperty(object, propName, {\n enumerable: false,\n writable: false,\n configurable: true,\n value\n })\n}\n\nexport function createInstanceofPredicate<T>(\n name: string,\n theClass: new (...args: any[]) => T\n): (x: any) => x is T {\n const propName = \"isMobX\" + name\n theClass.prototype[propName] = true\n return function (x) {\n return isObject(x) && x[propName] === true\n } as any\n}\n\nexport function isES6Map(thing: any): thing is Map<any, any> {\n return thing instanceof Map\n}\n\nexport function isES6Set(thing: any): thing is Set<any> {\n return thing instanceof Set\n}\n\nconst hasGetOwnPropertySymbols = typeof Object.getOwnPropertySymbols !== \"undefined\"\n\n/**\n * Returns the following: own enumerable keys and symbols.\n */\nexport function getPlainObjectKeys(object: any) {\n const keys = Object.keys(object)\n // Not supported in IE, so there are not going to be symbol props anyway...\n if (!hasGetOwnPropertySymbols) {\n return keys\n }\n const symbols = Object.getOwnPropertySymbols(object)\n if (!symbols.length) {\n return keys\n }\n return [...keys, ...symbols.filter(s => objectPrototype.propertyIsEnumerable.call(object, s))]\n}\n\n// From Immer utils\n// Returns all own keys, including non-enumerable and symbolic\nexport const ownKeys: (target: any) => Array<string | symbol> =\n typeof Reflect !== \"undefined\" && Reflect.ownKeys\n ? Reflect.ownKeys\n : hasGetOwnPropertySymbols\n ? obj => Object.getOwnPropertyNames(obj).concat(Object.getOwnPropertySymbols(obj) as any)\n : /* istanbul ignore next */ Object.getOwnPropertyNames\n\nexport function stringifyKey(key: any): string {\n if (typeof key === \"string\") {\n return key\n }\n if (typeof key === \"symbol\") {\n return key.toString()\n }\n return new String(key).toString()\n}\n\nexport function toPrimitive(value: any) {\n return value === null ? null : typeof value === \"object\" ? \"\" + value : value\n}\n\nexport function hasProp(target: Object, prop: PropertyKey): boolean {\n return objectPrototype.hasOwnProperty.call(target, prop)\n}\n\n// From Immer utils\nexport const getOwnPropertyDescriptors =\n Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(target: any) {\n // Polyfill needed for Hermes and IE, see https://github.com/facebook/hermes/issues/274\n const res: any = {}\n // Note: without polyfill for ownKeys, symbols won't be picked up\n ownKeys(target).forEach(key => {\n res[key] = getDescriptor(target, key)\n })\n return res\n }\n", "import { Annotation, addHiddenProp, AnnotationsMap, hasProp, die, isOverride } from \"../internal\"\n\nexport const storedAnnotationsSymbol = Symbol(\"mobx-stored-annotations\")\n\n/**\n * Creates a function that acts as\n * - decorator\n * - annotation object\n */\nexport function createDecoratorAnnotation(annotation: Annotation): PropertyDecorator & Annotation {\n function decorator(target, property) {\n storeAnnotation(target, property, annotation)\n }\n return Object.assign(decorator, annotation)\n}\n\n/**\n * Stores annotation to prototype,\n * so it can be inspected later by `makeObservable` called from constructor\n */\nexport function storeAnnotation(prototype: any, key: PropertyKey, annotation: Annotation) {\n if (!hasProp(prototype, storedAnnotationsSymbol)) {\n addHiddenProp(prototype, storedAnnotationsSymbol, {\n // Inherit annotations\n ...prototype[storedAnnotationsSymbol]\n })\n }\n // @override must override something\n if (__DEV__ && isOverride(annotation) && !hasProp(prototype[storedAnnotationsSymbol], key)) {\n const fieldName = `${prototype.constructor.name}.prototype.${key.toString()}`\n die(\n `'${fieldName}' is decorated with 'override', ` +\n `but no such decorated member was found on prototype.`\n )\n }\n // Cannot re-decorate\n assertNotDecorated(prototype, annotation, key)\n\n // Ignore override\n if (!isOverride(annotation)) {\n prototype[storedAnnotationsSymbol][key] = annotation\n }\n}\n\nfunction assertNotDecorated(prototype: object, annotation: Annotation, key: PropertyKey) {\n if (__DEV__ && !isOverride(annotation) && hasProp(prototype[storedAnnotationsSymbol], key)) {\n const fieldName = `${prototype.constructor.name}.prototype.${key.toString()}`\n const currentAnnotationType = prototype[storedAnnotationsSymbol][key].annotationType_\n const requestedAnnotationType = annotation.annotationType_\n die(\n `Cannot apply '@${requestedAnnotationType}' to '${fieldName}':` +\n `\\nThe field is already decorated with '@${currentAnnotationType}'.` +\n `\\nRe-decorating fields is not allowed.` +\n `\\nUse '@override' decorator for methods overriden by subclass.`\n )\n }\n}\n\n/**\n * Collects annotations from prototypes and stores them on target (instance)\n */\nexport function collectStoredAnnotations(target): AnnotationsMap<any, any> {\n if (!hasProp(target, storedAnnotationsSymbol)) {\n if (__DEV__ && !target[storedAnnotationsSymbol]) {\n die(\n `No annotations were passed to makeObservable, but no decorated members have been found either`\n )\n }\n // We need a copy as we will remove annotation from the list once it's applied.\n addHiddenProp(target, storedAnnotationsSymbol, { ...target[storedAnnotationsSymbol] })\n }\n return target[storedAnnotationsSymbol]\n}\n", "import {\n IDerivationState_,\n IObservable,\n IDerivation,\n createInstanceofPredicate,\n endBatch,\n getNextId,\n noop,\n onBecomeObserved,\n onBecomeUnobserved,\n propagateChanged,\n reportObserved,\n startBatch,\n Lambda\n} from \"../internal\"\n\nexport const $mobx = Symbol(\"mobx administration\")\n\nexport interface IAtom extends IObservable {\n reportObserved(): boolean\n reportChanged()\n}\n\nexport class Atom implements IAtom {\n isPendingUnobservation_ = false // for effective unobserving. BaseAtom has true, for extra optimization, so its onBecomeUnobserved never gets called, because it's not needed\n isBeingObserved_ = false\n observers_ = new Set<IDerivation>()\n\n diffValue_ = 0\n lastAccessedBy_ = 0\n lowestObserverState_ = IDerivationState_.NOT_TRACKING_\n /**\n * Create a new atom. For debugging purposes it is recommended to give it a name.\n * The onBecomeObserved and onBecomeUnobserved callbacks can be used for resource management.\n */\n constructor(public name_ = __DEV__ ? \"Atom@\" + getNextId() : \"Atom\") {}\n\n // onBecomeObservedListeners\n public onBOL: Set<Lambda> | undefined\n // onBecomeUnobservedListeners\n public onBUOL: Set<Lambda> | undefined\n\n public onBO() {\n if (this.onBOL) {\n this.onBOL.forEach(listener => listener())\n }\n }\n\n public onBUO() {\n if (this.onBUOL) {\n this.onBUOL.forEach(listener => listener())\n }\n }\n\n /**\n * Invoke this method to notify mobx that your atom has been used somehow.\n * Returns true if there is currently a reactive context.\n */\n public reportObserved(): boolean {\n return reportObserved(this)\n }\n\n /**\n * Invoke this method _after_ this method has changed to signal mobx that all its observers should invalidate.\n */\n public reportChanged() {\n startBatch()\n propagateChanged(this)\n endBatch()\n }\n\n toString() {\n return this.name_\n }\n}\n\nexport const isAtom = createInstanceofPredicate(\"Atom\", Atom)\n\nexport function createAtom(\n name: string,\n onBecomeObservedHandler: () => void = noop,\n onBecomeUnobservedHandler: () => void = noop\n): IAtom {\n const atom = new Atom(name)\n // default `noop` listener will not initialize the hook Set\n if (onBecomeObservedHandler !== noop) {\n onBecomeObserved(atom, onBecomeObservedHandler)\n }\n\n if (onBecomeUnobservedHandler !== noop) {\n onBecomeUnobserved(atom, onBecomeUnobservedHandler)\n }\n return atom\n}\n", "import { deepEqual } from \"../internal\"\n\nexport interface IEqualsComparer<T> {\n (a: T, b: T): boolean\n}\n\nfunction identityComparer(a: any, b: any): boolean {\n return a === b\n}\n\nfunction structuralComparer(a: any, b: any): boolean {\n return deepEqual(a, b)\n}\n\nfunction shallowComparer(a: any, b: any): boolean {\n return deepEqual(a, b, 1)\n}\n\nfunction defaultComparer(a: any, b: any): boolean {\n if (Object.is) {\n return Object.is(a, b)\n }\n\n return a === b ? a !== 0 || 1 / a === 1 / b : a !== a && b !== b\n}\n\nexport const comparer = {\n identity: identityComparer,\n structural: structuralComparer,\n default: defaultComparer,\n shallow: shallowComparer\n}\n", "import {\n deepEqual,\n isES6Map,\n isES6Set,\n isObservable,\n isObservableArray,\n isObservableMap,\n isObservableSet,\n isObservableObject,\n isPlainObject,\n observable,\n die,\n isAction,\n autoAction,\n flow,\n isFlow,\n isGenerator\n} from \"../internal\"\n\nexport interface IEnhancer<T> {\n (newValue: T, oldValue: T | undefined, name: string): T\n}\n\nexport function deepEnhancer(v, _, name) {\n // it is an observable already, done\n if (isObservable(v)) {\n return v\n }\n\n // something that can be converted and mutated?\n if (Array.isArray(v)) {\n return observable.array(v, { name })\n }\n if (isPlainObject(v)) {\n return observable.object(v, undefined, { name })\n }\n if (isES6Map(v)) {\n return observable.map(v, { name })\n }\n if (isES6Set(v)) {\n return observable.set(v, { name })\n }\n if (typeof v === \"function\" && !isAction(v) && !isFlow(v)) {\n if (isGenerator(v)) {\n return flow(v)\n } else {\n return autoAction(name, v)\n }\n }\n return v\n}\n\nexport function shallowEnhancer(v, _, name): any {\n if (v === undefined || v === null) {\n return v\n }\n if (isObservableObject(v) || isObservableArray(v) || isObservableMap(v) || isObservableSet(v)) {\n return v\n }\n if (Array.isArray(v)) {\n return observable.array(v, { name, deep: false })\n }\n if (isPlainObject(v)) {\n return observable.object(v, undefined, { name, deep: false })\n }\n if (isES6Map(v)) {\n return observable.map(v, { name, deep: false })\n }\n if (isES6Set(v)) {\n return observable.set(v, { name, deep: false })\n }\n\n if (__DEV__) {\n die(\n \"The shallow modifier / decorator can only used in combination with arrays, objects, maps and sets\"\n )\n }\n}\n\nexport function referenceEnhancer(newValue?) {\n // never turn into an observable\n return newValue\n}\n\nexport function refStructEnhancer(v, oldValue): any {\n if (__DEV__ && isObservable(v)) {\n die(`observable.struct should not be used with observable values`)\n }\n if (deepEqual(v, oldValue)) {\n return oldValue\n }\n return v\n}\n", "import {\n die,\n Annotation,\n hasProp,\n createDecoratorAnnotation,\n ObservableObjectAdministration,\n MakeResult\n} from \"../internal\"\n\nconst OVERRIDE = \"override\"\n\nexport const override: Annotation & PropertyDecorator = createDecoratorAnnotation({\n annotationType_: OVERRIDE,\n make_,\n extend_\n})\n\nexport function isOverride(annotation: Annotation): boolean {\n return annotation.annotationType_ === OVERRIDE\n}\n\nfunction make_(adm: ObservableObjectAdministration, key): MakeResult {\n // Must not be plain object\n if (__DEV__ && adm.isPlainObject_) {\n die(\n `Cannot apply '${this.annotationType_}' to '${adm.name_}.${key.toString()}':` +\n `\\n'${this.annotationType_}' cannot be used on plain objects.`\n )\n }\n // Must override something\n if (__DEV__ && !hasProp(adm.appliedAnnotations_!, key)) {\n die(\n `'${adm.name_}.${key.toString()}' is annotated with '${this.annotationType_}', ` +\n `but no such annotated member was found on prototype.`\n )\n }\n return MakeResult.Cancel\n}\n\nfunction extend_(adm, key, descriptor, proxyTrap): boolean {\n die(`'${this.annotationType_}' can only be used with 'makeObservable'`)\n}\n", "import {\n ObservableObjectAdministration,\n createAction,\n isAction,\n defineProperty,\n die,\n isFunction,\n Annotation,\n globalState,\n MakeResult\n} from \"../internal\"\n\nexport function createActionAnnotation(name: string, options?: object): Annotation {\n return {\n annotationType_: name,\n options_: options,\n make_,\n extend_\n }\n}\n\nfunction make_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n source: object\n): MakeResult {\n // bound\n if (this.options_?.bound) {\n return this.extend_(adm, key, descriptor, false) === null\n ? MakeResult.Cancel\n : MakeResult.Break\n }\n // own\n if (source === adm.target_) {\n return this.extend_(adm, key, descriptor, false) === null\n ? MakeResult.Cancel\n : MakeResult.Continue\n }\n // prototype\n if (isAction(descriptor.value)) {\n // A prototype could have been annotated already by other constructor,\n // rest of the proto chain must be annotated already\n return MakeResult.Break\n }\n const actionDescriptor = createActionDescriptor(adm, this, key, descriptor, false)\n defineProperty(source, key, actionDescriptor)\n return MakeResult.Continue\n}\n\nfunction extend_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean\n): boolean | null {\n const actionDescriptor = createActionDescriptor(adm, this, key, descriptor)\n return adm.defineProperty_(key, actionDescriptor, proxyTrap)\n}\n\nfunction assertActionDescriptor(\n adm: ObservableObjectAdministration,\n { annotationType_ }: Annotation,\n key: PropertyKey,\n { value }: PropertyDescriptor\n) {\n if (__DEV__ && !isFunction(value)) {\n die(\n `Cannot apply '${annotationType_}' to '${adm.name_}.${key.toString()}':` +\n `\\n'${annotationType_}' can only be used on properties with a function value.`\n )\n }\n}\n\nexport function createActionDescriptor(\n adm: ObservableObjectAdministration,\n annotation: Annotation,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n // provides ability to disable safeDescriptors for prototypes\n safeDescriptors: boolean = globalState.safeDescriptors\n) {\n assertActionDescriptor(adm, annotation, key, descriptor)\n let { value } = descriptor\n if (annotation.options_?.bound) {\n value = value.bind(adm.proxy_ ?? adm.target_)\n }\n return {\n value: createAction(\n annotation.options_?.name ?? key.toString(),\n value,\n annotation.options_?.autoAction ?? false,\n // https://github.com/mobxjs/mobx/discussions/3140\n annotation.options_?.bound ? adm.proxy_ ?? adm.target_ : undefined\n ),\n // Non-configurable for classes\n // prevents accidental field redefinition in subclass\n configurable: safeDescriptors ? adm.isPlainObject_ : true,\n // https://github.com/mobxjs/mobx/pull/2641#issuecomment-737292058\n enumerable: false,\n // Non-obsevable, therefore non-writable\n // Also prevents rewriting in subclass constructor\n writable: safeDescriptors ? false : true\n }\n}\n", "import {\n ObservableObjectAdministration,\n Annotation,\n defineProperty,\n die,\n flow,\n isFlow,\n isFunction,\n globalState,\n MakeResult,\n hasProp\n} from \"../internal\"\n\nexport function createFlowAnnotation(name: string, options?: object): Annotation {\n return {\n annotationType_: name,\n options_: options,\n make_,\n extend_\n }\n}\n\nfunction make_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n source: object\n): MakeResult {\n // own\n if (source === adm.target_) {\n return this.extend_(adm, key, descriptor, false) === null\n ? MakeResult.Cancel\n : MakeResult.Continue\n }\n // prototype\n // bound - must annotate protos to support super.flow()\n if (this.options_?.bound && (!hasProp(adm.target_, key) || !isFlow(adm.target_[key]))) {\n if (this.extend_(adm, key, descriptor, false) === null) {\n return MakeResult.Cancel\n }\n }\n if (isFlow(descriptor.value)) {\n // A prototype could have been annotated already by other constructor,\n // rest of the proto chain must be annotated already\n return MakeResult.Break\n }\n const flowDescriptor = createFlowDescriptor(adm, this, key, descriptor, false, false)\n defineProperty(source, key, flowDescriptor)\n return MakeResult.Continue\n}\n\nfunction extend_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean\n): boolean | null {\n const flowDescriptor = createFlowDescriptor(adm, this, key, descriptor, this.options_?.bound)\n return adm.defineProperty_(key, flowDescriptor, proxyTrap)\n}\n\nfunction assertFlowDescriptor(\n adm: ObservableObjectAdministration,\n { annotationType_ }: Annotation,\n key: PropertyKey,\n { value }: PropertyDescriptor\n) {\n if (__DEV__ && !isFunction(value)) {\n die(\n `Cannot apply '${annotationType_}' to '${adm.name_}.${key.toString()}':` +\n `\\n'${annotationType_}' can only be used on properties with a generator function value.`\n )\n }\n}\n\nfunction createFlowDescriptor(\n adm: ObservableObjectAdministration,\n annotation: Annotation,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n bound: boolean,\n // provides ability to disable safeDescriptors for prototypes\n safeDescriptors: boolean = globalState.safeDescriptors\n): PropertyDescriptor {\n assertFlowDescriptor(adm, annotation, key, descriptor)\n let { value } = descriptor\n // In case of flow.bound, the descriptor can be from already annotated prototype\n if (!isFlow(value)) {\n value = flow(value)\n }\n if (bound) {\n // We do not keep original function around, so we bind the existing flow\n value = value.bind(adm.proxy_ ?? adm.target_)\n // This is normally set by `flow`, but `bind` returns new function...\n value.isMobXFlow = true\n }\n return {\n value,\n // Non-configurable for classes\n // prevents accidental field redefinition in subclass\n configurable: safeDescriptors ? adm.isPlainObject_ : true,\n // https://github.com/mobxjs/mobx/pull/2641#issuecomment-737292058\n enumerable: false,\n // Non-obsevable, therefore non-writable\n // Also prevents rewriting in subclass constructor\n writable: safeDescriptors ? false : true\n }\n}\n", "import { ObservableObjectAdministration, die, Annotation, MakeResult } from \"../internal\"\n\nexport function createComputedAnnotation(name: string, options?: object): Annotation {\n return {\n annotationType_: name,\n options_: options,\n make_,\n extend_\n }\n}\n\nfunction make_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor\n): MakeResult {\n return this.extend_(adm, key, descriptor, false) === null ? MakeResult.Cancel : MakeResult.Break\n}\n\nfunction extend_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean\n): boolean | null {\n assertComputedDescriptor(adm, this, key, descriptor)\n return adm.defineComputedProperty_(\n key,\n {\n ...this.options_,\n get: descriptor.get,\n set: descriptor.set\n },\n proxyTrap\n )\n}\n\nfunction assertComputedDescriptor(\n adm: ObservableObjectAdministration,\n { annotationType_ }: Annotation,\n key: PropertyKey,\n { get }: PropertyDescriptor\n) {\n if (__DEV__ && !get) {\n die(\n `Cannot apply '${annotationType_}' to '${adm.name_}.${key.toString()}':` +\n `\\n'${annotationType_}' can only be used on getter(+setter) properties.`\n )\n }\n}\n", "import {\n ObservableObjectAdministration,\n deepEnhancer,\n die,\n Annotation,\n MakeResult\n} from \"../internal\"\n\nexport function createObservableAnnotation(name: string, options?: object): Annotation {\n return {\n annotationType_: name,\n options_: options,\n make_,\n extend_\n }\n}\n\nfunction make_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor\n): MakeResult {\n return this.extend_(adm, key, descriptor, false) === null ? MakeResult.Cancel : MakeResult.Break\n}\n\nfunction extend_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean\n): boolean | null {\n assertObservableDescriptor(adm, this, key, descriptor)\n return adm.defineObservableProperty_(\n key,\n descriptor.value,\n this.options_?.enhancer ?? deepEnhancer,\n proxyTrap\n )\n}\n\nfunction assertObservableDescriptor(\n adm: ObservableObjectAdministration,\n { annotationType_ }: Annotation,\n key: PropertyKey,\n descriptor: PropertyDescriptor\n) {\n if (__DEV__ && !(\"value\" in descriptor)) {\n die(\n `Cannot apply '${annotationType_}' to '${adm.name_}.${key.toString()}':` +\n `\\n'${annotationType_}' cannot be used on getter/setter properties`\n )\n }\n}\n", "import {\n ObservableObjectAdministration,\n observable,\n Annotation,\n defineProperty,\n createAction,\n globalState,\n flow,\n computed,\n autoAction,\n isGenerator,\n MakeResult\n} from \"../internal\"\n\nconst AUTO = \"true\"\n\nexport const autoAnnotation: Annotation = createAutoAnnotation()\n\nexport function createAutoAnnotation(options?: object): Annotation {\n return {\n annotationType_: AUTO,\n options_: options,\n make_,\n extend_\n }\n}\n\nfunction make_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n source: object\n): MakeResult {\n // getter -> computed\n if (descriptor.get) {\n return computed.make_(adm, key, descriptor, source)\n }\n // lone setter -> action setter\n if (descriptor.set) {\n // TODO make action applicable to setter and delegate to action.make_\n const set = createAction(key.toString(), descriptor.set) as (v: any) => void\n // own\n if (source === adm.target_) {\n return adm.defineProperty_(key, {\n configurable: globalState.safeDescriptors ? adm.isPlainObject_ : true,\n set\n }) === null\n ? MakeResult.Cancel\n : MakeResult.Continue\n }\n // proto\n defineProperty(source, key, {\n configurable: true,\n set\n })\n return MakeResult.Continue\n }\n // function on proto -> autoAction/flow\n if (source !== adm.target_ && typeof descriptor.value === \"function\") {\n if (isGenerator(descriptor.value)) {\n const flowAnnotation = this.options_?.autoBind ? flow.bound : flow\n return flowAnnotation.make_(adm, key, descriptor, source)\n }\n const actionAnnotation = this.options_?.autoBind ? autoAction.bound : autoAction\n return actionAnnotation.make_(adm, key, descriptor, source)\n }\n // other -> observable\n // Copy props from proto as well, see test:\n // \"decorate should work with Object.create\"\n let observableAnnotation = this.options_?.deep === false ? observable.ref : observable\n // if function respect autoBind option\n if (typeof descriptor.value === \"function\" && this.options_?.autoBind) {\n descriptor.value = descriptor.value.bind(adm.proxy_ ?? adm.target_)\n }\n return observableAnnotation.make_(adm, key, descriptor, source)\n}\n\nfunction extend_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean\n): boolean | null {\n // getter -> computed\n if (descriptor.get) {\n return computed.extend_(adm, key, descriptor, proxyTrap)\n }\n // lone setter -> action setter\n if (descriptor.set) {\n // TODO make action applicable to setter and delegate to action.extend_\n return adm.defineProperty_(\n key,\n {\n configurable: globalState.safeDescriptors ? adm.isPlainObject_ : true,\n set: createAction(key.toString(), descriptor.set) as (v: any) => void\n },\n proxyTrap\n )\n }\n // other -> observable\n // if function respect autoBind option\n if (typeof descriptor.value === \"function\" && this.options_?.autoBind) {\n descriptor.value = descriptor.value.bind(adm.proxy_ ?? adm.target_)\n }\n let observableAnnotation = this.options_?.deep === false ? observable.ref : observable\n return observableAnnotation.extend_(adm, key, descriptor, proxyTrap)\n}\n", "import {\n IEnhancer,\n IEqualsComparer,\n IObservableArray,\n IObservableMapInitialValues,\n IObservableSetInitialValues,\n IObservableValue,\n ObservableMap,\n ObservableSet,\n ObservableValue,\n asDynamicObservableObject,\n createObservableArray,\n deepEnhancer,\n extendObservable,\n isES6Map,\n isES6Set,\n isObservable,\n isPlainObject,\n referenceEnhancer,\n Annotation,\n shallowEnhancer,\n refStructEnhancer,\n AnnotationsMap,\n asObservableObject,\n storeAnnotation,\n createDecoratorAnnotation,\n createLegacyArray,\n globalState,\n assign,\n isStringish,\n createObservableAnnotation,\n createAutoAnnotation\n} from \"../internal\"\n\nexport const OBSERVABLE = \"observable\"\nexport const OBSERVABLE_REF = \"observable.ref\"\nexport const OBSERVABLE_SHALLOW = \"observable.shallow\"\nexport const OBSERVABLE_STRUCT = \"observable.struct\"\n\nexport type CreateObservableOptions = {\n name?: string\n equals?: IEqualsComparer<any>\n deep?: boolean\n defaultDecorator?: Annotation\n proxy?: boolean\n autoBind?: boolean\n}\n\n// Predefined bags of create observable options, to avoid allocating temporarily option objects\n// in the majority of cases\nexport const defaultCreateObservableOptions: CreateObservableOptions = {\n deep: true,\n name: undefined,\n defaultDecorator: undefined,\n proxy: true\n}\nObject.freeze(defaultCreateObservableOptions)\n\nexport function asCreateObservableOptions(thing: any): CreateObservableOptions {\n return thing || defaultCreateObservableOptions\n}\n\nconst observableAnnotation = createObservableAnnotation(OBSERVABLE)\nconst observableRefAnnotation = createObservableAnnotation(OBSERVABLE_REF, {\n enhancer: referenceEnhancer\n})\nconst observableShallowAnnotation = createObservableAnnotation(OBSERVABLE_SHALLOW, {\n enhancer: shallowEnhancer\n})\nconst observableStructAnnotation = createObservableAnnotation(OBSERVABLE_STRUCT, {\n enhancer: refStructEnhancer\n})\nconst observableDecoratorAnnotation = createDecoratorAnnotation(observableAnnotation)\n\nexport function getEnhancerFromOptions(options: CreateObservableOptions): IEnhancer<any> {\n return options.deep === true\n ? deepEnhancer\n : options.deep === false\n ? referenceEnhancer\n : getEnhancerFromAnnotation(options.defaultDecorator)\n}\n\nexport function getAnnotationFromOptions(\n options?: CreateObservableOptions\n): Annotation | undefined {\n return options ? options.defaultDecorator ?? createAutoAnnotation(options) : undefined\n}\n\nexport function getEnhancerFromAnnotation(annotation?: Annotation): IEnhancer<any> {\n return !annotation ? deepEnhancer : annotation.options_?.enhancer ?? deepEnhancer\n}\n\n/**\n * Turns an object, array or function into a reactive structure.\n * @param v the value which should become observable.\n */\nfunction createObservable(v: any, arg2?: any, arg3?: any) {\n // @observable someProp;\n if (isStringish(arg2)) {\n storeAnnotation(v, arg2, observableAnnotation)\n return\n }\n\n // already observable - ignore\n if (isObservable(v)) {\n return v\n }\n\n // plain object\n if (isPlainObject(v)) {\n return observable.object(v, arg2, arg3)\n }\n\n // Array\n if (Array.isArray(v)) {\n return observable.array(v, arg2)\n }\n\n // Map\n if (isES6Map(v)) {\n return observable.map(v, arg2)\n }\n\n // Set\n if (isES6Set(v)) {\n return observable.set(v, arg2)\n }\n\n // other object - ignore\n if (typeof v === \"object\" && v !== null) {\n return v\n }\n\n // anything else\n return observable.box(v, arg2)\n}\nObject.assign(createObservable, observableDecoratorAnnotation)\n\nexport interface IObservableValueFactory {\n <T>(value: T, options?: CreateObservableOptions): IObservableValue<T>\n <T>(value?: T, options?: CreateObservableOptions): IObservableValue<T | undefined>\n}\n\nexport interface IObservableFactory extends Annotation, PropertyDecorator {\n <T = any>(value: T[], options?: CreateObservableOptions): IObservableArray<T>\n <T = any>(value: Set<T>, options?: CreateObservableOptions): ObservableSet<T>\n <K = any, V = any>(value: Map<K, V>, options?: CreateObservableOptions): ObservableMap<K, V>\n <T extends object>(\n value: T,\n decorators?: AnnotationsMap<T, never>,\n options?: CreateObservableOptions\n ): T\n\n box: IObservableValueFactory\n array: <T = any>(initialValues?: T[], options?: CreateObservableOptions) => IObservableArray<T>\n set: <T = any>(\n initialValues?: IObservableSetInitialValues<T>,\n options?: CreateObservableOptions\n ) => ObservableSet<T>\n map: <K = any, V = any>(\n initialValues?: IObservableMapInitialValues<K, V>,\n options?: CreateObservableOptions\n ) => ObservableMap<K, V>\n object: <T = any>(\n props: T,\n decorators?: AnnotationsMap<T, never>,\n options?: CreateObservableOptions\n ) => T\n\n /**\n * Decorator that creates an observable that only observes the references, but doesn't try to turn the assigned value into an observable.ts.\n */\n ref: Annotation & PropertyDecorator\n /**\n * Decorator that creates an observable converts its value (objects, maps or arrays) into a shallow observable structure\n */\n shallow: Annotation & PropertyDecorator\n deep: Annotation & PropertyDecorator\n struct: Annotation & PropertyDecorator\n}\n\nconst observableFactories: IObservableFactory = {\n box<T = any>(value: T, options?: CreateObservableOptions): IObservableValue<T> {\n const o = asCreateObservableOptions(options)\n return new ObservableValue(value, getEnhancerFromOptions(o), o.name, true, o.equals)\n },\n array<T = any>(initialValues?: T[], options?: CreateObservableOptions): IObservableArray<T> {\n const o = asCreateObservableOptions(options)\n return (\n globalState.useProxies === false || o.proxy === false\n ? createLegacyArray\n : createObservableArray\n )(initialValues, getEnhancerFromOptions(o), o.name)\n },\n map<K = any, V = any>(\n initialValues?: IObservableMapInitialValues<K, V>,\n options?: CreateObservableOptions\n ): ObservableMap<K, V> {\n const o = asCreateObservableOptions(options)\n return new ObservableMap<K, V>(initialValues, getEnhancerFromOptions(o), o.name)\n },\n set<T = any>(\n initialValues?: IObservableSetInitialValues<T>,\n options?: CreateObservableOptions\n ): ObservableSet<T> {\n const o = asCreateObservableOptions(options)\n return new ObservableSet<T>(initialValues, getEnhancerFromOptions(o), o.name)\n },\n object<T extends object = any>(\n props: T,\n decorators?: AnnotationsMap<T, never>,\n options?: CreateObservableOptions\n ): T {\n return extendObservable(\n globalState.useProxies === false || options?.proxy === false\n ? asObservableObject({}, options)\n : asDynamicObservableObject({}, options),\n props,\n decorators\n )\n },\n ref: createDecoratorAnnotation(observableRefAnnotation),\n shallow: createDecoratorAnnotation(observableShallowAnnotation),\n deep: observableDecoratorAnnotation,\n struct: createDecoratorAnnotation(observableStructAnnotation)\n} as any\n\n// eslint-disable-next-line\nexport var observable: IObservableFactory = assign(createObservable, observableFactories)\n", "import {\n ComputedValue,\n IComputedValueOptions,\n Annotation,\n storeAnnotation,\n createDecoratorAnnotation,\n isStringish,\n isPlainObject,\n isFunction,\n die,\n IComputedValue,\n createComputedAnnotation,\n comparer\n} from \"../internal\"\n\nexport const COMPUTED = \"computed\"\nexport const COMPUTED_STRUCT = \"computed.struct\"\n\nexport interface IComputedFactory extends Annotation, PropertyDecorator {\n // @computed(opts)\n <T>(options: IComputedValueOptions<T>): Annotation & PropertyDecorator\n // computed(fn, opts)\n <T>(func: () => T, options?: IComputedValueOptions<T>): IComputedValue<T>\n\n struct: Annotation & PropertyDecorator\n}\n\nconst computedAnnotation = createComputedAnnotation(COMPUTED)\nconst computedStructAnnotation = createComputedAnnotation(COMPUTED_STRUCT, {\n equals: comparer.structural\n})\n\n/**\n * Decorator for class properties: @computed get value() { return expr; }.\n * For legacy purposes also invokable as ES5 observable created: `computed(() => expr)`;\n */\nexport const computed: IComputedFactory = function computed(arg1, arg2) {\n if (isStringish(arg2)) {\n // @computed\n return storeAnnotation(arg1, arg2, computedAnnotation)\n }\n if (isPlainObject(arg1)) {\n // @computed({ options })\n return createDecoratorAnnotation(createComputedAnnotation(COMPUTED, arg1))\n }\n\n // computed(expr, options?)\n if (__DEV__) {\n if (!isFunction(arg1)) {\n die(\"First argument to `computed` should be an expression.\")\n }\n if (isFunction(arg2)) {\n die(\n \"A setter as second argument is no longer supported, use `{ set: fn }` option instead\"\n )\n }\n }\n const opts: IComputedValueOptions<any> = isPlainObject(arg2) ? arg2 : {}\n opts.get = arg1\n opts.name ||= arg1.name || \"\" /* for generated name */\n\n return new ComputedValue(opts)\n} as any\n\nObject.assign(computed, computedAnnotation)\n\ncomputed.struct = createDecoratorAnnotation(computedStructAnnotation)\n", "import {\n IDerivation,\n endBatch,\n globalState,\n isSpyEnabled,\n spyReportEnd,\n spyReportStart,\n startBatch,\n untrackedEnd,\n untrackedStart,\n isFunction,\n allowStateReadsStart,\n allowStateReadsEnd,\n ACTION,\n EMPTY_ARRAY,\n die,\n getDescriptor\n} from \"../internal\"\n\n// we don't use globalState for these in order to avoid possible issues with multiple\n// mobx versions\nlet currentActionId = 0\nlet nextActionId = 1\nconst isFunctionNameConfigurable = getDescriptor(() => {}, \"name\")?.configurable ?? false\n\n// we can safely recycle this object\nconst tmpNameDescriptor: PropertyDescriptor = {\n value: \"action\",\n configurable: true,\n writable: false,\n enumerable: false\n}\n\nexport function createAction(\n actionName: string,\n fn: Function,\n autoAction: boolean = false,\n ref?: Object\n): Function {\n if (__DEV__) {\n if (!isFunction(fn)) {\n die(\"`action` can only be invoked on functions\")\n }\n if (typeof actionName !== \"string\" || !actionName) {\n die(`actions should have valid names, got: '${actionName}'`)\n }\n }\n function res() {\n return executeAction(actionName, autoAction, fn, ref || this, arguments)\n }\n res.isMobxAction = true\n if (isFunctionNameConfigurable) {\n tmpNameDescriptor.value = actionName\n Object.defineProperty(res, \"name\", tmpNameDescriptor)\n }\n return res\n}\n\nexport function executeAction(\n actionName: string,\n canRunAsDerivation: boolean,\n fn: Function,\n scope?: any,\n args?: IArguments\n) {\n const runInfo = _startAction(actionName, canRunAsDerivation, scope, args)\n try {\n return fn.apply(scope, args)\n } catch (err) {\n runInfo.error_ = err\n throw err\n } finally {\n _endAction(runInfo)\n }\n}\n\nexport interface IActionRunInfo {\n prevDerivation_: IDerivation | null\n prevAllowStateChanges_: boolean\n prevAllowStateReads_: boolean\n notifySpy_: boolean\n startTime_: number\n error_?: any\n parentActionId_: number\n actionId_: number\n runAsAction_?: boolean\n}\n\nexport function _startAction(\n actionName: string,\n canRunAsDerivation: boolean, // true for autoAction\n scope: any,\n args?: IArguments\n): IActionRunInfo {\n const notifySpy_ = __DEV__ && isSpyEnabled() && !!actionName\n let startTime_: number = 0\n if (__DEV__ && notifySpy_) {\n startTime_ = Date.now()\n const flattenedArgs = args ? Array.from(args) : EMPTY_ARRAY\n spyReportStart({\n type: ACTION,\n name: actionName,\n object: scope,\n arguments: flattenedArgs\n })\n }\n const prevDerivation_ = globalState.trackingDerivation\n const runAsAction = !canRunAsDerivation || !prevDerivation_\n startBatch()\n let prevAllowStateChanges_ = globalState.allowStateChanges // by default preserve previous allow\n if (runAsAction) {\n untrackedStart()\n prevAllowStateChanges_ = allowStateChangesStart(true)\n }\n const prevAllowStateReads_ = allowStateReadsStart(true)\n const runInfo = {\n runAsAction_: runAsAction,\n prevDerivation_,\n prevAllowStateChanges_,\n prevAllowStateReads_,\n notifySpy_,\n startTime_,\n actionId_: nextActionId++,\n parentActionId_: currentActionId\n }\n currentActionId = runInfo.actionId_\n return runInfo\n}\n\nexport function _endAction(runInfo: IActionRunInfo) {\n if (currentActionId !== runInfo.actionId_) {\n die(30)\n }\n currentActionId = runInfo.parentActionId_\n\n if (runInfo.error_ !== undefined) {\n globalState.suppressReactionErrors = true\n }\n allowStateChangesEnd(runInfo.prevAllowStateChanges_)\n allowStateReadsEnd(runInfo.prevAllowStateReads_)\n endBatch()\n if (runInfo.runAsAction_) {\n untrackedEnd(runInfo.prevDerivation_)\n }\n if (__DEV__ && runInfo.notifySpy_) {\n spyReportEnd({ time: Date.now() - runInfo.startTime_ })\n }\n globalState.suppressReactionErrors = false\n}\n\nexport function allowStateChanges<T>(allowStateChanges: boolean, func: () => T): T {\n const prev = allowStateChangesStart(allowStateChanges)\n try {\n return func()\n } finally {\n allowStateChangesEnd(prev)\n }\n}\n\nexport function allowStateChangesStart(allowStateChanges: boolean) {\n const prev = globalState.allowStateChanges\n globalState.allowStateChanges = allowStateChanges\n return prev\n}\n\nexport function allowStateChangesEnd(prev: boolean) {\n globalState.allowStateChanges = prev\n}\n", "import {\n Atom,\n IEnhancer,\n IInterceptable,\n IEqualsComparer,\n IInterceptor,\n IListenable,\n Lambda,\n checkIfStateModificationsAreAllowed,\n comparer,\n createInstanceofPredicate,\n getNextId,\n hasInterceptors,\n hasListeners,\n interceptChange,\n isSpyEnabled,\n notifyListeners,\n registerInterceptor,\n registerListener,\n spyReport,\n spyReportEnd,\n spyReportStart,\n toPrimitive,\n globalState,\n IUNCHANGED,\n UPDATE\n} from \"../internal\"\n\nexport interface IValueWillChange<T> {\n object: IObservableValue<T>\n type: \"update\"\n newValue: T\n}\n\nexport type IValueDidChange<T = any> = {\n type: \"update\"\n observableKind: \"value\"\n object: IObservableValue<T>\n debugObjectName: string\n newValue: unknown\n oldValue: unknown\n}\nexport type IBoxDidChange<T = any> =\n | {\n type: \"create\"\n observableKind: \"value\"\n object: IObservableValue<T>\n debugObjectName: string\n newValue: unknown\n }\n | IValueDidChange<T>\n\nexport interface IObservableValue<T> {\n get(): T\n set(value: T): void\n intercept_(handler: IInterceptor<IValueWillChange<T>>): Lambda\n observe_(listener: (change: IValueDidChange<T>) => void, fireImmediately?: boolean): Lambda\n}\n\nconst CREATE = \"create\"\n\nexport class ObservableValue<T>\n extends Atom\n implements IObservableValue<T>, IInterceptable<IValueWillChange<T>>, IListenable\n{\n hasUnreportedChange_ = false\n interceptors_\n changeListeners_\n value_\n dehancer: any\n\n constructor(\n value: T,\n public enhancer: IEnhancer<T>,\n public name_ = __DEV__ ? \"ObservableValue@\" + getNextId() : \"ObservableValue\",\n notifySpy = true,\n private equals: IEqualsComparer<any> = comparer.default\n ) {\n super(name_)\n this.value_ = enhancer(value, undefined, name_)\n if (__DEV__ && notifySpy && isSpyEnabled()) {\n // only notify spy if this is a stand-alone observable\n spyReport({\n type: CREATE,\n object: this,\n observableKind: \"value\",\n debugObjectName: this.name_,\n newValue: \"\" + this.value_\n })\n }\n }\n\n private dehanceValue(value: T): T {\n if (this.dehancer !== undefined) {\n return this.dehancer(value)\n }\n return value\n }\n\n public set(newValue: T) {\n const oldValue = this.value_\n newValue = this.prepareNewValue_(newValue) as any\n if (newValue !== globalState.UNCHANGED) {\n const notifySpy = isSpyEnabled()\n if (__DEV__ && notifySpy) {\n spyReportStart({\n type: UPDATE,\n object: this,\n observableKind: \"value\",\n debugObjectName: this.name_,\n newValue,\n oldValue\n })\n }\n this.setNewValue_(newValue)\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n }\n\n private prepareNewValue_(newValue): T | IUNCHANGED {\n checkIfStateModificationsAreAllowed(this)\n if (hasInterceptors(this)) {\n const change = interceptChange<IValueWillChange<T>>(this, {\n object: this,\n type: UPDATE,\n newValue\n })\n if (!change) {\n return globalState.UNCHANGED\n }\n newValue = change.newValue\n }\n // apply modifier\n newValue = this.enhancer(newValue, this.value_, this.name_)\n return this.equals(this.value_, newValue) ? globalState.UNCHANGED : newValue\n }\n\n setNewValue_(newValue: T) {\n const oldValue = this.value_\n this.value_ = newValue\n this.reportChanged()\n if (hasListeners(this)) {\n notifyListeners(this, {\n type: UPDATE,\n object: this,\n newValue,\n oldValue\n })\n }\n }\n\n public get(): T {\n this.reportObserved()\n return this.dehanceValue(this.value_)\n }\n\n intercept_(handler: IInterceptor<IValueWillChange<T>>): Lambda {\n return registerInterceptor(this, handler)\n }\n\n observe_(listener: (change: IValueDidChange<T>) => void, fireImmediately?: boolean): Lambda {\n if (fireImmediately) {\n listener({\n observableKind: \"value\",\n debugObjectName: this.name_,\n object: this,\n type: UPDATE,\n newValue: this.value_,\n oldValue: undefined\n })\n }\n return registerListener(this, listener)\n }\n\n raw() {\n // used by MST ot get undehanced value\n return this.value_\n }\n\n toJSON() {\n return this.get()\n }\n\n toString() {\n return `${this.name_}[${this.value_}]`\n }\n\n valueOf(): T {\n return toPrimitive(this.get())\n }\n\n [Symbol.toPrimitive]() {\n return this.valueOf()\n }\n}\n\nexport const isObservableValue = createInstanceofPredicate(\"ObservableValue\", ObservableValue) as (\n x: any\n) => x is IObservableValue<any>\n", "import {\n CaughtException,\n IDerivation,\n IDerivationState_,\n IEqualsComparer,\n IObservable,\n Lambda,\n TraceMode,\n autorun,\n clearObserving,\n comparer,\n createAction,\n createInstanceofPredicate,\n endBatch,\n getNextId,\n globalState,\n isCaughtException,\n isSpyEnabled,\n propagateChangeConfirmed,\n propagateMaybeChanged,\n reportObserved,\n shouldCompute,\n spyReport,\n startBatch,\n toPrimitive,\n trackDerivedFunction,\n untrackedEnd,\n untrackedStart,\n UPDATE,\n die,\n allowStateChangesStart,\n allowStateChangesEnd\n} from \"../internal\"\n\nexport interface IComputedValue<T> {\n get(): T\n set(value: T): void\n observe_(listener: (change: IComputedDidChange<T>) => void, fireImmediately?: boolean): Lambda\n}\n\nexport interface IComputedValueOptions<T> {\n get?: () => T\n set?: (value: T) => void\n name?: string\n equals?: IEqualsComparer<T>\n context?: any\n requiresReaction?: boolean\n keepAlive?: boolean\n}\n\nexport type IComputedDidChange<T = any> = {\n type: \"update\"\n observableKind: \"computed\"\n object: unknown\n debugObjectName: string\n newValue: T\n oldValue: T | undefined\n}\n\n/**\n * A node in the state dependency root that observes other nodes, and can be observed itself.\n *\n * ComputedValue will remember the result of the computation for the duration of the batch, or\n * while being observed.\n *\n * During this time it will recompute only when one of its direct dependencies changed,\n * but only when it is being accessed with `ComputedValue.get()`.\n *\n * Implementation description:\n * 1. First time it's being accessed it will compute and remember result\n * give back remembered result until 2. happens\n * 2. First time any deep dependency change, propagate POSSIBLY_STALE to all observers, wait for 3.\n * 3. When it's being accessed, recompute if any shallow dependency changed.\n * if result changed: propagate STALE to all observers, that were POSSIBLY_STALE from the last step.\n * go to step 2. either way\n *\n * If at any point it's outside batch and it isn't observed: reset everything and go to 1.\n */\nexport class ComputedValue<T> implements IObservable, IComputedValue<T>, IDerivation {\n dependenciesState_ = IDerivationState_.NOT_TRACKING_\n observing_: IObservable[] = [] // nodes we are looking at. Our value depends on these nodes\n newObserving_ = null // during tracking it's an array with new observed observers\n isBeingObserved_ = false\n isPendingUnobservation_: boolean = false\n observers_ = new Set<IDerivation>()\n diffValue_ = 0\n runId_ = 0\n lastAccessedBy_ = 0\n lowestObserverState_ = IDerivationState_.UP_TO_DATE_\n unboundDepsCount_ = 0\n protected value_: T | undefined | CaughtException = new CaughtException(null)\n name_: string\n triggeredBy_?: string\n isComputing_: boolean = false // to check for cycles\n isRunningSetter_: boolean = false\n derivation: () => T // N.B: unminified as it is used by MST\n setter_?: (value: T) => void\n isTracing_: TraceMode = TraceMode.NONE\n scope_: Object | undefined\n private equals_: IEqualsComparer<any>\n private requiresReaction_: boolean | undefined\n keepAlive_: boolean\n\n /**\n * Create a new computed value based on a function expression.\n *\n * The `name` property is for debug purposes only.\n *\n * The `equals` property specifies the comparer function to use to determine if a newly produced\n * value differs from the previous value. Two comparers are provided in the library; `defaultComparer`\n * compares based on identity comparison (===), and `structuralComparer` deeply compares the structure.\n * Structural comparison can be convenient if you always produce a new aggregated object and\n * don't want to notify observers if it is structurally the same.\n * This is useful for working with vectors, mouse coordinates etc.\n */\n constructor(options: IComputedValueOptions<T>) {\n if (!options.get) {\n die(31)\n }\n this.derivation = options.get!\n this.name_ = options.name || (__DEV__ ? \"ComputedValue@\" + getNextId() : \"ComputedValue\")\n if (options.set) {\n this.setter_ = createAction(\n __DEV__ ? this.name_ + \"-setter\" : \"ComputedValue-setter\",\n options.set\n ) as any\n }\n this.equals_ =\n options.equals ||\n ((options as any).compareStructural || (options as any).struct\n ? comparer.structural\n : comparer.default)\n this.scope_ = options.context\n this.requiresReaction_ = options.requiresReaction\n this.keepAlive_ = !!options.keepAlive\n }\n\n onBecomeStale_() {\n propagateMaybeChanged(this)\n }\n\n public onBOL: Set<Lambda> | undefined\n public onBUOL: Set<Lambda> | undefined\n\n public onBO() {\n if (this.onBOL) {\n this.onBOL.forEach(listener => listener())\n }\n }\n\n public onBUO() {\n if (this.onBUOL) {\n this.onBUOL.forEach(listener => listener())\n }\n }\n\n /**\n * Returns the current value of this computed value.\n * Will evaluate its computation first if needed.\n */\n public get(): T {\n if (this.isComputing_) {\n die(32, this.name_, this.derivation)\n }\n if (\n globalState.inBatch === 0 &&\n // !globalState.trackingDerivatpion &&\n this.observers_.size === 0 &&\n !this.keepAlive_\n ) {\n if (shouldCompute(this)) {\n this.warnAboutUntrackedRead_()\n startBatch() // See perf test 'computed memoization'\n this.value_ = this.computeValue_(false)\n endBatch()\n }\n } else {\n reportObserved(this)\n if (shouldCompute(this)) {\n let prevTrackingContext = globalState.trackingContext\n if (this.keepAlive_ && !prevTrackingContext) {\n globalState.trackingContext = this\n }\n if (this.trackAndCompute()) {\n propagateChangeConfirmed(this)\n }\n globalState.trackingContext = prevTrackingContext\n }\n }\n const result = this.value_!\n\n if (isCaughtException(result)) {\n throw result.cause\n }\n return result\n }\n\n public set(value: T) {\n if (this.setter_) {\n if (this.isRunningSetter_) {\n die(33, this.name_)\n }\n this.isRunningSetter_ = true\n try {\n this.setter_.call(this.scope_, value)\n } finally {\n this.isRunningSetter_ = false\n }\n } else {\n die(34, this.name_)\n }\n }\n\n trackAndCompute(): boolean {\n // N.B: unminified as it is used by MST\n const oldValue = this.value_\n const wasSuspended =\n /* see #1208 */ this.dependenciesState_ === IDerivationState_.NOT_TRACKING_\n const newValue = this.computeValue_(true)\n\n const changed =\n wasSuspended ||\n isCaughtException(oldValue) ||\n isCaughtException(newValue) ||\n !this.equals_(oldValue, newValue)\n\n if (changed) {\n this.value_ = newValue\n\n if (__DEV__ && isSpyEnabled()) {\n spyReport({\n observableKind: \"computed\",\n debugObjectName: this.name_,\n object: this.scope_,\n type: \"update\",\n oldValue,\n newValue\n } as IComputedDidChange)\n }\n }\n\n return changed\n }\n\n computeValue_(track: boolean) {\n this.isComputing_ = true\n // don't allow state changes during computation\n const prev = allowStateChangesStart(false)\n let res: T | CaughtException\n if (track) {\n res = trackDerivedFunction(this, this.derivation, this.scope_)\n } else {\n if (globalState.disableErrorBoundaries === true) {\n res = this.derivation.call(this.scope_)\n } else {\n try {\n res = this.derivation.call(this.scope_)\n } catch (e) {\n res = new CaughtException(e)\n }\n }\n }\n allowStateChangesEnd(prev)\n this.isComputing_ = false\n return res\n }\n\n suspend_() {\n if (!this.keepAlive_) {\n clearObserving(this)\n this.value_ = undefined // don't hold on to computed value!\n if (__DEV__ && this.isTracing_ !== TraceMode.NONE) {\n console.log(\n `[mobx.trace] Computed value '${this.name_}' was suspended and it will recompute on the next access.`\n )\n }\n }\n }\n\n observe_(listener: (change: IComputedDidChange<T>) => void, fireImmediately?: boolean): Lambda {\n let firstTime = true\n let prevValue: T | undefined = undefined\n return autorun(() => {\n // TODO: why is this in a different place than the spyReport() function? in all other observables it's called in the same place\n let newValue = this.get()\n if (!firstTime || fireImmediately) {\n const prevU = untrackedStart()\n listener({\n observableKind: \"computed\",\n debugObjectName: this.name_,\n type: UPDATE,\n object: this,\n newValue,\n oldValue: prevValue\n })\n untrackedEnd(prevU)\n }\n firstTime = false\n prevValue = newValue\n })\n }\n\n warnAboutUntrackedRead_() {\n if (!__DEV__) {\n return\n }\n if (this.isTracing_ !== TraceMode.NONE) {\n console.log(\n `[mobx.trace] Computed value '${this.name_}' is being read outside a reactive context. Doing a full recompute.`\n )\n }\n if (\n typeof this.requiresReaction_ === \"boolean\"\n ? this.requiresReaction_\n : globalState.computedRequiresReaction\n ) {\n console.warn(\n `[mobx] Computed value '${this.name_}' is being read outside a reactive context. Doing a full recompute.`\n )\n }\n }\n\n toString() {\n return `${this.name_}[${this.derivation.toString()}]`\n }\n\n valueOf(): T {\n return toPrimitive(this.get())\n }\n\n [Symbol.toPrimitive]() {\n return this.valueOf()\n }\n}\n\nexport const isComputedValue = createInstanceofPredicate(\"ComputedValue\", ComputedValue)\n", "import {\n IAtom,\n IDepTreeNode,\n IObservable,\n addObserver,\n globalState,\n isComputedValue,\n removeObserver\n} from \"../internal\"\n\nexport enum IDerivationState_ {\n // before being run or (outside batch and not being observed)\n // at this point derivation is not holding any data about dependency tree\n NOT_TRACKING_ = -1,\n // no shallow dependency changed since last computation\n // won't recalculate derivation\n // this is what makes mobx fast\n UP_TO_DATE_ = 0,\n // some deep dependency changed, but don't know if shallow dependency changed\n // will require to check first if UP_TO_DATE or POSSIBLY_STALE\n // currently only ComputedValue will propagate POSSIBLY_STALE\n //\n // having this state is second big optimization:\n // don't have to recompute on every dependency change, but only when it's needed\n POSSIBLY_STALE_ = 1,\n // A shallow dependency has changed since last computation and the derivation\n // will need to recompute when it's needed next.\n STALE_ = 2\n}\n\nexport enum TraceMode {\n NONE,\n LOG,\n BREAK\n}\n\n/**\n * A derivation is everything that can be derived from the state (all the atoms) in a pure manner.\n * See https://medium.com/@mweststrate/becoming-fully-reactive-an-in-depth-explanation-of-mobservable-55995262a254#.xvbh6qd74\n */\nexport interface IDerivation extends IDepTreeNode {\n observing_: IObservable[]\n newObserving_: null | IObservable[]\n dependenciesState_: IDerivationState_\n /**\n * Id of the current run of a derivation. Each time the derivation is tracked\n * this number is increased by one. This number is globally unique\n */\n runId_: number\n /**\n * amount of dependencies used by the derivation in this run, which has not been bound yet.\n */\n unboundDepsCount_: number\n onBecomeStale_(): void\n isTracing_: TraceMode\n\n /**\n * warn if the derivation has no dependencies after creation/update\n */\n requiresObservable_?: boolean\n}\n\nexport class CaughtException {\n constructor(public cause: any) {\n // Empty\n }\n}\n\nexport function isCaughtException(e: any): e is CaughtException {\n return e instanceof CaughtException\n}\n\n/**\n * Finds out whether any dependency of the derivation has actually changed.\n * If dependenciesState is 1 then it will recalculate dependencies,\n * if any dependency changed it will propagate it by changing dependenciesState to 2.\n *\n * By iterating over the dependencies in the same order that they were reported and\n * stopping on the first change, all the recalculations are only called for ComputedValues\n * that will be tracked by derivation. That is because we assume that if the first x\n * dependencies of the derivation doesn't change then the derivation should run the same way\n * up until accessing x-th dependency.\n */\nexport function shouldCompute(derivation: IDerivation): boolean {\n switch (derivation.dependenciesState_) {\n case IDerivationState_.UP_TO_DATE_:\n return false\n case IDerivationState_.NOT_TRACKING_:\n case IDerivationState_.STALE_:\n return true\n case IDerivationState_.POSSIBLY_STALE_: {\n // state propagation can occur outside of action/reactive context #2195\n const prevAllowStateReads = allowStateReadsStart(true)\n const prevUntracked = untrackedStart() // no need for those computeds to be reported, they will be picked up in trackDerivedFunction.\n const obs = derivation.observing_,\n l = obs.length\n for (let i = 0; i < l; i++) {\n const obj = obs[i]\n if (isComputedValue(obj)) {\n if (globalState.disableErrorBoundaries) {\n obj.get()\n } else {\n try {\n obj.get()\n } catch (e) {\n // we are not interested in the value *or* exception at this moment, but if there is one, notify all\n untrackedEnd(prevUntracked)\n allowStateReadsEnd(prevAllowStateReads)\n return true\n }\n }\n // if ComputedValue `obj` actually changed it will be computed and propagated to its observers.\n // and `derivation` is an observer of `obj`\n // invariantShouldCompute(derivation)\n if ((derivation.dependenciesState_ as any) === IDerivationState_.STALE_) {\n untrackedEnd(prevUntracked)\n allowStateReadsEnd(prevAllowStateReads)\n return true\n }\n }\n }\n changeDependenciesStateTo0(derivation)\n untrackedEnd(prevUntracked)\n allowStateReadsEnd(prevAllowStateReads)\n return false\n }\n }\n}\n\nexport function isComputingDerivation() {\n return globalState.trackingDerivation !== null // filter out actions inside computations\n}\n\nexport function checkIfStateModificationsAreAllowed(atom: IAtom) {\n if (!__DEV__) {\n return\n }\n const hasObservers = atom.observers_.size > 0\n // Should not be possible to change observed state outside strict mode, except during initialization, see #563\n if (\n !globalState.allowStateChanges &&\n (hasObservers || globalState.enforceActions === \"always\")\n ) {\n console.warn(\n \"[MobX] \" +\n (globalState.enforceActions\n ? \"Since strict-mode is enabled, changing (observed) observable values without using an action is not allowed. Tried to modify: \"\n : \"Side effects like changing state are not allowed at this point. Are you trying to modify state from, for example, a computed value or the render function of a React component? You can wrap side effects in 'runInAction' (or decorate functions with 'action') if needed. Tried to modify: \") +\n atom.name_\n )\n }\n}\n\nexport function checkIfStateReadsAreAllowed(observable: IObservable) {\n if (__DEV__ && !globalState.allowStateReads && globalState.observableRequiresReaction) {\n console.warn(\n `[mobx] Observable '${observable.name_}' being read outside a reactive context.`\n )\n }\n}\n\n/**\n * Executes the provided function `f` and tracks which observables are being accessed.\n * The tracking information is stored on the `derivation` object and the derivation is registered\n * as observer of any of the accessed observables.\n */\nexport function trackDerivedFunction<T>(derivation: IDerivation, f: () => T, context: any) {\n const prevAllowStateReads = allowStateReadsStart(true)\n // pre allocate array allocation + room for variation in deps\n // array will be trimmed by bindDependencies\n changeDependenciesStateTo0(derivation)\n derivation.newObserving_ = new Array(derivation.observing_.length + 100)\n derivation.unboundDepsCount_ = 0\n derivation.runId_ = ++globalState.runId\n const prevTracking = globalState.trackingDerivation\n globalState.trackingDerivation = derivation\n globalState.inBatch++\n let result\n if (globalState.disableErrorBoundaries === true) {\n result = f.call(context)\n } else {\n try {\n result = f.call(context)\n } catch (e) {\n result = new CaughtException(e)\n }\n }\n globalState.inBatch--\n globalState.trackingDerivation = prevTracking\n bindDependencies(derivation)\n\n warnAboutDerivationWithoutDependencies(derivation)\n allowStateReadsEnd(prevAllowStateReads)\n return result\n}\n\nfunction warnAboutDerivationWithoutDependencies(derivation: IDerivation) {\n if (!__DEV__) {\n return\n }\n\n if (derivation.observing_.length !== 0) {\n return\n }\n\n if (\n typeof derivation.requiresObservable_ === \"boolean\"\n ? derivation.requiresObservable_\n : globalState.reactionRequiresObservable\n ) {\n console.warn(\n `[mobx] Derivation '${derivation.name_}' is created/updated without reading any observable value.`\n )\n }\n}\n\n/**\n * diffs newObserving with observing.\n * update observing to be newObserving with unique observables\n * notify observers that become observed/unobserved\n */\nfunction bindDependencies(derivation: IDerivation) {\n // invariant(derivation.dependenciesState !== IDerivationState.NOT_TRACKING, \"INTERNAL ERROR bindDependencies expects derivation.dependenciesState !== -1\");\n const prevObserving = derivation.observing_\n const observing = (derivation.observing_ = derivation.newObserving_!)\n let lowestNewObservingDerivationState = IDerivationState_.UP_TO_DATE_\n\n // Go through all new observables and check diffValue: (this list can contain duplicates):\n // 0: first occurrence, change to 1 and keep it\n // 1: extra occurrence, drop it\n let i0 = 0,\n l = derivation.unboundDepsCount_\n for (let i = 0; i < l; i++) {\n const dep = observing[i]\n if (dep.diffValue_ === 0) {\n dep.diffValue_ = 1\n if (i0 !== i) {\n observing[i0] = dep\n }\n i0++\n }\n\n // Upcast is 'safe' here, because if dep is IObservable, `dependenciesState` will be undefined,\n // not hitting the condition\n if ((dep as any as IDerivation).dependenciesState_ > lowestNewObservingDerivationState) {\n lowestNewObservingDerivationState = (dep as any as IDerivation).dependenciesState_\n }\n }\n observing.length = i0\n\n derivation.newObserving_ = null // newObserving shouldn't be needed outside tracking (statement moved down to work around FF bug, see #614)\n\n // Go through all old observables and check diffValue: (it is unique after last bindDependencies)\n // 0: it's not in new observables, unobserve it\n // 1: it keeps being observed, don't want to notify it. change to 0\n l = prevObserving.length\n while (l--) {\n const dep = prevObserving[l]\n if (dep.diffValue_ === 0) {\n removeObserver(dep, derivation)\n }\n dep.diffValue_ = 0\n }\n\n // Go through all new observables and check diffValue: (now it should be unique)\n // 0: it was set to 0 in last loop. don't need to do anything.\n // 1: it wasn't observed, let's observe it. set back to 0\n while (i0--) {\n const dep = observing[i0]\n if (dep.diffValue_ === 1) {\n dep.diffValue_ = 0\n addObserver(dep, derivation)\n }\n }\n\n // Some new observed derivations may become stale during this derivation computation\n // so they have had no chance to propagate staleness (#916)\n if (lowestNewObservingDerivationState !== IDerivationState_.UP_TO_DATE_) {\n derivation.dependenciesState_ = lowestNewObservingDerivationState\n derivation.onBecomeStale_()\n }\n}\n\nexport function clearObserving(derivation: IDerivation) {\n // invariant(globalState.inBatch > 0, \"INTERNAL ERROR clearObserving should be called only inside batch\");\n const obs = derivation.observing_\n derivation.observing_ = []\n let i = obs.length\n while (i--) {\n removeObserver(obs[i], derivation)\n }\n\n derivation.dependenciesState_ = IDerivationState_.NOT_TRACKING_\n}\n\nexport function untracked<T>(action: () => T): T {\n const prev = untrackedStart()\n try {\n return action()\n } finally {\n untrackedEnd(prev)\n }\n}\n\nexport function untrackedStart(): IDerivation | null {\n const prev = globalState.trackingDerivation\n globalState.trackingDerivation = null\n return prev\n}\n\nexport function untrackedEnd(prev: IDerivation | null) {\n globalState.trackingDerivation = prev\n}\n\nexport function allowStateReadsStart(allowStateReads: boolean) {\n const prev = globalState.allowStateReads\n globalState.allowStateReads = allowStateReads\n return prev\n}\n\nexport function allowStateReadsEnd(prev: boolean) {\n globalState.allowStateReads = prev\n}\n\n/**\n * needed to keep `lowestObserverState` correct. when changing from (2 or 1) to 0\n *\n */\nexport function changeDependenciesStateTo0(derivation: IDerivation) {\n if (derivation.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n return\n }\n derivation.dependenciesState_ = IDerivationState_.UP_TO_DATE_\n\n const obs = derivation.observing_\n let i = obs.length\n while (i--) {\n obs[i].lowestObserverState_ = IDerivationState_.UP_TO_DATE_\n }\n}\n", "import { IDerivation, IObservable, Reaction, die, getGlobal } from \"../internal\"\nimport { ComputedValue } from \"./computedvalue\"\n\n/**\n * These values will persist if global state is reset\n */\nconst persistentKeys: (keyof MobXGlobals)[] = [\n \"mobxGuid\",\n \"spyListeners\",\n \"enforceActions\",\n \"computedRequiresReaction\",\n \"reactionRequiresObservable\",\n \"observableRequiresReaction\",\n \"allowStateReads\",\n \"disableErrorBoundaries\",\n \"runId\",\n \"UNCHANGED\",\n \"useProxies\"\n]\n\nexport type IUNCHANGED = {}\n\nexport class MobXGlobals {\n /**\n * MobXGlobals version.\n * MobX compatiblity with other versions loaded in memory as long as this version matches.\n * It indicates that the global state still stores similar information\n *\n * N.B: this version is unrelated to the package version of MobX, and is only the version of the\n * internal state storage of MobX, and can be the same across many different package versions\n */\n version = 6\n\n /**\n * globally unique token to signal unchanged\n */\n UNCHANGED: IUNCHANGED = {}\n\n /**\n * Currently running derivation\n */\n trackingDerivation: IDerivation | null = null\n\n /**\n * Currently running reaction. This determines if we currently have a reactive context.\n * (Tracking derivation is also set for temporal tracking of computed values inside actions,\n * but trackingReaction can only be set by a form of Reaction)\n */\n trackingContext: Reaction | ComputedValue<any> | null = null\n\n /**\n * Each time a derivation is tracked, it is assigned a unique run-id\n */\n runId = 0\n\n /**\n * 'guid' for general purpose. Will be persisted amongst resets.\n */\n mobxGuid = 0\n\n /**\n * Are we in a batch block? (and how many of them)\n */\n inBatch: number = 0\n\n /**\n * Observables that don't have observers anymore, and are about to be\n * suspended, unless somebody else accesses it in the same batch\n *\n * @type {IObservable[]}\n */\n pendingUnobservations: IObservable[] = []\n\n /**\n * List of scheduled, not yet executed, reactions.\n */\n pendingReactions: Reaction[] = []\n\n /**\n * Are we currently processing reactions?\n */\n isRunningReactions = false\n\n /**\n * Is it allowed to change observables at this point?\n * In general, MobX doesn't allow that when running computations and React.render.\n * To ensure that those functions stay pure.\n */\n allowStateChanges = false\n\n /**\n * Is it allowed to read observables at this point?\n * Used to hold the state needed for `observableRequiresReaction`\n */\n allowStateReads = true\n\n /**\n * If strict mode is enabled, state changes are by default not allowed\n */\n enforceActions: boolean | \"always\" = true\n\n /**\n * Spy callbacks\n */\n spyListeners: { (change: any): void }[] = []\n\n /**\n * Globally attached error handlers that react specifically to errors in reactions\n */\n globalReactionErrorHandlers: ((error: any, derivation: IDerivation) => void)[] = []\n\n /**\n * Warn if computed values are accessed outside a reactive context\n */\n computedRequiresReaction = false\n\n /**\n * (Experimental)\n * Warn if you try to create to derivation / reactive context without accessing any observable.\n */\n reactionRequiresObservable = false\n\n /**\n * (Experimental)\n * Warn if observables are accessed outside a reactive context\n */\n observableRequiresReaction = false\n\n /*\n * Don't catch and rethrow exceptions. This is useful for inspecting the state of\n * the stack when an exception occurs while debugging.\n */\n disableErrorBoundaries = false\n\n /*\n * If true, we are already handling an exception in an action. Any errors in reactions should be suppressed, as\n * they are not the cause, see: https://github.com/mobxjs/mobx/issues/1836\n */\n suppressReactionErrors = false\n\n useProxies = true\n /*\n * print warnings about code that would fail if proxies weren't available\n */\n verifyProxies = false\n\n /**\n * False forces all object's descriptors to\n * writable: true\n * configurable: true\n */\n safeDescriptors = true\n}\n\nlet canMergeGlobalState = true\nlet isolateCalled = false\n\nexport let globalState: MobXGlobals = (function () {\n let global = getGlobal()\n if (global.__mobxInstanceCount > 0 && !global.__mobxGlobals) {\n canMergeGlobalState = false\n }\n if (global.__mobxGlobals && global.__mobxGlobals.version !== new MobXGlobals().version) {\n canMergeGlobalState = false\n }\n\n if (!canMergeGlobalState) {\n // Because this is a IIFE we need to let isolateCalled a chance to change\n // so we run it after the event loop completed at least 1 iteration\n setTimeout(() => {\n if (!isolateCalled) {\n die(35)\n }\n }, 1)\n return new MobXGlobals()\n } else if (global.__mobxGlobals) {\n global.__mobxInstanceCount += 1\n if (!global.__mobxGlobals.UNCHANGED) {\n global.__mobxGlobals.UNCHANGED = {}\n } // make merge backward compatible\n return global.__mobxGlobals\n } else {\n global.__mobxInstanceCount = 1\n return (global.__mobxGlobals = new MobXGlobals())\n }\n})()\n\nexport function isolateGlobalState() {\n if (\n globalState.pendingReactions.length ||\n globalState.inBatch ||\n globalState.isRunningReactions\n ) {\n die(36)\n }\n isolateCalled = true\n if (canMergeGlobalState) {\n let global = getGlobal()\n if (--global.__mobxInstanceCount === 0) {\n global.__mobxGlobals = undefined\n }\n globalState = new MobXGlobals()\n }\n}\n\nexport function getGlobalState(): any {\n return globalState\n}\n\n/**\n * For testing purposes only; this will break the internal state of existing observables,\n * but can be used to get back at a stable state after throwing errors\n */\nexport function resetGlobalState() {\n const defaultGlobals = new MobXGlobals()\n for (let key in defaultGlobals) {\n if (persistentKeys.indexOf(key as any) === -1) {\n globalState[key] = defaultGlobals[key]\n }\n }\n globalState.allowStateChanges = !globalState.enforceActions\n}\n", "import {\n Lambda,\n ComputedValue,\n IDependencyTree,\n IDerivation,\n IDerivationState_,\n TraceMode,\n getDependencyTree,\n globalState,\n runReactions,\n checkIfStateReadsAreAllowed\n} from \"../internal\"\n\nexport interface IDepTreeNode {\n name_: string\n observing_?: IObservable[]\n}\n\nexport interface IObservable extends IDepTreeNode {\n diffValue_: number\n /**\n * Id of the derivation *run* that last accessed this observable.\n * If this id equals the *run* id of the current derivation,\n * the dependency is already established\n */\n lastAccessedBy_: number\n isBeingObserved_: boolean\n\n lowestObserverState_: IDerivationState_ // Used to avoid redundant propagations\n isPendingUnobservation_: boolean // Used to push itself to global.pendingUnobservations at most once per batch.\n\n observers_: Set<IDerivation>\n\n onBUO(): void\n onBO(): void\n\n onBUOL: Set<Lambda> | undefined\n onBOL: Set<Lambda> | undefined\n}\n\nexport function hasObservers(observable: IObservable): boolean {\n return observable.observers_ && observable.observers_.size > 0\n}\n\nexport function getObservers(observable: IObservable): Set<IDerivation> {\n return observable.observers_\n}\n\n// function invariantObservers(observable: IObservable) {\n// const list = observable.observers\n// const map = observable.observersIndexes\n// const l = list.length\n// for (let i = 0; i < l; i++) {\n// const id = list[i].__mapid\n// if (i) {\n// invariant(map[id] === i, \"INTERNAL ERROR maps derivation.__mapid to index in list\") // for performance\n// } else {\n// invariant(!(id in map), \"INTERNAL ERROR observer on index 0 shouldn't be held in map.\") // for performance\n// }\n// }\n// invariant(\n// list.length === 0 || Object.keys(map).length === list.length - 1,\n// \"INTERNAL ERROR there is no junk in map\"\n// )\n// }\nexport function addObserver(observable: IObservable, node: IDerivation) {\n // invariant(node.dependenciesState !== -1, \"INTERNAL ERROR, can add only dependenciesState !== -1\");\n // invariant(observable._observers.indexOf(node) === -1, \"INTERNAL ERROR add already added node\");\n // invariantObservers(observable);\n\n observable.observers_.add(node)\n if (observable.lowestObserverState_ > node.dependenciesState_) {\n observable.lowestObserverState_ = node.dependenciesState_\n }\n\n // invariantObservers(observable);\n // invariant(observable._observers.indexOf(node) !== -1, \"INTERNAL ERROR didn't add node\");\n}\n\nexport function removeObserver(observable: IObservable, node: IDerivation) {\n // invariant(globalState.inBatch > 0, \"INTERNAL ERROR, remove should be called only inside batch\");\n // invariant(observable._observers.indexOf(node) !== -1, \"INTERNAL ERROR remove already removed node\");\n // invariantObservers(observable);\n observable.observers_.delete(node)\n if (observable.observers_.size === 0) {\n // deleting last observer\n queueForUnobservation(observable)\n }\n // invariantObservers(observable);\n // invariant(observable._observers.indexOf(node) === -1, \"INTERNAL ERROR remove already removed node2\");\n}\n\nexport function queueForUnobservation(observable: IObservable) {\n if (observable.isPendingUnobservation_ === false) {\n // invariant(observable._observers.length === 0, \"INTERNAL ERROR, should only queue for unobservation unobserved observables\");\n observable.isPendingUnobservation_ = true\n globalState.pendingUnobservations.push(observable)\n }\n}\n\n/**\n * Batch starts a transaction, at least for purposes of memoizing ComputedValues when nothing else does.\n * During a batch `onBecomeUnobserved` will be called at most once per observable.\n * Avoids unnecessary recalculations.\n */\nexport function startBatch() {\n globalState.inBatch++\n}\n\nexport function endBatch() {\n if (--globalState.inBatch === 0) {\n runReactions()\n // the batch is actually about to finish, all unobserving should happen here.\n const list = globalState.pendingUnobservations\n for (let i = 0; i < list.length; i++) {\n const observable = list[i]\n observable.isPendingUnobservation_ = false\n if (observable.observers_.size === 0) {\n if (observable.isBeingObserved_) {\n // if this observable had reactive observers, trigger the hooks\n observable.isBeingObserved_ = false\n observable.onBUO()\n }\n if (observable instanceof ComputedValue) {\n // computed values are automatically teared down when the last observer leaves\n // this process happens recursively, this computed might be the last observabe of another, etc..\n observable.suspend_()\n }\n }\n }\n globalState.pendingUnobservations = []\n }\n}\n\nexport function reportObserved(observable: IObservable): boolean {\n checkIfStateReadsAreAllowed(observable)\n\n const derivation = globalState.trackingDerivation\n if (derivation !== null) {\n /**\n * Simple optimization, give each derivation run an unique id (runId)\n * Check if last time this observable was accessed the same runId is used\n * if this is the case, the relation is already known\n */\n if (derivation.runId_ !== observable.lastAccessedBy_) {\n observable.lastAccessedBy_ = derivation.runId_\n // Tried storing newObserving, or observing, or both as Set, but performance didn't come close...\n derivation.newObserving_![derivation.unboundDepsCount_++] = observable\n if (!observable.isBeingObserved_ && globalState.trackingContext) {\n observable.isBeingObserved_ = true\n observable.onBO()\n }\n }\n return true\n } else if (observable.observers_.size === 0 && globalState.inBatch > 0) {\n queueForUnobservation(observable)\n }\n\n return false\n}\n\n// function invariantLOS(observable: IObservable, msg: string) {\n// // it's expensive so better not run it in produciton. but temporarily helpful for testing\n// const min = getObservers(observable).reduce((a, b) => Math.min(a, b.dependenciesState), 2)\n// if (min >= observable.lowestObserverState) return // <- the only assumption about `lowestObserverState`\n// throw new Error(\n// \"lowestObserverState is wrong for \" +\n// msg +\n// \" because \" +\n// min +\n// \" < \" +\n// observable.lowestObserverState\n// )\n// }\n\n/**\n * NOTE: current propagation mechanism will in case of self reruning autoruns behave unexpectedly\n * It will propagate changes to observers from previous run\n * It's hard or maybe impossible (with reasonable perf) to get it right with current approach\n * Hopefully self reruning autoruns aren't a feature people should depend on\n * Also most basic use cases should be ok\n */\n\n// Called by Atom when its value changes\nexport function propagateChanged(observable: IObservable) {\n // invariantLOS(observable, \"changed start\");\n if (observable.lowestObserverState_ === IDerivationState_.STALE_) {\n return\n }\n observable.lowestObserverState_ = IDerivationState_.STALE_\n\n // Ideally we use for..of here, but the downcompiled version is really slow...\n observable.observers_.forEach(d => {\n if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n if (__DEV__ && d.isTracing_ !== TraceMode.NONE) {\n logTraceInfo(d, observable)\n }\n d.onBecomeStale_()\n }\n d.dependenciesState_ = IDerivationState_.STALE_\n })\n // invariantLOS(observable, \"changed end\");\n}\n\n// Called by ComputedValue when it recalculate and its value changed\nexport function propagateChangeConfirmed(observable: IObservable) {\n // invariantLOS(observable, \"confirmed start\");\n if (observable.lowestObserverState_ === IDerivationState_.STALE_) {\n return\n }\n observable.lowestObserverState_ = IDerivationState_.STALE_\n\n observable.observers_.forEach(d => {\n if (d.dependenciesState_ === IDerivationState_.POSSIBLY_STALE_) {\n d.dependenciesState_ = IDerivationState_.STALE_\n if (__DEV__ && d.isTracing_ !== TraceMode.NONE) {\n logTraceInfo(d, observable)\n }\n } else if (\n d.dependenciesState_ === IDerivationState_.UP_TO_DATE_ // this happens during computing of `d`, just keep lowestObserverState up to date.\n ) {\n observable.lowestObserverState_ = IDerivationState_.UP_TO_DATE_\n }\n })\n // invariantLOS(observable, \"confirmed end\");\n}\n\n// Used by computed when its dependency changed, but we don't wan't to immediately recompute.\nexport function propagateMaybeChanged(observable: IObservable) {\n // invariantLOS(observable, \"maybe start\");\n if (observable.lowestObserverState_ !== IDerivationState_.UP_TO_DATE_) {\n return\n }\n observable.lowestObserverState_ = IDerivationState_.POSSIBLY_STALE_\n\n observable.observers_.forEach(d => {\n if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n d.dependenciesState_ = IDerivationState_.POSSIBLY_STALE_\n d.onBecomeStale_()\n }\n })\n // invariantLOS(observable, \"maybe end\");\n}\n\nfunction logTraceInfo(derivation: IDerivation, observable: IObservable) {\n console.log(\n `[mobx.trace] '${derivation.name_}' is invalidated due to a change in: '${observable.name_}'`\n )\n if (derivation.isTracing_ === TraceMode.BREAK) {\n const lines = []\n printDepTree(getDependencyTree(derivation), lines, 1)\n\n // prettier-ignore\n new Function(\n`debugger;\n/*\nTracing '${derivation.name_}'\n\nYou are entering this break point because derivation '${derivation.name_}' is being traced and '${observable.name_}' is now forcing it to update.\nJust follow the stacktrace you should now see in the devtools to see precisely what piece of your code is causing this update\nThe stackframe you are looking for is at least ~6-8 stack-frames up.\n\n${derivation instanceof ComputedValue ? derivation.derivation.toString().replace(/[*]\\//g, \"/\") : \"\"}\n\nThe dependencies for this derivation are:\n\n${lines.join(\"\\n\")}\n*/\n `)()\n }\n}\n\nfunction printDepTree(tree: IDependencyTree, lines: string[], depth: number) {\n if (lines.length >= 1000) {\n lines.push(\"(and many more)\")\n return\n }\n lines.push(`${\"\\t\".repeat(depth - 1)}${tree.name}`)\n if (tree.dependencies) {\n tree.dependencies.forEach(child => printDepTree(child, lines, depth + 1))\n }\n}\n", "import {\n $mobx,\n IDerivation,\n IDerivationState_,\n IObservable,\n Lambda,\n TraceMode,\n clearObserving,\n createInstanceofPredicate,\n endBatch,\n getNextId,\n globalState,\n isCaughtException,\n isSpyEnabled,\n shouldCompute,\n spyReport,\n spyReportEnd,\n spyReportStart,\n startBatch,\n trace,\n trackDerivedFunction\n} from \"../internal\"\n\n/**\n * Reactions are a special kind of derivations. Several things distinguishes them from normal reactive computations\n *\n * 1) They will always run, whether they are used by other computations or not.\n * This means that they are very suitable for triggering side effects like logging, updating the DOM and making network requests.\n * 2) They are not observable themselves\n * 3) They will always run after any 'normal' derivations\n * 4) They are allowed to change the state and thereby triggering themselves again, as long as they make sure the state propagates to a stable state in a reasonable amount of iterations.\n *\n * The state machine of a Reaction is as follows:\n *\n * 1) after creating, the reaction should be started by calling `runReaction` or by scheduling it (see also `autorun`)\n * 2) the `onInvalidate` handler should somehow result in a call to `this.track(someFunction)`\n * 3) all observables accessed in `someFunction` will be observed by this reaction.\n * 4) as soon as some of the dependencies has changed the Reaction will be rescheduled for another run (after the current mutation or transaction). `isScheduled` will yield true once a dependency is stale and during this period\n * 5) `onInvalidate` will be called, and we are back at step 1.\n *\n */\n\nexport interface IReactionPublic {\n dispose(): void\n trace(enterBreakPoint?: boolean): void\n}\n\nexport interface IReactionDisposer {\n (): void\n $mobx: Reaction\n}\n\nexport class Reaction implements IDerivation, IReactionPublic {\n observing_: IObservable[] = [] // nodes we are looking at. Our value depends on these nodes\n newObserving_: IObservable[] = []\n dependenciesState_ = IDerivationState_.NOT_TRACKING_\n diffValue_ = 0\n runId_ = 0\n unboundDepsCount_ = 0\n isDisposed_ = false\n isScheduled_ = false\n isTrackPending_ = false\n isRunning_ = false\n isTracing_: TraceMode = TraceMode.NONE\n\n constructor(\n public name_: string = __DEV__ ? \"Reaction@\" + getNextId() : \"Reaction\",\n private onInvalidate_: () => void,\n private errorHandler_?: (error: any, derivation: IDerivation) => void,\n public requiresObservable_?\n ) {}\n\n onBecomeStale_() {\n this.schedule_()\n }\n\n schedule_() {\n if (!this.isScheduled_) {\n this.isScheduled_ = true\n globalState.pendingReactions.push(this)\n runReactions()\n }\n }\n\n isScheduled() {\n return this.isScheduled_\n }\n\n /**\n * internal, use schedule() if you intend to kick off a reaction\n */\n runReaction_() {\n if (!this.isDisposed_) {\n startBatch()\n this.isScheduled_ = false\n const prev = globalState.trackingContext\n globalState.trackingContext = this\n if (shouldCompute(this)) {\n this.isTrackPending_ = true\n\n try {\n this.onInvalidate_()\n if (__DEV__ && this.isTrackPending_ && isSpyEnabled()) {\n // onInvalidate didn't trigger track right away..\n spyReport({\n name: this.name_,\n type: \"scheduled-reaction\"\n })\n }\n } catch (e) {\n this.reportExceptionInDerivation_(e)\n }\n }\n globalState.trackingContext = prev\n endBatch()\n }\n }\n\n track(fn: () => void) {\n if (this.isDisposed_) {\n return\n // console.warn(\"Reaction already disposed\") // Note: Not a warning / error in mobx 4 either\n }\n startBatch()\n const notify = isSpyEnabled()\n let startTime\n if (__DEV__ && notify) {\n startTime = Date.now()\n spyReportStart({\n name: this.name_,\n type: \"reaction\"\n })\n }\n this.isRunning_ = true\n const prevReaction = globalState.trackingContext // reactions could create reactions...\n globalState.trackingContext = this\n const result = trackDerivedFunction(this, fn, undefined)\n globalState.trackingContext = prevReaction\n this.isRunning_ = false\n this.isTrackPending_ = false\n if (this.isDisposed_) {\n // disposed during last run. Clean up everything that was bound after the dispose call.\n clearObserving(this)\n }\n if (isCaughtException(result)) {\n this.reportExceptionInDerivation_(result.cause)\n }\n if (__DEV__ && notify) {\n spyReportEnd({\n time: Date.now() - startTime\n })\n }\n endBatch()\n }\n\n reportExceptionInDerivation_(error: any) {\n if (this.errorHandler_) {\n this.errorHandler_(error, this)\n return\n }\n\n if (globalState.disableErrorBoundaries) {\n throw error\n }\n\n const message = __DEV__\n ? `[mobx] Encountered an uncaught exception that was thrown by a reaction or observer component, in: '${this}'`\n : `[mobx] uncaught error in '${this}'`\n if (!globalState.suppressReactionErrors) {\n console.error(message, error)\n /** If debugging brought you here, please, read the above message :-). Tnx! */\n } else if (__DEV__) { console.warn(`[mobx] (error in reaction '${this.name_}' suppressed, fix error of causing action below)`) } // prettier-ignore\n\n if (__DEV__ && isSpyEnabled()) {\n spyReport({\n type: \"error\",\n name: this.name_,\n message,\n error: \"\" + error\n })\n }\n\n globalState.globalReactionErrorHandlers.forEach(f => f(error, this))\n }\n\n dispose() {\n if (!this.isDisposed_) {\n this.isDisposed_ = true\n if (!this.isRunning_) {\n // if disposed while running, clean up later. Maybe not optimal, but rare case\n startBatch()\n clearObserving(this)\n endBatch()\n }\n }\n }\n\n getDisposer_(): IReactionDisposer {\n const r = this.dispose.bind(this) as IReactionDisposer\n r[$mobx] = this\n return r\n }\n\n toString() {\n return `Reaction[${this.name_}]`\n }\n\n trace(enterBreakPoint: boolean = false) {\n trace(this, enterBreakPoint)\n }\n}\n\nexport function onReactionError(handler: (error: any, derivation: IDerivation) => void): Lambda {\n globalState.globalReactionErrorHandlers.push(handler)\n return () => {\n const idx = globalState.globalReactionErrorHandlers.indexOf(handler)\n if (idx >= 0) {\n globalState.globalReactionErrorHandlers.splice(idx, 1)\n }\n }\n}\n\n/**\n * Magic number alert!\n * Defines within how many times a reaction is allowed to re-trigger itself\n * until it is assumed that this is gonna be a never ending loop...\n */\nconst MAX_REACTION_ITERATIONS = 100\n\nlet reactionScheduler: (fn: () => void) => void = f => f()\n\nexport function runReactions() {\n // Trampolining, if runReactions are already running, new reactions will be picked up\n if (globalState.inBatch > 0 || globalState.isRunningReactions) {\n return\n }\n reactionScheduler(runReactionsHelper)\n}\n\nfunction runReactionsHelper() {\n globalState.isRunningReactions = true\n const allReactions = globalState.pendingReactions\n let iterations = 0\n\n // While running reactions, new reactions might be triggered.\n // Hence we work with two variables and check whether\n // we converge to no remaining reactions after a while.\n while (allReactions.length > 0) {\n if (++iterations === MAX_REACTION_ITERATIONS) {\n console.error(\n __DEV__\n ? `Reaction doesn't converge to a stable state after ${MAX_REACTION_ITERATIONS} iterations.` +\n ` Probably there is a cycle in the reactive function: ${allReactions[0]}`\n : `[mobx] cycle in reaction: ${allReactions[0]}`\n )\n allReactions.splice(0) // clear reactions\n }\n let remainingReactions = allReactions.splice(0)\n for (let i = 0, l = remainingReactions.length; i < l; i++) {\n remainingReactions[i].runReaction_()\n }\n }\n globalState.isRunningReactions = false\n}\n\nexport const isReaction = createInstanceofPredicate(\"Reaction\", Reaction)\n\nexport function setReactionScheduler(fn: (f: () => void) => void) {\n const baseScheduler = reactionScheduler\n reactionScheduler = f => fn(() => baseScheduler(f))\n}\n", "import { IComputedDidChange } from \"./computedvalue\"\nimport { IValueDidChange, IBoxDidChange } from \"./../types/observablevalue\"\nimport { IObjectDidChange } from \"./../types/observableobject\"\nimport { IArrayDidChange } from \"./../types/observablearray\"\nimport { Lambda, globalState, once, ISetDidChange, IMapDidChange } from \"../internal\"\n\nexport function isSpyEnabled() {\n return __DEV__ && !!globalState.spyListeners.length\n}\n\nexport type PureSpyEvent =\n | { type: \"action\"; name: string; object: unknown; arguments: unknown[] }\n | { type: \"scheduled-reaction\"; name: string }\n | { type: \"reaction\"; name: string }\n | { type: \"error\"; name: string; message: string; error: string }\n | IComputedDidChange<unknown>\n | IObjectDidChange<unknown>\n | IArrayDidChange<unknown>\n | IMapDidChange<unknown, unknown>\n | ISetDidChange<unknown>\n | IValueDidChange<unknown>\n | IBoxDidChange<unknown>\n | { type: \"report-end\"; spyReportEnd: true; time?: number }\n\ntype SpyEvent = PureSpyEvent & { spyReportStart?: true }\n\nexport function spyReport(event: SpyEvent) {\n if (!__DEV__) {\n return\n } // dead code elimination can do the rest\n if (!globalState.spyListeners.length) {\n return\n }\n const listeners = globalState.spyListeners\n for (let i = 0, l = listeners.length; i < l; i++) {\n listeners[i](event)\n }\n}\n\nexport function spyReportStart(event: PureSpyEvent) {\n if (!__DEV__) {\n return\n }\n const change = { ...event, spyReportStart: true as const }\n spyReport(change)\n}\n\nconst END_EVENT: SpyEvent = { type: \"report-end\", spyReportEnd: true }\n\nexport function spyReportEnd(change?: { time?: number }) {\n if (!__DEV__) {\n return\n }\n if (change) {\n spyReport({ ...change, type: \"report-end\", spyReportEnd: true })\n } else {\n spyReport(END_EVENT)\n }\n}\n\nexport function spy(listener: (change: SpyEvent) => void): Lambda {\n if (!__DEV__) {\n console.warn(`[mobx.spy] Is a no-op in production builds`)\n return function () {}\n } else {\n globalState.spyListeners.push(listener)\n return once(() => {\n globalState.spyListeners = globalState.spyListeners.filter(l => l !== listener)\n })\n }\n}\n", "import {\n createAction,\n executeAction,\n Annotation,\n storeAnnotation,\n die,\n isFunction,\n isStringish,\n createDecoratorAnnotation,\n createActionAnnotation\n} from \"../internal\"\n\nexport const ACTION = \"action\"\nexport const ACTION_BOUND = \"action.bound\"\nexport const AUTOACTION = \"autoAction\"\nexport const AUTOACTION_BOUND = \"autoAction.bound\"\n\nconst DEFAULT_ACTION_NAME = \"<unnamed action>\"\n\nconst actionAnnotation = createActionAnnotation(ACTION)\nconst actionBoundAnnotation = createActionAnnotation(ACTION_BOUND, {\n bound: true\n})\nconst autoActionAnnotation = createActionAnnotation(AUTOACTION, {\n autoAction: true\n})\nconst autoActionBoundAnnotation = createActionAnnotation(AUTOACTION_BOUND, {\n autoAction: true,\n bound: true\n})\n\nexport interface IActionFactory extends Annotation, PropertyDecorator {\n // nameless actions\n <T extends Function | undefined | null>(fn: T): T\n // named actions\n <T extends Function | undefined | null>(name: string, fn: T): T\n\n // named decorator\n (customName: string): PropertyDecorator & Annotation\n\n // decorator (name no longer supported)\n bound: Annotation & PropertyDecorator\n}\n\nfunction createActionFactory(autoAction: boolean): IActionFactory {\n const res: IActionFactory = function action(arg1, arg2?): any {\n // action(fn() {})\n if (isFunction(arg1)) {\n return createAction(arg1.name || DEFAULT_ACTION_NAME, arg1, autoAction)\n }\n // action(\"name\", fn() {})\n if (isFunction(arg2)) {\n return createAction(arg1, arg2, autoAction)\n }\n // @action\n if (isStringish(arg2)) {\n return storeAnnotation(arg1, arg2, autoAction ? autoActionAnnotation : actionAnnotation)\n }\n // action(\"name\") & @action(\"name\")\n if (isStringish(arg1)) {\n return createDecoratorAnnotation(\n createActionAnnotation(autoAction ? AUTOACTION : ACTION, {\n name: arg1,\n autoAction\n })\n )\n }\n\n if (__DEV__) {\n die(\"Invalid arguments for `action`\")\n }\n } as IActionFactory\n return res\n}\n\nexport const action: IActionFactory = createActionFactory(false)\nObject.assign(action, actionAnnotation)\nexport const autoAction: IActionFactory = createActionFactory(true)\nObject.assign(autoAction, autoActionAnnotation)\n\naction.bound = createDecoratorAnnotation(actionBoundAnnotation)\nautoAction.bound = createDecoratorAnnotation(autoActionBoundAnnotation)\n\nexport function runInAction<T>(fn: () => T): T {\n return executeAction(fn.name || DEFAULT_ACTION_NAME, false, fn, this, undefined)\n}\n\nexport function isAction(thing: any) {\n return isFunction(thing) && thing.isMobxAction === true\n}\n", "import {\n EMPTY_OBJECT,\n IEqualsComparer,\n IReactionDisposer,\n IReactionPublic,\n Lambda,\n Reaction,\n action,\n comparer,\n getNextId,\n isAction,\n isFunction,\n isPlainObject,\n die,\n allowStateChanges\n} from \"../internal\"\n\nexport interface IAutorunOptions {\n delay?: number\n name?: string\n /**\n * Experimental.\n * Warns if the view doesn't track observables\n */\n requiresObservable?: boolean\n scheduler?: (callback: () => void) => any\n onError?: (error: any) => void\n}\n\n/**\n * Creates a named reactive view and keeps it alive, so that the view is always\n * updated if one of the dependencies changes, even when the view is not further used by something else.\n * @param view The reactive view\n * @returns disposer function, which can be used to stop the view from being updated in the future.\n */\nexport function autorun(\n view: (r: IReactionPublic) => any,\n opts: IAutorunOptions = EMPTY_OBJECT\n): IReactionDisposer {\n if (__DEV__) {\n if (!isFunction(view)) {\n die(\"Autorun expects a function as first argument\")\n }\n if (isAction(view)) {\n die(\"Autorun does not accept actions since actions are untrackable\")\n }\n }\n\n const name: string =\n opts?.name ?? (__DEV__ ? (view as any).name || \"Autorun@\" + getNextId() : \"Autorun\")\n const runSync = !opts.scheduler && !opts.delay\n let reaction: Reaction\n\n if (runSync) {\n // normal autorun\n reaction = new Reaction(\n name,\n function (this: Reaction) {\n this.track(reactionRunner)\n },\n opts.onError,\n opts.requiresObservable\n )\n } else {\n const scheduler = createSchedulerFromOptions(opts)\n // debounced autorun\n let isScheduled = false\n\n reaction = new Reaction(\n name,\n () => {\n if (!isScheduled) {\n isScheduled = true\n scheduler(() => {\n isScheduled = false\n if (!reaction.isDisposed_) {\n reaction.track(reactionRunner)\n }\n })\n }\n },\n opts.onError,\n opts.requiresObservable\n )\n }\n\n function reactionRunner() {\n view(reaction)\n }\n\n reaction.schedule_()\n return reaction.getDisposer_()\n}\n\nexport type IReactionOptions<T, FireImmediately extends boolean> = IAutorunOptions & {\n fireImmediately?: FireImmediately\n equals?: IEqualsComparer<T>\n}\n\nconst run = (f: Lambda) => f()\n\nfunction createSchedulerFromOptions(opts: IAutorunOptions) {\n return opts.scheduler\n ? opts.scheduler\n : opts.delay\n ? (f: Lambda) => setTimeout(f, opts.delay!)\n : run\n}\n\nexport function reaction<T, FireImmediately extends boolean = false>(\n expression: (r: IReactionPublic) => T,\n effect: (\n arg: T,\n prev: FireImmediately extends true ? T | undefined : T,\n r: IReactionPublic\n ) => void,\n opts: IReactionOptions<T, FireImmediately> = EMPTY_OBJECT\n): IReactionDisposer {\n if (__DEV__) {\n if (!isFunction(expression) || !isFunction(effect)) {\n die(\"First and second argument to reaction should be functions\")\n }\n if (!isPlainObject(opts)) {\n die(\"Third argument of reactions should be an object\")\n }\n }\n const name = opts.name ?? (__DEV__ ? \"Reaction@\" + getNextId() : \"Reaction\")\n const effectAction = action(\n name,\n opts.onError ? wrapErrorHandler(opts.onError, effect) : effect\n )\n const runSync = !opts.scheduler && !opts.delay\n const scheduler = createSchedulerFromOptions(opts)\n\n let firstTime = true\n let isScheduled = false\n let value: T\n let oldValue: T | undefined\n\n const equals: IEqualsComparer<T> = (opts as any).compareStructural\n ? comparer.structural\n : opts.equals || comparer.default\n\n const r = new Reaction(\n name,\n () => {\n if (firstTime || runSync) {\n reactionRunner()\n } else if (!isScheduled) {\n isScheduled = true\n scheduler!(reactionRunner)\n }\n },\n opts.onError,\n opts.requiresObservable\n )\n\n function reactionRunner() {\n isScheduled = false\n if (r.isDisposed_) {\n return\n }\n let changed: boolean = false\n r.track(() => {\n const nextValue = allowStateChanges(false, () => expression(r))\n changed = firstTime || !equals(value, nextValue)\n oldValue = value\n value = nextValue\n })\n\n // This casting is nesessary as TS cannot infer proper type in current funciton implementation\n type OldValue = FireImmediately extends true ? T | undefined : T\n if (firstTime && opts.fireImmediately!) {\n effectAction(value, oldValue as OldValue, r)\n } else if (!firstTime && changed) {\n effectAction(value, oldValue as OldValue, r)\n }\n firstTime = false\n }\n\n r.schedule_()\n return r.getDisposer_()\n}\n\nfunction wrapErrorHandler(errorHandler, baseFn) {\n return function () {\n try {\n return baseFn.apply(this, arguments)\n } catch (e) {\n errorHandler.call(this, e)\n }\n }\n}\n", "import {\n IComputedValue,\n IObservable,\n IObservableArray,\n Lambda,\n ObservableMap,\n getAtom,\n ObservableSet,\n isFunction,\n IObservableValue\n} from \"../internal\"\n\nconst ON_BECOME_OBSERVED = \"onBO\"\nconst ON_BECOME_UNOBSERVED = \"onBUO\"\n\nexport function onBecomeObserved(\n value:\n | IObservable\n | IComputedValue<any>\n | IObservableArray<any>\n | ObservableMap<any, any>\n | ObservableSet<any>\n | IObservableValue<any>,\n listener: Lambda\n): Lambda\nexport function onBecomeObserved<K, V = any>(\n value: ObservableMap<K, V> | Object,\n property: K,\n listener: Lambda\n): Lambda\nexport function onBecomeObserved(thing, arg2, arg3?): Lambda {\n return interceptHook(ON_BECOME_OBSERVED, thing, arg2, arg3)\n}\n\nexport function onBecomeUnobserved(\n value:\n | IObservable\n | IComputedValue<any>\n | IObservableArray<any>\n | ObservableMap<any, any>\n | ObservableSet<any>\n | IObservableValue<any>,\n listener: Lambda\n): Lambda\nexport function onBecomeUnobserved<K, V = any>(\n value: ObservableMap<K, V> | Object,\n property: K,\n listener: Lambda\n): Lambda\nexport function onBecomeUnobserved(thing, arg2, arg3?): Lambda {\n return interceptHook(ON_BECOME_UNOBSERVED, thing, arg2, arg3)\n}\n\nfunction interceptHook(hook: \"onBO\" | \"onBUO\", thing, arg2, arg3) {\n const atom: IObservable =\n typeof arg3 === \"function\" ? getAtom(thing, arg2) : (getAtom(thing) as any)\n const cb = isFunction(arg3) ? arg3 : arg2\n const listenersKey = `${hook}L` as \"onBOL\" | \"onBUOL\"\n\n if (atom[listenersKey]) {\n atom[listenersKey]!.add(cb)\n } else {\n atom[listenersKey] = new Set<Lambda>([cb])\n }\n\n return function () {\n const hookListeners = atom[listenersKey]\n if (hookListeners) {\n hookListeners.delete(cb)\n if (hookListeners.size === 0) {\n delete atom[listenersKey]\n }\n }\n }\n}\n", "import { globalState, isolateGlobalState, setReactionScheduler } from \"../internal\"\n\nconst NEVER = \"never\"\nconst ALWAYS = \"always\"\nconst OBSERVED = \"observed\"\n// const IF_AVAILABLE = \"ifavailable\"\n\nexport function configure(options: {\n enforceActions?: \"never\" | \"always\" | \"observed\"\n computedRequiresReaction?: boolean\n /**\n * Warn if you try to create to derivation / reactive context without accessing any observable.\n */\n reactionRequiresObservable?: boolean\n /**\n * Warn if observables are accessed outside a reactive context\n */\n observableRequiresReaction?: boolean\n isolateGlobalState?: boolean\n disableErrorBoundaries?: boolean\n safeDescriptors?: boolean\n reactionScheduler?: (f: () => void) => void\n useProxies?: \"always\" | \"never\" | \"ifavailable\"\n}): void {\n if (options.isolateGlobalState === true) {\n isolateGlobalState()\n }\n const { useProxies, enforceActions } = options\n if (useProxies !== undefined) {\n globalState.useProxies =\n useProxies === ALWAYS\n ? true\n : useProxies === NEVER\n ? false\n : typeof Proxy !== \"undefined\"\n }\n if (useProxies === \"ifavailable\") {\n globalState.verifyProxies = true\n }\n if (enforceActions !== undefined) {\n const ea = enforceActions === ALWAYS ? ALWAYS : enforceActions === OBSERVED\n globalState.enforceActions = ea\n globalState.allowStateChanges = ea === true || ea === ALWAYS ? false : true\n }\n ;[\n \"computedRequiresReaction\",\n \"reactionRequiresObservable\",\n \"observableRequiresReaction\",\n \"disableErrorBoundaries\",\n \"safeDescriptors\"\n ].forEach(key => {\n if (key in options) {\n globalState[key] = !!options[key]\n }\n })\n globalState.allowStateReads = !globalState.observableRequiresReaction\n if (__DEV__ && globalState.disableErrorBoundaries === true) {\n console.warn(\n \"WARNING: Debug feature only. MobX will NOT recover from errors when `disableErrorBoundaries` is enabled.\"\n )\n }\n if (options.reactionScheduler) {\n setReactionScheduler(options.reactionScheduler)\n }\n}\n", "import {\n CreateObservableOptions,\n isObservableMap,\n AnnotationsMap,\n startBatch,\n endBatch,\n asObservableObject,\n isPlainObject,\n ObservableObjectAdministration,\n isObservable,\n die,\n getOwnPropertyDescriptors,\n $mobx,\n ownKeys\n} from \"../internal\"\n\nexport function extendObservable<A extends Object, B extends Object>(\n target: A,\n properties: B,\n annotations?: AnnotationsMap<B, never>,\n options?: CreateObservableOptions\n): A & B {\n if (__DEV__) {\n if (arguments.length > 4) {\n die(\"'extendObservable' expected 2-4 arguments\")\n }\n if (typeof target !== \"object\") {\n die(\"'extendObservable' expects an object as first argument\")\n }\n if (isObservableMap(target)) {\n die(\"'extendObservable' should not be used on maps, use map.merge instead\")\n }\n if (!isPlainObject(properties)) {\n die(`'extendObservable' only accepts plain objects as second argument`)\n }\n if (isObservable(properties) || isObservable(annotations)) {\n die(`Extending an object with another observable (object) is not supported`)\n }\n }\n // Pull descriptors first, so we don't have to deal with props added by administration ($mobx)\n const descriptors = getOwnPropertyDescriptors(properties)\n\n const adm: ObservableObjectAdministration = asObservableObject(target, options)[$mobx]\n startBatch()\n try {\n ownKeys(descriptors).forEach(key => {\n adm.extend_(\n key,\n descriptors[key as any],\n // must pass \"undefined\" for { key: undefined }\n !annotations ? true : key in annotations ? annotations[key] : true\n )\n })\n } finally {\n endBatch()\n }\n return target as any\n}\n", "import { IDepTreeNode, getAtom, getObservers, hasObservers } from \"../internal\"\n\nexport interface IDependencyTree {\n name: string\n dependencies?: IDependencyTree[]\n}\n\nexport interface IObserverTree {\n name: string\n observers?: IObserverTree[]\n}\n\nexport function getDependencyTree(thing: any, property?: string): IDependencyTree {\n return nodeToDependencyTree(getAtom(thing, property))\n}\n\nfunction nodeToDependencyTree(node: IDepTreeNode): IDependencyTree {\n const result: IDependencyTree = {\n name: node.name_\n }\n if (node.observing_ && node.observing_.length > 0) {\n result.dependencies = unique(node.observing_).map(nodeToDependencyTree)\n }\n return result\n}\n\nexport function getObserverTree(thing: any, property?: string): IObserverTree {\n return nodeToObserverTree(getAtom(thing, property))\n}\n\nfunction nodeToObserverTree(node: IDepTreeNode): IObserverTree {\n const result: IObserverTree = {\n name: node.name_\n }\n if (hasObservers(node as any)) {\n result.observers = Array.from(<any>getObservers(node as any)).map(<any>nodeToObserverTree)\n }\n return result\n}\n\nfunction unique<T>(list: T[]): T[] {\n return Array.from(new Set(list))\n}\n", "import {\n action,\n noop,\n die,\n isFunction,\n Annotation,\n isStringish,\n storeAnnotation,\n createFlowAnnotation,\n createDecoratorAnnotation\n} from \"../internal\"\n\nexport const FLOW = \"flow\"\n\nlet generatorId = 0\n\nexport function FlowCancellationError() {\n this.message = \"FLOW_CANCELLED\"\n}\nFlowCancellationError.prototype = Object.create(Error.prototype)\n\nexport function isFlowCancellationError(error: Error) {\n return error instanceof FlowCancellationError\n}\n\nexport type CancellablePromise<T> = Promise<T> & { cancel(): void }\n\ninterface Flow extends Annotation, PropertyDecorator {\n <R, Args extends any[]>(\n generator: (...args: Args) => Generator<any, R, any> | AsyncGenerator<any, R, any>\n ): (...args: Args) => CancellablePromise<R>\n bound: Annotation & PropertyDecorator\n}\n\nconst flowAnnotation = createFlowAnnotation(\"flow\")\nconst flowBoundAnnotation = createFlowAnnotation(\"flow.bound\", { bound: true })\n\nexport const flow: Flow = Object.assign(\n function flow(arg1, arg2?) {\n // @flow\n if (isStringish(arg2)) {\n return storeAnnotation(arg1, arg2, flowAnnotation)\n }\n // flow(fn)\n if (__DEV__ && arguments.length !== 1) {\n die(`Flow expects single argument with generator function`)\n }\n const generator = arg1\n const name = generator.name || \"<unnamed flow>\"\n\n // Implementation based on https://github.com/tj/co/blob/master/index.js\n const res = function () {\n const ctx = this\n const args = arguments\n const runId = ++generatorId\n const gen = action(`${name} - runid: ${runId} - init`, generator).apply(ctx, args)\n let rejector: (error: any) => void\n let pendingPromise: CancellablePromise<any> | undefined = undefined\n\n const promise = new Promise(function (resolve, reject) {\n let stepId = 0\n rejector = reject\n\n function onFulfilled(res: any) {\n pendingPromise = undefined\n let ret\n try {\n ret = action(\n `${name} - runid: ${runId} - yield ${stepId++}`,\n gen.next\n ).call(gen, res)\n } catch (e) {\n return reject(e)\n }\n\n next(ret)\n }\n\n function onRejected(err: any) {\n pendingPromise = undefined\n let ret\n try {\n ret = action(\n `${name} - runid: ${runId} - yield ${stepId++}`,\n gen.throw!\n ).call(gen, err)\n } catch (e) {\n return reject(e)\n }\n next(ret)\n }\n\n function next(ret: any) {\n if (isFunction(ret?.then)) {\n // an async iterator\n ret.then(next, reject)\n return\n }\n if (ret.done) {\n return resolve(ret.value)\n }\n pendingPromise = Promise.resolve(ret.value) as any\n return pendingPromise!.then(onFulfilled, onRejected)\n }\n\n onFulfilled(undefined) // kick off the process\n }) as any\n\n promise.cancel = action(`${name} - runid: ${runId} - cancel`, function () {\n try {\n if (pendingPromise) {\n cancelPromise(pendingPromise)\n }\n // Finally block can return (or yield) stuff..\n const res = gen.return!(undefined as any)\n // eat anything that promise would do, it's cancelled!\n const yieldedPromise = Promise.resolve(res.value)\n yieldedPromise.then(noop, noop)\n cancelPromise(yieldedPromise) // maybe it can be cancelled :)\n // reject our original promise\n rejector(new FlowCancellationError())\n } catch (e) {\n rejector(e) // there could be a throwing finally block\n }\n })\n return promise\n }\n res.isMobXFlow = true\n return res\n } as any,\n flowAnnotation\n)\n\nflow.bound = createDecoratorAnnotation(flowBoundAnnotation)\n\nfunction cancelPromise(promise) {\n if (isFunction(promise.cancel)) {\n promise.cancel()\n }\n}\n\nexport function flowResult<T>(\n result: T\n): T extends Generator<any, infer R, any>\n ? CancellablePromise<R>\n : T extends CancellablePromise<any>\n ? T\n : never {\n return result as any // just tricking TypeScript :)\n}\n\nexport function isFlow(fn: any): boolean {\n return fn?.isMobXFlow === true\n}\n", "import {\n IObservableArray,\n IObservableValue,\n Lambda,\n ObservableMap,\n getAdministration,\n isObservableArray,\n isObservableMap,\n isObservableObject,\n isObservableValue,\n ObservableSet,\n die,\n isStringish\n} from \"../internal\"\n\nexport type ReadInterceptor<T> = (value: any) => T\n\n/** Experimental feature right now, tested indirectly via Mobx-State-Tree */\nexport function interceptReads<T>(value: IObservableValue<T>, handler: ReadInterceptor<T>): Lambda\nexport function interceptReads<T>(\n observableArray: IObservableArray<T>,\n handler: ReadInterceptor<T>\n): Lambda\nexport function interceptReads<K, V>(\n observableMap: ObservableMap<K, V>,\n handler: ReadInterceptor<V>\n): Lambda\nexport function interceptReads<V>(\n observableSet: ObservableSet<V>,\n handler: ReadInterceptor<V>\n): Lambda\nexport function interceptReads(\n object: Object,\n property: string,\n handler: ReadInterceptor<any>\n): Lambda\nexport function interceptReads(thing, propOrHandler?, handler?): Lambda {\n let target\n if (isObservableMap(thing) || isObservableArray(thing) || isObservableValue(thing)) {\n target = getAdministration(thing)\n } else if (isObservableObject(thing)) {\n if (__DEV__ && !isStringish(propOrHandler)) {\n return die(\n `InterceptReads can only be used with a specific property, not with an object in general`\n )\n }\n target = getAdministration(thing, propOrHandler)\n } else if (__DEV__) {\n return die(`Expected observable map, object or array as first array`)\n }\n if (__DEV__ && target.dehancer !== undefined) {\n return die(`An intercept reader was already established`)\n }\n target.dehancer = typeof propOrHandler === \"function\" ? propOrHandler : handler\n return () => {\n target.dehancer = undefined\n }\n}\n", "import {\n IArrayWillChange,\n IArrayWillSplice,\n IInterceptor,\n IMapWillChange,\n IObjectWillChange,\n IObservableArray,\n IObservableValue,\n IValueWillChange,\n Lambda,\n ObservableMap,\n getAdministration,\n ObservableSet,\n ISetWillChange,\n isFunction\n} from \"../internal\"\n\nexport function intercept<T>(\n value: IObservableValue<T>,\n handler: IInterceptor<IValueWillChange<T>>\n): Lambda\nexport function intercept<T>(\n observableArray: IObservableArray<T> | Array<T>,\n handler: IInterceptor<IArrayWillChange<T> | IArrayWillSplice<T>>\n): Lambda\nexport function intercept<K, V>(\n observableMap: ObservableMap<K, V> | Map<K, V>,\n handler: IInterceptor<IMapWillChange<K, V>>\n): Lambda\nexport function intercept<V>(\n observableSet: ObservableSet<V> | Set<V>,\n handler: IInterceptor<ISetWillChange<V>>\n): Lambda\nexport function intercept<K, V>(\n observableMap: ObservableMap<K, V> | Map<K, V>,\n property: K,\n handler: IInterceptor<IValueWillChange<V>>\n): Lambda\nexport function intercept(object: object, handler: IInterceptor<IObjectWillChange>): Lambda\nexport function intercept<T extends object, K extends keyof T>(\n object: T,\n property: K,\n handler: IInterceptor<IValueWillChange<T[K]>>\n): Lambda\nexport function intercept(thing, propOrHandler?, handler?): Lambda {\n if (isFunction(handler)) {\n return interceptProperty(thing, propOrHandler, handler)\n } else {\n return interceptInterceptable(thing, propOrHandler)\n }\n}\n\nfunction interceptInterceptable(thing, handler) {\n return getAdministration(thing).intercept_(handler)\n}\n\nfunction interceptProperty(thing, property, handler) {\n return getAdministration(thing, property).intercept_(handler)\n}\n", "import { $mobx, getAtom, isComputedValue, isObservableObject, die, isStringish } from \"../internal\"\n\nexport function _isComputed(value, property?: PropertyKey): boolean {\n if (property === undefined) {\n return isComputedValue(value)\n }\n if (isObservableObject(value) === false) {\n return false\n }\n if (!value[$mobx].values_.has(property)) {\n return false\n }\n const atom = getAtom(value, property)\n return isComputedValue(atom)\n}\n\nexport function isComputed(value: any): boolean {\n if (__DEV__ && arguments.length > 1) {\n return die(\n `isComputed expects only 1 argument. Use isComputedProp to inspect the observability of a property`\n )\n }\n return _isComputed(value)\n}\n\nexport function isComputedProp(value: any, propName: PropertyKey): boolean {\n if (__DEV__ && !isStringish(propName)) {\n return die(`isComputed expected a property name as second argument`)\n }\n return _isComputed(value, propName)\n}\n", "import {\n $mobx,\n isAtom,\n isComputedValue,\n isObservableArray,\n isObservableMap,\n isObservableObject,\n isReaction,\n die,\n isStringish\n} from \"../internal\"\n\nfunction _isObservable(value, property?: PropertyKey): boolean {\n if (!value) {\n return false\n }\n if (property !== undefined) {\n if (__DEV__ && (isObservableMap(value) || isObservableArray(value))) {\n return die(\n \"isObservable(object, propertyName) is not supported for arrays and maps. Use map.has or array.length instead.\"\n )\n }\n if (isObservableObject(value)) {\n return value[$mobx].values_.has(property)\n }\n return false\n }\n // For first check, see #701\n return (\n isObservableObject(value) ||\n !!value[$mobx] ||\n isAtom(value) ||\n isReaction(value) ||\n isComputedValue(value)\n )\n}\n\nexport function isObservable(value: any): boolean {\n if (__DEV__ && arguments.length !== 1) {\n die(\n `isObservable expects only 1 argument. Use isObservableProp to inspect the observability of a property`\n )\n }\n return _isObservable(value)\n}\n\nexport function isObservableProp(value: any, propName: PropertyKey): boolean {\n if (__DEV__ && !isStringish(propName)) {\n return die(`expected a property name as second argument`)\n }\n return _isObservable(value, propName)\n}\n", "import {\n $mobx,\n IIsObservableObject,\n IObservableArray,\n ObservableMap,\n ObservableSet,\n ObservableObjectAdministration,\n endBatch,\n isObservableArray,\n isObservableMap,\n isObservableSet,\n isObservableObject,\n startBatch,\n die\n} from \"../internal\"\n\nexport function keys<K>(map: ObservableMap<K, any>): ReadonlyArray<K>\nexport function keys<T>(ar: IObservableArray<T>): ReadonlyArray<number>\nexport function keys<T>(set: ObservableSet<T>): ReadonlyArray<T>\nexport function keys<T extends Object>(obj: T): ReadonlyArray<PropertyKey>\nexport function keys(obj: any): any {\n if (isObservableObject(obj)) {\n return (\n (obj as any as IIsObservableObject)[$mobx] as ObservableObjectAdministration\n ).keys_()\n }\n if (isObservableMap(obj) || isObservableSet(obj)) {\n return Array.from(obj.keys())\n }\n if (isObservableArray(obj)) {\n return obj.map((_, index) => index)\n }\n die(5)\n}\n\nexport function values<K, T>(map: ObservableMap<K, T>): ReadonlyArray<T>\nexport function values<T>(set: ObservableSet<T>): ReadonlyArray<T>\nexport function values<T>(ar: IObservableArray<T>): ReadonlyArray<T>\nexport function values<T = any>(obj: T): ReadonlyArray<T extends object ? T[keyof T] : any>\nexport function values(obj: any): string[] {\n if (isObservableObject(obj)) {\n return keys(obj).map(key => obj[key])\n }\n if (isObservableMap(obj)) {\n return keys(obj).map(key => obj.get(key))\n }\n if (isObservableSet(obj)) {\n return Array.from(obj.values())\n }\n if (isObservableArray(obj)) {\n return obj.slice()\n }\n die(6)\n}\n\nexport function entries<K, T>(map: ObservableMap<K, T>): ReadonlyArray<[K, T]>\nexport function entries<T>(set: ObservableSet<T>): ReadonlyArray<[T, T]>\nexport function entries<T>(ar: IObservableArray<T>): ReadonlyArray<[number, T]>\nexport function entries<T = any>(\n obj: T\n): ReadonlyArray<[string, T extends object ? T[keyof T] : any]>\nexport function entries(obj: any): any {\n if (isObservableObject(obj)) {\n return keys(obj).map(key => [key, obj[key]])\n }\n if (isObservableMap(obj)) {\n return keys(obj).map(key => [key, obj.get(key)])\n }\n if (isObservableSet(obj)) {\n return Array.from(obj.entries())\n }\n if (isObservableArray(obj)) {\n return obj.map((key, index) => [index, key])\n }\n die(7)\n}\n\nexport function set<V>(obj: ObservableMap<PropertyKey, V>, values: { [key: string]: V })\nexport function set<K, V>(obj: ObservableMap<K, V>, key: K, value: V)\nexport function set<T>(obj: ObservableSet<T>, value: T)\nexport function set<T>(obj: IObservableArray<T>, index: number, value: T)\nexport function set<T extends Object>(obj: T, values: { [key: string]: any })\nexport function set<T extends Object>(obj: T, key: PropertyKey, value: any)\nexport function set(obj: any, key: any, value?: any): void {\n if (arguments.length === 2 && !isObservableSet(obj)) {\n startBatch()\n const values = key\n try {\n for (let key in values) {\n set(obj, key, values[key])\n }\n } finally {\n endBatch()\n }\n return\n }\n if (isObservableObject(obj)) {\n ;(obj as any as IIsObservableObject)[$mobx].set_(key, value)\n } else if (isObservableMap(obj)) {\n obj.set(key, value)\n } else if (isObservableSet(obj)) {\n obj.add(key)\n } else if (isObservableArray(obj)) {\n if (typeof key !== \"number\") {\n key = parseInt(key, 10)\n }\n if (key < 0) {\n die(`Invalid index: '${key}'`)\n }\n startBatch()\n if (key >= obj.length) {\n obj.length = key + 1\n }\n obj[key] = value\n endBatch()\n } else {\n die(8)\n }\n}\n\nexport function remove<K, V>(obj: ObservableMap<K, V>, key: K)\nexport function remove<T>(obj: ObservableSet<T>, key: T)\nexport function remove<T>(obj: IObservableArray<T>, index: number)\nexport function remove<T extends Object>(obj: T, key: string)\nexport function remove(obj: any, key: any): void {\n if (isObservableObject(obj)) {\n ;(obj as any as IIsObservableObject)[$mobx].delete_(key)\n } else if (isObservableMap(obj)) {\n obj.delete(key)\n } else if (isObservableSet(obj)) {\n obj.delete(key)\n } else if (isObservableArray(obj)) {\n if (typeof key !== \"number\") {\n key = parseInt(key, 10)\n }\n obj.splice(key, 1)\n } else {\n die(9)\n }\n}\n\nexport function has<K>(obj: ObservableMap<K, any>, key: K): boolean\nexport function has<T>(obj: ObservableSet<T>, key: T): boolean\nexport function has<T>(obj: IObservableArray<T>, index: number): boolean\nexport function has<T extends Object>(obj: T, key: string): boolean\nexport function has(obj: any, key: any): boolean {\n if (isObservableObject(obj)) {\n return (obj as any as IIsObservableObject)[$mobx].has_(key)\n } else if (isObservableMap(obj)) {\n return obj.has(key)\n } else if (isObservableSet(obj)) {\n return obj.has(key)\n } else if (isObservableArray(obj)) {\n return key >= 0 && key < obj.length\n }\n die(10)\n}\n\nexport function get<K, V>(obj: ObservableMap<K, V>, key: K): V | undefined\nexport function get<T>(obj: IObservableArray<T>, index: number): T | undefined\nexport function get<T extends Object>(obj: T, key: string): any\nexport function get(obj: any, key: any): any {\n if (!has(obj, key)) {\n return undefined\n }\n if (isObservableObject(obj)) {\n return (obj as any as IIsObservableObject)[$mobx].get_(key)\n } else if (isObservableMap(obj)) {\n return obj.get(key)\n } else if (isObservableArray(obj)) {\n return obj[key]\n }\n die(11)\n}\n\nexport function apiDefineProperty(obj: Object, key: PropertyKey, descriptor: PropertyDescriptor) {\n if (isObservableObject(obj)) {\n return (obj as any as IIsObservableObject)[$mobx].defineProperty_(key, descriptor)\n }\n die(39)\n}\n\nexport function apiOwnKeys(obj: Object) {\n if (isObservableObject(obj)) {\n return (obj as any as IIsObservableObject)[$mobx].ownKeys_()\n }\n die(38)\n}\n", "import {\n IArrayDidChange,\n IComputedValue,\n IMapDidChange,\n IObjectDidChange,\n IObservableArray,\n IObservableValue,\n IValueDidChange,\n Lambda,\n ObservableMap,\n getAdministration,\n ObservableSet,\n ISetDidChange,\n isFunction\n} from \"../internal\"\n\nexport function observe<T>(\n value: IObservableValue<T> | IComputedValue<T>,\n listener: (change: IValueDidChange<T>) => void,\n fireImmediately?: boolean\n): Lambda\nexport function observe<T>(\n observableArray: IObservableArray<T> | Array<T>,\n listener: (change: IArrayDidChange<T>) => void,\n fireImmediately?: boolean\n): Lambda\nexport function observe<V>(\n // ObservableSet/ObservableMap are required despite they implement Set/Map: https://github.com/mobxjs/mobx/pull/3180#discussion_r746542929\n observableSet: ObservableSet<V> | Set<V>,\n listener: (change: ISetDidChange<V>) => void,\n fireImmediately?: boolean\n): Lambda\nexport function observe<K, V>(\n observableMap: ObservableMap<K, V> | Map<K, V>,\n listener: (change: IMapDidChange<K, V>) => void,\n fireImmediately?: boolean\n): Lambda\nexport function observe<K, V>(\n observableMap: ObservableMap<K, V> | Map<K, V>,\n property: K,\n listener: (change: IValueDidChange<V>) => void,\n fireImmediately?: boolean\n): Lambda\nexport function observe(\n object: Object,\n listener: (change: IObjectDidChange) => void,\n fireImmediately?: boolean\n): Lambda\nexport function observe<T, K extends keyof T>(\n object: T,\n property: K,\n listener: (change: IValueDidChange<T[K]>) => void,\n fireImmediately?: boolean\n): Lambda\nexport function observe(thing, propOrCb?, cbOrFire?, fireImmediately?): Lambda {\n if (isFunction(cbOrFire)) {\n return observeObservableProperty(thing, propOrCb, cbOrFire, fireImmediately)\n } else {\n return observeObservable(thing, propOrCb, cbOrFire)\n }\n}\n\nfunction observeObservable(thing, listener, fireImmediately: boolean) {\n return getAdministration(thing).observe_(listener, fireImmediately)\n}\n\nfunction observeObservableProperty(thing, property, listener, fireImmediately: boolean) {\n return getAdministration(thing, property).observe_(listener, fireImmediately)\n}\n", "import {\n isObservable,\n isObservableArray,\n isObservableValue,\n isObservableMap,\n isObservableSet,\n isComputedValue,\n die,\n apiOwnKeys,\n objectPrototype\n} from \"../internal\"\n\nfunction cache<K, V>(map: Map<any, any>, key: K, value: V): V {\n map.set(key, value)\n return value\n}\n\nfunction toJSHelper(source, __alreadySeen: Map<any, any>) {\n if (\n source == null ||\n typeof source !== \"object\" ||\n source instanceof Date ||\n !isObservable(source)\n ) {\n return source\n }\n\n if (isObservableValue(source) || isComputedValue(source)) {\n return toJSHelper(source.get(), __alreadySeen)\n }\n if (__alreadySeen.has(source)) {\n return __alreadySeen.get(source)\n }\n if (isObservableArray(source)) {\n const res = cache(__alreadySeen, source, new Array(source.length))\n source.forEach((value, idx) => {\n res[idx] = toJSHelper(value, __alreadySeen)\n })\n return res\n }\n if (isObservableSet(source)) {\n const res = cache(__alreadySeen, source, new Set())\n source.forEach(value => {\n res.add(toJSHelper(value, __alreadySeen))\n })\n return res\n }\n if (isObservableMap(source)) {\n const res = cache(__alreadySeen, source, new Map())\n source.forEach((value, key) => {\n res.set(key, toJSHelper(value, __alreadySeen))\n })\n return res\n } else {\n // must be observable object\n const res = cache(__alreadySeen, source, {})\n apiOwnKeys(source).forEach((key: any) => {\n if (objectPrototype.propertyIsEnumerable.call(source, key)) {\n res[key] = toJSHelper(source[key], __alreadySeen)\n }\n })\n return res\n }\n}\n\n/**\n * Recursively converts an observable to it's non-observable native counterpart.\n * It does NOT recurse into non-observables, these are left as they are, even if they contain observables.\n * Computed and other non-enumerable properties are completely ignored.\n * Complex scenarios require custom solution, eg implementing `toJSON` or using `serializr` lib.\n */\nexport function toJS<T>(source: T, options?: any): T {\n if (__DEV__ && options) {\n die(\"toJS no longer supports options\")\n }\n return toJSHelper(source, new Map())\n}\n", "import { TraceMode, die, getAtom, globalState } from \"../internal\"\n\nexport function trace(thing?: any, prop?: string, enterBreakPoint?: boolean): void\nexport function trace(thing?: any, enterBreakPoint?: boolean): void\nexport function trace(enterBreakPoint?: boolean): void\nexport function trace(...args: any[]): void {\n if (!__DEV__) {\n die(`trace() is not available in production builds`)\n }\n let enterBreakPoint = false\n if (typeof args[args.length - 1] === \"boolean\") {\n enterBreakPoint = args.pop()\n }\n const derivation = getAtomFromArgs(args)\n if (!derivation) {\n return die(\n `'trace(break?)' can only be used inside a tracked computed value or a Reaction. Consider passing in the computed value or reaction explicitly`\n )\n }\n if (derivation.isTracing_ === TraceMode.NONE) {\n console.log(`[mobx.trace] '${derivation.name_}' tracing enabled`)\n }\n derivation.isTracing_ = enterBreakPoint ? TraceMode.BREAK : TraceMode.LOG\n}\n\nfunction getAtomFromArgs(args): any {\n switch (args.length) {\n case 0:\n return globalState.trackingDerivation\n case 1:\n return getAtom(args[0])\n case 2:\n return getAtom(args[0], args[1])\n }\n}\n", "import { endBatch, startBatch } from \"../internal\"\n\n/**\n * During a transaction no views are updated until the end of the transaction.\n * The transaction will be run synchronously nonetheless.\n *\n * @param action a function that updates some reactive state\n * @returns any value that was returned by the 'action' parameter.\n */\nexport function transaction<T>(action: () => T, thisArg = undefined): T {\n startBatch()\n try {\n return action.apply(thisArg)\n } finally {\n endBatch()\n }\n}\n", "import {\n $mobx,\n IReactionDisposer,\n Lambda,\n autorun,\n createAction,\n getNextId,\n die,\n allowStateChanges\n} from \"../internal\"\n\nexport interface IWhenOptions {\n name?: string\n timeout?: number\n onError?: (error: any) => void\n}\n\nexport function when(\n predicate: () => boolean,\n opts?: IWhenOptions\n): Promise<void> & { cancel(): void }\nexport function when(\n predicate: () => boolean,\n effect: Lambda,\n opts?: IWhenOptions\n): IReactionDisposer\nexport function when(predicate: any, arg1?: any, arg2?: any): any {\n if (arguments.length === 1 || (arg1 && typeof arg1 === \"object\")) {\n return whenPromise(predicate, arg1)\n }\n return _when(predicate, arg1, arg2 || {})\n}\n\nfunction _when(predicate: () => boolean, effect: Lambda, opts: IWhenOptions): IReactionDisposer {\n let timeoutHandle: any\n if (typeof opts.timeout === \"number\") {\n const error = new Error(\"WHEN_TIMEOUT\")\n timeoutHandle = setTimeout(() => {\n if (!disposer[$mobx].isDisposed_) {\n disposer()\n if (opts.onError) {\n opts.onError(error)\n } else {\n throw error\n }\n }\n }, opts.timeout)\n }\n\n opts.name = __DEV__ ? opts.name || \"When@\" + getNextId() : \"When\"\n const effectAction = createAction(\n __DEV__ ? opts.name + \"-effect\" : \"When-effect\",\n effect as Function\n )\n // eslint-disable-next-line\n var disposer = autorun(r => {\n // predicate should not change state\n let cond = allowStateChanges(false, predicate)\n if (cond) {\n r.dispose()\n if (timeoutHandle) {\n clearTimeout(timeoutHandle)\n }\n effectAction()\n }\n }, opts)\n return disposer\n}\n\nfunction whenPromise(\n predicate: () => boolean,\n opts?: IWhenOptions\n): Promise<void> & { cancel(): void } {\n if (__DEV__ && opts && opts.onError) {\n return die(`the options 'onError' and 'promise' cannot be combined`)\n }\n let cancel\n const res = new Promise((resolve, reject) => {\n let disposer = _when(predicate, resolve as Lambda, { ...opts, onError: reject })\n cancel = () => {\n disposer()\n reject(new Error(\"WHEN_CANCELLED\"))\n }\n })\n ;(res as any).cancel = cancel\n return res as any\n}\n", "import {\n $mobx,\n IIsObservableObject,\n ObservableObjectAdministration,\n warnAboutProxyRequirement,\n assertProxies,\n die,\n isStringish,\n globalState,\n CreateObservableOptions,\n asObservableObject\n} from \"../internal\"\n\nfunction getAdm(target): ObservableObjectAdministration {\n return target[$mobx]\n}\n\n// Optimization: we don't need the intermediate objects and could have a completely custom administration for DynamicObjects,\n// and skip either the internal values map, or the base object with its property descriptors!\nconst objectProxyTraps: ProxyHandler<any> = {\n has(target: IIsObservableObject, name: PropertyKey): boolean {\n if (__DEV__ && globalState.trackingDerivation) {\n warnAboutProxyRequirement(\n \"detect new properties using the 'in' operator. Use 'has' from 'mobx' instead.\"\n )\n }\n return getAdm(target).has_(name)\n },\n get(target: IIsObservableObject, name: PropertyKey): any {\n return getAdm(target).get_(name)\n },\n set(target: IIsObservableObject, name: PropertyKey, value: any): boolean {\n if (!isStringish(name)) {\n return false\n }\n if (__DEV__ && !getAdm(target).values_.has(name)) {\n warnAboutProxyRequirement(\n \"add a new observable property through direct assignment. Use 'set' from 'mobx' instead.\"\n )\n }\n // null (intercepted) -> true (success)\n return getAdm(target).set_(name, value, true) ?? true\n },\n deleteProperty(target: IIsObservableObject, name: PropertyKey): boolean {\n if (__DEV__) {\n warnAboutProxyRequirement(\n \"delete properties from an observable object. Use 'remove' from 'mobx' instead.\"\n )\n }\n if (!isStringish(name)) {\n return false\n }\n // null (intercepted) -> true (success)\n return getAdm(target).delete_(name, true) ?? true\n },\n defineProperty(\n target: IIsObservableObject,\n name: PropertyKey,\n descriptor: PropertyDescriptor\n ): boolean {\n if (__DEV__) {\n warnAboutProxyRequirement(\n \"define property on an observable object. Use 'defineProperty' from 'mobx' instead.\"\n )\n }\n // null (intercepted) -> true (success)\n return getAdm(target).defineProperty_(name, descriptor) ?? true\n },\n ownKeys(target: IIsObservableObject): ArrayLike<string | symbol> {\n if (__DEV__ && globalState.trackingDerivation) {\n warnAboutProxyRequirement(\n \"iterate keys to detect added / removed properties. Use 'keys' from 'mobx' instead.\"\n )\n }\n return getAdm(target).ownKeys_()\n },\n preventExtensions(target) {\n die(13)\n }\n}\n\nexport function asDynamicObservableObject(\n target: any,\n options?: CreateObservableOptions\n): IIsObservableObject {\n assertProxies()\n target = asObservableObject(target, options)\n return (target[$mobx].proxy_ ??= new Proxy(target, objectProxyTraps))\n}\n", "import { Lambda, once, untrackedEnd, untrackedStart, die } from \"../internal\"\n\nexport type IInterceptor<T> = (change: T) => T | null\n\nexport interface IInterceptable<T> {\n interceptors_: IInterceptor<T>[] | undefined\n}\n\nexport function hasInterceptors(interceptable: IInterceptable<any>) {\n return interceptable.interceptors_ !== undefined && interceptable.interceptors_.length > 0\n}\n\nexport function registerInterceptor<T>(\n interceptable: IInterceptable<T>,\n handler: IInterceptor<T>\n): Lambda {\n const interceptors = interceptable.interceptors_ || (interceptable.interceptors_ = [])\n interceptors.push(handler)\n return once(() => {\n const idx = interceptors.indexOf(handler)\n if (idx !== -1) {\n interceptors.splice(idx, 1)\n }\n })\n}\n\nexport function interceptChange<T>(\n interceptable: IInterceptable<T | null>,\n change: T | null\n): T | null {\n const prevU = untrackedStart()\n try {\n // Interceptor can modify the array, copy it to avoid concurrent modification, see #1950\n const interceptors = [...(interceptable.interceptors_ || [])]\n for (let i = 0, l = interceptors.length; i < l; i++) {\n change = interceptors[i](change)\n if (change && !(change as any).type) {\n die(14)\n }\n if (!change) {\n break\n }\n }\n return change\n } finally {\n untrackedEnd(prevU)\n }\n}\n", "import { Lambda, once, untrackedEnd, untrackedStart } from \"../internal\"\n\nexport interface IListenable {\n changeListeners_: Function[] | undefined\n}\n\nexport function hasListeners(listenable: IListenable) {\n return listenable.changeListeners_ !== undefined && listenable.changeListeners_.length > 0\n}\n\nexport function registerListener(listenable: IListenable, handler: Function): Lambda {\n const listeners = listenable.changeListeners_ || (listenable.changeListeners_ = [])\n listeners.push(handler)\n return once(() => {\n const idx = listeners.indexOf(handler)\n if (idx !== -1) {\n listeners.splice(idx, 1)\n }\n })\n}\n\nexport function notifyListeners<T>(listenable: IListenable, change: T) {\n const prevU = untrackedStart()\n let listeners = listenable.changeListeners_\n if (!listeners) {\n return\n }\n listeners = listeners.slice()\n for (let i = 0, l = listeners.length; i < l; i++) {\n listeners[i](change)\n }\n untrackedEnd(prevU)\n}\n", "import {\n $mobx,\n asObservableObject,\n AnnotationsMap,\n endBatch,\n startBatch,\n CreateObservableOptions,\n ObservableObjectAdministration,\n collectStoredAnnotations,\n isPlainObject,\n isObservableObject,\n die,\n ownKeys,\n extendObservable,\n addHiddenProp,\n storedAnnotationsSymbol\n} from \"../internal\"\n\n// Hack based on https://github.com/Microsoft/TypeScript/issues/14829#issuecomment-322267089\n// We need this, because otherwise, AdditionalKeys is going to be inferred to be any\n// set of superfluous keys. But, we rather want to get a compile error unless AdditionalKeys is\n// _explicity_ passed as generic argument\n// Fixes: https://github.com/mobxjs/mobx/issues/2325#issuecomment-691070022\ntype NoInfer<T> = [T][T extends any ? 0 : never]\n\nexport function makeObservable<T extends object, AdditionalKeys extends PropertyKey = never>(\n target: T,\n annotations?: AnnotationsMap<T, NoInfer<AdditionalKeys>>,\n options?: CreateObservableOptions\n): T {\n const adm: ObservableObjectAdministration = asObservableObject(target, options)[$mobx]\n startBatch()\n try {\n if (__DEV__ && annotations && target[storedAnnotationsSymbol]) {\n die(\n `makeObservable second arg must be nullish when using decorators. Mixing @decorator syntax with annotations is not supported.`\n )\n }\n // Default to decorators\n annotations ??= collectStoredAnnotations(target)\n\n // Annotate\n ownKeys(annotations).forEach(key => adm.make_(key, annotations![key]))\n } finally {\n endBatch()\n }\n return target\n}\n\n// proto[keysSymbol] = new Set<PropertyKey>()\nconst keysSymbol = Symbol(\"mobx-keys\")\n\nexport function makeAutoObservable<T extends object, AdditionalKeys extends PropertyKey = never>(\n target: T,\n overrides?: AnnotationsMap<T, NoInfer<AdditionalKeys>>,\n options?: CreateObservableOptions\n): T {\n if (__DEV__) {\n if (!isPlainObject(target) && !isPlainObject(Object.getPrototypeOf(target))) {\n die(`'makeAutoObservable' can only be used for classes that don't have a superclass`)\n }\n if (isObservableObject(target)) {\n die(`makeAutoObservable can only be used on objects not already made observable`)\n }\n }\n\n // Optimization: avoid visiting protos\n // Assumes that annotation.make_/.extend_ works the same for plain objects\n if (isPlainObject(target)) {\n return extendObservable(target, target, overrides, options)\n }\n\n const adm: ObservableObjectAdministration = asObservableObject(target, options)[$mobx]\n\n // Optimization: cache keys on proto\n // Assumes makeAutoObservable can be called only once per object and can't be used in subclass\n if (!target[keysSymbol]) {\n const proto = Object.getPrototypeOf(target)\n const keys = new Set([...ownKeys(target), ...ownKeys(proto)])\n keys.delete(\"constructor\")\n keys.delete($mobx)\n addHiddenProp(proto, keysSymbol, keys)\n }\n\n startBatch()\n try {\n target[keysSymbol].forEach(key =>\n adm.make_(\n key,\n // must pass \"undefined\" for { key: undefined }\n !overrides ? true : key in overrides ? overrides[key] : true\n )\n )\n } finally {\n endBatch()\n }\n return target\n}\n", "import {\n $mobx,\n Atom,\n EMPTY_ARRAY,\n IAtom,\n IEnhancer,\n IInterceptable,\n IInterceptor,\n IListenable,\n Lambda,\n addHiddenFinalProp,\n checkIfStateModificationsAreAllowed,\n createInstanceofPredicate,\n getNextId,\n hasInterceptors,\n hasListeners,\n interceptChange,\n isObject,\n isSpyEnabled,\n notifyListeners,\n registerInterceptor,\n registerListener,\n spyReportEnd,\n spyReportStart,\n allowStateChangesStart,\n allowStateChangesEnd,\n assertProxies,\n reserveArrayBuffer,\n hasProp,\n die,\n globalState\n} from \"../internal\"\n\nconst SPLICE = \"splice\"\nexport const UPDATE = \"update\"\nexport const MAX_SPLICE_SIZE = 10000 // See e.g. https://github.com/mobxjs/mobx/issues/859\n\nexport interface IObservableArray<T = any> extends Array<T> {\n spliceWithArray(index: number, deleteCount?: number, newItems?: T[]): T[]\n clear(): T[]\n replace(newItems: T[]): T[]\n remove(value: T): boolean\n toJSON(): T[]\n}\n\ninterface IArrayBaseChange<T> {\n object: IObservableArray<T>\n observableKind: \"array\"\n debugObjectName: string\n index: number\n}\n\nexport type IArrayDidChange<T = any> = IArrayUpdate<T> | IArraySplice<T>\n\nexport interface IArrayUpdate<T = any> extends IArrayBaseChange<T> {\n type: \"update\"\n newValue: T\n oldValue: T\n}\n\nexport interface IArraySplice<T = any> extends IArrayBaseChange<T> {\n type: \"splice\"\n added: T[]\n addedCount: number\n removed: T[]\n removedCount: number\n}\n\nexport interface IArrayWillChange<T = any> {\n object: IObservableArray<T>\n index: number\n type: \"update\"\n newValue: T\n}\n\nexport interface IArrayWillSplice<T = any> {\n object: IObservableArray<T>\n index: number\n type: \"splice\"\n added: T[]\n removedCount: number\n}\n\nconst arrayTraps = {\n get(target, name) {\n const adm: ObservableArrayAdministration = target[$mobx]\n if (name === $mobx) {\n return adm\n }\n if (name === \"length\") {\n return adm.getArrayLength_()\n }\n if (typeof name === \"string\" && !isNaN(name as any)) {\n return adm.get_(parseInt(name))\n }\n if (hasProp(arrayExtensions, name)) {\n return arrayExtensions[name]\n }\n return target[name]\n },\n set(target, name, value): boolean {\n const adm: ObservableArrayAdministration = target[$mobx]\n if (name === \"length\") {\n adm.setArrayLength_(value)\n }\n if (typeof name === \"symbol\" || isNaN(name)) {\n target[name] = value\n } else {\n // numeric string\n adm.set_(parseInt(name), value)\n }\n return true\n },\n preventExtensions() {\n die(15)\n }\n}\n\nexport class ObservableArrayAdministration\n implements IInterceptable<IArrayWillChange<any> | IArrayWillSplice<any>>, IListenable\n{\n atom_: IAtom\n readonly values_: any[] = [] // this is the prop that gets proxied, so can't replace it!\n interceptors_\n changeListeners_\n enhancer_: (newV: any, oldV: any | undefined) => any\n dehancer: any\n proxy_!: IObservableArray<any>\n lastKnownLength_ = 0\n\n constructor(\n name = __DEV__ ? \"ObservableArray@\" + getNextId() : \"ObservableArray\",\n enhancer: IEnhancer<any>,\n public owned_: boolean,\n public legacyMode_: boolean\n ) {\n this.atom_ = new Atom(name)\n this.enhancer_ = (newV, oldV) =>\n enhancer(newV, oldV, __DEV__ ? name + \"[..]\" : \"ObservableArray[..]\")\n }\n\n dehanceValue_(value: any): any {\n if (this.dehancer !== undefined) {\n return this.dehancer(value)\n }\n return value\n }\n\n dehanceValues_(values: any[]): any[] {\n if (this.dehancer !== undefined && values.length > 0) {\n return values.map(this.dehancer) as any\n }\n return values\n }\n\n intercept_(handler: IInterceptor<IArrayWillChange<any> | IArrayWillSplice<any>>): Lambda {\n return registerInterceptor<IArrayWillChange<any> | IArrayWillSplice<any>>(this, handler)\n }\n\n observe_(\n listener: (changeData: IArrayDidChange<any>) => void,\n fireImmediately = false\n ): Lambda {\n if (fireImmediately) {\n listener(<IArraySplice<any>>{\n observableKind: \"array\",\n object: this.proxy_ as any,\n debugObjectName: this.atom_.name_,\n type: \"splice\",\n index: 0,\n added: this.values_.slice(),\n addedCount: this.values_.length,\n removed: [],\n removedCount: 0\n })\n }\n return registerListener(this, listener)\n }\n\n getArrayLength_(): number {\n this.atom_.reportObserved()\n return this.values_.length\n }\n\n setArrayLength_(newLength: number) {\n if (typeof newLength !== \"number\" || isNaN(newLength) || newLength < 0) {\n die(\"Out of range: \" + newLength)\n }\n let currentLength = this.values_.length\n if (newLength === currentLength) {\n return\n } else if (newLength > currentLength) {\n const newItems = new Array(newLength - currentLength)\n for (let i = 0; i < newLength - currentLength; i++) {\n newItems[i] = undefined\n } // No Array.fill everywhere...\n this.spliceWithArray_(currentLength, 0, newItems)\n } else {\n this.spliceWithArray_(newLength, currentLength - newLength)\n }\n }\n\n updateArrayLength_(oldLength: number, delta: number) {\n if (oldLength !== this.lastKnownLength_) {\n die(16)\n }\n this.lastKnownLength_ += delta\n if (this.legacyMode_ && delta > 0) {\n reserveArrayBuffer(oldLength + delta + 1)\n }\n }\n\n spliceWithArray_(index: number, deleteCount?: number, newItems?: any[]): any[] {\n checkIfStateModificationsAreAllowed(this.atom_)\n const length = this.values_.length\n\n if (index === undefined) {\n index = 0\n } else if (index > length) {\n index = length\n } else if (index < 0) {\n index = Math.max(0, length + index)\n }\n\n if (arguments.length === 1) {\n deleteCount = length - index\n } else if (deleteCount === undefined || deleteCount === null) {\n deleteCount = 0\n } else {\n deleteCount = Math.max(0, Math.min(deleteCount, length - index))\n }\n\n if (newItems === undefined) {\n newItems = EMPTY_ARRAY\n }\n\n if (hasInterceptors(this)) {\n const change = interceptChange<IArrayWillSplice<any>>(this as any, {\n object: this.proxy_ as any,\n type: SPLICE,\n index,\n removedCount: deleteCount,\n added: newItems\n })\n if (!change) {\n return EMPTY_ARRAY\n }\n deleteCount = change.removedCount\n newItems = change.added\n }\n\n newItems =\n newItems.length === 0 ? newItems : newItems.map(v => this.enhancer_(v, undefined))\n if (this.legacyMode_ || __DEV__) {\n const lengthDelta = newItems.length - deleteCount\n this.updateArrayLength_(length, lengthDelta) // checks if internal array wasn't modified\n }\n const res = this.spliceItemsIntoValues_(index, deleteCount, newItems)\n\n if (deleteCount !== 0 || newItems.length !== 0) {\n this.notifyArraySplice_(index, newItems, res)\n }\n return this.dehanceValues_(res)\n }\n\n spliceItemsIntoValues_(index: number, deleteCount: number, newItems: any[]): any[] {\n if (newItems.length < MAX_SPLICE_SIZE) {\n return this.values_.splice(index, deleteCount, ...newItems)\n } else {\n // The items removed by the splice\n const res = this.values_.slice(index, index + deleteCount)\n // The items that that should remain at the end of the array\n let oldItems = this.values_.slice(index + deleteCount)\n // New length is the previous length + addition count - deletion count\n this.values_.length += newItems.length - deleteCount\n for (let i = 0; i < newItems.length; i++) {\n this.values_[index + i] = newItems[i]\n }\n for (let i = 0; i < oldItems.length; i++) {\n this.values_[index + newItems.length + i] = oldItems[i]\n }\n return res\n }\n }\n\n notifyArrayChildUpdate_(index: number, newValue: any, oldValue: any) {\n const notifySpy = !this.owned_ && isSpyEnabled()\n const notify = hasListeners(this)\n const change: IArrayDidChange | null =\n notify || notifySpy\n ? ({\n observableKind: \"array\",\n object: this.proxy_,\n type: UPDATE,\n debugObjectName: this.atom_.name_,\n index,\n newValue,\n oldValue\n } as const)\n : null\n\n // The reason why this is on right hand side here (and not above), is this way the uglifier will drop it, but it won't\n // cause any runtime overhead in development mode without NODE_ENV set, unless spying is enabled\n if (__DEV__ && notifySpy) {\n spyReportStart(change!)\n }\n this.atom_.reportChanged()\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n\n notifyArraySplice_(index: number, added: any[], removed: any[]) {\n const notifySpy = !this.owned_ && isSpyEnabled()\n const notify = hasListeners(this)\n const change: IArraySplice | null =\n notify || notifySpy\n ? ({\n observableKind: \"array\",\n object: this.proxy_,\n debugObjectName: this.atom_.name_,\n type: SPLICE,\n index,\n removed,\n added,\n removedCount: removed.length,\n addedCount: added.length\n } as const)\n : null\n\n if (__DEV__ && notifySpy) {\n spyReportStart(change!)\n }\n this.atom_.reportChanged()\n // conform: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/observe\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n\n get_(index: number): any | undefined {\n if (index < this.values_.length) {\n this.atom_.reportObserved()\n return this.dehanceValue_(this.values_[index])\n }\n console.warn(\n __DEV__\n ? `[mobx] Out of bounds read: ${index}`\n : `[mobx.array] Attempt to read an array index (${index}) that is out of bounds (${this.values_.length}). Please check length first. Out of bound indices will not be tracked by MobX`\n )\n }\n\n set_(index: number, newValue: any) {\n const values = this.values_\n if (index < values.length) {\n // update at index in range\n checkIfStateModificationsAreAllowed(this.atom_)\n const oldValue = values[index]\n if (hasInterceptors(this)) {\n const change = interceptChange<IArrayWillChange<any>>(this as any, {\n type: UPDATE,\n object: this.proxy_ as any, // since \"this\" is the real array we need to pass its proxy\n index,\n newValue\n })\n if (!change) {\n return\n }\n newValue = change.newValue\n }\n newValue = this.enhancer_(newValue, oldValue)\n const changed = newValue !== oldValue\n if (changed) {\n values[index] = newValue\n this.notifyArrayChildUpdate_(index, newValue, oldValue)\n }\n } else if (index === values.length) {\n // add a new item\n this.spliceWithArray_(index, 0, [newValue])\n } else {\n // out of bounds\n die(17, index, values.length)\n }\n }\n}\n\nexport function createObservableArray<T>(\n initialValues: T[] | undefined,\n enhancer: IEnhancer<T>,\n name = __DEV__ ? \"ObservableArray@\" + getNextId() : \"ObservableArray\",\n owned = false\n): IObservableArray<T> {\n assertProxies()\n const adm = new ObservableArrayAdministration(name, enhancer, owned, false)\n addHiddenFinalProp(adm.values_, $mobx, adm)\n const proxy = new Proxy(adm.values_, arrayTraps) as any\n adm.proxy_ = proxy\n if (initialValues && initialValues.length) {\n const prev = allowStateChangesStart(true)\n adm.spliceWithArray_(0, 0, initialValues)\n allowStateChangesEnd(prev)\n }\n return proxy\n}\n\n// eslint-disable-next-line\nexport var arrayExtensions = {\n clear(): any[] {\n return this.splice(0)\n },\n\n replace(newItems: any[]) {\n const adm: ObservableArrayAdministration = this[$mobx]\n return adm.spliceWithArray_(0, adm.values_.length, newItems)\n },\n\n // Used by JSON.stringify\n toJSON(): any[] {\n return this.slice()\n },\n\n /*\n * functions that do alter the internal structure of the array, (based on lib.es6.d.ts)\n * since these functions alter the inner structure of the array, the have side effects.\n * Because the have side effects, they should not be used in computed function,\n * and for that reason the do not call dependencyState.notifyObserved\n */\n splice(index: number, deleteCount?: number, ...newItems: any[]): any[] {\n const adm: ObservableArrayAdministration = this[$mobx]\n switch (arguments.length) {\n case 0:\n return []\n case 1:\n return adm.spliceWithArray_(index)\n case 2:\n return adm.spliceWithArray_(index, deleteCount)\n }\n return adm.spliceWithArray_(index, deleteCount, newItems)\n },\n\n spliceWithArray(index: number, deleteCount?: number, newItems?: any[]): any[] {\n return (this[$mobx] as ObservableArrayAdministration).spliceWithArray_(\n index,\n deleteCount,\n newItems\n )\n },\n\n push(...items: any[]): number {\n const adm: ObservableArrayAdministration = this[$mobx]\n adm.spliceWithArray_(adm.values_.length, 0, items)\n return adm.values_.length\n },\n\n pop() {\n return this.splice(Math.max(this[$mobx].values_.length - 1, 0), 1)[0]\n },\n\n shift() {\n return this.splice(0, 1)[0]\n },\n\n unshift(...items: any[]): number {\n const adm: ObservableArrayAdministration = this[$mobx]\n adm.spliceWithArray_(0, 0, items)\n return adm.values_.length\n },\n\n reverse(): any[] {\n // reverse by default mutates in place before returning the result\n // which makes it both a 'derivation' and a 'mutation'.\n if (globalState.trackingDerivation) {\n die(37, \"reverse\")\n }\n this.replace(this.slice().reverse())\n return this\n },\n\n sort(): any[] {\n // sort by default mutates in place before returning the result\n // which goes against all good practices. Let's not change the array in place!\n if (globalState.trackingDerivation) {\n die(37, \"sort\")\n }\n const copy = this.slice()\n copy.sort.apply(copy, arguments)\n this.replace(copy)\n return this\n },\n\n remove(value: any): boolean {\n const adm: ObservableArrayAdministration = this[$mobx]\n const idx = adm.dehanceValues_(adm.values_).indexOf(value)\n if (idx > -1) {\n this.splice(idx, 1)\n return true\n }\n return false\n }\n}\n\n/**\n * Wrap function from prototype\n * Without this, everything works as well, but this works\n * faster as everything works on unproxied values\n */\naddArrayExtension(\"concat\", simpleFunc)\naddArrayExtension(\"flat\", simpleFunc)\naddArrayExtension(\"includes\", simpleFunc)\naddArrayExtension(\"indexOf\", simpleFunc)\naddArrayExtension(\"join\", simpleFunc)\naddArrayExtension(\"lastIndexOf\", simpleFunc)\naddArrayExtension(\"slice\", simpleFunc)\naddArrayExtension(\"toString\", simpleFunc)\naddArrayExtension(\"toLocaleString\", simpleFunc)\n// map\naddArrayExtension(\"every\", mapLikeFunc)\naddArrayExtension(\"filter\", mapLikeFunc)\naddArrayExtension(\"find\", mapLikeFunc)\naddArrayExtension(\"findIndex\", mapLikeFunc)\naddArrayExtension(\"flatMap\", mapLikeFunc)\naddArrayExtension(\"forEach\", mapLikeFunc)\naddArrayExtension(\"map\", mapLikeFunc)\naddArrayExtension(\"some\", mapLikeFunc)\n// reduce\naddArrayExtension(\"reduce\", reduceLikeFunc)\naddArrayExtension(\"reduceRight\", reduceLikeFunc)\n\nfunction addArrayExtension(funcName, funcFactory) {\n if (typeof Array.prototype[funcName] === \"function\") {\n arrayExtensions[funcName] = funcFactory(funcName)\n }\n}\n\n// Report and delegate to dehanced array\nfunction simpleFunc(funcName) {\n return function () {\n const adm: ObservableArrayAdministration = this[$mobx]\n adm.atom_.reportObserved()\n const dehancedValues = adm.dehanceValues_(adm.values_)\n return dehancedValues[funcName].apply(dehancedValues, arguments)\n }\n}\n\n// Make sure callbacks recieve correct array arg #2326\nfunction mapLikeFunc(funcName) {\n return function (callback, thisArg) {\n const adm: ObservableArrayAdministration = this[$mobx]\n adm.atom_.reportObserved()\n const dehancedValues = adm.dehanceValues_(adm.values_)\n return dehancedValues[funcName]((element, index) => {\n return callback.call(thisArg, element, index, this)\n })\n }\n}\n\n// Make sure callbacks recieve correct array arg #2326\nfunction reduceLikeFunc(funcName) {\n return function () {\n const adm: ObservableArrayAdministration = this[$mobx]\n adm.atom_.reportObserved()\n const dehancedValues = adm.dehanceValues_(adm.values_)\n // #2432 - reduce behavior depends on arguments.length\n const callback = arguments[0]\n arguments[0] = (accumulator, currentValue, index) => {\n return callback(accumulator, currentValue, index, this)\n }\n return dehancedValues[funcName].apply(dehancedValues, arguments)\n }\n}\n\nconst isObservableArrayAdministration = createInstanceofPredicate(\n \"ObservableArrayAdministration\",\n ObservableArrayAdministration\n)\n\nexport function isObservableArray(thing): thing is IObservableArray<any> {\n return isObject(thing) && isObservableArrayAdministration(thing[$mobx])\n}\n", "import {\n $mobx,\n IEnhancer,\n IInterceptable,\n IInterceptor,\n IListenable,\n Lambda,\n ObservableValue,\n checkIfStateModificationsAreAllowed,\n createAtom,\n createInstanceofPredicate,\n deepEnhancer,\n getNextId,\n getPlainObjectKeys,\n hasInterceptors,\n hasListeners,\n interceptChange,\n isES6Map,\n isPlainObject,\n isSpyEnabled,\n makeIterable,\n notifyListeners,\n referenceEnhancer,\n registerInterceptor,\n registerListener,\n spyReportEnd,\n spyReportStart,\n stringifyKey,\n transaction,\n untracked,\n onBecomeUnobserved,\n globalState,\n die,\n isFunction,\n UPDATE,\n IAtom,\n PureSpyEvent,\n allowStateChanges\n} from \"../internal\"\n\nexport interface IKeyValueMap<V = any> {\n [key: string]: V\n}\n\nexport type IMapEntry<K = any, V = any> = [K, V]\nexport type IMapEntries<K = any, V = any> = IMapEntry<K, V>[]\n\nexport type IMapDidChange<K = any, V = any> = { observableKind: \"map\"; debugObjectName: string } & (\n | {\n object: ObservableMap<K, V>\n name: K // actual the key or index, but this is based on the ancient .observe proposal for consistency\n type: \"update\"\n newValue: V\n oldValue: V\n }\n | {\n object: ObservableMap<K, V>\n name: K\n type: \"add\"\n newValue: V\n }\n | {\n object: ObservableMap<K, V>\n name: K\n type: \"delete\"\n oldValue: V\n }\n)\n\nexport interface IMapWillChange<K = any, V = any> {\n object: ObservableMap<K, V>\n type: \"update\" | \"add\" | \"delete\"\n name: K\n newValue?: V\n}\n\nconst ObservableMapMarker = {}\n\nexport const ADD = \"add\"\nexport const DELETE = \"delete\"\n\nexport type IObservableMapInitialValues<K = any, V = any> =\n | IMapEntries<K, V>\n | IKeyValueMap<V>\n | Map<K, V>\n\n// just extend Map? See also https://gist.github.com/nestharus/13b4d74f2ef4a2f4357dbd3fc23c1e54\n// But: https://github.com/mobxjs/mobx/issues/1556\nexport class ObservableMap<K = any, V = any>\n implements Map<K, V>, IInterceptable<IMapWillChange<K, V>>, IListenable\n{\n [$mobx] = ObservableMapMarker\n data_: Map<K, ObservableValue<V>>\n hasMap_: Map<K, ObservableValue<boolean>> // hasMap, not hashMap >-).\n keysAtom_: IAtom\n interceptors_\n changeListeners_\n dehancer: any\n\n constructor(\n initialData?: IObservableMapInitialValues<K, V>,\n public enhancer_: IEnhancer<V> = deepEnhancer,\n public name_ = __DEV__ ? \"ObservableMap@\" + getNextId() : \"ObservableMap\"\n ) {\n if (!isFunction(Map)) {\n die(18)\n }\n this.keysAtom_ = createAtom(__DEV__ ? `${this.name_}.keys()` : \"ObservableMap.keys()\")\n this.data_ = new Map()\n this.hasMap_ = new Map()\n allowStateChanges(true, () => {\n this.merge(initialData)\n })\n }\n\n private has_(key: K): boolean {\n return this.data_.has(key)\n }\n\n has(key: K): boolean {\n if (!globalState.trackingDerivation) {\n return this.has_(key)\n }\n\n let entry = this.hasMap_.get(key)\n if (!entry) {\n const newEntry = (entry = new ObservableValue(\n this.has_(key),\n referenceEnhancer,\n __DEV__ ? `${this.name_}.${stringifyKey(key)}?` : \"ObservableMap.key?\",\n false\n ))\n this.hasMap_.set(key, newEntry)\n onBecomeUnobserved(newEntry, () => this.hasMap_.delete(key))\n }\n\n return entry.get()\n }\n\n set(key: K, value: V) {\n const hasKey = this.has_(key)\n if (hasInterceptors(this)) {\n const change = interceptChange<IMapWillChange<K, V>>(this, {\n type: hasKey ? UPDATE : ADD,\n object: this,\n newValue: value,\n name: key\n })\n if (!change) {\n return this\n }\n value = change.newValue!\n }\n if (hasKey) {\n this.updateValue_(key, value)\n } else {\n this.addValue_(key, value)\n }\n return this\n }\n\n delete(key: K): boolean {\n checkIfStateModificationsAreAllowed(this.keysAtom_)\n if (hasInterceptors(this)) {\n const change = interceptChange<IMapWillChange<K, V>>(this, {\n type: DELETE,\n object: this,\n name: key\n })\n if (!change) {\n return false\n }\n }\n if (this.has_(key)) {\n const notifySpy = isSpyEnabled()\n const notify = hasListeners(this)\n const change: IMapDidChange<K, V> | null =\n notify || notifySpy\n ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: DELETE,\n object: this,\n oldValue: (<any>this.data_.get(key)).value_,\n name: key\n }\n : null\n\n if (__DEV__ && notifySpy) {\n spyReportStart(change! as PureSpyEvent)\n } // TODO fix type\n transaction(() => {\n this.keysAtom_.reportChanged()\n this.hasMap_.get(key)?.setNewValue_(false)\n const observable = this.data_.get(key)!\n observable.setNewValue_(undefined as any)\n this.data_.delete(key)\n })\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n return true\n }\n return false\n }\n\n private updateValue_(key: K, newValue: V | undefined) {\n const observable = this.data_.get(key)!\n newValue = (observable as any).prepareNewValue_(newValue) as V\n if (newValue !== globalState.UNCHANGED) {\n const notifySpy = isSpyEnabled()\n const notify = hasListeners(this)\n const change: IMapDidChange<K, V> | null =\n notify || notifySpy\n ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: UPDATE,\n object: this,\n oldValue: (observable as any).value_,\n name: key,\n newValue\n }\n : null\n if (__DEV__ && notifySpy) {\n spyReportStart(change! as PureSpyEvent)\n } // TODO fix type\n observable.setNewValue_(newValue as V)\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n }\n\n private addValue_(key: K, newValue: V) {\n checkIfStateModificationsAreAllowed(this.keysAtom_)\n transaction(() => {\n const observable = new ObservableValue(\n newValue,\n this.enhancer_,\n __DEV__ ? `${this.name_}.${stringifyKey(key)}` : \"ObservableMap.key\",\n false\n )\n this.data_.set(key, observable)\n newValue = (observable as any).value_ // value might have been changed\n this.hasMap_.get(key)?.setNewValue_(true)\n this.keysAtom_.reportChanged()\n })\n const notifySpy = isSpyEnabled()\n const notify = hasListeners(this)\n const change: IMapDidChange<K, V> | null =\n notify || notifySpy\n ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: ADD,\n object: this,\n name: key,\n newValue\n }\n : null\n if (__DEV__ && notifySpy) {\n spyReportStart(change! as PureSpyEvent)\n } // TODO fix type\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n\n get(key: K): V | undefined {\n if (this.has(key)) {\n return this.dehanceValue_(this.data_.get(key)!.get())\n }\n return this.dehanceValue_(undefined)\n }\n\n private dehanceValue_<X extends V | undefined>(value: X): X {\n if (this.dehancer !== undefined) {\n return this.dehancer(value)\n }\n return value\n }\n\n keys(): IterableIterator<K> {\n this.keysAtom_.reportObserved()\n return this.data_.keys()\n }\n\n values(): IterableIterator<V> {\n const self = this\n const keys = this.keys()\n return makeIterable({\n next() {\n const { done, value } = keys.next()\n return {\n done,\n value: done ? (undefined as any) : self.get(value)\n }\n }\n })\n }\n\n entries(): IterableIterator<IMapEntry<K, V>> {\n const self = this\n const keys = this.keys()\n return makeIterable({\n next() {\n const { done, value } = keys.next()\n return {\n done,\n value: done ? (undefined as any) : ([value, self.get(value)!] as [K, V])\n }\n }\n })\n }\n\n [Symbol.iterator]() {\n return this.entries()\n }\n\n forEach(callback: (value: V, key: K, object: Map<K, V>) => void, thisArg?) {\n for (const [key, value] of this) {\n callback.call(thisArg, value, key, this)\n }\n }\n\n /** Merge another object into this object, returns this. */\n merge(other?: IObservableMapInitialValues<K, V>): ObservableMap<K, V> {\n if (isObservableMap(other)) {\n other = new Map(other)\n }\n transaction(() => {\n if (isPlainObject(other)) {\n getPlainObjectKeys(other).forEach((key: any) =>\n this.set(key as K, (other as IKeyValueMap)[key])\n )\n } else if (Array.isArray(other)) {\n other.forEach(([key, value]) => this.set(key, value))\n } else if (isES6Map(other)) {\n if (other.constructor !== Map) {\n die(19, other)\n }\n other.forEach((value, key) => this.set(key, value))\n } else if (other !== null && other !== undefined) {\n die(20, other)\n }\n })\n return this\n }\n\n clear() {\n transaction(() => {\n untracked(() => {\n for (const key of this.keys()) {\n this.delete(key)\n }\n })\n })\n }\n\n replace(values: IObservableMapInitialValues<K, V>): ObservableMap<K, V> {\n // Implementation requirements:\n // - respect ordering of replacement map\n // - allow interceptors to run and potentially prevent individual operations\n // - don't recreate observables that already exist in original map (so we don't destroy existing subscriptions)\n // - don't _keysAtom.reportChanged if the keys of resulting map are indentical (order matters!)\n // - note that result map may differ from replacement map due to the interceptors\n transaction(() => {\n // Convert to map so we can do quick key lookups\n const replacementMap = convertToMap(values)\n const orderedData = new Map()\n // Used for optimization\n let keysReportChangedCalled = false\n // Delete keys that don't exist in replacement map\n // if the key deletion is prevented by interceptor\n // add entry at the beginning of the result map\n for (const key of this.data_.keys()) {\n // Concurrently iterating/deleting keys\n // iterator should handle this correctly\n if (!replacementMap.has(key)) {\n const deleted = this.delete(key)\n // Was the key removed?\n if (deleted) {\n // _keysAtom.reportChanged() was already called\n keysReportChangedCalled = true\n } else {\n // Delete prevented by interceptor\n const value = this.data_.get(key)\n orderedData.set(key, value)\n }\n }\n }\n // Merge entries\n for (const [key, value] of replacementMap.entries()) {\n // We will want to know whether a new key is added\n const keyExisted = this.data_.has(key)\n // Add or update value\n this.set(key, value)\n // The addition could have been prevent by interceptor\n if (this.data_.has(key)) {\n // The update could have been prevented by interceptor\n // and also we want to preserve existing values\n // so use value from _data map (instead of replacement map)\n const value = this.data_.get(key)\n orderedData.set(key, value)\n // Was a new key added?\n if (!keyExisted) {\n // _keysAtom.reportChanged() was already called\n keysReportChangedCalled = true\n }\n }\n }\n // Check for possible key order change\n if (!keysReportChangedCalled) {\n if (this.data_.size !== orderedData.size) {\n // If size differs, keys are definitely modified\n this.keysAtom_.reportChanged()\n } else {\n const iter1 = this.data_.keys()\n const iter2 = orderedData.keys()\n let next1 = iter1.next()\n let next2 = iter2.next()\n while (!next1.done) {\n if (next1.value !== next2.value) {\n this.keysAtom_.reportChanged()\n break\n }\n next1 = iter1.next()\n next2 = iter2.next()\n }\n }\n }\n // Use correctly ordered map\n this.data_ = orderedData\n })\n return this\n }\n\n get size(): number {\n this.keysAtom_.reportObserved()\n return this.data_.size\n }\n\n toString(): string {\n return \"[object ObservableMap]\"\n }\n\n toJSON(): [K, V][] {\n return Array.from(this)\n }\n\n get [Symbol.toStringTag]() {\n return \"Map\"\n }\n\n /**\n * Observes this object. Triggers for the events 'add', 'update' and 'delete'.\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe\n * for callback details\n */\n observe_(listener: (changes: IMapDidChange<K, V>) => void, fireImmediately?: boolean): Lambda {\n if (__DEV__ && fireImmediately === true) {\n die(\"`observe` doesn't support fireImmediately=true in combination with maps.\")\n }\n return registerListener(this, listener)\n }\n\n intercept_(handler: IInterceptor<IMapWillChange<K, V>>): Lambda {\n return registerInterceptor(this, handler)\n }\n}\n\n// eslint-disable-next-line\nexport var isObservableMap = createInstanceofPredicate(\"ObservableMap\", ObservableMap) as (\n thing: any\n) => thing is ObservableMap<any, any>\n\nfunction convertToMap(dataStructure: any): Map<any, any> {\n if (isES6Map(dataStructure) || isObservableMap(dataStructure)) {\n return dataStructure\n } else if (Array.isArray(dataStructure)) {\n return new Map(dataStructure)\n } else if (isPlainObject(dataStructure)) {\n const map = new Map()\n for (const key in dataStructure) {\n map.set(key, dataStructure[key])\n }\n return map\n } else {\n return die(21, dataStructure)\n }\n}\n", "import {\n $mobx,\n createAtom,\n deepEnhancer,\n getNextId,\n IEnhancer,\n isSpyEnabled,\n hasListeners,\n IListenable,\n registerListener,\n Lambda,\n spyReportStart,\n notifyListeners,\n spyReportEnd,\n createInstanceofPredicate,\n hasInterceptors,\n interceptChange,\n IInterceptable,\n IInterceptor,\n registerInterceptor,\n checkIfStateModificationsAreAllowed,\n untracked,\n makeIterable,\n transaction,\n isES6Set,\n IAtom,\n DELETE,\n ADD,\n die,\n isFunction\n} from \"../internal\"\n\nconst ObservableSetMarker = {}\n\nexport type IObservableSetInitialValues<T> = Set<T> | readonly T[]\n\nexport type ISetDidChange<T = any> =\n | {\n object: ObservableSet<T>\n observableKind: \"set\"\n debugObjectName: string\n type: \"add\"\n newValue: T\n }\n | {\n object: ObservableSet<T>\n observableKind: \"set\"\n debugObjectName: string\n type: \"delete\"\n oldValue: T\n }\n\nexport type ISetWillChange<T = any> =\n | {\n type: \"delete\"\n object: ObservableSet<T>\n oldValue: T\n }\n | {\n type: \"add\"\n object: ObservableSet<T>\n newValue: T\n }\n\nexport class ObservableSet<T = any> implements Set<T>, IInterceptable<ISetWillChange>, IListenable {\n [$mobx] = ObservableSetMarker\n private data_: Set<any> = new Set()\n private atom_: IAtom\n changeListeners_\n interceptors_\n dehancer: any\n enhancer_: (newV: any, oldV: any | undefined) => any\n\n constructor(\n initialData?: IObservableSetInitialValues<T>,\n enhancer: IEnhancer<T> = deepEnhancer,\n public name_ = __DEV__ ? \"ObservableSet@\" + getNextId() : \"ObservableSet\"\n ) {\n if (!isFunction(Set)) {\n die(22)\n }\n this.atom_ = createAtom(this.name_)\n this.enhancer_ = (newV, oldV) => enhancer(newV, oldV, name_)\n if (initialData) {\n this.replace(initialData)\n }\n }\n\n private dehanceValue_<X extends T | undefined>(value: X): X {\n if (this.dehancer !== undefined) {\n return this.dehancer(value)\n }\n return value\n }\n\n clear() {\n transaction(() => {\n untracked(() => {\n for (const value of this.data_.values()) {\n this.delete(value)\n }\n })\n })\n }\n\n forEach(callbackFn: (value: T, value2: T, set: Set<T>) => void, thisArg?: any) {\n for (const value of this) {\n callbackFn.call(thisArg, value, value, this)\n }\n }\n\n get size() {\n this.atom_.reportObserved()\n return this.data_.size\n }\n\n add(value: T) {\n checkIfStateModificationsAreAllowed(this.atom_)\n if (hasInterceptors(this)) {\n const change = interceptChange<ISetWillChange<T>>(this, {\n type: ADD,\n object: this,\n newValue: value\n })\n if (!change) {\n return this\n }\n // ideally, value = change.value would be done here, so that values can be\n // changed by interceptor. Same applies for other Set and Map api's.\n }\n if (!this.has(value)) {\n transaction(() => {\n this.data_.add(this.enhancer_(value, undefined))\n this.atom_.reportChanged()\n })\n const notifySpy = __DEV__ && isSpyEnabled()\n const notify = hasListeners(this)\n const change =\n notify || notifySpy\n ? <ISetDidChange<T>>{\n observableKind: \"set\",\n debugObjectName: this.name_,\n type: ADD,\n object: this,\n newValue: value\n }\n : null\n if (notifySpy && __DEV__) {\n spyReportStart(change!)\n }\n if (notify) {\n notifyListeners(this, change)\n }\n if (notifySpy && __DEV__) {\n spyReportEnd()\n }\n }\n\n return this\n }\n\n delete(value: T) {\n if (hasInterceptors(this)) {\n const change = interceptChange<ISetWillChange<T>>(this, {\n type: DELETE,\n object: this,\n oldValue: value\n })\n if (!change) {\n return false\n }\n }\n if (this.has(value)) {\n const notifySpy = __DEV__ && isSpyEnabled()\n const notify = hasListeners(this)\n const change =\n notify || notifySpy\n ? <ISetDidChange<T>>{\n observableKind: \"set\",\n debugObjectName: this.name_,\n type: DELETE,\n object: this,\n oldValue: value\n }\n : null\n\n if (notifySpy && __DEV__) {\n spyReportStart(change!)\n }\n transaction(() => {\n this.atom_.reportChanged()\n this.data_.delete(value)\n })\n if (notify) {\n notifyListeners(this, change)\n }\n if (notifySpy && __DEV__) {\n spyReportEnd()\n }\n return true\n }\n return false\n }\n\n has(value: T) {\n this.atom_.reportObserved()\n return this.data_.has(this.dehanceValue_(value))\n }\n\n entries() {\n let nextIndex = 0\n const keys = Array.from(this.keys())\n const values = Array.from(this.values())\n return makeIterable<[T, T]>({\n next() {\n const index = nextIndex\n nextIndex += 1\n return index < values.length\n ? { value: [keys[index], values[index]], done: false }\n : { done: true }\n }\n } as any)\n }\n\n keys(): IterableIterator<T> {\n return this.values()\n }\n\n values(): IterableIterator<T> {\n this.atom_.reportObserved()\n const self = this\n let nextIndex = 0\n const observableValues = Array.from(this.data_.values())\n return makeIterable<T>({\n next() {\n return nextIndex < observableValues.length\n ? { value: self.dehanceValue_(observableValues[nextIndex++]), done: false }\n : { done: true }\n }\n } as any)\n }\n\n replace(other: ObservableSet<T> | IObservableSetInitialValues<T>): ObservableSet<T> {\n if (isObservableSet(other)) {\n other = new Set(other)\n }\n\n transaction(() => {\n if (Array.isArray(other)) {\n this.clear()\n other.forEach(value => this.add(value))\n } else if (isES6Set(other)) {\n this.clear()\n other.forEach(value => this.add(value))\n } else if (other !== null && other !== undefined) {\n die(\"Cannot initialize set from \" + other)\n }\n })\n\n return this\n }\n observe_(listener: (changes: ISetDidChange<T>) => void, fireImmediately?: boolean): Lambda {\n // ... 'fireImmediately' could also be true?\n if (__DEV__ && fireImmediately === true) {\n die(\"`observe` doesn't support fireImmediately=true in combination with sets.\")\n }\n return registerListener(this, listener)\n }\n\n intercept_(handler: IInterceptor<ISetWillChange<T>>): Lambda {\n return registerInterceptor(this, handler)\n }\n\n toJSON(): T[] {\n return Array.from(this)\n }\n\n toString(): string {\n return \"[object ObservableSet]\"\n }\n\n [Symbol.iterator]() {\n return this.values()\n }\n\n get [Symbol.toStringTag]() {\n return \"Set\"\n }\n}\n\n// eslint-disable-next-line\nexport var isObservableSet = createInstanceofPredicate(\"ObservableSet\", ObservableSet) as (\n thing: any\n) => thing is ObservableSet<any>\n", "import {\n CreateObservableOptions,\n getAnnotationFromOptions,\n propagateChanged,\n isAnnotation,\n $mobx,\n Atom,\n Annotation,\n ComputedValue,\n IAtom,\n IComputedValueOptions,\n IEnhancer,\n IInterceptable,\n IListenable,\n Lambda,\n ObservableValue,\n addHiddenProp,\n createInstanceofPredicate,\n endBatch,\n getNextId,\n hasInterceptors,\n hasListeners,\n interceptChange,\n isObject,\n isPlainObject,\n isSpyEnabled,\n notifyListeners,\n referenceEnhancer,\n registerInterceptor,\n registerListener,\n spyReportEnd,\n spyReportStart,\n startBatch,\n stringifyKey,\n globalState,\n ADD,\n UPDATE,\n die,\n hasProp,\n getDescriptor,\n storedAnnotationsSymbol,\n ownKeys,\n isOverride,\n defineProperty,\n autoAnnotation,\n getAdministration,\n getDebugName,\n objectPrototype,\n MakeResult\n} from \"../internal\"\n\nconst descriptorCache = Object.create(null)\n\nexport type IObjectDidChange<T = any> = {\n observableKind: \"object\"\n name: PropertyKey\n object: T\n debugObjectName: string\n} & (\n | {\n type: \"add\"\n newValue: any\n }\n | {\n type: \"update\"\n oldValue: any\n newValue: any\n }\n | {\n type: \"remove\"\n oldValue: any\n }\n)\n\nexport type IObjectWillChange<T = any> =\n | {\n object: T\n type: \"update\" | \"add\"\n name: PropertyKey\n newValue: any\n }\n | {\n object: T\n type: \"remove\"\n name: PropertyKey\n }\n\nconst REMOVE = \"remove\"\n\nexport class ObservableObjectAdministration\n implements IInterceptable<IObjectWillChange>, IListenable\n{\n keysAtom_: IAtom\n changeListeners_\n interceptors_\n proxy_: any\n isPlainObject_: boolean\n appliedAnnotations_?: object\n private pendingKeys_: undefined | Map<PropertyKey, ObservableValue<boolean>>\n\n constructor(\n public target_: any,\n public values_ = new Map<PropertyKey, ObservableValue<any> | ComputedValue<any>>(),\n public name_: string,\n // Used anytime annotation is not explicitely provided\n public defaultAnnotation_: Annotation = autoAnnotation\n ) {\n this.keysAtom_ = new Atom(__DEV__ ? `${this.name_}.keys` : \"ObservableObject.keys\")\n // Optimization: we use this frequently\n this.isPlainObject_ = isPlainObject(this.target_)\n if (__DEV__ && !isAnnotation(this.defaultAnnotation_)) {\n die(`defaultAnnotation must be valid annotation`)\n }\n if (__DEV__) {\n // Prepare structure for tracking which fields were already annotated\n this.appliedAnnotations_ = {}\n }\n }\n\n getObservablePropValue_(key: PropertyKey): any {\n return this.values_.get(key)!.get()\n }\n\n setObservablePropValue_(key: PropertyKey, newValue): boolean | null {\n const observable = this.values_.get(key)\n if (observable instanceof ComputedValue) {\n observable.set(newValue)\n return true\n }\n\n // intercept\n if (hasInterceptors(this)) {\n const change = interceptChange<IObjectWillChange>(this, {\n type: UPDATE,\n object: this.proxy_ || this.target_,\n name: key,\n newValue\n })\n if (!change) {\n return null\n }\n newValue = (change as any).newValue\n }\n newValue = (observable as any).prepareNewValue_(newValue)\n\n // notify spy & observers\n if (newValue !== globalState.UNCHANGED) {\n const notify = hasListeners(this)\n const notifySpy = __DEV__ && isSpyEnabled()\n const change: IObjectDidChange | null =\n notify || notifySpy\n ? {\n type: UPDATE,\n observableKind: \"object\",\n debugObjectName: this.name_,\n object: this.proxy_ || this.target_,\n oldValue: (observable as any).value_,\n name: key,\n newValue\n }\n : null\n\n if (__DEV__ && notifySpy) {\n spyReportStart(change!)\n }\n ;(observable as ObservableValue<any>).setNewValue_(newValue)\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n return true\n }\n\n get_(key: PropertyKey): any {\n if (globalState.trackingDerivation && !hasProp(this.target_, key)) {\n // Key doesn't exist yet, subscribe for it in case it's added later\n this.has_(key)\n }\n return this.target_[key]\n }\n\n /**\n * @param {PropertyKey} key\n * @param {any} value\n * @param {Annotation|boolean} annotation true - use default annotation, false - copy as is\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */\n set_(key: PropertyKey, value: any, proxyTrap: boolean = false): boolean | null {\n // Don't use .has(key) - we care about own\n if (hasProp(this.target_, key)) {\n // Existing prop\n if (this.values_.has(key)) {\n // Observable (can be intercepted)\n return this.setObservablePropValue_(key, value)\n } else if (proxyTrap) {\n // Non-observable - proxy\n return Reflect.set(this.target_, key, value)\n } else {\n // Non-observable\n this.target_[key] = value\n return true\n }\n } else {\n // New prop\n return this.extend_(\n key,\n { value, enumerable: true, writable: true, configurable: true },\n this.defaultAnnotation_,\n proxyTrap\n )\n }\n }\n\n // Trap for \"in\"\n has_(key: PropertyKey): boolean {\n if (!globalState.trackingDerivation) {\n // Skip key subscription outside derivation\n return key in this.target_\n }\n this.pendingKeys_ ||= new Map()\n let entry = this.pendingKeys_.get(key)\n if (!entry) {\n entry = new ObservableValue(\n key in this.target_,\n referenceEnhancer,\n __DEV__ ? `${this.name_}.${stringifyKey(key)}?` : \"ObservableObject.key?\",\n false\n )\n this.pendingKeys_.set(key, entry)\n }\n return entry.get()\n }\n\n /**\n * @param {PropertyKey} key\n * @param {Annotation|boolean} annotation true - use default annotation, false - ignore prop\n */\n make_(key: PropertyKey, annotation: Annotation | boolean): void {\n if (annotation === true) {\n annotation = this.defaultAnnotation_\n }\n if (annotation === false) {\n return\n }\n assertAnnotable(this, annotation, key)\n if (!(key in this.target_)) {\n // Throw on missing key, except for decorators:\n // Decorator annotations are collected from whole prototype chain.\n // When called from super() some props may not exist yet.\n // However we don't have to worry about missing prop,\n // because the decorator must have been applied to something.\n if (this.target_[storedAnnotationsSymbol]?.[key]) {\n return // will be annotated by subclass constructor\n } else {\n die(1, annotation.annotationType_, `${this.name_}.${key.toString()}`)\n }\n }\n let source = this.target_\n while (source && source !== objectPrototype) {\n const descriptor = getDescriptor(source, key)\n if (descriptor) {\n const outcome = annotation.make_(this, key, descriptor, source)\n if (outcome === MakeResult.Cancel) {\n return\n }\n if (outcome === MakeResult.Break) {\n break\n }\n }\n source = Object.getPrototypeOf(source)\n }\n recordAnnotationApplied(this, annotation, key)\n }\n\n /**\n * @param {PropertyKey} key\n * @param {PropertyDescriptor} descriptor\n * @param {Annotation|boolean} annotation true - use default annotation, false - copy as is\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */\n extend_(\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n annotation: Annotation | boolean,\n proxyTrap: boolean = false\n ): boolean | null {\n if (annotation === true) {\n annotation = this.defaultAnnotation_\n }\n if (annotation === false) {\n return this.defineProperty_(key, descriptor, proxyTrap)\n }\n assertAnnotable(this, annotation, key)\n const outcome = annotation.extend_(this, key, descriptor, proxyTrap)\n if (outcome) {\n recordAnnotationApplied(this, annotation, key)\n }\n return outcome\n }\n\n /**\n * @param {PropertyKey} key\n * @param {PropertyDescriptor} descriptor\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */\n defineProperty_(\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean = false\n ): boolean | null {\n try {\n startBatch()\n\n // Delete\n const deleteOutcome = this.delete_(key)\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome\n }\n\n // ADD interceptor\n if (hasInterceptors(this)) {\n const change = interceptChange<IObjectWillChange>(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: descriptor.value\n })\n if (!change) {\n return null\n }\n const { newValue } = change as any\n if (descriptor.value !== newValue) {\n descriptor = {\n ...descriptor,\n value: newValue\n }\n }\n }\n\n // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false\n }\n } else {\n defineProperty(this.target_, key, descriptor)\n }\n\n // Notify\n this.notifyPropertyAddition_(key, descriptor.value)\n } finally {\n endBatch()\n }\n return true\n }\n\n // If original descriptor becomes relevant, move this to annotation directly\n defineObservableProperty_(\n key: PropertyKey,\n value: any,\n enhancer: IEnhancer<any>,\n proxyTrap: boolean = false\n ): boolean | null {\n try {\n startBatch()\n\n // Delete\n const deleteOutcome = this.delete_(key)\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome\n }\n\n // ADD interceptor\n if (hasInterceptors(this)) {\n const change = interceptChange<IObjectWillChange>(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: value\n })\n if (!change) {\n return null\n }\n value = (change as any).newValue\n }\n\n const cachedDescriptor = getCachedObservablePropDescriptor(key)\n const descriptor = {\n configurable: globalState.safeDescriptors ? this.isPlainObject_ : true,\n enumerable: true,\n get: cachedDescriptor.get,\n set: cachedDescriptor.set\n }\n\n // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false\n }\n } else {\n defineProperty(this.target_, key, descriptor)\n }\n\n const observable = new ObservableValue(\n value,\n enhancer,\n __DEV__ ? `${this.name_}.${key.toString()}` : \"ObservableObject.key\",\n false\n )\n\n this.values_.set(key, observable)\n\n // Notify (value possibly changed by ObservableValue)\n this.notifyPropertyAddition_(key, observable.value_)\n } finally {\n endBatch()\n }\n return true\n }\n\n // If original descriptor becomes relevant, move this to annotation directly\n defineComputedProperty_(\n key: PropertyKey,\n options: IComputedValueOptions<any>,\n proxyTrap: boolean = false\n ): boolean | null {\n try {\n startBatch()\n\n // Delete\n const deleteOutcome = this.delete_(key)\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome\n }\n\n // ADD interceptor\n if (hasInterceptors(this)) {\n const change = interceptChange<IObjectWillChange>(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: undefined\n })\n if (!change) {\n return null\n }\n }\n options.name ||= __DEV__ ? `${this.name_}.${key.toString()}` : \"ObservableObject.key\"\n options.context = this.proxy_ || this.target_\n const cachedDescriptor = getCachedObservablePropDescriptor(key)\n const descriptor = {\n configurable: globalState.safeDescriptors ? this.isPlainObject_ : true,\n enumerable: false,\n get: cachedDescriptor.get,\n set: cachedDescriptor.set\n }\n\n // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false\n }\n } else {\n defineProperty(this.target_, key, descriptor)\n }\n\n this.values_.set(key, new ComputedValue(options))\n\n // Notify\n this.notifyPropertyAddition_(key, undefined)\n } finally {\n endBatch()\n }\n return true\n }\n\n /**\n * @param {PropertyKey} key\n * @param {PropertyDescriptor} descriptor\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */\n delete_(key: PropertyKey, proxyTrap: boolean = false): boolean | null {\n // No such prop\n if (!hasProp(this.target_, key)) {\n return true\n }\n\n // Intercept\n if (hasInterceptors(this)) {\n const change = interceptChange<IObjectWillChange>(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: REMOVE\n })\n // Cancelled\n if (!change) {\n return null\n }\n }\n\n // Delete\n try {\n startBatch()\n const notify = hasListeners(this)\n const notifySpy = __DEV__ && isSpyEnabled()\n const observable = this.values_.get(key)\n // Value needed for spies/listeners\n let value = undefined\n // Optimization: don't pull the value unless we will need it\n if (!observable && (notify || notifySpy)) {\n value = getDescriptor(this.target_, key)?.value\n }\n // delete prop (do first, may fail)\n if (proxyTrap) {\n if (!Reflect.deleteProperty(this.target_, key)) {\n return false\n }\n } else {\n delete this.target_[key]\n }\n // Allow re-annotating this field\n if (__DEV__) {\n delete this.appliedAnnotations_![key]\n }\n // Clear observable\n if (observable) {\n this.values_.delete(key)\n // for computed, value is undefined\n if (observable instanceof ObservableValue) {\n value = observable.value_\n }\n // Notify: autorun(() => obj[key]), see #1796\n propagateChanged(observable)\n }\n // Notify \"keys/entries/values\" observers\n this.keysAtom_.reportChanged()\n\n // Notify \"has\" observers\n // \"in\" as it may still exist in proto\n this.pendingKeys_?.get(key)?.set(key in this.target_)\n\n // Notify spies/listeners\n if (notify || notifySpy) {\n const change: IObjectDidChange = {\n type: REMOVE,\n observableKind: \"object\",\n object: this.proxy_ || this.target_,\n debugObjectName: this.name_,\n oldValue: value,\n name: key\n }\n if (__DEV__ && notifySpy) {\n spyReportStart(change!)\n }\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n } finally {\n endBatch()\n }\n return true\n }\n\n /**\n * Observes this object. Triggers for the events 'add', 'update' and 'delete'.\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe\n * for callback details\n */\n observe_(callback: (changes: IObjectDidChange) => void, fireImmediately?: boolean): Lambda {\n if (__DEV__ && fireImmediately === true) {\n die(\"`observe` doesn't support the fire immediately property for observable objects.\")\n }\n return registerListener(this, callback)\n }\n\n intercept_(handler): Lambda {\n return registerInterceptor(this, handler)\n }\n\n notifyPropertyAddition_(key: PropertyKey, value: any) {\n const notify = hasListeners(this)\n const notifySpy = __DEV__ && isSpyEnabled()\n if (notify || notifySpy) {\n const change: IObjectDidChange | null =\n notify || notifySpy\n ? ({\n type: ADD,\n observableKind: \"object\",\n debugObjectName: this.name_,\n object: this.proxy_ || this.target_,\n name: key,\n newValue: value\n } as const)\n : null\n\n if (__DEV__ && notifySpy) {\n spyReportStart(change!)\n }\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n\n this.pendingKeys_?.get(key)?.set(true)\n\n // Notify \"keys/entries/values\" observers\n this.keysAtom_.reportChanged()\n }\n\n ownKeys_(): ArrayLike<string | symbol> {\n this.keysAtom_.reportObserved()\n return ownKeys(this.target_)\n }\n\n keys_(): PropertyKey[] {\n // Returns enumerable && own, but unfortunately keysAtom will report on ANY key change.\n // There is no way to distinguish between Object.keys(object) and Reflect.ownKeys(object) - both are handled by ownKeys trap.\n // We can either over-report in Object.keys(object) or under-report in Reflect.ownKeys(object)\n // We choose to over-report in Object.keys(object), because:\n // - typically it's used with simple data objects\n // - when symbolic/non-enumerable keys are relevant Reflect.ownKeys works as expected\n this.keysAtom_.reportObserved()\n return Object.keys(this.target_)\n }\n}\n\nexport interface IIsObservableObject {\n $mobx: ObservableObjectAdministration\n}\n\nexport function asObservableObject(\n target: any,\n options?: CreateObservableOptions\n): IIsObservableObject {\n if (__DEV__ && options && isObservableObject(target)) {\n die(`Options can't be provided for already observable objects.`)\n }\n\n if (hasProp(target, $mobx)) {\n if (__DEV__ && !(getAdministration(target) instanceof ObservableObjectAdministration)) {\n die(\n `Cannot convert '${getDebugName(target)}' into observable object:` +\n `\\nThe target is already observable of different type.` +\n `\\nExtending builtins is not supported.`\n )\n }\n return target\n }\n\n if (__DEV__ && !Object.isExtensible(target)) {\n die(\"Cannot make the designated object observable; it is not extensible\")\n }\n\n const name =\n options?.name ??\n (__DEV__\n ? `${\n isPlainObject(target) ? \"ObservableObject\" : target.constructor.name\n }@${getNextId()}`\n : \"ObservableObject\")\n\n const adm = new ObservableObjectAdministration(\n target,\n new Map(),\n String(name),\n getAnnotationFromOptions(options)\n )\n\n addHiddenProp(target, $mobx, adm)\n\n return target\n}\n\nconst isObservableObjectAdministration = createInstanceofPredicate(\n \"ObservableObjectAdministration\",\n ObservableObjectAdministration\n)\n\nfunction getCachedObservablePropDescriptor(key) {\n return (\n descriptorCache[key] ||\n (descriptorCache[key] = {\n get() {\n return this[$mobx].getObservablePropValue_(key)\n },\n set(value) {\n return this[$mobx].setObservablePropValue_(key, value)\n }\n })\n )\n}\n\nexport function isObservableObject(thing: any): boolean {\n if (isObject(thing)) {\n return isObservableObjectAdministration((thing as any)[$mobx])\n }\n return false\n}\n\nexport function recordAnnotationApplied(\n adm: ObservableObjectAdministration,\n annotation: Annotation,\n key: PropertyKey\n) {\n if (__DEV__) {\n adm.appliedAnnotations_![key] = annotation\n }\n // Remove applied decorator annotation so we don't try to apply it again in subclass constructor\n delete adm.target_[storedAnnotationsSymbol]?.[key]\n}\n\nfunction assertAnnotable(\n adm: ObservableObjectAdministration,\n annotation: Annotation,\n key: PropertyKey\n) {\n // Valid annotation\n if (__DEV__ && !isAnnotation(annotation)) {\n die(`Cannot annotate '${adm.name_}.${key.toString()}': Invalid annotation.`)\n }\n\n /*\n // Configurable, not sealed, not frozen\n // Possibly not needed, just a little better error then the one thrown by engine.\n // Cases where this would be useful the most (subclass field initializer) are not interceptable by this.\n if (__DEV__) {\n const configurable = getDescriptor(adm.target_, key)?.configurable\n const frozen = Object.isFrozen(adm.target_)\n const sealed = Object.isSealed(adm.target_)\n if (!configurable || frozen || sealed) {\n const fieldName = `${adm.name_}.${key.toString()}`\n const requestedAnnotationType = annotation.annotationType_\n let error = `Cannot apply '${requestedAnnotationType}' to '${fieldName}':`\n if (frozen) {\n error += `\\nObject is frozen.`\n }\n if (sealed) {\n error += `\\nObject is sealed.`\n }\n if (!configurable) {\n error += `\\nproperty is not configurable.`\n // Mention only if caused by us to avoid confusion\n if (hasProp(adm.appliedAnnotations!, key)) {\n error += `\\nTo prevent accidental re-definition of a field by a subclass, `\n error += `all annotated fields of non-plain objects (classes) are not configurable.`\n }\n }\n die(error)\n }\n }\n */\n\n // Not annotated\n if (__DEV__ && !isOverride(annotation) && hasProp(adm.appliedAnnotations_!, key)) {\n const fieldName = `${adm.name_}.${key.toString()}`\n const currentAnnotationType = adm.appliedAnnotations_![key].annotationType_\n const requestedAnnotationType = annotation.annotationType_\n die(\n `Cannot apply '${requestedAnnotationType}' to '${fieldName}':` +\n `\\nThe field is already annotated with '${currentAnnotationType}'.` +\n `\\nRe-annotating fields is not allowed.` +\n `\\nUse 'override' annotation for methods overriden by subclass.`\n )\n }\n}\n", "import {\n getNextId,\n addHiddenFinalProp,\n allowStateChangesStart,\n allowStateChangesEnd,\n makeIterable,\n addHiddenProp,\n ObservableArrayAdministration,\n $mobx,\n arrayExtensions,\n IEnhancer,\n isObservableArray,\n IObservableArray,\n defineProperty\n} from \"../internal\"\n\n/**\n * This array buffer contains two lists of properties, so that all arrays\n * can recycle their property definitions, which significantly improves performance of creating\n * properties on the fly.\n */\nlet OBSERVABLE_ARRAY_BUFFER_SIZE = 0\n\n// Typescript workaround to make sure ObservableArray extends Array\nclass StubArray {}\nfunction inherit(ctor, proto) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(ctor.prototype, proto)\n } else if (ctor.prototype.__proto__ !== undefined) {\n ctor.prototype.__proto__ = proto\n } else {\n ctor.prototype = proto\n }\n}\ninherit(StubArray, Array.prototype)\n\n// Weex proto freeze protection was here,\n// but it is unclear why the hack is need as MobX never changed the prototype\n// anyway, so removed it in V6\n\nclass LegacyObservableArray<T> extends StubArray {\n constructor(\n initialValues: T[] | undefined,\n enhancer: IEnhancer<T>,\n name = __DEV__ ? \"ObservableArray@\" + getNextId() : \"ObservableArray\",\n owned = false\n ) {\n super()\n\n const adm = new ObservableArrayAdministration(name, enhancer, owned, true)\n adm.proxy_ = this as any\n addHiddenFinalProp(this, $mobx, adm)\n\n if (initialValues && initialValues.length) {\n const prev = allowStateChangesStart(true)\n // @ts-ignore\n this.spliceWithArray(0, 0, initialValues)\n allowStateChangesEnd(prev)\n }\n }\n\n concat(...arrays: T[][]): T[] {\n ;(this[$mobx] as ObservableArrayAdministration).atom_.reportObserved()\n return Array.prototype.concat.apply(\n (this as any).slice(),\n //@ts-ignore\n arrays.map(a => (isObservableArray(a) ? a.slice() : a))\n )\n }\n\n get length(): number {\n return (this[$mobx] as ObservableArrayAdministration).getArrayLength_()\n }\n\n set length(newLength: number) {\n ;(this[$mobx] as ObservableArrayAdministration).setArrayLength_(newLength)\n }\n\n get [Symbol.toStringTag]() {\n return \"Array\"\n }\n\n [Symbol.iterator]() {\n const self = this\n let nextIndex = 0\n return makeIterable({\n next() {\n return nextIndex < self.length\n ? { value: self[nextIndex++], done: false }\n : { done: true, value: undefined }\n }\n })\n }\n}\n\nObject.entries(arrayExtensions).forEach(([prop, fn]) => {\n if (prop !== \"concat\") {\n addHiddenProp(LegacyObservableArray.prototype, prop, fn)\n }\n})\n\nfunction createArrayEntryDescriptor(index: number) {\n return {\n enumerable: false,\n configurable: true,\n get: function () {\n return this[$mobx].get_(index)\n },\n set: function (value) {\n this[$mobx].set_(index, value)\n }\n }\n}\n\nfunction createArrayBufferItem(index: number) {\n defineProperty(LegacyObservableArray.prototype, \"\" + index, createArrayEntryDescriptor(index))\n}\n\nexport function reserveArrayBuffer(max: number) {\n if (max > OBSERVABLE_ARRAY_BUFFER_SIZE) {\n for (let index = OBSERVABLE_ARRAY_BUFFER_SIZE; index < max + 100; index++) {\n createArrayBufferItem(index)\n }\n OBSERVABLE_ARRAY_BUFFER_SIZE = max\n }\n}\n\nreserveArrayBuffer(1000)\n\nexport function createLegacyArray<T>(\n initialValues: T[] | undefined,\n enhancer: IEnhancer<T>,\n name?: string\n): IObservableArray<T> {\n return new LegacyObservableArray(initialValues, enhancer, name) as any\n}\n", "import { isAction } from \"../api/action\"\nimport {\n $mobx,\n IDepTreeNode,\n isAtom,\n isComputedValue,\n isObservableArray,\n isObservableMap,\n isObservableObject,\n isReaction,\n isObservableSet,\n die,\n isFunction\n} from \"../internal\"\n\nexport function getAtom(thing: any, property?: PropertyKey): IDepTreeNode {\n if (typeof thing === \"object\" && thing !== null) {\n if (isObservableArray(thing)) {\n if (property !== undefined) {\n die(23)\n }\n return (thing as any)[$mobx].atom_\n }\n if (isObservableSet(thing)) {\n return (thing as any)[$mobx]\n }\n if (isObservableMap(thing)) {\n if (property === undefined) {\n return thing.keysAtom_\n }\n const observable = thing.data_.get(property) || thing.hasMap_.get(property)\n if (!observable) {\n die(25, property, getDebugName(thing))\n }\n return observable\n }\n if (property && !thing[$mobx]) {\n thing[property]\n } // See #1072\n if (isObservableObject(thing)) {\n if (!property) {\n return die(26)\n }\n const observable = (thing as any)[$mobx].values_.get(property)\n if (!observable) {\n die(27, property, getDebugName(thing))\n }\n return observable\n }\n if (isAtom(thing) || isComputedValue(thing) || isReaction(thing)) {\n return thing\n }\n } else if (isFunction(thing)) {\n if (isReaction(thing[$mobx])) {\n // disposer function\n return thing[$mobx]\n }\n }\n die(28)\n}\n\nexport function getAdministration(thing: any, property?: string) {\n if (!thing) {\n die(29)\n }\n if (property !== undefined) {\n return getAdministration(getAtom(thing, property))\n }\n if (isAtom(thing) || isComputedValue(thing) || isReaction(thing)) {\n return thing\n }\n if (isObservableMap(thing) || isObservableSet(thing)) {\n return thing\n }\n if (thing[$mobx]) {\n return thing[$mobx]\n }\n die(24, thing)\n}\n\nexport function getDebugName(thing: any, property?: string): string {\n let named\n if (property !== undefined) {\n named = getAtom(thing, property)\n } else if (isAction(thing)) {\n return thing.name\n } else if (isObservableObject(thing) || isObservableMap(thing) || isObservableSet(thing)) {\n named = getAdministration(thing)\n } else {\n // valid for arrays as well\n named = getAtom(thing)\n }\n return named.name_\n}\n", "import {\n isES6Map,\n isObservableArray,\n isObservableMap,\n isES6Set,\n isObservableSet,\n hasProp,\n isFunction,\n objectPrototype\n} from \"../internal\"\n\ndeclare const Symbol\nconst toString = objectPrototype.toString\n\nexport function deepEqual(a: any, b: any, depth: number = -1): boolean {\n return eq(a, b, depth)\n}\n\n// Copied from https://github.com/jashkenas/underscore/blob/5c237a7c682fb68fd5378203f0bf22dce1624854/underscore.js#L1186-L1289\n// Internal recursive comparison function for `isEqual`.\nfunction eq(a: any, b: any, depth: number, aStack?: any[], bStack?: any[]) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) {\n return a !== 0 || 1 / a === 1 / b\n }\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) {\n return false\n }\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) {\n return b !== b\n }\n // Exhaust primitive checks\n const type = typeof a\n if (type !== \"function\" && type !== \"object\" && typeof b != \"object\") {\n return false\n }\n\n // Compare `[[Class]]` names.\n const className = toString.call(a)\n if (className !== toString.call(b)) {\n return false\n }\n switch (className) {\n // Strings, numbers, regular expressions, dates, and booleans are compared by value.\n case \"[object RegExp]\":\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case \"[object String]\":\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return \"\" + a === \"\" + b\n case \"[object Number]\":\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) {\n return +b !== +b\n }\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b\n case \"[object Date]\":\n case \"[object Boolean]\":\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b\n case \"[object Symbol]\":\n return (\n typeof Symbol !== \"undefined\" && Symbol.valueOf.call(a) === Symbol.valueOf.call(b)\n )\n case \"[object Map]\":\n case \"[object Set]\":\n // Maps and Sets are unwrapped to arrays of entry-pairs, adding an incidental level.\n // Hide this extra level by increasing the depth.\n if (depth >= 0) {\n depth++\n }\n break\n }\n // Unwrap any wrapped objects.\n a = unwrap(a)\n b = unwrap(b)\n\n const areArrays = className === \"[object Array]\"\n if (!areArrays) {\n if (typeof a != \"object\" || typeof b != \"object\") {\n return false\n }\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n const aCtor = a.constructor,\n bCtor = b.constructor\n if (\n aCtor !== bCtor &&\n !(\n isFunction(aCtor) &&\n aCtor instanceof aCtor &&\n isFunction(bCtor) &&\n bCtor instanceof bCtor\n ) &&\n \"constructor\" in a &&\n \"constructor\" in b\n ) {\n return false\n }\n }\n\n if (depth === 0) {\n return false\n } else if (depth < 0) {\n depth = -1\n }\n\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || []\n bStack = bStack || []\n let length = aStack.length\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) {\n return bStack[length] === b\n }\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a)\n bStack.push(b)\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length\n if (length !== b.length) {\n return false\n }\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], depth - 1, aStack, bStack)) {\n return false\n }\n }\n } else {\n // Deep compare objects.\n const keys = Object.keys(a)\n let key\n length = keys.length\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (Object.keys(b).length !== length) {\n return false\n }\n while (length--) {\n // Deep compare each member\n key = keys[length]\n if (!(hasProp(b, key) && eq(a[key], b[key], depth - 1, aStack, bStack))) {\n return false\n }\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop()\n bStack.pop()\n return true\n}\n\nfunction unwrap(a: any) {\n if (isObservableArray(a)) {\n return a.slice()\n }\n if (isES6Map(a) || isObservableMap(a)) {\n return Array.from(a.entries())\n }\n if (isES6Set(a) || isObservableSet(a)) {\n return Array.from(a.entries())\n }\n return a\n}\n", "export function makeIterable<T>(iterator: Iterator<T>): IterableIterator<T> {\n iterator[Symbol.iterator] = getSelf\n return iterator as any\n}\n\nfunction getSelf() {\n return this\n}\n", "import { ObservableObjectAdministration, isFunction } from \"../internal\"\n\nexport const enum MakeResult {\n Cancel,\n Break,\n Continue\n}\n\nexport type Annotation = {\n annotationType_: string\n make_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n source: object\n ): MakeResult\n extend_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean\n ): boolean | null\n options_?: any\n}\n\nexport type AnnotationMapEntry =\n | Annotation\n | true /* follow the default decorator, usually deep */\n | false /* don't decorate this property */\n\n// AdditionalFields can be used to declare additional keys that can be used, for example to be able to\n// declare annotations for private/ protected members, see #2339\nexport type AnnotationsMap<T, AdditionalFields extends PropertyKey> = {\n [P in Exclude<keyof T, \"toString\">]?: AnnotationMapEntry\n} & Record<AdditionalFields, AnnotationMapEntry>\n\nexport function isAnnotation(thing: any) {\n return (\n // Can be function\n thing instanceof Object &&\n typeof thing.annotationType_ === \"string\" &&\n isFunction(thing.make_) &&\n isFunction(thing.extend_)\n )\n}\n\nexport function isAnnotationMapEntry(thing: any) {\n return typeof thing === \"boolean\" || isAnnotation(thing)\n}\n", "/**\n * (c) Michel Weststrate 2015 - 2020\n * MIT Licensed\n *\n * Welcome to the mobx sources! To get a global overview of how MobX internally works,\n * this is a good place to start:\n * https://medium.com/@mweststrate/becoming-fully-reactive-an-in-depth-explanation-of-mobservable-55995262a254#.xvbh6qd74\n *\n * Source folders:\n * ===============\n *\n * - api/ Most of the public static methods exposed by the module can be found here.\n * - core/ Implementation of the MobX algorithm; atoms, derivations, reactions, dependency trees, optimizations. Cool stuff can be found here.\n * - types/ All the magic that is need to have observable objects, arrays and values is in this folder. Including the modifiers like `asFlat`.\n * - utils/ Utility stuff.\n *\n */\nimport { die } from \"./errors\"\nimport { getGlobal } from \"./utils/global\"\n;[\"Symbol\", \"Map\", \"Set\"].forEach(m => {\n let g = getGlobal()\n if (typeof g[m] === \"undefined\") {\n die(`MobX requires global '${m}' to be available or polyfilled`)\n }\n})\n\nimport { spy, getDebugName, $mobx } from \"./internal\"\n\nexport {\n IObservable,\n IDepTreeNode,\n Reaction,\n IReactionPublic,\n IReactionDisposer,\n untracked,\n IAtom,\n createAtom,\n spy,\n IComputedValue,\n IEqualsComparer,\n comparer,\n IEnhancer,\n IInterceptable,\n IInterceptor,\n IListenable,\n IObjectWillChange,\n IObjectDidChange,\n isObservableObject,\n IValueDidChange,\n IValueWillChange,\n IObservableValue,\n isObservableValue as isBoxedObservable,\n IObservableArray,\n IArrayWillChange,\n IArrayWillSplice,\n IArraySplice,\n IArrayUpdate,\n IArrayDidChange,\n isObservableArray,\n IKeyValueMap,\n ObservableMap,\n IMapEntries,\n IMapEntry,\n IMapWillChange,\n IMapDidChange,\n isObservableMap,\n IObservableMapInitialValues,\n ObservableSet,\n isObservableSet,\n ISetDidChange,\n ISetWillChange,\n IObservableSetInitialValues,\n transaction,\n observable,\n IObservableFactory,\n CreateObservableOptions,\n computed,\n IComputedFactory,\n isObservable,\n isObservableProp,\n isComputed,\n isComputedProp,\n extendObservable,\n observe,\n intercept,\n autorun,\n IAutorunOptions,\n reaction,\n IReactionOptions,\n when,\n IWhenOptions,\n action,\n isAction,\n runInAction,\n IActionFactory,\n keys,\n values,\n entries,\n set,\n remove,\n has,\n get,\n apiOwnKeys as ownKeys,\n apiDefineProperty as defineProperty,\n configure,\n onBecomeObserved,\n onBecomeUnobserved,\n flow,\n isFlow,\n flowResult,\n FlowCancellationError,\n isFlowCancellationError,\n toJS,\n trace,\n IObserverTree,\n IDependencyTree,\n getDependencyTree,\n getObserverTree,\n resetGlobalState as _resetGlobalState,\n getGlobalState as _getGlobalState,\n getDebugName,\n getAtom,\n getAdministration as _getAdministration,\n allowStateChanges as _allowStateChanges,\n runInAction as _allowStateChangesInsideComputed, // This has become the default behavior in Mobx 6\n Lambda,\n $mobx,\n isComputingDerivation as _isComputingDerivation,\n onReactionError,\n interceptReads as _interceptReads,\n IComputedValueOptions,\n IActionRunInfo,\n _startAction,\n _endAction,\n allowStateReadsStart as _allowStateReadsStart,\n allowStateReadsEnd as _allowStateReadsEnd,\n makeObservable,\n makeAutoObservable,\n autoAction as _autoAction,\n AnnotationsMap,\n AnnotationMapEntry,\n override\n} from \"./internal\"\n\n// Devtools support\ndeclare const __MOBX_DEVTOOLS_GLOBAL_HOOK__: { injectMobx: (any) => void }\nif (typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__ === \"object\") {\n // See: https://github.com/andykog/mobx-devtools/\n __MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({\n spy,\n extras: {\n getDebugName\n },\n $mobx\n })\n}\n", "import { action, extendObservable, observable, _allowStateChanges, createAtom, computed, observe, makeObservable, runInAction, keys, isObservableArray, isObservableMap, isComputed, isObservableObject, $mobx, isComputedProp, _getAdministration, getAtom, isAction, autorun, _isComputingDerivation, onBecomeUnobserved, entries, values, transaction, reaction, ObservableMap } from 'mobx';\n\nvar NOOP = function () { };\nvar IDENTITY = function (_) { return _; };\nfunction fail(message) {\n throw new Error(\"[mobx-utils] \" + message);\n}\nfunction invariant(cond, message) {\n if (message === void 0) { message = \"Illegal state\"; }\n if (!cond)\n fail(message);\n}\nfunction addHiddenProp(object, propName, value) {\n Object.defineProperty(object, propName, {\n enumerable: false,\n writable: true,\n configurable: true,\n value: value,\n });\n}\nvar deepFields = function (x) {\n return (x &&\n x !== Object.prototype &&\n Object.getOwnPropertyNames(x).concat(deepFields(Object.getPrototypeOf(x)) || []));\n};\nvar distinctDeepFields = function (x) {\n var deepFieldsIndistinct = deepFields(x);\n var deepFieldsDistinct = deepFieldsIndistinct.filter(function (item, index) { return deepFieldsIndistinct.indexOf(item) === index; });\n return deepFieldsDistinct;\n};\nvar getAllMethodsAndProperties = function (x) {\n return distinctDeepFields(x).filter(function (name) { return name !== \"constructor\" && !~name.indexOf(\"__\"); });\n};\n\nvar PENDING = \"pending\";\nvar FULFILLED = \"fulfilled\";\nvar REJECTED = \"rejected\";\nfunction caseImpl(handlers) {\n switch (this.state) {\n case PENDING:\n return handlers.pending && handlers.pending(this.value);\n case REJECTED:\n return handlers.rejected && handlers.rejected(this.value);\n case FULFILLED:\n return handlers.fulfilled ? handlers.fulfilled(this.value) : this.value;\n }\n}\n/**\n * `fromPromise` takes a Promise, extends it with 2 observable properties that track\n * the status of the promise and returns it. The returned object has the following observable properties:\n * - `value`: either the initial value, the value the Promise resolved to, or the value the Promise was rejected with. use `.state` if you need to be able to tell the difference.\n * - `state`: one of `\"pending\"`, `\"fulfilled\"` or `\"rejected\"`\n *\n * And the following methods:\n * - `case({fulfilled, rejected, pending})`: maps over the result using the provided handlers, or returns `undefined` if a handler isn't available for the current promise state.\n * - `then((value: TValue) => TResult1 | PromiseLike<TResult1>, [(rejectReason: any) => any])`: chains additional handlers to the provided promise.\n *\n * The returned object implements `PromiseLike<TValue>`, so you can chain additional `Promise` handlers using `then`. You may also use it with `await` in `async` functions.\n *\n * Note that the status strings are available as constants:\n * `mobxUtils.PENDING`, `mobxUtils.REJECTED`, `mobxUtil.FULFILLED`\n *\n * fromPromise takes an optional second argument, a previously created `fromPromise` based observable.\n * This is useful to replace one promise based observable with another, without going back to an intermediate\n * \"pending\" promise state while fetching data. For example:\n *\n * @example\n * \\@observer\n * class SearchResults extends React.Component {\n * \\@observable.ref searchResults\n *\n * componentDidUpdate(nextProps) {\n * if (nextProps.query !== this.props.query)\n * this.searchResults = fromPromise(\n * window.fetch(\"/search?q=\" + nextProps.query),\n * // by passing, we won't render a pending state if we had a successful search query before\n * // rather, we will keep showing the previous search results, until the new promise resolves (or rejects)\n * this.searchResults\n * )\n * }\n *\n * render() {\n * return this.searchResults.case({\n * pending: (staleValue) => {\n * return staleValue || \"searching\" // <- value might set to previous results while the promise is still pending\n * },\n * fulfilled: (value) => {\n * return value // the fresh results\n * },\n * rejected: (error) => {\n * return \"Oops: \" + error\n * }\n * })\n * }\n * }\n *\n * Observable promises can be created immediately in a certain state using\n * `fromPromise.reject(reason)` or `fromPromise.resolve(value?)`.\n * The main advantage of `fromPromise.resolve(value)` over `fromPromise(Promise.resolve(value))` is that the first _synchronously_ starts in the desired state.\n *\n * It is possible to directly create a promise using a resolve, reject function:\n * `fromPromise((resolve, reject) => setTimeout(() => resolve(true), 1000))`\n *\n * @example\n * const fetchResult = fromPromise(fetch(\"http://someurl\"))\n *\n * // combine with when..\n * when(\n * () => fetchResult.state !== \"pending\",\n * () => {\n * console.log(\"Got \", fetchResult.value)\n * }\n * )\n *\n * // or a mobx-react component..\n * const myComponent = observer(({ fetchResult }) => {\n * switch(fetchResult.state) {\n * case \"pending\": return <div>Loading...</div>\n * case \"rejected\": return <div>Ooops... {fetchResult.value}</div>\n * case \"fulfilled\": return <div>Gotcha: {fetchResult.value}</div>\n * }\n * })\n *\n * // or using the case method instead of switch:\n *\n * const myComponent = observer(({ fetchResult }) =>\n * fetchResult.case({\n * pending: () => <div>Loading...</div>,\n * rejected: error => <div>Ooops.. {error}</div>,\n * fulfilled: value => <div>Gotcha: {value}</div>,\n * }))\n *\n * // chain additional handler(s) to the resolve/reject:\n *\n * fetchResult.then(\n * (result) => doSomeTransformation(result),\n * (rejectReason) => console.error('fetchResult was rejected, reason: ' + rejectReason)\n * ).then(\n * (transformedResult) => console.log('transformed fetchResult: ' + transformedResult)\n * )\n *\n * @param {IThenable<T>} promise The promise which will be observed\n * @param {IThenable<T>} oldPromise? The previously observed promise\n * @returns {IPromiseBasedObservable<T>}\n */\nfunction fromPromise(origPromise, oldPromise) {\n invariant(arguments.length <= 2, \"fromPromise expects up to two arguments\");\n invariant(typeof origPromise === \"function\" ||\n (typeof origPromise === \"object\" &&\n origPromise &&\n typeof origPromise.then === \"function\"), \"Please pass a promise or function to fromPromise\");\n if (origPromise.isPromiseBasedObservable === true)\n return origPromise;\n if (typeof origPromise === \"function\") {\n // If it is a (reject, resolve function, wrap it)\n origPromise = new Promise(origPromise);\n }\n var promise = origPromise;\n origPromise.then(action(\"observableFromPromise-resolve\", function (value) {\n promise.value = value;\n promise.state = FULFILLED;\n }), action(\"observableFromPromise-reject\", function (reason) {\n promise.value = reason;\n promise.state = REJECTED;\n }));\n promise.isPromiseBasedObservable = true;\n promise.case = caseImpl;\n var oldData = oldPromise && oldPromise.state === FULFILLED\n ? oldPromise.value\n : undefined;\n extendObservable(promise, {\n value: oldData,\n state: PENDING,\n }, {}, { deep: false });\n return promise;\n}\n(function (fromPromise) {\n fromPromise.reject = action(\"fromPromise.reject\", function (reason) {\n var p = fromPromise(Promise.reject(reason));\n p.state = REJECTED;\n p.value = reason;\n return p;\n });\n function resolveBase(value) {\n if (value === void 0) { value = undefined; }\n var p = fromPromise(Promise.resolve(value));\n p.state = FULFILLED;\n p.value = value;\n return p;\n }\n fromPromise.resolve = action(\"fromPromise.resolve\", resolveBase);\n})(fromPromise || (fromPromise = {}));\n/**\n * Returns true if the provided value is a promise-based observable.\n * @param value any\n * @returns {boolean}\n */\nfunction isPromiseBasedObservable(value) {\n return value && value.isPromiseBasedObservable === true;\n}\n\nvar __spreadArrays = (undefined && undefined.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\n/**\n * Moves an item from one position to another, checking that the indexes given are within bounds.\n *\n * @example\n * const source = observable([1, 2, 3])\n * moveItem(source, 0, 1)\n * console.log(source.map(x => x)) // [2, 1, 3]\n *\n * @export\n * @param {ObservableArray<T>} target\n * @param {number} fromIndex\n * @param {number} toIndex\n * @returns {ObservableArray<T>}\n */\nfunction moveItem(target, fromIndex, toIndex) {\n checkIndex(target, fromIndex);\n checkIndex(target, toIndex);\n if (fromIndex === toIndex) {\n return;\n }\n var oldItems = target.slice();\n var newItems;\n if (fromIndex < toIndex) {\n newItems = __spreadArrays(oldItems.slice(0, fromIndex), oldItems.slice(fromIndex + 1, toIndex + 1), [\n oldItems[fromIndex]\n ], oldItems.slice(toIndex + 1));\n }\n else {\n // toIndex < fromIndex\n newItems = __spreadArrays(oldItems.slice(0, toIndex), [\n oldItems[fromIndex]\n ], oldItems.slice(toIndex, fromIndex), oldItems.slice(fromIndex + 1));\n }\n target.replace(newItems);\n return target;\n}\n/**\n * Checks whether the specified index is within bounds. Throws if not.\n *\n * @private\n * @param {ObservableArray<any>} target\n * @param {number }index\n */\nfunction checkIndex(target, index) {\n if (index < 0) {\n throw new Error(\"[mobx.array] Index out of bounds: \" + index + \" is negative\");\n }\n var length = target.length;\n if (index >= length) {\n throw new Error(\"[mobx.array] Index out of bounds: \" + index + \" is not smaller than \" + length);\n }\n}\n\n/**\n * `lazyObservable` creates an observable around a `fetch` method that will not be invoked\n * until the observable is needed the first time.\n * The fetch method receives a `sink` callback which can be used to replace the\n * current value of the lazyObservable. It is allowed to call `sink` multiple times\n * to keep the lazyObservable up to date with some external resource.\n *\n * Note that it is the `current()` call itself which is being tracked by MobX,\n * so make sure that you don't dereference to early.\n *\n * @example\n * const userProfile = lazyObservable(\n * sink => fetch(\"/myprofile\").then(profile => sink(profile))\n * )\n *\n * // use the userProfile in a React component:\n * const Profile = observer(({ userProfile }) =>\n * userProfile.current() === undefined\n * ? <div>Loading user profile...</div>\n * : <div>{userProfile.current().displayName}</div>\n * )\n *\n * // triggers refresh the userProfile\n * userProfile.refresh()\n *\n * @param {(sink: (newValue: T) => void) => void} fetch method that will be called the first time the value of this observable is accessed. The provided sink can be used to produce a new value, synchronously or asynchronously\n * @param {T} [initialValue=undefined] optional initialValue that will be returned from `current` as long as the `sink` has not been called at least once\n * @returns {{\n * current(): T,\n * refresh(): T,\n * reset(): T\n * pending: boolean\n * }}\n */\nfunction lazyObservable(fetch, initialValue) {\n if (initialValue === void 0) { initialValue = undefined; }\n var started = false;\n var value = observable.box(initialValue, { deep: false });\n var pending = observable.box(false);\n var currentFnc = function () {\n if (!started) {\n started = true;\n _allowStateChanges(true, function () {\n pending.set(true);\n });\n fetch(function (newValue) {\n _allowStateChanges(true, function () {\n value.set(newValue);\n pending.set(false);\n });\n });\n }\n return value.get();\n };\n var resetFnc = action(\"lazyObservable-reset\", function () {\n started = false;\n value.set(initialValue);\n return value.get();\n });\n return {\n current: currentFnc,\n refresh: function () {\n if (started) {\n started = false;\n return currentFnc();\n }\n else {\n return value.get();\n }\n },\n reset: function () {\n return resetFnc();\n },\n get pending() {\n return pending.get();\n },\n };\n}\n\n/**\n * `fromResource` creates an observable whose current state can be inspected using `.current()`,\n * and which can be kept in sync with some external datasource that can be subscribed to.\n *\n * The created observable will only subscribe to the datasource if it is in use somewhere,\n * (un)subscribing when needed. To enable `fromResource` to do that two callbacks need to be provided,\n * one to subscribe, and one to unsubscribe. The subscribe callback itself will receive a `sink` callback, which can be used\n * to update the current state of the observable, allowing observes to react.\n *\n * Whatever is passed to `sink` will be returned by `current()`. The values passed to the sink will not be converted to\n * observables automatically, but feel free to do so.\n * It is the `current()` call itself which is being tracked,\n * so make sure that you don't dereference to early.\n *\n * For inspiration, an example integration with the apollo-client on [github](https://github.com/apollostack/apollo-client/issues/503#issuecomment-241101379),\n * or the [implementation](https://github.com/mobxjs/mobx-utils/blob/1d17cf7f7f5200937f68cc0b5e7ec7f3f71dccba/src/now.ts#L43-L57) of `mobxUtils.now`\n *\n * The following example code creates an observable that connects to a `dbUserRecord`,\n * which comes from an imaginary database and notifies when it has changed.\n *\n * @example\n * function createObservableUser(dbUserRecord) {\n * let currentSubscription;\n * return fromResource(\n * (sink) => {\n * // sink the current state\n * sink(dbUserRecord.fields)\n * // subscribe to the record, invoke the sink callback whenever new data arrives\n * currentSubscription = dbUserRecord.onUpdated(() => {\n * sink(dbUserRecord.fields)\n * })\n * },\n * () => {\n * // the user observable is not in use at the moment, unsubscribe (for now)\n * dbUserRecord.unsubscribe(currentSubscription)\n * }\n * )\n * }\n *\n * // usage:\n * const myUserObservable = createObservableUser(myDatabaseConnector.query(\"name = 'Michel'\"))\n *\n * // use the observable in autorun\n * autorun(() => {\n * // printed everytime the database updates its records\n * console.log(myUserObservable.current().displayName)\n * })\n *\n * // ... or a component\n * const userComponent = observer(({ user }) =>\n * <div>{user.current().displayName}</div>\n * )\n *\n * @export\n * @template T\n * @param {(sink: (newValue: T) => void) => void} subscriber\n * @param {IDisposer} [unsubscriber=NOOP]\n * @param {T} [initialValue=undefined] the data that will be returned by `get()` until the `sink` has emitted its first data\n * @returns {{\n * current(): T;\n * dispose(): void;\n * isAlive(): boolean;\n * }}\n */\nfunction fromResource(subscriber, unsubscriber, initialValue) {\n if (unsubscriber === void 0) { unsubscriber = NOOP; }\n if (initialValue === void 0) { initialValue = undefined; }\n var isActive = false;\n var isDisposed = false;\n var value = initialValue;\n var suspender = function () {\n if (isActive) {\n isActive = false;\n unsubscriber();\n }\n };\n var atom = createAtom(\"ResourceBasedObservable\", function () {\n invariant(!isActive && !isDisposed);\n isActive = true;\n subscriber(function (newValue) {\n _allowStateChanges(true, function () {\n value = newValue;\n atom.reportChanged();\n });\n });\n }, suspender);\n return {\n current: function () {\n invariant(!isDisposed, \"subscribingObservable has already been disposed\");\n var isBeingTracked = atom.reportObserved();\n if (!isBeingTracked && !isActive)\n console.warn(\"Called `get` of a subscribingObservable outside a reaction. Current value will be returned but no new subscription has started\");\n return value;\n },\n dispose: function () {\n isDisposed = true;\n suspender();\n },\n isAlive: function () { return isActive; },\n };\n}\n\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nfunction observableSymbol() {\n return (typeof Symbol === \"function\" && Symbol.observable) || \"@@observable\";\n}\n/**\n * Converts an expression to an observable stream (a.k.a. TC 39 Observable / RxJS observable).\n * The provided expression is tracked by mobx as long as there are subscribers, automatically\n * emitting when new values become available. The expressions respect (trans)actions.\n *\n * @example\n *\n * const user = observable({\n * firstName: \"C.S\",\n * lastName: \"Lewis\"\n * })\n *\n * Rx.Observable\n * .from(mobxUtils.toStream(() => user.firstname + user.lastName))\n * .scan(nameChanges => nameChanges + 1, 0)\n * .subscribe(nameChanges => console.log(\"Changed name \", nameChanges, \"times\"))\n *\n * @export\n * @template T\n * @param {() => T} expression\n * @param {boolean} fireImmediately (by default false)\n * @returns {IObservableStream<T>}\n */\nfunction toStream(expression, fireImmediately) {\n var _a;\n if (fireImmediately === void 0) { fireImmediately = false; }\n var computedValue = computed(expression);\n return _a = {\n subscribe: function (observer) {\n if (\"function\" === typeof observer) {\n return {\n unsubscribe: observe(computedValue, function (_a) {\n var newValue = _a.newValue;\n return observer(newValue);\n }, fireImmediately),\n };\n }\n if (observer && \"object\" === typeof observer && observer.next) {\n return {\n unsubscribe: observe(computedValue, function (_a) {\n var newValue = _a.newValue;\n return observer.next(newValue);\n }, fireImmediately),\n };\n }\n return {\n unsubscribe: function () { },\n };\n }\n },\n _a[observableSymbol()] = function () {\n return this;\n },\n _a;\n}\nvar StreamListener = /** @class */ (function () {\n function StreamListener(observable, initialValue) {\n var _this = this;\n Object.defineProperty(this, \"current\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"subscription\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n makeObservable(this);\n runInAction(function () {\n _this.current = initialValue;\n _this.subscription = observable.subscribe(_this);\n });\n }\n Object.defineProperty(StreamListener.prototype, \"dispose\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function () {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n });\n Object.defineProperty(StreamListener.prototype, \"next\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function (value) {\n this.current = value;\n }\n });\n Object.defineProperty(StreamListener.prototype, \"complete\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function () {\n this.dispose();\n }\n });\n Object.defineProperty(StreamListener.prototype, \"error\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function (value) {\n this.current = value;\n this.dispose();\n }\n });\n __decorate([\n observable.ref\n ], StreamListener.prototype, \"current\", void 0);\n __decorate([\n action.bound\n ], StreamListener.prototype, \"next\", null);\n __decorate([\n action.bound\n ], StreamListener.prototype, \"complete\", null);\n __decorate([\n action.bound\n ], StreamListener.prototype, \"error\", null);\n return StreamListener;\n}());\nfunction fromStream(observable, initialValue) {\n if (initialValue === void 0) { initialValue = undefined; }\n return new StreamListener(observable, initialValue);\n}\n\nvar __assign = (undefined && undefined.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar RESERVED_NAMES = [\"model\", \"reset\", \"submit\", \"isDirty\", \"isPropertyDirty\", \"resetProperty\"];\nvar ViewModel = /** @class */ (function () {\n function ViewModel(model) {\n var _this = this;\n Object.defineProperty(this, \"model\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: model\n });\n Object.defineProperty(this, \"localValues\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: observable.map({})\n });\n Object.defineProperty(this, \"localComputedValues\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: observable.map({})\n });\n Object.defineProperty(this, \"isPropertyDirty\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: function (key) {\n return _this.localValues.has(key);\n }\n });\n makeObservable(this);\n invariant(isObservableObject(model), \"createViewModel expects an observable object\");\n var ownMethodsAndProperties = getAllMethodsAndProperties(this);\n // use this helper as Object.getOwnPropertyNames doesn't return getters\n getAllMethodsAndProperties(model).forEach(function (key) {\n var _a;\n if (ownMethodsAndProperties.includes(key)) {\n return;\n }\n if (key === $mobx || key === \"__mobxDidRunLazyInitializers\") {\n return;\n }\n invariant(RESERVED_NAMES.indexOf(key) === -1, \"The propertyname \" + key + \" is reserved and cannot be used with viewModels\");\n if (isComputedProp(model, key)) {\n var computedBox = _getAdministration(model, key); // Fixme: there is no clear api to get the derivation\n var get = computedBox.derivation.bind(_this);\n var set = (_a = computedBox.setter_) === null || _a === void 0 ? void 0 : _a.bind(_this);\n _this.localComputedValues.set(key, computed(get, { set: set }));\n }\n var descriptor = Object.getOwnPropertyDescriptor(model, key);\n var additionalDescriptor = descriptor ? { enumerable: descriptor.enumerable } : {};\n Object.defineProperty(_this, key, __assign(__assign({}, additionalDescriptor), { configurable: true, get: function () {\n if (isComputedProp(model, key))\n return _this.localComputedValues.get(key).get();\n if (_this.isPropertyDirty(key))\n return _this.localValues.get(key);\n else\n return _this.model[key];\n }, set: action(function (value) {\n if (isComputedProp(model, key)) {\n _this.localComputedValues.get(key).set(value);\n }\n else if (value !== _this.model[key]) {\n _this.localValues.set(key, value);\n }\n else {\n _this.localValues.delete(key);\n }\n }) }));\n });\n }\n Object.defineProperty(ViewModel.prototype, \"isDirty\", {\n get: function () {\n return this.localValues.size > 0;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ViewModel.prototype, \"changedValues\", {\n get: function () {\n return new Map(this.localValues);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ViewModel.prototype, \"submit\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function () {\n var _this = this;\n keys(this.localValues).forEach(function (key) {\n var source = _this.localValues.get(key);\n var destination = _this.model[key];\n if (isObservableArray(destination)) {\n destination.replace(source);\n }\n else if (isObservableMap(destination)) {\n destination.clear();\n destination.merge(source);\n }\n else if (!isComputed(source)) {\n _this.model[key] = source;\n }\n });\n this.localValues.clear();\n }\n });\n Object.defineProperty(ViewModel.prototype, \"reset\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function () {\n this.localValues.clear();\n }\n });\n Object.defineProperty(ViewModel.prototype, \"resetProperty\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function (key) {\n this.localValues.delete(key);\n }\n });\n __decorate$1([\n computed\n ], ViewModel.prototype, \"isDirty\", null);\n __decorate$1([\n computed\n ], ViewModel.prototype, \"changedValues\", null);\n __decorate$1([\n action.bound\n ], ViewModel.prototype, \"submit\", null);\n __decorate$1([\n action.bound\n ], ViewModel.prototype, \"reset\", null);\n __decorate$1([\n action.bound\n ], ViewModel.prototype, \"resetProperty\", null);\n return ViewModel;\n}());\n/**\n * `createViewModel` takes an object with observable properties (model)\n * and wraps a viewmodel around it. The viewmodel proxies all enumerable properties of the original model with the following behavior:\n * - as long as no new value has been assigned to the viewmodel property, the original property will be returned.\n * - any future change in the model will be visible in the viewmodel as well unless the viewmodel property was dirty at the time of the attempted change.\n * - once a new value has been assigned to a property of the viewmodel, that value will be returned during a read of that property in the future. However, the original model remain untouched until `submit()` is called.\n *\n * The viewmodel exposes the following additional methods, besides all the enumerable properties of the model:\n * - `submit()`: copies all the values of the viewmodel to the model and resets the state\n * - `reset()`: resets the state of the viewmodel, abandoning all local modifications\n * - `resetProperty(propName)`: resets the specified property of the viewmodel\n * - `isDirty`: observable property indicating if the viewModel contains any modifications\n * - `isPropertyDirty(propName)`: returns true if the specified property is dirty\n * - `changedValues`: returns a key / value map with the properties that have been changed in the model so far\n * - `model`: The original model object for which this viewModel was created\n *\n * You may use observable arrays, maps and objects with `createViewModel` but keep in mind to assign fresh instances of those to the viewmodel's properties, otherwise you would end up modifying the properties of the original model.\n * Note that if you read a non-dirty property, viewmodel only proxies the read to the model. You therefore need to assign a fresh instance not only the first time you make the assignment but also after calling `reset()` or `submit()`.\n *\n * @example\n * class Todo {\n * \\@observable title = \"Test\"\n * }\n *\n * const model = new Todo()\n * const viewModel = createViewModel(model);\n *\n * autorun(() => console.log(viewModel.model.title, \",\", viewModel.title))\n * // prints \"Test, Test\"\n * model.title = \"Get coffee\"\n * // prints \"Get coffee, Get coffee\", viewModel just proxies to model\n * viewModel.title = \"Get tea\"\n * // prints \"Get coffee, Get tea\", viewModel's title is now dirty, and the local value will be printed\n * viewModel.submit()\n * // prints \"Get tea, Get tea\", changes submitted from the viewModel to the model, viewModel is proxying again\n * viewModel.title = \"Get cookie\"\n * // prints \"Get tea, Get cookie\" // viewModel has diverged again\n * viewModel.reset()\n * // prints \"Get tea, Get tea\", changes of the viewModel have been abandoned\n *\n * @param {T} model\n * @returns {(T & IViewModel<T>)}\n * ```\n */\nfunction createViewModel(model) {\n return new ViewModel(model);\n}\n\n/**\n * MobX normally suspends any computed value that is not in use by any reaction,\n * and lazily re-evaluates the expression if needed outside a reaction while not in use.\n * `keepAlive` marks a computed value as always in use, meaning that it will always fresh, but never disposed automatically.\n *\n * @example\n * const obj = observable({\n * number: 3,\n * doubler: function() { return this.number * 2 }\n * })\n * const stop = keepAlive(obj, \"doubler\")\n *\n * @param {Object} target an object that has a computed property, created by `@computed` or `extendObservable`\n * @param {string} property the name of the property to keep alive\n * @returns {IDisposer} stops this keep alive so that the computed value goes back to normal behavior\n */\n/**\n * @example\n * const number = observable(3)\n * const doubler = computed(() => number.get() * 2)\n * const stop = keepAlive(doubler)\n * // doubler will now stay in sync reactively even when there are no further observers\n * stop()\n * // normal behavior, doubler results will be recomputed if not observed but needed, but lazily\n *\n * @param {IComputedValue<any>} computedValue created using the `computed` function\n * @returns {IDisposer} stops this keep alive so that the computed value goes back to normal behavior\n */\nfunction keepAlive(_1, _2) {\n var computed = getAtom(_1, _2);\n if (!computed)\n throw new Error(\"No computed provided, please provide an object created with `computed(() => expr)` or an object + property name\");\n return observe(computed, function () { });\n}\n\n/**\n * `queueProcessor` takes an observable array, observes it and calls `processor`\n * once for each item added to the observable array, optionally debouncing the action\n *\n * @example\n * const pendingNotifications = observable([])\n * const stop = queueProcessor(pendingNotifications, msg => {\n * // show Desktop notification\n * new Notification(msg);\n * })\n *\n * // usage:\n * pendingNotifications.push(\"test!\")\n *\n * @param {T[]} observableArray observable array instance to track\n * @param {(item: T) => void} processor action to call per item\n * @param {number} [debounce=0] optional debounce time in ms. With debounce 0 the processor will run synchronously\n * @returns {IDisposer} stops the processor\n */\nfunction queueProcessor(observableArray, processor, debounce) {\n if (debounce === void 0) { debounce = 0; }\n if (!isObservableArray(observableArray))\n throw new Error(\"Expected observable array as first argument\");\n if (!isAction(processor))\n processor = action(\"queueProcessor\", processor);\n var runner = function () {\n // construct a final set\n var items = observableArray.slice(0);\n // clear the queue for next iteration\n runInAction(function () { return observableArray.splice(0); });\n // fire processor\n items.forEach(processor);\n };\n if (debounce > 0)\n return autorun(runner, { delay: debounce });\n else\n return autorun(runner);\n}\n\n/**\n * `chunkProcessor` takes an observable array, observes it and calls `processor`\n * once for a chunk of items added to the observable array, optionally deboucing the action.\n * The maximum chunk size can be limited by number.\n * This allows both, splitting larger into smaller chunks or (when debounced) combining smaller\n * chunks and/or single items into reasonable chunks of work.\n *\n * @example\n * const trackedActions = observable([])\n * const stop = chunkProcessor(trackedActions, chunkOfMax10Items => {\n * sendTrackedActionsToServer(chunkOfMax10Items);\n * }, 100, 10)\n *\n * // usage:\n * trackedActions.push(\"scrolled\")\n * trackedActions.push(\"hoveredButton\")\n * // when both pushes happen within 100ms, there will be only one call to server\n *\n * @param {T[]} observableArray observable array instance to track\n * @param {(item: T[]) => void} processor action to call per item\n * @param {number} [debounce=0] optional debounce time in ms. With debounce 0 the processor will run synchronously\n * @param {number} [maxChunkSize=0] optionally do not call on full array but smaller chunks. With 0 it will process the full array.\n * @returns {IDisposer} stops the processor\n */\nfunction chunkProcessor(observableArray, processor, debounce, maxChunkSize) {\n if (debounce === void 0) { debounce = 0; }\n if (maxChunkSize === void 0) { maxChunkSize = 0; }\n if (!isObservableArray(observableArray))\n throw new Error(\"Expected observable array as first argument\");\n if (!isAction(processor))\n processor = action(\"chunkProcessor\", processor);\n var runner = function () {\n var _loop_1 = function () {\n var chunkSize = maxChunkSize === 0\n ? observableArray.length\n : Math.min(observableArray.length, maxChunkSize);\n // construct a final set\n var items = observableArray.slice(0, chunkSize);\n // clear the slice for next iteration\n runInAction(function () { return observableArray.splice(0, chunkSize); });\n // fire processor\n processor(items);\n };\n while (observableArray.length > 0) {\n _loop_1();\n }\n };\n if (debounce > 0)\n return autorun(runner, { delay: debounce });\n else\n return autorun(runner);\n}\n\nvar tickers = {};\n/**\n * Returns the current date time as epoch number.\n * The date time is read from an observable which is updated automatically after the given interval.\n * So basically it treats time as an observable.\n *\n * The function takes an interval as parameter, which indicates how often `now()` will return a new value.\n * If no interval is given, it will update each second. If \"frame\" is specified, it will update each time a\n * `requestAnimationFrame` is available.\n *\n * Multiple clocks with the same interval will automatically be synchronized.\n *\n * Countdown example: https://jsfiddle.net/mweststrate/na0qdmkw/\n *\n * @example\n *\n * const start = Date.now()\n *\n * autorun(() => {\n * console.log(\"Seconds elapsed: \", (mobxUtils.now() - start) / 1000)\n * })\n *\n *\n * @export\n * @param {(number | \"frame\")} [interval=1000] interval in milliseconds about how often the interval should update\n * @returns\n */\nfunction now(interval) {\n if (interval === void 0) { interval = 1000; }\n if (!_isComputingDerivation()) {\n // See #40\n return Date.now();\n }\n if (!tickers[interval]) {\n if (typeof interval === \"number\")\n tickers[interval] = createIntervalTicker(interval);\n else\n tickers[interval] = createAnimationFrameTicker();\n }\n return tickers[interval].current();\n}\nfunction createIntervalTicker(interval) {\n var subscriptionHandle;\n return fromResource(function (sink) {\n sink(Date.now());\n subscriptionHandle = setInterval(function () { return sink(Date.now()); }, interval);\n }, function () {\n clearInterval(subscriptionHandle);\n }, Date.now());\n}\nfunction createAnimationFrameTicker() {\n var frameBasedTicker = fromResource(function (sink) {\n sink(Date.now());\n function scheduleTick() {\n window.requestAnimationFrame(function () {\n sink(Date.now());\n if (frameBasedTicker.isAlive())\n scheduleTick();\n });\n }\n scheduleTick();\n }, function () { }, Date.now());\n return frameBasedTicker;\n}\n\n/**\n *`expr` can be used to create temporary computed values inside computed values.\n * Nesting computed values is useful to create cheap computations in order to prevent expensive computations from needing to run.\n * In the following example the expression prevents that a component is rerender _each time_ the selection changes;\n * instead it will only rerenders when the current todo is (de)selected.\n *\n * `expr(func)` is an alias for `computed(func).get()`.\n * Please note that the function given to `expr` is evaluated _twice_ in the scenario that the overall expression value changes.\n * It is evaluated the first time when any observables it depends on change.\n * It is evaluated a second time when a change in its value triggers the outer computed or reaction to evaluate, which recreates and reevaluates the expression.\n *\n * In the following example, the expression prevents the `TodoView` component from being re-rendered if the selection changes elsewhere.\n * Instead, the component will only re-render when the relevant todo is (de)selected, which happens much less frequently.\n *\n * @example\n * const Todo = observer((props) => {\n * const todo = props.todo\n * const isSelected = mobxUtils.expr(() => props.viewState.selection === todo)\n * const TodoView = observer(({ todo, editorState }) => {\n * const isSelected = mobxUtils.expr(() => editorState.selection === todo)\n * return <div className={isSelected ? \"todo todo-selected\" : \"todo\"}>{todo.title}</div>\n * })\n */\nfunction expr(expr) {\n if (!_isComputingDerivation())\n console.warn(\"'expr' should only be used inside other reactive functions.\");\n // optimization: would be more efficient if the expr itself wouldn't be evaluated first on the next change, but just a 'changed' signal would be fired\n return computed(expr).get();\n}\n\nvar __assign$1 = (undefined && undefined.__assign) || function () {\n __assign$1 = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$1.apply(this, arguments);\n};\nvar memoizationId = 0;\n/**\n * Creates a function that maps an object to a view.\n * The mapping is memoized.\n *\n * See the [transformer](#createtransformer-in-detail) section for more details.\n *\n * @param transformer\n * @param onCleanup\n */\nfunction createTransformer(transformer, arg2) {\n invariant(typeof transformer === \"function\" && transformer.length < 2, \"createTransformer expects a function that accepts one argument\");\n // Memoizes: object id -> reactive view that applies transformer to the object\n var views = {};\n var onCleanup = undefined;\n var keepAlive = false;\n var debugNameGenerator = undefined;\n if (typeof arg2 === \"object\") {\n onCleanup = arg2.onCleanup;\n keepAlive = arg2.keepAlive !== undefined ? arg2.keepAlive : false;\n debugNameGenerator = arg2.debugNameGenerator;\n }\n else if (typeof arg2 === \"function\") {\n onCleanup = arg2;\n }\n function createView(sourceIdentifier, sourceObject) {\n var latestValue;\n var computedValueOptions = {};\n if (typeof arg2 === \"object\") {\n onCleanup = arg2.onCleanup;\n debugNameGenerator = arg2.debugNameGenerator;\n computedValueOptions = arg2;\n }\n else if (typeof arg2 === \"function\") {\n onCleanup = arg2;\n }\n else {\n onCleanup = undefined;\n debugNameGenerator = undefined;\n }\n var prettifiedName = debugNameGenerator\n ? debugNameGenerator(sourceObject)\n : \"Transformer-\" + transformer.name + \"-\" + sourceIdentifier;\n var expr = computed(function () {\n return (latestValue = transformer(sourceObject));\n }, __assign$1(__assign$1({}, computedValueOptions), { name: prettifiedName }));\n if (!keepAlive) {\n var disposer_1 = onBecomeUnobserved(expr, function () {\n delete views[sourceIdentifier];\n disposer_1();\n if (onCleanup)\n onCleanup(latestValue, sourceObject);\n });\n }\n return expr;\n }\n var memoWarned = false;\n return function (object) {\n var identifier = getMemoizationId(object);\n var reactiveView = views[identifier];\n if (reactiveView)\n return reactiveView.get();\n if (!keepAlive && !_isComputingDerivation()) {\n if (!memoWarned) {\n console.warn(\"invoking a transformer from outside a reactive context won't memorized \" +\n \"and is cleaned up immediately, unless keepAlive is set\");\n memoWarned = true;\n }\n var value = transformer(object);\n if (onCleanup)\n onCleanup(value, object);\n return value;\n }\n // Not in cache; create a reactive view\n reactiveView = views[identifier] = createView(identifier, object);\n return reactiveView.get();\n };\n}\nfunction getMemoizationId(object) {\n var objectType = typeof object;\n if (objectType === \"string\")\n return \"string:\" + object;\n if (objectType === \"number\")\n return \"number:\" + object;\n if (object === null || (objectType !== \"object\" && objectType !== \"function\"))\n throw new Error(\"[mobx-utils] transform expected an object, function, string or number, got: \" + String(object));\n var tid = object.$transformId;\n if (tid === undefined) {\n tid = \"memoizationId:\" + ++memoizationId;\n addHiddenProp(object, \"$transformId\", tid);\n }\n return tid;\n}\n\nfunction buildPath(entry) {\n if (!entry)\n return \"ROOT\";\n var res = [];\n while (entry.parent) {\n res.push(entry.path);\n entry = entry.parent;\n }\n return res.reverse().join(\"/\");\n}\nfunction isRecursivelyObservable(thing) {\n return isObservableObject(thing) || isObservableArray(thing) || isObservableMap(thing);\n}\n/**\n * Given an object, deeply observes the given object.\n * It is like `observe` from mobx, but applied recursively, including all future children.\n *\n * Note that the given object cannot ever contain cycles and should be a tree.\n *\n * As benefit: path and root will be provided in the callback, so the signature of the listener is\n * (change, path, root) => void\n *\n * The returned disposer can be invoked to clean up the listener\n *\n * deepObserve cannot be used on computed values.\n *\n * @example\n * const disposer = deepObserve(target, (change, path) => {\n * console.dir(change)\n * })\n */\nfunction deepObserve(target, listener) {\n var entrySet = new WeakMap();\n function genericListener(change) {\n var entry = entrySet.get(change.object);\n processChange(change, entry);\n listener(change, buildPath(entry), target);\n }\n function processChange(change, parent) {\n switch (change.type) {\n // Object changes\n case \"add\": // also for map\n observeRecursively(change.newValue, parent, change.name);\n break;\n case \"update\": // also for array and map\n unobserveRecursively(change.oldValue);\n observeRecursively(change.newValue, parent, change.name || \"\" + change.index);\n break;\n case \"remove\": // object\n case \"delete\": // map\n unobserveRecursively(change.oldValue);\n break;\n // Array changes\n case \"splice\":\n change.removed.map(unobserveRecursively);\n change.added.forEach(function (value, idx) {\n return observeRecursively(value, parent, \"\" + (change.index + idx));\n });\n // update paths\n for (var i = change.index + change.addedCount; i < change.object.length; i++) {\n if (isRecursivelyObservable(change.object[i])) {\n var entry = entrySet.get(change.object[i]);\n if (entry)\n entry.path = \"\" + i;\n }\n }\n break;\n }\n }\n function observeRecursively(thing, parent, path) {\n if (isRecursivelyObservable(thing)) {\n var entry = entrySet.get(thing);\n if (entry) {\n if (entry.parent !== parent || entry.path !== path)\n // MWE: this constraint is artificial, and this tool could be made to work with cycles,\n // but it increases administration complexity, has tricky edge cases and the meaning of 'path'\n // would become less clear. So doesn't seem to be needed for now\n throw new Error(\"The same observable object cannot appear twice in the same tree,\" +\n (\" trying to assign it to '\" + buildPath(parent) + \"/\" + path + \"',\") +\n (\" but it already exists at '\" + buildPath(entry.parent) + \"/\" + entry.path + \"'\"));\n }\n else {\n var entry_1 = {\n parent: parent,\n path: path,\n dispose: observe(thing, genericListener),\n };\n entrySet.set(thing, entry_1);\n entries(thing).forEach(function (_a) {\n var key = _a[0], value = _a[1];\n return observeRecursively(value, entry_1, key);\n });\n }\n }\n }\n function unobserveRecursively(thing) {\n if (isRecursivelyObservable(thing)) {\n var entry = entrySet.get(thing);\n if (!entry)\n return;\n entrySet.delete(thing);\n entry.dispose();\n values(thing).forEach(unobserveRecursively);\n }\n }\n observeRecursively(target, undefined, \"\");\n return function () {\n unobserveRecursively(target);\n };\n}\n\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Reactively sorts a base observable array into multiple observable arrays based on the value of a\n * `groupBy: (item: T) => G` function.\n *\n * This observes the individual computed groupBy values and only updates the source and dest arrays\n * when there is an actual change, so this is far more efficient than, for example\n * `base.filter(i => groupBy(i) === 'we')`. Call #dispose() to stop tracking.\n *\n * No guarantees are made about the order of items in the grouped arrays.\n *\n * The resulting map of arrays is read-only. clear(), set(), delete() are not supported and\n * modifying the group arrays will lead to undefined behavior.\n *\n * NB: ObservableGroupMap relies on `Symbol`s. If you are targeting a platform which doesn't\n * support these natively, you will need to provide a polyfill.\n *\n * @param {array} base The array to sort into groups.\n * @param {function} groupBy The function used for grouping.\n * @param options Object with properties:\n * `name`: Debug name of this ObservableGroupMap.\n * `keyToName`: Function to create the debug names of the observable group arrays.\n *\n * @example\n * const slices = observable([\n * { day: \"mo\", hours: 12 },\n * { day: \"tu\", hours: 2 },\n * ])\n * const slicesByDay = new ObservableGroupMap(slices, (slice) => slice.day)\n * autorun(() => console.log(\n * slicesByDay.get(\"mo\")?.length ?? 0,\n * slicesByDay.get(\"we\"))) // outputs 1, undefined\n * slices[0].day = \"we\" // outputs 0, [{ day: \"we\", hours: 12 }]\n */\nvar ObservableGroupMap = /** @class */ (function (_super) {\n __extends(ObservableGroupMap, _super);\n function ObservableGroupMap(base, groupBy, _a) {\n var _b = _a === void 0 ? {} : _a, _c = _b.name, name = _c === void 0 ? \"ogm\" + ((Math.random() * 1000) | 0) : _c, _d = _b.keyToName, keyToName = _d === void 0 ? function (x) { return \"\" + x; } : _d;\n var _this = _super.call(this) || this;\n /**\n * Base observable array which is being sorted into groups.\n */\n Object.defineProperty(_this, \"_base\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /**\n * The ObservableGroupMap needs to track some state per-item. This is the name/symbol of the\n * property used to attach the state.\n */\n Object.defineProperty(_this, \"_ogmInfoKey\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /**\n * The function used to group the items.\n */\n Object.defineProperty(_this, \"_groupBy\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /**\n * This function is used to generate the mobx debug names of the observable group arrays.\n */\n Object.defineProperty(_this, \"_keyToName\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(_this, \"_disposeBaseObserver\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n _this._keyToName = keyToName;\n _this._groupBy = groupBy;\n _this._ogmInfoKey = Symbol(\"ogmInfo\" + name);\n _this._base = base;\n for (var i = 0; i < base.length; i++) {\n _this._addItem(base[i]);\n }\n _this._disposeBaseObserver = observe(_this._base, function (change) {\n if (\"splice\" === change.type) {\n transaction(function () {\n for (var _i = 0, _a = change.removed; _i < _a.length; _i++) {\n var removed = _a[_i];\n _this._removeItem(removed);\n }\n for (var _b = 0, _c = change.added; _b < _c.length; _b++) {\n var added = _c[_b];\n _this._addItem(added);\n }\n });\n }\n else if (\"update\" === change.type) {\n transaction(function () {\n _this._removeItem(change.oldValue);\n _this._addItem(change.newValue);\n });\n }\n else {\n throw new Error(\"illegal state\");\n }\n });\n return _this;\n }\n Object.defineProperty(ObservableGroupMap.prototype, \"clear\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function () {\n throw new Error(\"not supported\");\n }\n });\n Object.defineProperty(ObservableGroupMap.prototype, \"delete\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function (_key) {\n throw new Error(\"not supported\");\n }\n });\n Object.defineProperty(ObservableGroupMap.prototype, \"set\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function (_key, _value) {\n throw new Error(\"not supported\");\n }\n });\n /**\n * Disposes all observers created during construction and removes state added to base array\n * items.\n */\n Object.defineProperty(ObservableGroupMap.prototype, \"dispose\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function () {\n this._disposeBaseObserver();\n for (var i = 0; i < this._base.length; i++) {\n var item = this._base[i];\n var grouperItemInfo = item[this._ogmInfoKey];\n grouperItemInfo.reaction();\n delete item[this._ogmInfoKey];\n }\n }\n });\n Object.defineProperty(ObservableGroupMap.prototype, \"_getGroupArr\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function (key) {\n var result = _super.prototype.get.call(this, key);\n if (undefined === result) {\n result = observable([], { name: \"GroupArray[\" + this._keyToName(key) + \"]\", deep: false });\n _super.prototype.set.call(this, key, result);\n }\n return result;\n }\n });\n Object.defineProperty(ObservableGroupMap.prototype, \"_removeFromGroupArr\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function (key, itemIndex) {\n var arr = _super.prototype.get.call(this, key);\n if (1 === arr.length) {\n _super.prototype.delete.call(this, key);\n }\n else if (itemIndex === arr.length - 1) {\n // last position in array\n arr.length--;\n }\n else {\n arr[itemIndex] = arr[arr.length - 1];\n arr[itemIndex][this._ogmInfoKey].groupArrIndex = itemIndex;\n arr.length--;\n }\n }\n });\n Object.defineProperty(ObservableGroupMap.prototype, \"_addItem\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function (item) {\n var _this = this;\n var groupByValue = this._groupBy(item);\n var groupArr = this._getGroupArr(groupByValue);\n var value = {\n groupByValue: groupByValue,\n groupArrIndex: groupArr.length,\n reaction: reaction(function () { return _this._groupBy(item); }, function (newGroupByValue, _r) {\n var grouperItemInfo = item[_this._ogmInfoKey];\n _this._removeFromGroupArr(grouperItemInfo.groupByValue, grouperItemInfo.groupArrIndex);\n var newGroupArr = _this._getGroupArr(newGroupByValue);\n var newGroupArrIndex = newGroupArr.length;\n newGroupArr.push(item);\n grouperItemInfo.groupByValue = newGroupByValue;\n grouperItemInfo.groupArrIndex = newGroupArrIndex;\n }),\n };\n Object.defineProperty(item, this._ogmInfoKey, {\n configurable: true,\n enumerable: false,\n value: value,\n });\n groupArr.push(item);\n }\n });\n Object.defineProperty(ObservableGroupMap.prototype, \"_removeItem\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function (item) {\n var grouperItemInfo = item[this._ogmInfoKey];\n this._removeFromGroupArr(grouperItemInfo.groupByValue, grouperItemInfo.groupArrIndex);\n grouperItemInfo.reaction();\n delete item[this._ogmInfoKey];\n }\n });\n return ObservableGroupMap;\n}(ObservableMap));\n\n/**\n * @private\n */\nvar DeepMapEntry = /** @class */ (function () {\n function DeepMapEntry(base, args) {\n Object.defineProperty(this, \"base\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: base\n });\n Object.defineProperty(this, \"args\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: args\n });\n Object.defineProperty(this, \"root\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"closest\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"closestIdx\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"isDisposed\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n var current = (this.closest = this.root = base);\n var i = 0;\n for (; i < this.args.length - 1; i++) {\n current = current.get(args[i]);\n if (current)\n this.closest = current;\n else\n break;\n }\n this.closestIdx = i;\n }\n Object.defineProperty(DeepMapEntry.prototype, \"exists\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function () {\n this.assertNotDisposed();\n var l = this.args.length;\n return this.closestIdx >= l - 1 && this.closest.has(this.args[l - 1]);\n }\n });\n Object.defineProperty(DeepMapEntry.prototype, \"get\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function () {\n this.assertNotDisposed();\n if (!this.exists())\n throw new Error(\"Entry doesn't exist\");\n return this.closest.get(this.args[this.args.length - 1]);\n }\n });\n Object.defineProperty(DeepMapEntry.prototype, \"set\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function (value) {\n this.assertNotDisposed();\n var l = this.args.length;\n var current = this.closest;\n // create remaining maps\n for (var i = this.closestIdx; i < l - 1; i++) {\n var m = new Map();\n current.set(this.args[i], m);\n current = m;\n }\n this.closestIdx = l - 1;\n this.closest = current;\n current.set(this.args[l - 1], value);\n }\n });\n Object.defineProperty(DeepMapEntry.prototype, \"delete\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function () {\n this.assertNotDisposed();\n if (!this.exists())\n throw new Error(\"Entry doesn't exist\");\n var l = this.args.length;\n this.closest.delete(this.args[l - 1]);\n // clean up remaining maps if needed (reconstruct stack first)\n var c = this.root;\n var maps = [c];\n for (var i = 0; i < l - 1; i++) {\n c = c.get(this.args[i]);\n maps.push(c);\n }\n for (var i = maps.length - 1; i > 0; i--) {\n if (maps[i].size === 0)\n maps[i - 1].delete(this.args[i - 1]);\n }\n this.isDisposed = true;\n }\n });\n Object.defineProperty(DeepMapEntry.prototype, \"assertNotDisposed\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function () {\n // TODO: once this becomes annoying, we should introduce a reset method to re-run the constructor logic\n if (this.isDisposed)\n throw new Error(\"Concurrent modification exception\");\n }\n });\n return DeepMapEntry;\n}());\n/**\n * @private\n */\nvar DeepMap = /** @class */ (function () {\n function DeepMap() {\n Object.defineProperty(this, \"store\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new Map()\n });\n Object.defineProperty(this, \"argsLength\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: -1\n });\n Object.defineProperty(this, \"last\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n }\n Object.defineProperty(DeepMap.prototype, \"entry\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function (args) {\n if (this.argsLength === -1)\n this.argsLength = args.length;\n else if (this.argsLength !== args.length)\n throw new Error(\"DeepMap should be used with functions with a consistent length, expected: \" + this.argsLength + \", got: \" + args.length);\n if (this.last)\n this.last.isDisposed = true;\n return (this.last = new DeepMapEntry(this.store, args));\n }\n });\n return DeepMap;\n}());\n\nvar __assign$2 = (undefined && undefined.__assign) || function () {\n __assign$2 = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign$2.apply(this, arguments);\n};\nvar __spreadArrays$1 = (undefined && undefined.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\n/**\n * computedFn takes a function with an arbitrary amount of arguments,\n * and memoizes the output of the function based on the arguments passed in.\n *\n * computedFn(fn) returns a function with the very same signature. There is no limit on the amount of arguments\n * that is accepted. However, the amount of arguments must be constant and default arguments are not supported.\n *\n * By default the output of a function call will only be memoized as long as the\n * output is being observed.\n *\n * The function passes into `computedFn` should be pure, not be an action and only be relying on\n * observables.\n *\n * Setting `keepAlive` to `true` will cause the output to be forcefully cached forever.\n * Note that this might introduce memory leaks!\n *\n * @example\n * const store = observable({\n a: 1,\n b: 2,\n c: 3,\n m: computedFn(function(x) {\n return this.a * this.b * x\n })\n })\n\n const d = autorun(() => {\n // store.m(3) will be cached as long as this autorun is running\n console.log(store.m(3) * store.c)\n })\n *\n * @param fn\n * @param keepAliveOrOptions\n */\nfunction computedFn(fn, keepAliveOrOptions) {\n if (keepAliveOrOptions === void 0) { keepAliveOrOptions = false; }\n if (isAction(fn))\n throw new Error(\"computedFn shouldn't be used on actions\");\n var memoWarned = false;\n var i = 0;\n var opts = typeof keepAliveOrOptions === \"boolean\"\n ? { keepAlive: keepAliveOrOptions }\n : keepAliveOrOptions;\n var d = new DeepMap();\n return function () {\n var _this = this;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var entry = d.entry(args);\n // cache hit, return\n if (entry.exists())\n return entry.get().get();\n // if function is invoked, and its a cache miss without reactive, there is no point in caching...\n if (!opts.keepAlive && !_isComputingDerivation()) {\n if (!memoWarned) {\n console.warn(\"invoking a computedFn from outside an reactive context won't be memoized, unless keepAlive is set\");\n memoWarned = true;\n }\n return fn.apply(this, args);\n }\n // create new entry\n var latestValue;\n var c = computed(function () {\n return (latestValue = fn.apply(_this, args));\n }, __assign$2(__assign$2({}, opts), { name: \"computedFn(\" + (opts.name || fn.name) + \"#\" + ++i + \")\" }));\n entry.set(c);\n // clean up if no longer observed\n if (!opts.keepAlive)\n onBecomeUnobserved(c, function () {\n d.entry(args).delete();\n if (opts.onCleanup)\n opts.onCleanup.apply(opts, __spreadArrays$1([latestValue], args));\n latestValue = undefined;\n });\n // return current val\n return c.get();\n };\n}\n\nexport { FULFILLED, IDENTITY, NOOP, ObservableGroupMap, PENDING, REJECTED, ViewModel, addHiddenProp, chunkProcessor, computedFn, createTransformer, createViewModel, deepObserve, expr, fail, fromPromise, fromResource, fromStream, getAllMethodsAndProperties, invariant, isPromiseBasedObservable, keepAlive, lazyObservable, moveItem, now, queueProcessor, toStream };\n", "export class FlowCoreError extends Error {\n constructor(message: string, cause?: Error) {\n super(message);\n this.name = this.constructor.name;\n this.cause = cause;\n }\n}\n", "import { FlowCoreError } from './flow-core-error';\n\nexport class FlowCoreExpressionError extends FlowCoreError {\n constructor(expression: string, public readonly reason: 'parseError' | 'evaluationError', public readonly errors: string[]) {\n super(`Failed to evaluate expression <${expression}>: ${errors.join(', ')}`);\n }\n}\n", "import { FlowCoreExpressionError } from '../../errors';\nimport { isNil } from '../../utils/type-checks';\nimport { FlowCoreExpression } from '../flow-core-expression';\nimport { ParserExpression, ParserFunctionExpression } from '../types';\n\nfunction stateCustomFunction(\n expr: ParserFunctionExpression,\n parentExpression: FlowCoreExpression<any>\n): ParserExpression {\n if (!parentExpression.store) {\n throw new FlowCoreExpressionError(parentExpression.expression, 'evaluationError', ['no state store provided']);\n }\n\n const path = expr.slice(1).join('.');\n const val = parentExpression.store.get(path);\n\n if (isNil(val)) {\n return null;\n } else if (typeof val === 'object') {\n return ['literal', val];\n } else {\n return val as any;\n }\n}\n\nexport default {\n name: 'state',\n fn: stateCustomFunction\n};\n", "var index = {\n schemeGroups: {\n sequential: [\"BuGn\", \"BuPu\", \"GnBu\", \"OrRd\", \"PuBu\", \"PuBuGn\", \"PuRd\", \"RdPu\", \"YlGn\", \"YlGnBu\", \"YlOrBr\", \"YlOrRd\"],\n singlehue: [\"Blues\", \"Greens\", \"Greys\", \"Oranges\", \"Purples\", \"Reds\"],\n diverging: [\"BrBG\", \"PiYG\", \"PRGn\", \"PuOr\", \"RdBu\", \"RdGy\", \"RdYlBu\", \"RdYlGn\", \"Spectral\"],\n qualitative: [\"Accent\", \"Dark2\", \"Paired\", \"Pastel1\", \"Pastel2\", \"Set1\", \"Set2\", \"Set3\"]\n }, YlGn: {\n 3: [\"#f7fcb9\", \"#addd8e\", \"#31a354\"],\n 4: [\"#ffffcc\", \"#c2e699\", \"#78c679\", \"#238443\"],\n 5: [\"#ffffcc\", \"#c2e699\", \"#78c679\", \"#31a354\", \"#006837\"],\n 6: [\"#ffffcc\", \"#d9f0a3\", \"#addd8e\", \"#78c679\", \"#31a354\", \"#006837\"],\n 7: [\"#ffffcc\", \"#d9f0a3\", \"#addd8e\", \"#78c679\", \"#41ab5d\", \"#238443\", \"#005a32\"],\n 8: [\"#ffffe5\", \"#f7fcb9\", \"#d9f0a3\", \"#addd8e\", \"#78c679\", \"#41ab5d\", \"#238443\", \"#005a32\"],\n 9: [\"#ffffe5\", \"#f7fcb9\", \"#d9f0a3\", \"#addd8e\", \"#78c679\", \"#41ab5d\", \"#238443\", \"#006837\", \"#004529\"]\n }, YlGnBu: {\n 3: [\"#edf8b1\", \"#7fcdbb\", \"#2c7fb8\"],\n 4: [\"#ffffcc\", \"#a1dab4\", \"#41b6c4\", \"#225ea8\"],\n 5: [\"#ffffcc\", \"#a1dab4\", \"#41b6c4\", \"#2c7fb8\", \"#253494\"],\n 6: [\"#ffffcc\", \"#c7e9b4\", \"#7fcdbb\", \"#41b6c4\", \"#2c7fb8\", \"#253494\"],\n 7: [\"#ffffcc\", \"#c7e9b4\", \"#7fcdbb\", \"#41b6c4\", \"#1d91c0\", \"#225ea8\", \"#0c2c84\"],\n 8: [\"#ffffd9\", \"#edf8b1\", \"#c7e9b4\", \"#7fcdbb\", \"#41b6c4\", \"#1d91c0\", \"#225ea8\", \"#0c2c84\"],\n 9: [\"#ffffd9\", \"#edf8b1\", \"#c7e9b4\", \"#7fcdbb\", \"#41b6c4\", \"#1d91c0\", \"#225ea8\", \"#253494\", \"#081d58\"]\n }, GnBu: {\n 3: [\"#e0f3db\", \"#a8ddb5\", \"#43a2ca\"],\n 4: [\"#f0f9e8\", \"#bae4bc\", \"#7bccc4\", \"#2b8cbe\"],\n 5: [\"#f0f9e8\", \"#bae4bc\", \"#7bccc4\", \"#43a2ca\", \"#0868ac\"],\n 6: [\"#f0f9e8\", \"#ccebc5\", \"#a8ddb5\", \"#7bccc4\", \"#43a2ca\", \"#0868ac\"],\n 7: [\"#f0f9e8\", \"#ccebc5\", \"#a8ddb5\", \"#7bccc4\", \"#4eb3d3\", \"#2b8cbe\", \"#08589e\"],\n 8: [\"#f7fcf0\", \"#e0f3db\", \"#ccebc5\", \"#a8ddb5\", \"#7bccc4\", \"#4eb3d3\", \"#2b8cbe\", \"#08589e\"],\n 9: [\"#f7fcf0\", \"#e0f3db\", \"#ccebc5\", \"#a8ddb5\", \"#7bccc4\", \"#4eb3d3\", \"#2b8cbe\", \"#0868ac\", \"#084081\"]\n }, BuGn: {\n 3: [\"#e5f5f9\", \"#99d8c9\", \"#2ca25f\"],\n 4: [\"#edf8fb\", \"#b2e2e2\", \"#66c2a4\", \"#238b45\"],\n 5: [\"#edf8fb\", \"#b2e2e2\", \"#66c2a4\", \"#2ca25f\", \"#006d2c\"],\n 6: [\"#edf8fb\", \"#ccece6\", \"#99d8c9\", \"#66c2a4\", \"#2ca25f\", \"#006d2c\"],\n 7: [\"#edf8fb\", \"#ccece6\", \"#99d8c9\", \"#66c2a4\", \"#41ae76\", \"#238b45\", \"#005824\"],\n 8: [\"#f7fcfd\", \"#e5f5f9\", \"#ccece6\", \"#99d8c9\", \"#66c2a4\", \"#41ae76\", \"#238b45\", \"#005824\"],\n 9: [\"#f7fcfd\", \"#e5f5f9\", \"#ccece6\", \"#99d8c9\", \"#66c2a4\", \"#41ae76\", \"#238b45\", \"#006d2c\", \"#00441b\"]\n }, PuBuGn: {\n 3: [\"#ece2f0\", \"#a6bddb\", \"#1c9099\"],\n 4: [\"#f6eff7\", \"#bdc9e1\", \"#67a9cf\", \"#02818a\"],\n 5: [\"#f6eff7\", \"#bdc9e1\", \"#67a9cf\", \"#1c9099\", \"#016c59\"],\n 6: [\"#f6eff7\", \"#d0d1e6\", \"#a6bddb\", \"#67a9cf\", \"#1c9099\", \"#016c59\"],\n 7: [\"#f6eff7\", \"#d0d1e6\", \"#a6bddb\", \"#67a9cf\", \"#3690c0\", \"#02818a\", \"#016450\"],\n 8: [\"#fff7fb\", \"#ece2f0\", \"#d0d1e6\", \"#a6bddb\", \"#67a9cf\", \"#3690c0\", \"#02818a\", \"#016450\"],\n 9: [\"#fff7fb\", \"#ece2f0\", \"#d0d1e6\", \"#a6bddb\", \"#67a9cf\", \"#3690c0\", \"#02818a\", \"#016c59\", \"#014636\"]\n }, PuBu: {\n 3: [\"#ece7f2\", \"#a6bddb\", \"#2b8cbe\"],\n 4: [\"#f1eef6\", \"#bdc9e1\", \"#74a9cf\", \"#0570b0\"],\n 5: [\"#f1eef6\", \"#bdc9e1\", \"#74a9cf\", \"#2b8cbe\", \"#045a8d\"],\n 6: [\"#f1eef6\", \"#d0d1e6\", \"#a6bddb\", \"#74a9cf\", \"#2b8cbe\", \"#045a8d\"],\n 7: [\"#f1eef6\", \"#d0d1e6\", \"#a6bddb\", \"#74a9cf\", \"#3690c0\", \"#0570b0\", \"#034e7b\"],\n 8: [\"#fff7fb\", \"#ece7f2\", \"#d0d1e6\", \"#a6bddb\", \"#74a9cf\", \"#3690c0\", \"#0570b0\", \"#034e7b\"],\n 9: [\"#fff7fb\", \"#ece7f2\", \"#d0d1e6\", \"#a6bddb\", \"#74a9cf\", \"#3690c0\", \"#0570b0\", \"#045a8d\", \"#023858\"]\n }, BuPu: {\n 3: [\"#e0ecf4\", \"#9ebcda\", \"#8856a7\"],\n 4: [\"#edf8fb\", \"#b3cde3\", \"#8c96c6\", \"#88419d\"],\n 5: [\"#edf8fb\", \"#b3cde3\", \"#8c96c6\", \"#8856a7\", \"#810f7c\"],\n 6: [\"#edf8fb\", \"#bfd3e6\", \"#9ebcda\", \"#8c96c6\", \"#8856a7\", \"#810f7c\"],\n 7: [\"#edf8fb\", \"#bfd3e6\", \"#9ebcda\", \"#8c96c6\", \"#8c6bb1\", \"#88419d\", \"#6e016b\"],\n 8: [\"#f7fcfd\", \"#e0ecf4\", \"#bfd3e6\", \"#9ebcda\", \"#8c96c6\", \"#8c6bb1\", \"#88419d\", \"#6e016b\"],\n 9: [\"#f7fcfd\", \"#e0ecf4\", \"#bfd3e6\", \"#9ebcda\", \"#8c96c6\", \"#8c6bb1\", \"#88419d\", \"#810f7c\", \"#4d004b\"]\n }, RdPu: {\n 3: [\"#fde0dd\", \"#fa9fb5\", \"#c51b8a\"],\n 4: [\"#feebe2\", \"#fbb4b9\", \"#f768a1\", \"#ae017e\"],\n 5: [\"#feebe2\", \"#fbb4b9\", \"#f768a1\", \"#c51b8a\", \"#7a0177\"],\n 6: [\"#feebe2\", \"#fcc5c0\", \"#fa9fb5\", \"#f768a1\", \"#c51b8a\", \"#7a0177\"],\n 7: [\"#feebe2\", \"#fcc5c0\", \"#fa9fb5\", \"#f768a1\", \"#dd3497\", \"#ae017e\", \"#7a0177\"],\n 8: [\"#fff7f3\", \"#fde0dd\", \"#fcc5c0\", \"#fa9fb5\", \"#f768a1\", \"#dd3497\", \"#ae017e\", \"#7a0177\"],\n 9: [\"#fff7f3\", \"#fde0dd\", \"#fcc5c0\", \"#fa9fb5\", \"#f768a1\", \"#dd3497\", \"#ae017e\", \"#7a0177\", \"#49006a\"]\n }, PuRd: {\n 3: [\"#e7e1ef\", \"#c994c7\", \"#dd1c77\"],\n 4: [\"#f1eef6\", \"#d7b5d8\", \"#df65b0\", \"#ce1256\"],\n 5: [\"#f1eef6\", \"#d7b5d8\", \"#df65b0\", \"#dd1c77\", \"#980043\"],\n 6: [\"#f1eef6\", \"#d4b9da\", \"#c994c7\", \"#df65b0\", \"#dd1c77\", \"#980043\"],\n 7: [\"#f1eef6\", \"#d4b9da\", \"#c994c7\", \"#df65b0\", \"#e7298a\", \"#ce1256\", \"#91003f\"],\n 8: [\"#f7f4f9\", \"#e7e1ef\", \"#d4b9da\", \"#c994c7\", \"#df65b0\", \"#e7298a\", \"#ce1256\", \"#91003f\"],\n 9: [\"#f7f4f9\", \"#e7e1ef\", \"#d4b9da\", \"#c994c7\", \"#df65b0\", \"#e7298a\", \"#ce1256\", \"#980043\", \"#67001f\"]\n }, OrRd: {\n 3: [\"#fee8c8\", \"#fdbb84\", \"#e34a33\"],\n 4: [\"#fef0d9\", \"#fdcc8a\", \"#fc8d59\", \"#d7301f\"],\n 5: [\"#fef0d9\", \"#fdcc8a\", \"#fc8d59\", \"#e34a33\", \"#b30000\"],\n 6: [\"#fef0d9\", \"#fdd49e\", \"#fdbb84\", \"#fc8d59\", \"#e34a33\", \"#b30000\"],\n 7: [\"#fef0d9\", \"#fdd49e\", \"#fdbb84\", \"#fc8d59\", \"#ef6548\", \"#d7301f\", \"#990000\"],\n 8: [\"#fff7ec\", \"#fee8c8\", \"#fdd49e\", \"#fdbb84\", \"#fc8d59\", \"#ef6548\", \"#d7301f\", \"#990000\"],\n 9: [\"#fff7ec\", \"#fee8c8\", \"#fdd49e\", \"#fdbb84\", \"#fc8d59\", \"#ef6548\", \"#d7301f\", \"#b30000\", \"#7f0000\"]\n }, YlOrRd: {\n 3: [\"#ffeda0\", \"#feb24c\", \"#f03b20\"],\n 4: [\"#ffffb2\", \"#fecc5c\", \"#fd8d3c\", \"#e31a1c\"],\n 5: [\"#ffffb2\", \"#fecc5c\", \"#fd8d3c\", \"#f03b20\", \"#bd0026\"],\n 6: [\"#ffffb2\", \"#fed976\", \"#feb24c\", \"#fd8d3c\", \"#f03b20\", \"#bd0026\"],\n 7: [\"#ffffb2\", \"#fed976\", \"#feb24c\", \"#fd8d3c\", \"#fc4e2a\", \"#e31a1c\", \"#b10026\"],\n 8: [\"#ffffcc\", \"#ffeda0\", \"#fed976\", \"#feb24c\", \"#fd8d3c\", \"#fc4e2a\", \"#e31a1c\", \"#b10026\"],\n 9: [\"#ffffcc\", \"#ffeda0\", \"#fed976\", \"#feb24c\", \"#fd8d3c\", \"#fc4e2a\", \"#e31a1c\", \"#bd0026\", \"#800026\"]\n }, YlOrBr: {\n 3: [\"#fff7bc\", \"#fec44f\", \"#d95f0e\"],\n 4: [\"#ffffd4\", \"#fed98e\", \"#fe9929\", \"#cc4c02\"],\n 5: [\"#ffffd4\", \"#fed98e\", \"#fe9929\", \"#d95f0e\", \"#993404\"],\n 6: [\"#ffffd4\", \"#fee391\", \"#fec44f\", \"#fe9929\", \"#d95f0e\", \"#993404\"],\n 7: [\"#ffffd4\", \"#fee391\", \"#fec44f\", \"#fe9929\", \"#ec7014\", \"#cc4c02\", \"#8c2d04\"],\n 8: [\"#ffffe5\", \"#fff7bc\", \"#fee391\", \"#fec44f\", \"#fe9929\", \"#ec7014\", \"#cc4c02\", \"#8c2d04\"],\n 9: [\"#ffffe5\", \"#fff7bc\", \"#fee391\", \"#fec44f\", \"#fe9929\", \"#ec7014\", \"#cc4c02\", \"#993404\", \"#662506\"]\n }, Purples: {\n 3: [\"#efedf5\", \"#bcbddc\", \"#756bb1\"],\n 4: [\"#f2f0f7\", \"#cbc9e2\", \"#9e9ac8\", \"#6a51a3\"],\n 5: [\"#f2f0f7\", \"#cbc9e2\", \"#9e9ac8\", \"#756bb1\", \"#54278f\"],\n 6: [\"#f2f0f7\", \"#dadaeb\", \"#bcbddc\", \"#9e9ac8\", \"#756bb1\", \"#54278f\"],\n 7: [\"#f2f0f7\", \"#dadaeb\", \"#bcbddc\", \"#9e9ac8\", \"#807dba\", \"#6a51a3\", \"#4a1486\"],\n 8: [\"#fcfbfd\", \"#efedf5\", \"#dadaeb\", \"#bcbddc\", \"#9e9ac8\", \"#807dba\", \"#6a51a3\", \"#4a1486\"],\n 9: [\"#fcfbfd\", \"#efedf5\", \"#dadaeb\", \"#bcbddc\", \"#9e9ac8\", \"#807dba\", \"#6a51a3\", \"#54278f\", \"#3f007d\"]\n }, Blues: {\n 3: [\"#deebf7\", \"#9ecae1\", \"#3182bd\"],\n 4: [\"#eff3ff\", \"#bdd7e7\", \"#6baed6\", \"#2171b5\"],\n 5: [\"#eff3ff\", \"#bdd7e7\", \"#6baed6\", \"#3182bd\", \"#08519c\"],\n 6: [\"#eff3ff\", \"#c6dbef\", \"#9ecae1\", \"#6baed6\", \"#3182bd\", \"#08519c\"],\n 7: [\"#eff3ff\", \"#c6dbef\", \"#9ecae1\", \"#6baed6\", \"#4292c6\", \"#2171b5\", \"#084594\"],\n 8: [\"#f7fbff\", \"#deebf7\", \"#c6dbef\", \"#9ecae1\", \"#6baed6\", \"#4292c6\", \"#2171b5\", \"#084594\"],\n 9: [\"#f7fbff\", \"#deebf7\", \"#c6dbef\", \"#9ecae1\", \"#6baed6\", \"#4292c6\", \"#2171b5\", \"#08519c\", \"#08306b\"]\n }, Greens: {\n 3: [\"#e5f5e0\", \"#a1d99b\", \"#31a354\"],\n 4: [\"#edf8e9\", \"#bae4b3\", \"#74c476\", \"#238b45\"],\n 5: [\"#edf8e9\", \"#bae4b3\", \"#74c476\", \"#31a354\", \"#006d2c\"],\n 6: [\"#edf8e9\", \"#c7e9c0\", \"#a1d99b\", \"#74c476\", \"#31a354\", \"#006d2c\"],\n 7: [\"#edf8e9\", \"#c7e9c0\", \"#a1d99b\", \"#74c476\", \"#41ab5d\", \"#238b45\", \"#005a32\"],\n 8: [\"#f7fcf5\", \"#e5f5e0\", \"#c7e9c0\", \"#a1d99b\", \"#74c476\", \"#41ab5d\", \"#238b45\", \"#005a32\"],\n 9: [\"#f7fcf5\", \"#e5f5e0\", \"#c7e9c0\", \"#a1d99b\", \"#74c476\", \"#41ab5d\", \"#238b45\", \"#006d2c\", \"#00441b\"]\n }, Oranges: {\n 3: [\"#fee6ce\", \"#fdae6b\", \"#e6550d\"],\n 4: [\"#feedde\", \"#fdbe85\", \"#fd8d3c\", \"#d94701\"],\n 5: [\"#feedde\", \"#fdbe85\", \"#fd8d3c\", \"#e6550d\", \"#a63603\"],\n 6: [\"#feedde\", \"#fdd0a2\", \"#fdae6b\", \"#fd8d3c\", \"#e6550d\", \"#a63603\"],\n 7: [\"#feedde\", \"#fdd0a2\", \"#fdae6b\", \"#fd8d3c\", \"#f16913\", \"#d94801\", \"#8c2d04\"],\n 8: [\"#fff5eb\", \"#fee6ce\", \"#fdd0a2\", \"#fdae6b\", \"#fd8d3c\", \"#f16913\", \"#d94801\", \"#8c2d04\"],\n 9: [\"#fff5eb\", \"#fee6ce\", \"#fdd0a2\", \"#fdae6b\", \"#fd8d3c\", \"#f16913\", \"#d94801\", \"#a63603\", \"#7f2704\"]\n }, Reds: {\n 3: [\"#fee0d2\", \"#fc9272\", \"#de2d26\"],\n 4: [\"#fee5d9\", \"#fcae91\", \"#fb6a4a\", \"#cb181d\"],\n 5: [\"#fee5d9\", \"#fcae91\", \"#fb6a4a\", \"#de2d26\", \"#a50f15\"],\n 6: [\"#fee5d9\", \"#fcbba1\", \"#fc9272\", \"#fb6a4a\", \"#de2d26\", \"#a50f15\"],\n 7: [\"#fee5d9\", \"#fcbba1\", \"#fc9272\", \"#fb6a4a\", \"#ef3b2c\", \"#cb181d\", \"#99000d\"],\n 8: [\"#fff5f0\", \"#fee0d2\", \"#fcbba1\", \"#fc9272\", \"#fb6a4a\", \"#ef3b2c\", \"#cb181d\", \"#99000d\"],\n 9: [\"#fff5f0\", \"#fee0d2\", \"#fcbba1\", \"#fc9272\", \"#fb6a4a\", \"#ef3b2c\", \"#cb181d\", \"#a50f15\", \"#67000d\"]\n }, Greys: {\n 3: [\"#f0f0f0\", \"#bdbdbd\", \"#636363\"],\n 4: [\"#f7f7f7\", \"#cccccc\", \"#969696\", \"#525252\"],\n 5: [\"#f7f7f7\", \"#cccccc\", \"#969696\", \"#636363\", \"#252525\"],\n 6: [\"#f7f7f7\", \"#d9d9d9\", \"#bdbdbd\", \"#969696\", \"#636363\", \"#252525\"],\n 7: [\"#f7f7f7\", \"#d9d9d9\", \"#bdbdbd\", \"#969696\", \"#737373\", \"#525252\", \"#252525\"],\n 8: [\"#ffffff\", \"#f0f0f0\", \"#d9d9d9\", \"#bdbdbd\", \"#969696\", \"#737373\", \"#525252\", \"#252525\"],\n 9: [\"#ffffff\", \"#f0f0f0\", \"#d9d9d9\", \"#bdbdbd\", \"#969696\", \"#737373\", \"#525252\", \"#252525\", \"#000000\"]\n }, PuOr: {\n 3: [\"#f1a340\", \"#f7f7f7\", \"#998ec3\"],\n 4: [\"#e66101\", \"#fdb863\", \"#b2abd2\", \"#5e3c99\"],\n 5: [\"#e66101\", \"#fdb863\", \"#f7f7f7\", \"#b2abd2\", \"#5e3c99\"],\n 6: [\"#b35806\", \"#f1a340\", \"#fee0b6\", \"#d8daeb\", \"#998ec3\", \"#542788\"],\n 7: [\"#b35806\", \"#f1a340\", \"#fee0b6\", \"#f7f7f7\", \"#d8daeb\", \"#998ec3\", \"#542788\"],\n 8: [\"#b35806\", \"#e08214\", \"#fdb863\", \"#fee0b6\", \"#d8daeb\", \"#b2abd2\", \"#8073ac\", \"#542788\"],\n 9: [\"#b35806\", \"#e08214\", \"#fdb863\", \"#fee0b6\", \"#f7f7f7\", \"#d8daeb\", \"#b2abd2\", \"#8073ac\", \"#542788\"],\n 10: [\"#7f3b08\", \"#b35806\", \"#e08214\", \"#fdb863\", \"#fee0b6\", \"#d8daeb\", \"#b2abd2\", \"#8073ac\", \"#542788\", \"#2d004b\"],\n 11: [\"#7f3b08\", \"#b35806\", \"#e08214\", \"#fdb863\", \"#fee0b6\", \"#f7f7f7\", \"#d8daeb\", \"#b2abd2\", \"#8073ac\", \"#542788\", \"#2d004b\"]\n }, BrBG: {\n 3: [\"#d8b365\", \"#f5f5f5\", \"#5ab4ac\"],\n 4: [\"#a6611a\", \"#dfc27d\", \"#80cdc1\", \"#018571\"],\n 5: [\"#a6611a\", \"#dfc27d\", \"#f5f5f5\", \"#80cdc1\", \"#018571\"],\n 6: [\"#8c510a\", \"#d8b365\", \"#f6e8c3\", \"#c7eae5\", \"#5ab4ac\", \"#01665e\"],\n 7: [\"#8c510a\", \"#d8b365\", \"#f6e8c3\", \"#f5f5f5\", \"#c7eae5\", \"#5ab4ac\", \"#01665e\"],\n 8: [\"#8c510a\", \"#bf812d\", \"#dfc27d\", \"#f6e8c3\", \"#c7eae5\", \"#80cdc1\", \"#35978f\", \"#01665e\"],\n 9: [\"#8c510a\", \"#bf812d\", \"#dfc27d\", \"#f6e8c3\", \"#f5f5f5\", \"#c7eae5\", \"#80cdc1\", \"#35978f\", \"#01665e\"],\n 10: [\"#543005\", \"#8c510a\", \"#bf812d\", \"#dfc27d\", \"#f6e8c3\", \"#c7eae5\", \"#80cdc1\", \"#35978f\", \"#01665e\", \"#003c30\"],\n 11: [\"#543005\", \"#8c510a\", \"#bf812d\", \"#dfc27d\", \"#f6e8c3\", \"#f5f5f5\", \"#c7eae5\", \"#80cdc1\", \"#35978f\", \"#01665e\", \"#003c30\"]\n }, PRGn: {\n 3: [\"#af8dc3\", \"#f7f7f7\", \"#7fbf7b\"],\n 4: [\"#7b3294\", \"#c2a5cf\", \"#a6dba0\", \"#008837\"],\n 5: [\"#7b3294\", \"#c2a5cf\", \"#f7f7f7\", \"#a6dba0\", \"#008837\"],\n 6: [\"#762a83\", \"#af8dc3\", \"#e7d4e8\", \"#d9f0d3\", \"#7fbf7b\", \"#1b7837\"],\n 7: [\"#762a83\", \"#af8dc3\", \"#e7d4e8\", \"#f7f7f7\", \"#d9f0d3\", \"#7fbf7b\", \"#1b7837\"],\n 8: [\"#762a83\", \"#9970ab\", \"#c2a5cf\", \"#e7d4e8\", \"#d9f0d3\", \"#a6dba0\", \"#5aae61\", \"#1b7837\"],\n 9: [\"#762a83\", \"#9970ab\", \"#c2a5cf\", \"#e7d4e8\", \"#f7f7f7\", \"#d9f0d3\", \"#a6dba0\", \"#5aae61\", \"#1b7837\"],\n 10: [\"#40004b\", \"#762a83\", \"#9970ab\", \"#c2a5cf\", \"#e7d4e8\", \"#d9f0d3\", \"#a6dba0\", \"#5aae61\", \"#1b7837\", \"#00441b\"],\n 11: [\"#40004b\", \"#762a83\", \"#9970ab\", \"#c2a5cf\", \"#e7d4e8\", \"#f7f7f7\", \"#d9f0d3\", \"#a6dba0\", \"#5aae61\", \"#1b7837\", \"#00441b\"]\n }, PiYG: {\n 3: [\"#e9a3c9\", \"#f7f7f7\", \"#a1d76a\"],\n 4: [\"#d01c8b\", \"#f1b6da\", \"#b8e186\", \"#4dac26\"],\n 5: [\"#d01c8b\", \"#f1b6da\", \"#f7f7f7\", \"#b8e186\", \"#4dac26\"],\n 6: [\"#c51b7d\", \"#e9a3c9\", \"#fde0ef\", \"#e6f5d0\", \"#a1d76a\", \"#4d9221\"],\n 7: [\"#c51b7d\", \"#e9a3c9\", \"#fde0ef\", \"#f7f7f7\", \"#e6f5d0\", \"#a1d76a\", \"#4d9221\"],\n 8: [\"#c51b7d\", \"#de77ae\", \"#f1b6da\", \"#fde0ef\", \"#e6f5d0\", \"#b8e186\", \"#7fbc41\", \"#4d9221\"],\n 9: [\"#c51b7d\", \"#de77ae\", \"#f1b6da\", \"#fde0ef\", \"#f7f7f7\", \"#e6f5d0\", \"#b8e186\", \"#7fbc41\", \"#4d9221\"],\n 10: [\"#8e0152\", \"#c51b7d\", \"#de77ae\", \"#f1b6da\", \"#fde0ef\", \"#e6f5d0\", \"#b8e186\", \"#7fbc41\", \"#4d9221\", \"#276419\"],\n 11: [\"#8e0152\", \"#c51b7d\", \"#de77ae\", \"#f1b6da\", \"#fde0ef\", \"#f7f7f7\", \"#e6f5d0\", \"#b8e186\", \"#7fbc41\", \"#4d9221\", \"#276419\"]\n }, RdBu: {\n 3: [\"#ef8a62\", \"#f7f7f7\", \"#67a9cf\"],\n 4: [\"#ca0020\", \"#f4a582\", \"#92c5de\", \"#0571b0\"],\n 5: [\"#ca0020\", \"#f4a582\", \"#f7f7f7\", \"#92c5de\", \"#0571b0\"],\n 6: [\"#b2182b\", \"#ef8a62\", \"#fddbc7\", \"#d1e5f0\", \"#67a9cf\", \"#2166ac\"],\n 7: [\"#b2182b\", \"#ef8a62\", \"#fddbc7\", \"#f7f7f7\", \"#d1e5f0\", \"#67a9cf\", \"#2166ac\"],\n 8: [\"#b2182b\", \"#d6604d\", \"#f4a582\", \"#fddbc7\", \"#d1e5f0\", \"#92c5de\", \"#4393c3\", \"#2166ac\"],\n 9: [\"#b2182b\", \"#d6604d\", \"#f4a582\", \"#fddbc7\", \"#f7f7f7\", \"#d1e5f0\", \"#92c5de\", \"#4393c3\", \"#2166ac\"],\n 10: [\"#67001f\", \"#b2182b\", \"#d6604d\", \"#f4a582\", \"#fddbc7\", \"#d1e5f0\", \"#92c5de\", \"#4393c3\", \"#2166ac\", \"#053061\"],\n 11: [\"#67001f\", \"#b2182b\", \"#d6604d\", \"#f4a582\", \"#fddbc7\", \"#f7f7f7\", \"#d1e5f0\", \"#92c5de\", \"#4393c3\", \"#2166ac\", \"#053061\"]\n }, RdGy: {\n 3: [\"#ef8a62\", \"#ffffff\", \"#999999\"],\n 4: [\"#ca0020\", \"#f4a582\", \"#bababa\", \"#404040\"],\n 5: [\"#ca0020\", \"#f4a582\", \"#ffffff\", \"#bababa\", \"#404040\"],\n 6: [\"#b2182b\", \"#ef8a62\", \"#fddbc7\", \"#e0e0e0\", \"#999999\", \"#4d4d4d\"],\n 7: [\"#b2182b\", \"#ef8a62\", \"#fddbc7\", \"#ffffff\", \"#e0e0e0\", \"#999999\", \"#4d4d4d\"],\n 8: [\"#b2182b\", \"#d6604d\", \"#f4a582\", \"#fddbc7\", \"#e0e0e0\", \"#bababa\", \"#878787\", \"#4d4d4d\"],\n 9: [\"#b2182b\", \"#d6604d\", \"#f4a582\", \"#fddbc7\", \"#ffffff\", \"#e0e0e0\", \"#bababa\", \"#878787\", \"#4d4d4d\"],\n 10: [\"#67001f\", \"#b2182b\", \"#d6604d\", \"#f4a582\", \"#fddbc7\", \"#e0e0e0\", \"#bababa\", \"#878787\", \"#4d4d4d\", \"#1a1a1a\"],\n 11: [\"#67001f\", \"#b2182b\", \"#d6604d\", \"#f4a582\", \"#fddbc7\", \"#ffffff\", \"#e0e0e0\", \"#bababa\", \"#878787\", \"#4d4d4d\", \"#1a1a1a\"]\n }, RdYlBu: {\n 3: [\"#fc8d59\", \"#ffffbf\", \"#91bfdb\"],\n 4: [\"#d7191c\", \"#fdae61\", \"#abd9e9\", \"#2c7bb6\"],\n 5: [\"#d7191c\", \"#fdae61\", \"#ffffbf\", \"#abd9e9\", \"#2c7bb6\"],\n 6: [\"#d73027\", \"#fc8d59\", \"#fee090\", \"#e0f3f8\", \"#91bfdb\", \"#4575b4\"],\n 7: [\"#d73027\", \"#fc8d59\", \"#fee090\", \"#ffffbf\", \"#e0f3f8\", \"#91bfdb\", \"#4575b4\"],\n 8: [\"#d73027\", \"#f46d43\", \"#fdae61\", \"#fee090\", \"#e0f3f8\", \"#abd9e9\", \"#74add1\", \"#4575b4\"],\n 9: [\"#d73027\", \"#f46d43\", \"#fdae61\", \"#fee090\", \"#ffffbf\", \"#e0f3f8\", \"#abd9e9\", \"#74add1\", \"#4575b4\"],\n 10: [\"#a50026\", \"#d73027\", \"#f46d43\", \"#fdae61\", \"#fee090\", \"#e0f3f8\", \"#abd9e9\", \"#74add1\", \"#4575b4\", \"#313695\"],\n 11: [\"#a50026\", \"#d73027\", \"#f46d43\", \"#fdae61\", \"#fee090\", \"#ffffbf\", \"#e0f3f8\", \"#abd9e9\", \"#74add1\", \"#4575b4\", \"#313695\"]\n }, Spectral: {\n 3: [\"#fc8d59\", \"#ffffbf\", \"#99d594\"],\n 4: [\"#d7191c\", \"#fdae61\", \"#abdda4\", \"#2b83ba\"],\n 5: [\"#d7191c\", \"#fdae61\", \"#ffffbf\", \"#abdda4\", \"#2b83ba\"],\n 6: [\"#d53e4f\", \"#fc8d59\", \"#fee08b\", \"#e6f598\", \"#99d594\", \"#3288bd\"],\n 7: [\"#d53e4f\", \"#fc8d59\", \"#fee08b\", \"#ffffbf\", \"#e6f598\", \"#99d594\", \"#3288bd\"],\n 8: [\"#d53e4f\", \"#f46d43\", \"#fdae61\", \"#fee08b\", \"#e6f598\", \"#abdda4\", \"#66c2a5\", \"#3288bd\"],\n 9: [\"#d53e4f\", \"#f46d43\", \"#fdae61\", \"#fee08b\", \"#ffffbf\", \"#e6f598\", \"#abdda4\", \"#66c2a5\", \"#3288bd\"],\n 10: [\"#9e0142\", \"#d53e4f\", \"#f46d43\", \"#fdae61\", \"#fee08b\", \"#e6f598\", \"#abdda4\", \"#66c2a5\", \"#3288bd\", \"#5e4fa2\"],\n 11: [\"#9e0142\", \"#d53e4f\", \"#f46d43\", \"#fdae61\", \"#fee08b\", \"#ffffbf\", \"#e6f598\", \"#abdda4\", \"#66c2a5\", \"#3288bd\", \"#5e4fa2\"]\n }, RdYlGn: {\n 3: [\"#fc8d59\", \"#ffffbf\", \"#91cf60\"],\n 4: [\"#d7191c\", \"#fdae61\", \"#a6d96a\", \"#1a9641\"],\n 5: [\"#d7191c\", \"#fdae61\", \"#ffffbf\", \"#a6d96a\", \"#1a9641\"],\n 6: [\"#d73027\", \"#fc8d59\", \"#fee08b\", \"#d9ef8b\", \"#91cf60\", \"#1a9850\"],\n 7: [\"#d73027\", \"#fc8d59\", \"#fee08b\", \"#ffffbf\", \"#d9ef8b\", \"#91cf60\", \"#1a9850\"],\n 8: [\"#d73027\", \"#f46d43\", \"#fdae61\", \"#fee08b\", \"#d9ef8b\", \"#a6d96a\", \"#66bd63\", \"#1a9850\"],\n 9: [\"#d73027\", \"#f46d43\", \"#fdae61\", \"#fee08b\", \"#ffffbf\", \"#d9ef8b\", \"#a6d96a\", \"#66bd63\", \"#1a9850\"],\n 10: [\"#a50026\", \"#d73027\", \"#f46d43\", \"#fdae61\", \"#fee08b\", \"#d9ef8b\", \"#a6d96a\", \"#66bd63\", \"#1a9850\", \"#006837\"],\n 11: [\"#a50026\", \"#d73027\", \"#f46d43\", \"#fdae61\", \"#fee08b\", \"#ffffbf\", \"#d9ef8b\", \"#a6d96a\", \"#66bd63\", \"#1a9850\", \"#006837\"]\n }, Accent: {\n 3: [\"#7fc97f\", \"#beaed4\", \"#fdc086\"],\n 4: [\"#7fc97f\", \"#beaed4\", \"#fdc086\", \"#ffff99\"],\n 5: [\"#7fc97f\", \"#beaed4\", \"#fdc086\", \"#ffff99\", \"#386cb0\"],\n 6: [\"#7fc97f\", \"#beaed4\", \"#fdc086\", \"#ffff99\", \"#386cb0\", \"#f0027f\"],\n 7: [\"#7fc97f\", \"#beaed4\", \"#fdc086\", \"#ffff99\", \"#386cb0\", \"#f0027f\", \"#bf5b17\"],\n 8: [\"#7fc97f\", \"#beaed4\", \"#fdc086\", \"#ffff99\", \"#386cb0\", \"#f0027f\", \"#bf5b17\", \"#666666\"]\n }, Dark2: {\n 3: [\"#1b9e77\", \"#d95f02\", \"#7570b3\"],\n 4: [\"#1b9e77\", \"#d95f02\", \"#7570b3\", \"#e7298a\"],\n 5: [\"#1b9e77\", \"#d95f02\", \"#7570b3\", \"#e7298a\", \"#66a61e\"],\n 6: [\"#1b9e77\", \"#d95f02\", \"#7570b3\", \"#e7298a\", \"#66a61e\", \"#e6ab02\"],\n 7: [\"#1b9e77\", \"#d95f02\", \"#7570b3\", \"#e7298a\", \"#66a61e\", \"#e6ab02\", \"#a6761d\"],\n 8: [\"#1b9e77\", \"#d95f02\", \"#7570b3\", \"#e7298a\", \"#66a61e\", \"#e6ab02\", \"#a6761d\", \"#666666\"]\n }, Paired: {\n 3: [\"#a6cee3\", \"#1f78b4\", \"#b2df8a\"],\n 4: [\"#a6cee3\", \"#1f78b4\", \"#b2df8a\", \"#33a02c\"],\n 5: [\"#a6cee3\", \"#1f78b4\", \"#b2df8a\", \"#33a02c\", \"#fb9a99\"],\n 6: [\"#a6cee3\", \"#1f78b4\", \"#b2df8a\", \"#33a02c\", \"#fb9a99\", \"#e31a1c\"],\n 7: [\"#a6cee3\", \"#1f78b4\", \"#b2df8a\", \"#33a02c\", \"#fb9a99\", \"#e31a1c\", \"#fdbf6f\"],\n 8: [\"#a6cee3\", \"#1f78b4\", \"#b2df8a\", \"#33a02c\", \"#fb9a99\", \"#e31a1c\", \"#fdbf6f\", \"#ff7f00\"],\n 9: [\"#a6cee3\", \"#1f78b4\", \"#b2df8a\", \"#33a02c\", \"#fb9a99\", \"#e31a1c\", \"#fdbf6f\", \"#ff7f00\", \"#cab2d6\"],\n 10: [\"#a6cee3\", \"#1f78b4\", \"#b2df8a\", \"#33a02c\", \"#fb9a99\", \"#e31a1c\", \"#fdbf6f\", \"#ff7f00\", \"#cab2d6\", \"#6a3d9a\"],\n 11: [\"#a6cee3\", \"#1f78b4\", \"#b2df8a\", \"#33a02c\", \"#fb9a99\", \"#e31a1c\", \"#fdbf6f\", \"#ff7f00\", \"#cab2d6\", \"#6a3d9a\", \"#ffff99\"],\n 12: [\"#a6cee3\", \"#1f78b4\", \"#b2df8a\", \"#33a02c\", \"#fb9a99\", \"#e31a1c\", \"#fdbf6f\", \"#ff7f00\", \"#cab2d6\", \"#6a3d9a\", \"#ffff99\", \"#b15928\"]\n }, Pastel1: {\n 3: [\"#fbb4ae\", \"#b3cde3\", \"#ccebc5\"],\n 4: [\"#fbb4ae\", \"#b3cde3\", \"#ccebc5\", \"#decbe4\"],\n 5: [\"#fbb4ae\", \"#b3cde3\", \"#ccebc5\", \"#decbe4\", \"#fed9a6\"],\n 6: [\"#fbb4ae\", \"#b3cde3\", \"#ccebc5\", \"#decbe4\", \"#fed9a6\", \"#ffffcc\"],\n 7: [\"#fbb4ae\", \"#b3cde3\", \"#ccebc5\", \"#decbe4\", \"#fed9a6\", \"#ffffcc\", \"#e5d8bd\"],\n 8: [\"#fbb4ae\", \"#b3cde3\", \"#ccebc5\", \"#decbe4\", \"#fed9a6\", \"#ffffcc\", \"#e5d8bd\", \"#fddaec\"],\n 9: [\"#fbb4ae\", \"#b3cde3\", \"#ccebc5\", \"#decbe4\", \"#fed9a6\", \"#ffffcc\", \"#e5d8bd\", \"#fddaec\", \"#f2f2f2\"]\n }, Pastel2: {\n 3: [\"#b3e2cd\", \"#fdcdac\", \"#cbd5e8\"],\n 4: [\"#b3e2cd\", \"#fdcdac\", \"#cbd5e8\", \"#f4cae4\"],\n 5: [\"#b3e2cd\", \"#fdcdac\", \"#cbd5e8\", \"#f4cae4\", \"#e6f5c9\"],\n 6: [\"#b3e2cd\", \"#fdcdac\", \"#cbd5e8\", \"#f4cae4\", \"#e6f5c9\", \"#fff2ae\"],\n 7: [\"#b3e2cd\", \"#fdcdac\", \"#cbd5e8\", \"#f4cae4\", \"#e6f5c9\", \"#fff2ae\", \"#f1e2cc\"],\n 8: [\"#b3e2cd\", \"#fdcdac\", \"#cbd5e8\", \"#f4cae4\", \"#e6f5c9\", \"#fff2ae\", \"#f1e2cc\", \"#cccccc\"]\n }, Set1: {\n 3: [\"#e41a1c\", \"#377eb8\", \"#4daf4a\"],\n 4: [\"#e41a1c\", \"#377eb8\", \"#4daf4a\", \"#984ea3\"],\n 5: [\"#e41a1c\", \"#377eb8\", \"#4daf4a\", \"#984ea3\", \"#ff7f00\"],\n 6: [\"#e41a1c\", \"#377eb8\", \"#4daf4a\", \"#984ea3\", \"#ff7f00\", \"#ffff33\"],\n 7: [\"#e41a1c\", \"#377eb8\", \"#4daf4a\", \"#984ea3\", \"#ff7f00\", \"#ffff33\", \"#a65628\"],\n 8: [\"#e41a1c\", \"#377eb8\", \"#4daf4a\", \"#984ea3\", \"#ff7f00\", \"#ffff33\", \"#a65628\", \"#f781bf\"],\n 9: [\"#e41a1c\", \"#377eb8\", \"#4daf4a\", \"#984ea3\", \"#ff7f00\", \"#ffff33\", \"#a65628\", \"#f781bf\", \"#999999\"]\n }, Set2: {\n 3: [\"#66c2a5\", \"#fc8d62\", \"#8da0cb\"],\n 4: [\"#66c2a5\", \"#fc8d62\", \"#8da0cb\", \"#e78ac3\"],\n 5: [\"#66c2a5\", \"#fc8d62\", \"#8da0cb\", \"#e78ac3\", \"#a6d854\"],\n 6: [\"#66c2a5\", \"#fc8d62\", \"#8da0cb\", \"#e78ac3\", \"#a6d854\", \"#ffd92f\"],\n 7: [\"#66c2a5\", \"#fc8d62\", \"#8da0cb\", \"#e78ac3\", \"#a6d854\", \"#ffd92f\", \"#e5c494\"],\n 8: [\"#66c2a5\", \"#fc8d62\", \"#8da0cb\", \"#e78ac3\", \"#a6d854\", \"#ffd92f\", \"#e5c494\", \"#b3b3b3\"]\n }, Set3: {\n 3: [\"#8dd3c7\", \"#ffffb3\", \"#bebada\"],\n 4: [\"#8dd3c7\", \"#ffffb3\", \"#bebada\", \"#fb8072\"],\n 5: [\"#8dd3c7\", \"#ffffb3\", \"#bebada\", \"#fb8072\", \"#80b1d3\"],\n 6: [\"#8dd3c7\", \"#ffffb3\", \"#bebada\", \"#fb8072\", \"#80b1d3\", \"#fdb462\"],\n 7: [\"#8dd3c7\", \"#ffffb3\", \"#bebada\", \"#fb8072\", \"#80b1d3\", \"#fdb462\", \"#b3de69\"],\n 8: [\"#8dd3c7\", \"#ffffb3\", \"#bebada\", \"#fb8072\", \"#80b1d3\", \"#fdb462\", \"#b3de69\", \"#fccde5\"],\n 9: [\"#8dd3c7\", \"#ffffb3\", \"#bebada\", \"#fb8072\", \"#80b1d3\", \"#fdb462\", \"#b3de69\", \"#fccde5\", \"#d9d9d9\"],\n 10: [\"#8dd3c7\", \"#ffffb3\", \"#bebada\", \"#fb8072\", \"#80b1d3\", \"#fdb462\", \"#b3de69\", \"#fccde5\", \"#d9d9d9\", \"#bc80bd\"],\n 11: [\"#8dd3c7\", \"#ffffb3\", \"#bebada\", \"#fb8072\", \"#80b1d3\", \"#fdb462\", \"#b3de69\", \"#fccde5\", \"#d9d9d9\", \"#bc80bd\", \"#ccebc5\"],\n 12: [\"#8dd3c7\", \"#ffffb3\", \"#bebada\", \"#fb8072\", \"#80b1d3\", \"#fdb462\", \"#b3de69\", \"#fccde5\", \"#d9d9d9\", \"#bc80bd\", \"#ccebc5\", \"#ffed6f\"]\n }\n};\n\nexport default index;\n", "import { FlowCoreStateStore } from '../../flow-core-state-store';\nimport colorbrewer from 'colorbrewer';\nimport { ParserExpression, ParserFunctionExpression } from '../types';\nimport { isArray, isArrayStrings, isString } from '../../utils';\nimport { FlowCoreExpression } from '../flow-core-expression';\nimport { FlowCoreExpressionError } from '../../errors';\n\n\ninterface Palette {\n id: string;\n colors: [string, string, string, string, string];\n}\n\ninterface Palettes {\n [id: string]: Palette;\n}\n\nconst palettes: Palettes = {};\n\nfunction registerColorBrewerPalettes() {\n Object.keys(colorbrewer)\n .filter((key: string) => key !== 'schemeGroups')\n .forEach(\n (key) =>\n (palettes[key] = {\n id: key,\n colors: (colorbrewer as any)[key][5]\n })\n );\n}\n\nfunction fromPalette<TState extends FlowCoreStateStore = any>(\n expr: ParserFunctionExpression,\n parentExpression: FlowCoreExpression\n): ParserExpression {\n const paletteIdOrArray = expr[1];\n const property = expr[2];\n let colorStops = expr.slice(3);\n\n let paletteId: string;\n let palette: string[];\n if (isString(paletteIdOrArray)) {\n paletteId = paletteIdOrArray;\n palette = palettes[paletteIdOrArray]?.colors || palettes['Greys'].colors\n } else if (isArray(paletteIdOrArray) && paletteIdOrArray[0] === 'literal') {\n paletteId = 'custom';\n palette = paletteIdOrArray[1] as string[];\n } else {\n throw new FlowCoreExpressionError(parentExpression.expression, 'evaluationError', ['from-palette requires palette id as string or custom palette array']);\n }\n\n const numPaletteEntries = palette.length;\n let reversePalette = false;\n\n if (numPaletteEntries < 5) {\n throw new FlowCoreExpressionError(parentExpression.expression, 'evaluationError', ['custom palette requires at least 5 color entries']);\n }\n\n switch (colorStops.length) {\n case 2:\n break;\n case 3:\n reversePalette = !!colorStops[2];\n colorStops = colorStops.slice(0, 2);\n break;\n case numPaletteEntries:\n break;\n case numPaletteEntries + 1:\n reversePalette = !!colorStops[numPaletteEntries];\n colorStops = colorStops.slice(0, numPaletteEntries);\n break;\n default:\n throw new FlowCoreExpressionError(parentExpression.expression, 'evaluationError', ['incorrect color stop arguments']);\n }\n\n if (colorStops.length === 2) {\n // Convert min/max to numPaletteEntries linear values\n const min = colorStops[0];\n const max = colorStops[1];\n\n colorStops = [];\n const step = (max - min) / (numPaletteEntries - 1);\n\n for (let i = 0; i < numPaletteEntries; i++) {\n colorStops.push(min + i * step);\n }\n }\n\n expr = ['interpolate-lab', ['linear'], property];\n\n for (let i = 0; i < colorStops.length; i++) {\n expr.push(colorStops[i]);\n expr.push(reversePalette ? palette[colorStops.length - i - 1] : palette[i]);\n }\n\n return expr;\n}\n\nexport default {\n name: 'from-palette',\n initialize: registerColorBrewerPalettes,\n fn: fromPalette\n};\n", "import Parsimmon from 'parsimmon';\nimport * as maplibreSpec from '@maplibre/maplibre-gl-style-spec';\nimport { FlowCoreParser } from './flow-core-parser';\nimport { FlowCoreStateStore, IObservableStream } from '../flow-core-state-store';\nimport { isString, isStringFull, isUndefined } from '../utils/type-checks';\nimport { action, computed, makeObservable, observable } from 'mobx';\nimport { toStream } from 'mobx-utils';\nimport customStateFn from './functions/state';\nimport customFromPaletteFn from './functions/from-palette';\nimport {\n ParserExpression,\n FlowCoreExpressionCustomFunction,\n FlowCoreExpressionCustomFunctions,\n ParserFunctionExpression\n} from './types';\nimport { FlowCoreExpressionError } from '../errors/flow-core-expression-error';\n\nexport class FlowCoreExpression<TState extends FlowCoreStateStore = FlowCoreStateStore, R = any> {\n private static parser = new FlowCoreParser();\n private static customFunctions: FlowCoreExpressionCustomFunctions = {};\n\n static hasCustomFunction(fn: string): boolean {\n return !!this.customFunctions[fn];\n }\n\n static registerCustomFunction(fn: FlowCoreExpressionCustomFunction): void {\n if (fn.initialize) fn.initialize();\n this.customFunctions[fn.name] = fn;\n }\n\n private _expression: string = '';\n private parsedResult: Parsimmon.Result<ParserExpression>;\n private _store: TState | null = null;\n\n static parseProgram(program: string): { [key: string]: FlowCoreExpression } {\n const parsedProgram = this.parser.parseProgram(program);\n\n if (isString(program) && program.length === 0) {\n return {};\n }\n\n if (parsedProgram.status) {\n const keys = Object.keys(parsedProgram.value);\n const expressions = keys.reduce((accum, key) => {\n const expr = parsedProgram.value[key];\n const expressionString = program.slice(expr.start.offset, expr.end.offset);\n accum[key] = new FlowCoreExpression(expressionString, expr.expr);\n return accum;\n }, {} as any);\n\n return expressions;\n } else {\n throw new FlowCoreExpressionError('program', 'parseError', [\n `expected ${parsedProgram.expected.join(' ')} at line ${parsedProgram.index.line}, column ${\n parsedProgram.index.column\n }]`\n ]);\n }\n }\n\n // Computed\n get maplibreExpression(): ParserExpression | undefined {\n if (this.isParseError(this.parsedResult)) {\n throw this.parseError;\n }\n\n return this.expandCustomFunctions(this.parsedResult.value);\n }\n\n // Computed\n get value(): R {\n return this.evaluateExpression();\n }\n\n get parseError(): FlowCoreExpressionError | null {\n if (this.isParseError(this.parsedResult)) {\n return new FlowCoreExpressionError(this._expression, 'parseError', [\n `index: ${this.parsedResult.index.offset}`,\n `expected: ${this.parsedResult.expected.join(' ')}`\n ]);\n }\n\n return null;\n }\n\n get expression(): string {\n return this._expression;\n }\n\n get store(): TState | null {\n return this._store;\n }\n\n constructor(expression: string, parsedExpression?: ParserExpression) {\n makeObservable<FlowCoreExpression, '_store'>(\n this,\n {\n _store: observable.ref,\n maplibreExpression: computed,\n value: computed,\n bindState: action\n },\n { name: this.formatName(expression) }\n );\n\n this._expression = expression;\n\n if (!isUndefined(parsedExpression)) {\n // Initialized with pre-parsed expression (e.g. from style program) - bypass parsing\n this.parsedResult = {\n status: true,\n value: parsedExpression\n };\n } else {\n // Initialized with string expression - parse\n this.parsedResult = FlowCoreExpression.parser.parseExpression(expression);\n }\n }\n\n bindState(store: TState | null): this {\n this._store = store;\n return this;\n }\n\n toStream(fireImmediately = true): IObservableStream<R> {\n return toStream(() => this.value, fireImmediately);\n }\n\n private evaluateExpression(): R {\n const { result, value } = maplibreSpec.expression.createExpression(this.maplibreExpression);\n\n if (result === 'success') {\n return value.evaluate({ zoom: 0 });\n }\n\n throw new FlowCoreExpressionError(\n this.expression,\n 'evaluationError',\n value.map((value) => value.message)\n );\n }\n\n private expandCustomFunctions(expr: ParserExpression): ParserExpression | undefined {\n if (this.isFunctionExpression(expr)) {\n // recursively apply to arguments before expanding custom function\n const func = expr[0];\n const args = expr.slice(1).map((arg: ParserExpression) => this.expandCustomFunctions(arg));\n expr = [func, ...args];\n\n return FlowCoreExpression.hasCustomFunction(func)\n ? FlowCoreExpression.customFunctions[func].fn(expr, this)\n : expr;\n }\n\n return expr;\n }\n\n private isParseError(val: Parsimmon.Result<ParserExpression>): val is Parsimmon.Failure {\n return !val.status;\n }\n\n private isFunctionExpression(expr: ParserExpression): expr is ParserFunctionExpression {\n return Array.isArray(expr);\n }\n\n private formatName(expr: string): string {\n return `FlowCoreExpression<${expr}>}`;\n }\n}\n\n// Register custom functions\nFlowCoreExpression.registerCustomFunction(customStateFn);\nFlowCoreExpression.registerCustomFunction(customFromPaletteFn);\n", "import { Client as FlowClient } from '@emuanalytics/flow-engine-client';\nimport Debug from 'debug';\nimport EventEmitter from 'eventemitter3';\nimport * as maplibre from 'maplibre-gl';\nimport { runInAction } from 'mobx';\nimport { ISubscription, toStream } from 'mobx-utils';\nimport { FlowCoreError } from '../errors';\nimport { FlowCoreMapError } from '../errors/flow-core-map-error';\nimport {\n FlowCoreMapDataSource,\n FlowCoreMapLayer,\n FlowCoreMapStyle,\n FlowCoreMapStyleSpecification\n} from '../flow-core-map-style';\nimport { FlowCoreStateStore } from '../flow-core-state-store';\nimport { isDefined, isNil, isString, isStringFull, isUndefined, isURL } from '../utils';\nimport { assert } from '../utils/assert';\nimport { debounceWithArgs, throttle } from '../utils/functional';\nimport { PartialBy } from '../utils/typescript-utils';\nimport { FlowCoreMapPlugin, PluginConstructor, PluginOptionsType } from './plugins/flow-core-map-plugin';\nimport { PluginManager } from './plugins/plugin-manager';\nimport {\n FlowCoreMapEvent,\n FlowCoreMapEventTypes,\n FlowCoreMapLoadingEvent,\n FlowCoreMapMouseEvent,\n FlowCoreMapSourceEvent,\n FlowCoreMapStyleChangeEvent\n} from './support/flow-core-map-events';\nimport { FeatureStreamOptions, FlowCoreMapFeatureStream } from './support/flow-core-map-feature-stream';\nimport { ImageRegistry } from './support/image-registry';\nimport {\n FlowCoreMapAnimationOptions, FlowCoreMapCenter, FlowCoreMapFeature,\n FlowCoreMapFeatureId,\n FlowCoreMapFeatureIdentifier,\n FlowCoreMapSourceIdentifier\n} from './types';\n\nconst debug = Debug('flow:flow-core-map');\n\n/** @internal */\nconst MOUSE_MOVE_THROTTLE_DURATION = 200;\n\nexport interface FlowCoreMapOptions extends Omit<maplibre.MapOptions, 'style'> {\n baseStyle?: string | FlowCoreMapStyleSpecification;\n container: string | HTMLElement;\n featureClickTolerance?: number;\n flowClient: FlowClient;\n id: string;\n state?: FlowCoreStateStore;\n}\n\nexport class FlowCoreMap<\n TState extends FlowCoreStateStore = FlowCoreStateStore\n> extends EventEmitter<FlowCoreMapEventTypes> {\n private _initialized: Promise<void>;\n private _loading = true;\n private _state: TState | null = null;\n private debouncedEmitSourceEvent: (event: FlowCoreMapSourceEvent) => void;\n private imageRegistry = new ImageRegistry();\n private options: FlowCoreMapOptions;\n private pluginManager: PluginManager;\n private resolveInitialized: () => void = () => {};\n private style: FlowCoreMapStyle;\n private styleUpdateSubscription: ISubscription | null = null;\n private throttledMouseMove = throttle(this.handleMouseMove, {\n delay: MOUSE_MOVE_THROTTLE_DURATION,\n noLeading: true,\n context: this\n });\n private updateMapStyle = (style: FlowCoreMapStyleSpecification) => {\n const oldStyle: FlowCoreMapStyleSpecification = this.maplibreMap.getStyle() as FlowCoreMapStyleSpecification;\n\n const beforeEvent = new FlowCoreMapStyleChangeEvent('beforeStyleChanged', this, oldStyle, style);\n style = this.pluginManager.forwardStyleChangeEvent(new FlowCoreMapStyleChangeEvent('beforeStyleChanged', this, oldStyle, style));\n this.emit( beforeEvent.type, beforeEvent);\n\n debug(`${this.formattedName()}: Updating style`, style);\n this.maplibreMap.setStyle(style as any);\n\n this.emitEvent(new FlowCoreMapStyleChangeEvent('styleChanged', this, oldStyle, style));\n };\n\n public static defaultOptions: Partial<FlowCoreMapOptions> = {\n boxZoom: false,\n doubleClickZoom: false,\n featureClickTolerance: 0\n };\n\n maplibreMap!: maplibre.Map;\n\n constructor(options: FlowCoreMapOptions) {\n super();\n\n this.options = {\n ...FlowCoreMap.defaultOptions,\n ...options\n };\n\n this.style = new FlowCoreMapStyle({\n id: 'style'\n });\n\n this.debouncedEmitSourceEvent = debounceWithArgs(this.emitEvent, {\n delay: 20,\n hash: (event) => event.source,\n context: this\n });\n\n this._initialized = new Promise((resolve) => {\n this.resolveInitialized = resolve;\n });\n\n this.pluginManager = new PluginManager(this);\n\n this.initialize();\n }\n\n public get client(): FlowClient {\n return this.options.flowClient;\n }\n\n public get container(): HTMLElement {\n return this.maplibreMap.getContainer();\n }\n\n public get id(): string {\n return this.options.id;\n }\n\n public get initialized(): Promise<void> {\n return this._initialized;\n }\n\n public get state(): TState | null {\n return this._state;\n }\n\n public get styleSpecification(): FlowCoreMapStyleSpecification {\n return this.style.styleSpecification;\n }\n\n public addLayer(layer: FlowCoreMapLayer): this {\n this.style.addLayer(layer);\n return this;\n }\n\n public addSource(source: FlowCoreMapDataSource): this {\n this.emitEvent(new FlowCoreMapSourceEvent('beforeSourceAdded', this, source.id));\n\n // Update source to use Flo.w endpoint for expansion of dataset URLs\n source.setFlowEndpoint({\n host: this.options.flowClient.baseUrl,\n apiKey: this.options.flowClient.apiKey || undefined\n });\n this.style.addSource(source);\n\n this.emitEvent(new FlowCoreMapSourceEvent('sourceAdded', this, source.id));\n\n return this;\n }\n\n public bindState(state: TState): this {\n this._state = state;\n this.style.bindState(state);\n this.pluginManager.bindState(state);\n return this;\n }\n\n public destroy() {\n this.pluginManager.removeAllPlugins();\n this.styleUpdateSubscription?.unsubscribe();\n this.maplibreMap?.remove();\n this.emit('destroyed', new FlowCoreMapEvent('destroyed', this));\n }\n\n public emitError(message: string, originalError?: Error) {\n const error = new FlowCoreMapError(`${this.formattedName()}: ${message}`, originalError);\n this.pluginManager.forwardEvent('error', error);\n\n if (this.listenerCount('error')) {\n this.emit('error', error);\n } else {\n // Default to console output if no error handler attached\n console.error(error);\n }\n }\n\n public emitEvent<T extends FlowCoreMapEvent<keyof FlowCoreMapEventTypes, any>>(event: T) {\n this.pluginManager.forwardEvent(event.type, event);\n this.emit(event.type, event);\n }\n\n public featureStream(options: Omit<FeatureStreamOptions, 'map'>): FlowCoreMapFeatureStream {\n return new FlowCoreMapFeatureStream({ map: this, ...options });\n }\n\n public formattedName(): string {\n return `FlowCoreMap<${this.options.id}>`;\n }\n\n public getFeatureState(feature: FlowCoreMapFeatureIdentifier): Record<string, any> {\n return this.maplibreMap.getFeatureState(feature);\n }\n\n public getLayer(id: string): FlowCoreMapLayer {\n return this.style.getLayer(id);\n }\n\n public getLayers(filter?: (layer: FlowCoreMapLayer) => boolean): FlowCoreMapLayer[] {\n return this.style.getLayers(filter);\n }\n\n public getPlugin<T extends FlowCoreMapPlugin = FlowCoreMapPlugin>(pluginOrName: PluginConstructor<T> | string): T {\n return this.pluginManager.getPlugin(pluginOrName);\n }\n\n public getSource(id: string): FlowCoreMapDataSource {\n return this.style.getSource(id);\n }\n\n public getSources(filter?: (source: FlowCoreMapDataSource) => boolean): FlowCoreMapDataSource[] {\n return this.style.getSources(filter);\n }\n\n /**\n * Register a map icon image.\n *\n * @param id Image ID.\n * @param src Image source URL.\n * @param width Image display width.\n * @param height Image display height.\n * @param pixelDensity Image pixel density. Defaults to `2` - the source image should be @2x resolution to enable better quality rendering on high-resolution displays.\n * @param recolor Set to `true` to allow recoloring of map icon image using map layer style properties.\n */\n public registerImage(\n id: string,\n src: string,\n width?: number,\n height?: number,\n pixelDensity = 2,\n recolor = false\n ): void {\n debug(`${this.formattedName()}: Registering image '${id}'`);\n this.imageRegistry.registerImage(id, src, width, height, pixelDensity, recolor);\n }\n\n /**\n * Programmatically remove feature state properties from a map feature.\n *\n * @param feature Feature to modify. Specify `null` to modify all map features.\n * @param key Feature state key to remove. Specify `null` to remove all feature state for specified feature(s).\n */\n public removeFeatureState(feature: PartialBy<FlowCoreMapFeatureIdentifier, 'id'>, key?: string, fireEvent = true) {\n if (isNil(feature.id) && isDefined(key)) {\n // Maplibre API does not support removing specified key from ALL features\n // This functionality is added here using maplibregl's private API\n // Note this may break if the maplibregl version is updated\n\n const style = (this.maplibreMap as any).style;\n style._checkLoaded();\n const sourceId = feature.source;\n const sourceCache = style.sourceCaches[sourceId];\n\n if (sourceCache === undefined) {\n throw new FlowCoreError(`The source '${sourceId}' does not exist in the map's style.`);\n }\n\n const sourceState = sourceCache._state;\n const sourceType = sourceCache.getSource().type;\n const sourceLayer = sourceType === 'vector' ? feature.sourceLayer ?? 'geometry' : '_geojsonTileLayer';\n\n sourceState.deletedStates[sourceLayer] = sourceState.deletedStates[sourceLayer] || {};\n const sourceLayerDeleted = sourceState.deletedStates[sourceLayer] === null;\n if (sourceLayerDeleted) {\n return;\n }\n\n if (sourceState.state[sourceLayer]) {\n Object.keys(sourceState.state[sourceLayer]).forEach((feature) => {\n if (sourceState.deletedStates[sourceLayer][feature] !== null) {\n sourceState.deletedStates[sourceLayer][feature] = sourceState.deletedStates[sourceLayer][feature] || {};\n sourceState.deletedStates[sourceLayer][feature][key] = null;\n }\n });\n }\n\n (this.maplibreMap as any)._update();\n } else {\n // Use standard behavior\n this.maplibreMap.removeFeatureState(feature, key);\n }\n\n if (fireEvent) {\n const sourceEvent = new FlowCoreMapSourceEvent('sourceFeatureState', this, feature.source);\n this.debouncedEmitSourceEvent(sourceEvent);\n }\n }\n\n public removeLayer(id: string): this {\n this.style.removeLayer(id);\n return this;\n }\n\n public removeSource(id: string, removeLayers = false): this {\n this.emitEvent(new FlowCoreMapSourceEvent('beforeSourceRemoved', this, id));\n\n this.style.removeSource(id, removeLayers);\n\n this.emitEvent(new FlowCoreMapSourceEvent('sourceRemoved', this, id));\n\n return this;\n }\n\n public async setBaseStyle(style: string | FlowCoreMapStyleSpecification): Promise<void> {\n const baseStyle = await this.loadBaseStyle(style);\n this.style.setBaseStyle(baseStyle);\n }\n\n getCenter(): FlowCoreMapCenter {\n const lngLat = this.maplibreMap.getCenter();\n const zoom = this.maplibreMap.getZoom();\n const bearing = this.maplibreMap.getBearing();\n const pitch = this.maplibreMap.getPitch();\n\n return {\n lng: lngLat.lng,\n lat: lngLat.lat,\n zoom,\n bearing,\n pitch\n };\n }\n\n setCenter(center: Partial<FlowCoreMapCenter>, animationOptions?: FlowCoreMapAnimationOptions): this {\n const lngLat =\n isDefined(center.lng) && isDefined(center.lat) ? new maplibre.LngLat(center.lng, center.lat) : undefined;\n let method: Function = this.maplibreMap.jumpTo;\n if (animationOptions) {\n switch (animationOptions.mode) {\n case 'ease':\n method = this.maplibreMap.easeTo;\n break;\n case 'fly':\n method = this.maplibreMap.flyTo;\n break;\n default:\n method = this.maplibreMap.jumpTo;\n }\n }\n\n const options = {\n center: lngLat,\n ...center,\n ...animationOptions\n };\n\n method.call(this.maplibreMap, options);\n\n return this;\n }\n\n getBounds(): [number, number, number, number] {\n const bounds = this.maplibreMap.getBounds();\n return [bounds.getWest(), bounds.getSouth(), bounds.getEast(), bounds.getNorth()];\n }\n\n setBounds(bounds: [number, number, number, number], options?: FlowCoreMapAnimationOptions & { padding?: number }) {\n const fitBoundsOptions: maplibre.FitBoundsOptions = {\n linear: !options || options.mode === 'ease' || options.mode === 'jump',\n animate: !!options && options.mode !== 'jump',\n ...options\n };\n\n this.maplibreMap.fitBounds(bounds, fitBoundsOptions);\n }\n\n /**\n * Programmatically set feature state properties for a map feature.\n *\n * @param feature Feature to modify.\n * @param state Feature state properties to set.\n */\n public setFeatureState(feature: FlowCoreMapFeatureIdentifier, state: Record<string, any>, fireEvent = true) {\n const source = this.getSource(feature.source);\n assert(isStringFull(source.featureId));\n\n // Add default sourceLayer for vector sources if not specified\n if (source?.type === 'vector') {\n feature.sourceLayer = feature.sourceLayer || 'geometry';\n }\n\n this.maplibreMap.setFeatureState(feature, state);\n\n if (fireEvent) {\n const sourceEvent = new FlowCoreMapSourceEvent('sourceFeatureState', this, feature.source);\n this.debouncedEmitSourceEvent(sourceEvent);\n }\n }\n\n public setFeatureStateBulk(\n sourceId: FlowCoreMapSourceIdentifier,\n featureState: { [featureId: FlowCoreMapFeatureId]: Record<string, any> }\n ) {\n const source = this.getSource(sourceId.source);\n assert(isStringFull(source.featureId));\n\n this.maplibreMap.style._checkLoaded();\n const sourceCache = this.maplibreMap.style.sourceCaches[sourceId.source];\n if (isUndefined(sourceCache)) {\n throw new FlowCoreError(\n `${this.formattedName()}: the source '${sourceId.source}' does not exist in the map's style.`\n );\n }\n\n const sourceLayer = sourceCache.getSource().type === 'vector' ? sourceId.sourceLayer ?? 'geometry' : '';\n\n Object.keys(featureState).forEach((featureId) => {\n sourceCache.setFeatureState(sourceLayer, featureId, featureState[featureId]);\n });\n\n this.maplibreMap._update();\n\n const sourceEvent = new FlowCoreMapSourceEvent('sourceFeatureState', this, sourceId.source);\n this.debouncedEmitSourceEvent(sourceEvent);\n }\n\n public transaction(fn: () => void) {\n runInAction(() => fn());\n }\n\n public usePlugin<T extends FlowCoreMapPlugin>(plugin: PluginConstructor<T>, options?: PluginOptionsType<T>): this {\n this.pluginManager.usePlugin(plugin, options);\n\n return this;\n }\n\n public usePlugins(plugins: PluginConstructor[]): this {\n plugins.forEach((plugin) => this.usePlugin(plugin));\n return this;\n }\n\n private bindMapEvents(): void {\n this.maplibreMap.on('error', (e) => this.emitError(e.error.message, e.error));\n this.maplibreMap.on('mousemove', this.throttledMouseMove);\n this.maplibreMap.on('mouseout', this.throttledMouseMove);\n\n this.maplibreMap.on('click', this.handleMouseClick('click').bind(this));\n this.maplibreMap.on('dblclick', this.handleMouseClick('dblClick').bind(this));\n this.maplibreMap.on('styleimagemissing', this.handleMissingImage.bind(this));\n this.maplibreMap.on('sourcedata', this.handleLoading.bind(this));\n this.maplibreMap.on('idle', this.handleLoading.bind(this));\n\n // Forward other events\n const eventsToForward: Array<keyof FlowCoreMapEventTypes> = ['moveEnd'];\n eventsToForward.forEach((eventName: keyof FlowCoreMapEventTypes) => {\n this.maplibreMap.on(eventName.toLowerCase(), (event: maplibre.MapLibreEvent) => {\n const flowEvent = FlowCoreMapEvent.fromMaplibreEvent(eventName, this, event);\n this.emitEvent(flowEvent);\n });\n });\n }\n\n private featureFromMaplibreFeature(feature: maplibre.MapGeoJSONFeature): FlowCoreMapFeature {\n return {\n id: feature.id,\n geometry: feature.geometry,\n source: feature.source,\n sourceLayer: feature.sourceLayer,\n layer: feature.layer.id,\n properties: feature.properties,\n state: feature.state\n };\n }\n\n private featureQueryBox(\n event: maplibregl.MapMouseEvent\n ): maplibregl.PointLike | [maplibregl.PointLike, maplibregl.PointLike] {\n const queryBox = this.options.featureClickTolerance\n ? ([\n [event.point.x - this.options.featureClickTolerance, event.point.y - this.options.featureClickTolerance],\n [event.point.x + this.options.featureClickTolerance, event.point.y + this.options.featureClickTolerance]\n ] as [maplibregl.PointLike, maplibregl.PointLike])\n : event.point;\n\n return queryBox;\n }\n\n private async handleLoading(event: maplibre.MapLibreEvent) {\n let loading = false;\n\n if (event.type === 'sourcedata' && (event as maplibre.MapSourceDataEvent).isSourceLoaded === false) {\n loading = true;\n } else if (event.type === 'idle') {\n loading = false;\n } else {\n // fall back to checking all sources\n loading = !!Object.values(this.maplibreMap.style.sourceCaches).find((cache) => !cache.loaded());\n }\n\n if (this._loading !== loading) {\n const loadingEvent = new FlowCoreMapLoadingEvent(this, loading);\n this.emitEvent(loadingEvent);\n\n this._loading = loading;\n }\n }\n\n private async handleMissingImage(event: { id: string }) {\n const imageInfo = this.imageRegistry.getImage(event.id);\n if (imageInfo === this.imageRegistry.unknownImage) {\n // Image not found\n console.error(`${this.formattedName()}: Image '${event.id}' not registered`);\n }\n\n if (!imageInfo.image.complete) {\n // Image hasn't loaded yet - trigger an update once it has loaded\n imageInfo.image.onload = () => {\n this.maplibreMap.updateImage(event.id, imageInfo.image);\n this.maplibreMap.redraw();\n };\n }\n\n this.maplibreMap.addImage(event.id, imageInfo.image, {\n pixelRatio: imageInfo.pixelDensity,\n sdf: imageInfo.recolor\n });\n }\n\n private handleMouseClick(type: 'click' | 'dblClick') {\n return (event: maplibregl.MapMouseEvent) => {\n const layerIds = this.style.getLayers((layer) => layer.interactive).map((layer) => layer.id);\n const features = this.maplibreMap\n .queryRenderedFeatures(this.featureQueryBox(event), { layers: layerIds })\n .map(this.featureFromMaplibreFeature.bind(this));\n\n if (features.length) {\n debug(`${this.formattedName()} Feature ${type}ed`, features[0]);\n }\n\n const flowEvent = FlowCoreMapMouseEvent.fromMaplibreMouseEvent(type, event, this, features);\n this.emitEvent(flowEvent);\n };\n }\n\n private handleMouseMove(event: maplibregl.MapMouseEvent): void {\n if (event.type === 'mousemove') {\n const layerIds = this.style.getLayers((layer) => layer.interactive).map((layer) => layer.id);\n const features = this.maplibreMap\n .queryRenderedFeatures(this.featureQueryBox(event), { layers: layerIds })\n .map(this.featureFromMaplibreFeature.bind(this));\n\n const flowEvent = FlowCoreMapMouseEvent.fromMaplibreMouseEvent('mouseMove', event, this, features);\n this.emitEvent(flowEvent);\n } else if (event.type === 'mouseout') {\n const flowEvent = FlowCoreMapMouseEvent.fromMaplibreMouseEvent('mouseOut', event, this, []);\n this.emitEvent(flowEvent);\n }\n }\n\n private async initialize(): Promise<void> {\n let baseStyle = await this.loadBaseStyle(this.options.baseStyle);\n this.style.setBaseStyle(baseStyle);\n\n this.maplibreMap = new maplibre.Map({\n ...this.options,\n transformRequest: this.transformMapRequest.bind(this),\n style: baseStyle as any\n });\n\n this.maplibreMap.once('load', () => {\n this.styleUpdateSubscription = toStream(() => this.style.styleSpecification, false).subscribe(\n this.updateMapStyle\n );\n\n this.bindMapEvents();\n this.resolveInitialized();\n\n debug(`${this.formattedName()}: initialized with options`, this.options);\n });\n }\n\n private async loadBaseStyle(\n style: string | FlowCoreMapStyleSpecification | undefined\n ): Promise<FlowCoreMapStyleSpecification | undefined> {\n if (isURL(style)) {\n return fetch(style).then((resp) => resp.json());\n } else if (isString(style)) {\n return this.options.flowClient.maps.get(style) as Promise<any>;\n } else {\n return style;\n }\n }\n\n private transformMapRequest(url: string, resourceType?: string): maplibre.RequestParameters {\n const requestParameters: maplibre.RequestParameters = { url };\n\n if (this.client.accessToken && url.startsWith(this.client.baseUrl)) {\n // Add bearer token if specified on flowClient\n requestParameters.headers = { Authorization: `Bearer ${this.client.accessToken}` };\n }\n\n return requestParameters;\n }\n}\n", "import { FlowCoreError } from './flow-core-error';\n\nexport class FlowCoreMapError extends FlowCoreError {\n constructor(message: string, originalError?: Error) {\n super(message, originalError);\n }\n}\n", "import { action, computed, makeObservable, observable, runInAction } from 'mobx';\nimport { FlowCoreError } from '../errors';\nimport { FlowCoreStateStore } from '../flow-core-state-store';\nimport { isNil } from '../utils';\nimport { FlowCoreMapDataSource } from './flow-core-map-data-source';\nimport { FlowCoreMapLayer } from './flow-core-map-layer';\nimport { FlowCoreMapStyleSpecification } from './types';\n\nexport interface FlowCoreMapStyleOptions {\n // id: string;\n}\n\nexport class FlowCoreMapStyle {\n private static defaultOptions: Partial<FlowCoreMapStyleOptions> = {\n // None\n };\n\n private static defaultBaseStyle = Object.freeze({\n version: 8,\n id: 'default',\n name: 'Default base style',\n sources: {},\n layers: []\n });\n\n private state: FlowCoreStateStore | null = null;\n private options: FlowCoreMapStyleOptions;\n private baseStyle: FlowCoreMapStyleSpecification;\n private sources: { [id: string]: FlowCoreMapDataSource } = {};\n private layers: { [id: string]: FlowCoreMapLayer } = {};\n private layerOrder: string[] = [];\n\n get styleSpecification(): FlowCoreMapStyleSpecification {\n const spec = {\n ...this.baseStyle,\n sources: { ...this.baseStyle.sources },\n layers: [...this.baseStyle.layers]\n };\n\n // Add sources\n Object.values(this.sources).forEach((source) => {\n spec.sources[source.id] = source.dataSourceSpecification;\n });\n\n // Add layers\n this.layerOrder.forEach((id) => {\n const layer = this.layers[id];\n const layerSpec = layer.layerSpecification;\n const baseLayerIndex = spec.layers.findIndex((l) => l.id === id);\n\n if (baseLayerIndex >= 0) {\n const baseLayer = spec.layers[baseLayerIndex];\n // Merge paint and layout properties with existing base layer\n const mergedBaseLayer = {\n ...baseLayer,\n paint: {\n ...baseLayer.paint,\n ...layerSpec.paint\n },\n layout: {\n ...baseLayer.layout,\n ...layerSpec.layout\n }\n };\n spec.layers.splice(baseLayerIndex, 1, mergedBaseLayer);\n } else {\n // Append new layer\n\n // Default source layer to 'geometry' if missing and source type is 'vector'\n const source = spec.sources[layer.source];\n if (source.type === 'vector' && isNil(layerSpec['source-layer'])) {\n layerSpec['source-layer'] = 'geometry';\n }\n\n const layerIndex = this.layerInsertionPoint(layer, spec);\n spec.layers.splice(layerIndex, 0, layer.layerSpecification);\n }\n });\n\n return spec;\n }\n\n get id(): string {\n return this.baseStyle.id;\n }\n\n constructor(options: FlowCoreMapStyleOptions) {\n this.options = {\n ...FlowCoreMapStyle.defaultOptions,\n ...options\n };\n\n this.baseStyle = FlowCoreMapStyle.defaultBaseStyle;\n\n makeObservable<FlowCoreMapStyle, 'options' | 'sources' | 'layers' | 'layerOrder' | 'baseStyle'>(\n this,\n {\n //observable\n options: observable,\n sources: observable,\n layers: observable,\n layerOrder: observable,\n baseStyle: observable.ref,\n //computed\n styleSpecification: computed,\n // actions\n bindState: action,\n setBaseStyle: action,\n addSource: action,\n removeSource: action,\n addLayer: action,\n removeLayer: action\n },\n { name: this.formattedName(this.id) }\n );\n }\n\n bindState(state: FlowCoreStateStore): this {\n this.state = state;\n\n state.transaction(() => {\n Object.values(this.sources).forEach((source) => source.bindState(state));\n Object.values(this.layers).forEach((layer) => layer.bindState(state));\n });\n\n return this;\n }\n\n setBaseStyle(style?: FlowCoreMapStyleSpecification): this {\n this.baseStyle = style ? Object.freeze({ ...style }) : FlowCoreMapStyle.defaultBaseStyle;\n return this;\n }\n\n addSource(source: FlowCoreMapDataSource): this {\n this.sources[source.id] = source;\n source.bindState(this.state);\n return this;\n }\n\n removeSource(id: string, removeLayers = false): this {\n if (!this.sources[id]) {\n throw new FlowCoreError(`${this.formattedName()}: no source with id '${id}'`);\n }\n\n const linkedLayers = Object.values(this.layers)\n .filter((layer) => layer.source === id)\n .map((layer) => layer.id);\n\n if (removeLayers) {\n linkedLayers.forEach((id) => this.removeLayer(id));\n } else if (linkedLayers.length) {\n throw new FlowCoreError(\n `${this.formattedName()}: cannot remove source with id '${id}' when in use by layers ${linkedLayers.join(', ')}`\n );\n }\n\n delete this.sources[id];\n\n return this;\n }\n\n getSource(id: string): FlowCoreMapDataSource {\n const source = this.sources[id];\n if (!source) {\n throw new FlowCoreError(`${this.formattedName()}: no source with id '${id}'`);\n }\n\n return source;\n }\n\n getSources(filter?: (source: FlowCoreMapDataSource) => boolean): FlowCoreMapDataSource[] {\n return Object.values(this.sources).filter((source) => (filter ? filter(source) : true));\n }\n\n addLayer(layer: FlowCoreMapLayer): this {\n if (!this.sources[layer.source] && !this.baseStyle.sources[layer.source]) {\n throw new FlowCoreError(`${this.formattedName()}: no source with id '${layer.source}'`);\n }\n\n this.layers[layer.id] = layer;\n this.layerOrder.push(layer.id);\n layer.bindState(this.state);\n return this;\n }\n\n removeLayer(id: string): this {\n if (!this.layers[id]) {\n throw new FlowCoreError(`${this.formattedName()}: no layer with id '${id}'`);\n }\n\n delete this.layers[id];\n const index = this.layerOrder.indexOf(id);\n this.layerOrder.splice(index, 1);\n\n return this;\n }\n\n getLayer(id: string): FlowCoreMapLayer {\n const layer = this.layers[id];\n if (!layer) {\n throw new FlowCoreError(`${this.formattedName()}: no layer with id '${id}'`);\n }\n\n return layer;\n }\n\n getLayers(filter?: (layer: FlowCoreMapLayer) => boolean): FlowCoreMapLayer[] {\n return this.layerOrder.map((layerId) => this.layers[layerId]).filter((layer) => (filter ? filter(layer) : true));\n }\n\n private formattedName(id?: string): string {\n return `FlowCoreMapStyle<${id || this.id}>`;\n }\n\n private layerInsertionPoint(layer: FlowCoreMapLayer, spec: FlowCoreMapStyleSpecification): number {\n let insertionIndex = -1;\n\n if (layer.above) {\n insertionIndex = spec.layers.findIndex((l) => l.id === layer.above);\n if (insertionIndex >= 0) insertionIndex++;\n } else if (layer.below) {\n insertionIndex = spec.layers.findIndex((l) => l.id === layer.below);\n } else {\n const below = spec.metadata?.insertionPoints?.[layer.type];\n insertionIndex = spec.layers.findIndex((l) => l.id === below);\n }\n\n if (insertionIndex === -1) {\n // Not found - place at top of layer stack\n insertionIndex = spec.layers.length;\n }\n\n return insertionIndex;\n }\n}\n", "import * as maplibreSpec from '@maplibre/maplibre-gl-style-spec';\nimport { observable, action, computed, makeObservable } from 'mobx';\nimport { FlowCoreError } from '../errors';\nimport { FlowCoreExpression } from '../flow-core-expression';\nimport { ParserExpression } from '../flow-core-expression/types';\nimport { FlowCoreStateStore } from '../flow-core-state-store';\nimport { isDefined, isNil, isObjectFull } from '../utils/type-checks';\n\nexport type FlowCoreMapLayerType = 'fill' | 'fill-extrusion' | 'circle' | 'line' | 'symbol' | 'raster';\n\nexport interface FlowCoreMapLayerOptions {\n /** Layer ID. */\n id: string;\n /** Layer type. */\n type: FlowCoreMapLayerType;\n /** Map data source to display. */\n source: string;\n /** Map data source layer to display. (Applicable to 'vector'-type data sources). */\n sourceLayer?: string;\n /** Enable feature hover effect and click handling. */\n interactive?: boolean;\n /** Minimum visible zoom level. */\n minZoom?: number;\n /** Maximum visible zoom level. */\n maxZoom?: number;\n above?: string;\n below?: string;\n filter?: string;\n}\n\nexport type FlowCoreMapLayerExpression = ParserExpression;\n\nexport interface FlowCoreMapLayerSpecification {\n id: string;\n type: FlowCoreMapLayerType;\n metadata?: any;\n source: string;\n 'source-layer'?: string;\n minzoom?: number;\n maxzoom?: number;\n filter?: FlowCoreMapLayerExpression;\n layout?: Record<string, FlowCoreMapLayerExpression>;\n paint?: Record<string, FlowCoreMapLayerExpression>;\n}\n\n/**\n * @internal\n *\n * Map layer metadata index\n */\nexport interface FlowCoreMapLayerPropertyMetadataIndex {\n [layerType: string]: {\n [property: string]: FlowCoreMapLayerPropertyMetadata;\n };\n}\n\n/**\n * @internal\n *\n * Map layer style property set.\n */\ninterface FlowCoreMapLayerStyleProperties {\n [propertyKey: string]: FlowCoreExpression;\n}\n\n/**\n * @internal\n *\n * Map layer style property set.\n */\ninterface FlowCoreMapLayerPropertyMetadata {\n property: string;\n type: 'paint' | 'layout';\n definition: any;\n}\n\nexport class FlowCoreMapLayer {\n private static propertyMetadataIndex: FlowCoreMapLayerPropertyMetadataIndex;\n private static defaultOptions: Partial<FlowCoreMapLayerOptions> = {\n interactive: true,\n minZoom: 0,\n maxZoom: 18\n };\n\n private options: FlowCoreMapLayerOptions;\n private state: FlowCoreStateStore | null = null;\n private filter: FlowCoreExpression | null = null;\n private paintProps: FlowCoreMapLayerStyleProperties = {};\n private layoutProps: FlowCoreMapLayerStyleProperties = {};\n\n get layerSpecification(): FlowCoreMapLayerSpecification {\n // trigger changes if above or below changes\n this.options.above;\n this.options.below;\n\n const layer: FlowCoreMapLayerSpecification = {\n id: this.options.id,\n type: this.options.type,\n source: this.options.source\n };\n\n if (isDefined(this.options.minZoom)) {\n layer.minzoom = this.options.minZoom;\n }\n\n if (isDefined(this.options.maxZoom)) {\n layer.maxzoom = this.options.maxZoom;\n }\n\n if (isDefined(this.options.sourceLayer)) {\n layer['source-layer'] = this.options.sourceLayer;\n }\n\n // Add filter\n if (isDefined(this.filter)) {\n layer.filter = this.filter.maplibreExpression;\n }\n\n // Add paint properties\n if (isObjectFull(this.paintProps)) {\n layer.paint = Object.keys(this.paintProps).reduce((accum: any, key: string) => {\n accum[key] = this.paintProps[key].maplibreExpression;\n return accum;\n }, {} as any);\n }\n\n // Add layout properties\n if (isObjectFull(this.layoutProps)) {\n layer.layout = Object.keys(this.layoutProps).reduce((accum: any, key: string) => {\n let expr = this.layoutProps[key].maplibreExpression;\n\n // Fixup visibility property - turn boolean into 'visible' or 'none'\n if (key === 'visibility') {\n expr = this.layoutProps[key].value ? 'visible' : 'none';\n }\n\n accum[key] = expr;\n return accum;\n }, {} as any);\n }\n\n return layer;\n }\n\n get id(): string {\n return this.options.id;\n }\n\n get type(): string {\n return this.options.type;\n }\n\n get source(): string {\n return this.options.source;\n }\n\n get interactive(): boolean {\n return !!this.options.interactive;\n }\n\n get above(): string | undefined {\n return this.options.above;\n }\n\n get below(): string | undefined {\n return this.options.below;\n }\n\n constructor(options: FlowCoreMapLayerOptions, style?: string) {\n this.options = {\n ...FlowCoreMapLayer.defaultOptions,\n ...options\n };\n\n // Fail early if layer type is invalid\n this.getPropertyMetadata('visibility', options.type);\n\n makeObservable<FlowCoreMapLayer, 'paintProps' | 'layoutProps' | 'filter' | 'options'>(\n this,\n {\n //observable\n paintProps: observable,\n layoutProps: observable,\n filter: observable,\n options: observable,\n //computed\n layerSpecification: computed,\n // actions\n bindState: action,\n setMinZoom: action,\n setMaxZoom: action,\n setInteractive: action,\n setAbove: action,\n setBelow: action,\n setStyle: action,\n setStyleProperty: action,\n setFilter: action\n },\n { name: this.formattedName(options.id) }\n );\n\n if (options.filter) {\n this.setFilter(options.filter);\n }\n\n if (style) {\n this.setStyle(style);\n }\n }\n\n bindState(state: FlowCoreStateStore | null): this {\n this.state = state;\n\n // re-bind filter\n if (this.filter) {\n this.filter.bindState(state);\n }\n\n // re-bind property expressions\n Object.values(this.paintProps).forEach((prop) => prop.bindState(state));\n Object.values(this.layoutProps).forEach((prop) => prop.bindState(state));\n\n return this;\n }\n\n setMinZoom(zoom: number): this {\n this.options.minZoom = zoom;\n return this;\n }\n\n setMaxZoom(zoom: number): this {\n this.options.maxZoom = zoom;\n return this;\n }\n\n setInteractive(interactive: boolean): this {\n this.options.interactive = interactive;\n return this;\n }\n\n setAbove(layerId: string | undefined): this {\n this.options.above = layerId;\n return this;\n }\n\n setBelow(layerId: string | undefined): this {\n this.options.below = layerId;\n return this;\n }\n\n setStyle(styleProgram: string) {\n const parsedProgram = FlowCoreExpression.parseProgram(styleProgram);\n const props = Object.keys(parsedProgram);\n\n // Set each style property from program expressions\n props.forEach((prop) => {\n const metadata = this.getPropertyMetadata(prop, this.options.type);\n const layerProps = metadata!.type === 'paint' ? this.paintProps : this.layoutProps;\n layerProps[prop] = parsedProgram[prop].bindState(this.state);\n });\n }\n\n /**\n * Set an individual style property.\n *\n * @param property Property name.\n * @param expression Property style expression.\n */\n setStyleProperty(property: string, expression: string | null): void {\n const metadata = this.getPropertyMetadata(property, this.options.type);\n const props = metadata.type === 'paint' ? this.paintProps : this.layoutProps;\n\n if (isNil(expression)) {\n delete props[property];\n } else {\n const expr = new FlowCoreExpression(expression).bindState(this.state);\n\n if (expr.parseError) {\n throw expr.parseError;\n }\n\n props[property] = expr;\n }\n }\n\n setFilter(expression: string | null): void {\n this.filter = null;\n if (isDefined(expression)) {\n let expr = new FlowCoreExpression(expression).bindState(this.state);\n if (expr.parseError) {\n throw expr.parseError;\n }\n\n if (!maplibreSpec.expression.isExpressionFilter(expr.maplibreExpression)) {\n // Force legacy filter syntax to expression filter\n // Expanding a simple filter that uses reactive state can result in something that looks like\n // legacy syntax leading to incorrect evaluation by maplibre\n expr = new FlowCoreExpression(expr.expression, ['to-boolean', expr.maplibreExpression]);\n }\n\n this.filter = expr;\n }\n }\n\n private formattedName(id?: string): string {\n return `FlowCoreMapLayer<${id || this.options.id}>`;\n }\n\n private getPropertyMetadata(property: string, layerType: string): FlowCoreMapLayerPropertyMetadata {\n if (!FlowCoreMapLayer.propertyMetadataIndex) {\n FlowCoreMapLayer.initializePropertyMetadataIndex();\n }\n\n const layerMetadata = FlowCoreMapLayer.propertyMetadataIndex[layerType];\n\n if (!layerMetadata) {\n throw new FlowCoreError(`${this.formattedName()}: unknown layer type '${layerType}'`);\n }\n\n const propertyMetadata = layerMetadata[property];\n\n if (!propertyMetadata) {\n throw new FlowCoreError(`${this.formattedName()}: unknown layer property '${property}'`);\n }\n\n return propertyMetadata;\n }\n\n private static initializePropertyMetadataIndex(): void {\n const layerTypes = Object.keys(maplibreSpec.latest.layer.type.values);\n this.propertyMetadataIndex = layerTypes.reduce((acc, layerType) => {\n acc[layerType] = {};\n\n ['layout', 'paint'].forEach((propType) => {\n Object.keys(maplibreSpec.latest[`${propType}_${layerType}`]).forEach((prop) => {\n acc[layerType][prop] = {\n property: prop,\n type: propType,\n definition: maplibreSpec.latest[`${propType}_${layerType}`][prop]\n };\n });\n });\n\n return acc;\n }, {} as any);\n }\n}\n", "import { autorun, runInAction, makeObservable, AnnotationsMap, CreateObservableOptions, action } from 'mobx';\nimport { toStream, IObservableStream, IDisposer } from 'mobx-utils';\nimport { FlowCoreError } from '../errors';\nimport { Path, PathValue } from './utils';\n\n// Mark prototype for detection of base class during auto-annotation\nconst FlowCoreStateStoreMarker = Symbol('FlowCoreStateStoreMarker');\n// Key for cached annotations during auto-annotation\nconst FlowCoreStateStorCache = Symbol('FlowCoreStateStorCache');\nexport interface FlowCoreStateStoreOptions {\n name: string;\n}\nexport class FlowCoreStateStore<Props = any> {\n private nextIds: Record<string, number> = {};\n private getNextId(className: string) {\n const id = this.nextIds[className] = this.nextIds[className] ? this.nextIds[className] + 1 : 1;\n return id;\n }\n private formattedName: string;\n private _initialized = false;\n\n constructor() {\n const className = Reflect.getPrototypeOf(this)!.constructor.name;\n this.formattedName = `FlowCoreStateStore<${className}#${this.getNextId(className)}>`;\n }\n\n initialize(annotations: AnnotationsMap<this, never> = {}) {\n if (this._initialized) {\n throw new FlowCoreError(`${this.formattedName}: initialize() called multiple times`);\n }\n\n const className = Reflect.getPrototypeOf(this)!.constructor.name;\n this.makeSimpleAutoObservable(this, annotations, { name: this.formattedName });\n this._initialized = true;\n }\n\n get<P extends Path<Props, FlowCoreStateStore>>(path: P): PathValue<Props, P, FlowCoreStateStore> {\n this.checkInitialized();\n\n let pathStr = path as string;\n let value: any = this;\n const p = pathStr.split('.');\n let k: string | undefined;\n\n while ((k = p.shift())) {\n value = value[k];\n }\n\n return value;\n }\n\n set<P extends Path<Props, FlowCoreStateStore>>(path: P, val: PathValue<Props, P, FlowCoreStateStore>): void {\n this.checkInitialized();\n\n const pathArray = path.split('.');\n let k: string | undefined;\n let value: any = this;\n\n while (pathArray.length > 1) {\n k = pathArray.shift();\n value = value[k!];\n }\n\n k = pathArray.shift();\n value[k!] = val;\n }\n\n transaction(fn: (state: this) => void) {\n this.checkInitialized();\n runInAction(() => fn(this));\n }\n\n toggle<P extends Path<Props, FlowCoreStateStore>>(path: P): boolean {\n this.checkInitialized();\n\n const val = !this.get(path);\n this.set(path, val as any);\n return val;\n }\n\n increment<P extends Path<Props, FlowCoreStateStore>>(path: P): number {\n this.checkInitialized();\n\n const val = +this.get(path) + 1;\n this.set(path, val as any);\n return val;\n }\n\n decrement<P extends Path<Props, FlowCoreStateStore>>(path: P): number {\n this.checkInitialized();\n\n const val = +this.get(path as any) - 1;\n this.set(path, val as any);\n return val;\n }\n\n toStream<P extends Path<Props, FlowCoreStateStore>>(\n path: P,\n fireImmediately = true\n ): IObservableStream<PathValue<Props, P, FlowCoreStateStore>> {\n this.checkInitialized();\n\n return toStream(() => this.get(path), fireImmediately);\n }\n\n autorun(autorunFn: (state: this) => void, name?: string): IDisposer {\n this.checkInitialized();\n\n return autorun(() => autorunFn(this), { name });\n }\n\n private makeSimpleAutoObservable(target: any, overrides: AnnotationsMap<any, never> = {}, options: CreateObservableOptions) {\n\n overrides = {\n ...overrides,\n _initialized: false,\n $mobx: false,\n constructor: false\n }\n\n let annotations = target[FlowCoreStateStorCache];\n if (!annotations) {\n annotations = {};\n\n let current = target;\n while (current && !Object.hasOwn(current, FlowCoreStateStoreMarker)) {\n Reflect.ownKeys(current).forEach((k) => {\n annotations[k] = !overrides ? true : k in overrides ? overrides[k] : true;\n });\n current = Object.getPrototypeOf(current);\n }\n // Cache annotations for this class\n const proto = Object.getPrototypeOf(target);\n if (proto) {\n Object.defineProperty(proto, FlowCoreStateStorCache, { value: annotations });\n }\n }\n\n // Add fixed actions for base class\n annotations = {\n ...annotations,\n set: action,\n toggle: action,\n increment: action,\n decrement: action\n };\n\n return makeObservable(target, annotations, options);\n }\n\n private checkInitialized() {\n if (!this._initialized) {\n throw new FlowCoreError(`${this.formattedName} not initialized. 'this.initialize()' must be called in constructor`);\n }\n }\n}\n\n(FlowCoreStateStore.prototype as any)[FlowCoreStateStoreMarker] = true;\n", "import { trace } from 'mobx';\n\nexport function traceReaction() {\n trace();\n}\n\nexport type IsStrictlyAny<T> = (T extends never ? true : false) extends false ? false : true;\nexport type HasIndexSignature<T> = T extends { [k in 'FlowStateStoreDummyVal']?: any } ? true : false;\nexport type StoreKey<T, TBase> = Exclude<Exclude<keyof T, keyof TBase>, keyof []> & string;\n\nexport type PathImpl<T, TBase, Key extends StoreKey<T, TBase>> = Key extends string\n ? IsStrictlyAny<T[Key]> extends true\n ? never\n : HasIndexSignature<T[Key]> extends true\n ? never\n : T[Key] extends Record<string, any>\n ? `${Key}.${StoreKey<T[Key], TBase>}`\n | `${Key}.${PathImpl<T[Key], TBase, StoreKey<T[Key], TBase>>}`\n : never\n : never;\n\nexport type Path<T, TBase = {}> = PathImpl<T, TBase, StoreKey<T, TBase>> | StoreKey<T, TBase>;\n\nexport type PathValue<T, P extends Path<T, TBase>, TBase = {}> = P extends `${infer Key}.${infer Rest}`\n ? Key extends keyof T\n ? Rest extends Path<T[Key], TBase>\n ? PathValue<T[Key], Rest, TBase>\n : never\n : never\n : P extends keyof T\n ? T[P]\n : never;\n", "import { action, computed, observable } from '../flow-core-state-store';\nimport { FlowCoreError } from '../errors';\nimport { FlowCoreExpression } from '../flow-core-expression';\nimport { FlowCoreStateStore } from '../flow-core-state-store';\nimport { isIn, isNil, isString, isStringFull, isURL } from '../utils';\nimport { FlowCoreMapDataSourceOptions, FlowCoreMapDataSourceSpecification, FlowCoreMapDataSourceType, FlowCoreMapGeojsonData } from './types';\nimport { makeObservable, toJS } from 'mobx';\n\nexport interface FlowCoreMapEndpoint {\n host: string;\n apiKey?: string;\n}\n\nexport class FlowCoreMapDataSource {\n private static defaultOptions: Partial<FlowCoreMapDataSourceOptions> = {\n type: 'vector',\n cluster: false,\n clusterRadius: 50,\n clusterMaxZoom: 20,\n clusterMinPoints: 2,\n flowHost: 'https://flow.emu-analytics.net'\n };\n\n private options: FlowCoreMapDataSourceOptions;\n private srcExpression: FlowCoreExpression<any, FlowCoreMapGeojsonData> | null = null;\n private parameters: Record<string, FlowCoreExpression> = {};\n private state: FlowCoreStateStore | null = null;\n\n get id(): string {\n return this.options.id;\n }\n\n get type(): FlowCoreMapDataSourceType {\n return this.options.type;\n }\n\n get featureId(): string | undefined {\n return this.options.featureId;\n }\n\n get dataSourceSpecification(): FlowCoreMapDataSourceSpecification {\n let src = this.srcExpression ? toJS(this.srcExpression.value) : this.options.src;\n\n if (isString(src)) {\n // src is a datasetID/tileSourceID or URL\n // Expand to final URL\n src = this.expandSrc(src, this.options.type);\n }\n\n let ds: FlowCoreMapDataSourceSpecification;\n\n switch (this.options.type) {\n case 'vector':\n ds = isStringFull(src)\n ? {\n type: 'vector',\n url: src\n }\n : // For null src use an empty geojson datasource as a placeholder\n {\n type: 'geojson',\n data: { type: 'FeatureCollection', features: [] }\n };\n\n if (this.options.featureId) {\n ds.promoteId = this.options.featureId;\n }\n return ds;\n\n case 'raster':\n ds = isStringFull(src)\n ? {\n type: 'raster',\n url: src\n }\n : // For null src use an empty geojson datasource as a placeholder\n {\n type: 'geojson',\n data: { type: 'FeatureCollection', features: [] }\n };\n return ds;\n\n case 'geojson':\n ds = {\n type: 'geojson',\n data: src || { type: 'FeatureCollection', features: [] }\n };\n\n if (this.options.cluster) {\n ds.cluster = true;\n ds.clusterMaxZoom = this.options.clusterMaxZoom;\n ds.clusterMinPoints = this.options.clusterMinPoints;\n ds.clusterRadius = this.options.clusterRadius;\n }\n\n if (this.options.featureId) {\n ds.promoteId = this.options.featureId;\n }\n return ds;\n /* istanbul ignore next */\n default:\n throw new FlowCoreError(`${this.formattedName()}: unrecognized type '${this.options.type}'`);\n }\n }\n\n constructor(options: FlowCoreMapDataSourceOptions) {\n this.options = {\n ...FlowCoreMapDataSource.defaultOptions,\n ...options\n };\n\n // Fail early if layer type is invalid\n if (!isIn(options.type, ['vector', 'geojson', 'raster'])) {\n throw new FlowCoreError(`${this.formattedName()}: unrecognized type '${options.type}'`);\n }\n\n this.setSrcExpression(options.src);\n\n makeObservable<FlowCoreMapDataSource, 'options' | 'srcExpression' | 'parameters'>(\n this,\n {\n //observable\n options: observable,\n srcExpression: observable,\n parameters: observable,\n //computed\n dataSourceSpecification: computed,\n // actions\n bindState: action,\n setSrc: action,\n setParameter: action,\n },\n { name: this.formattedName(options.id) }\n );\n }\n\n bindState(state: FlowCoreStateStore | null): this {\n this.state = state;\n\n // re-bind src expression\n if (this.srcExpression) {\n this.srcExpression?.bindState(state);\n }\n\n // re-bind parameter expressions\n Object.values(this.parameters).forEach((expr) => expr.bindState(state));\n\n return this;\n }\n\n setSrc(val: FlowCoreMapGeojsonData) {\n this.options.src = val;\n this.setSrcExpression(val);\n }\n\n setParameter(name: string, expression: string | null) {\n if (isNil(expression)) {\n delete this.parameters[name];\n } else {\n const expr = new FlowCoreExpression(expression);\n this.parameters[name] = expr.bindState(this.state);\n }\n }\n\n setFlowEndpoint(endpoint: FlowCoreMapEndpoint) {\n this.options.flowHost = endpoint.host;\n this.options.flowApiKey = endpoint.apiKey;\n }\n\n private formattedName(id?: string): string {\n return `FlowCoreMapDataSource<${id || this.options.id}>`;\n }\n\n private setSrcExpression(src: FlowCoreMapGeojsonData | null): void {\n if (isString(src)) {\n // Wrap URL\n if (isURL(src)) src = `'${src}'`;\n this.srcExpression = new FlowCoreExpression(src);\n this.srcExpression.bindState(this.state);\n } else {\n this.srcExpression = null;\n }\n }\n\n /**\n * Convert a src parameter to final URL\n *\n * @param src Data source url/dataset/tilesource ID\n * @param type Data source type\n * @returns URL\n */\n private expandSrc(src: string, type: string): string {\n const host = this.options.flowHost;\n let isGeoJSON = false;\n\n if (!isURL(src)) {\n switch (type) {\n case 'vector':\n case 'raster':\n src = `${host}/tiles/${src}/index.json`;\n break;\n\n case 'geojson':\n src = `${host}/api/v1/datasets/${src}/query`;\n isGeoJSON = true;\n break;\n /* istanbul ignore next */\n default:\n throw new FlowCoreError(`${this.formattedName()}: unrecognized type '${this.options.type}'`);\n }\n }\n\n const urlObj = new URL(src);\n\n const combinedParams = new URLSearchParams(urlObj.searchParams);\n\n // Add parameters\n Object.entries(this.parameters)\n .filter(([_, expr]) => !isNil(expr.value))\n .forEach(([key, expr]) => combinedParams.append(key, expr.value));\n\n // Add apikey to querystring if not already specified in URL\n if (!combinedParams.has('apikey') && this.options.flowApiKey) {\n combinedParams.append('apikey', this.options.flowApiKey);\n }\n\n // Add limit to querystring if set\n if (this.options.limit) {\n combinedParams.append('limit', this.options.limit.toString(10));\n }\n\n // Add format to querystring if geojson\n if (isGeoJSON) {\n combinedParams.append('format', 'geojson');\n }\n\n urlObj.search = combinedParams.toString();\n return urlObj.toString();\n }\n}\n", "import { FlowCoreError } from '../errors';\n\nexport function assert(condition: unknown, message?: string): asserts condition {\n if (!condition) {\n throw new FlowCoreError(message ?? 'Assertion failed');\n }\n}\n", "/**\n * Throttle execution of a function. Especially useful for rate limiting\n * execution of handlers on events like resize and scroll.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher)\n * are most useful.\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through,\n * as-is, to `callback` when the throttled-function is executed.\n * @param {object} [options] - An object to configure options.\n * @param {boolean} [options.noTrailing] - Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds\n * while the throttled-function is being called. If noTrailing is false or unspecified, callback will be executed\n * one final time after the last throttled-function call. (After the throttled-function has not been called for\n * `delay` milliseconds, the internal counter is reset).\n * @param {boolean} [options.noLeading] - Optional, defaults to false. If noLeading is false, the first throttled-function call will execute callback\n * immediately. If noLeading is true, the first the callback execution will be skipped. It should be noted that\n * callback will never executed if both noLeading = true and noTrailing = true.\n * @param {boolean} [options.debounceMode] - If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is\n * false (at end), schedule `callback` to execute after `delay` ms.\n *\n * @returns {Function} A new, throttled, function.\n */\n\nexport type Function<TArgs extends any[] = any[], TResult = any | void> = (...args: TArgs) => TResult;\n\nexport type NoReturn<T extends Function> = Function<Parameters<T>, void>;\n\nexport interface CancelOptions {\n upcomingOnly?: boolean;\n}\n\n\nconst a = (a: number, b: string) => a + b;\n\ntype t = Parameters<typeof a>;\n\nexport interface Cancel {\n cancel: (options?: CancelOptions) => void;\n}\n\nexport const doNotMemoize = Symbol('Do not memoize');\n\nexport interface MemoizeOptions<TArgs extends any[], TKey> {\n hash?: Function<TArgs, TKey | typeof doNotMemoize>;\n context?: any;\n}\n\nexport function memoize<TArgs extends any[], TResult, TKey>(\n originalFunction: Function<TArgs, TResult>,\n options: MemoizeOptions<TArgs, TKey>\n): (...args: TArgs) => TResult {\n const cache = new Map<TKey, TResult>();\n const hash = options.hash ? options.hash : (...args: TArgs) => args[0] as TKey;\n const context = options.context;\n\n return function memoizedFunction(...args: TArgs): TResult {\n const key = hash.apply(context, args);\n\n if (key === doNotMemoize) {\n return originalFunction.apply(context, args);\n }\n\n let value: TResult;\n if (!cache.has(key)) {\n value = originalFunction.apply(context, args);\n\n cache.set(key, value);\n } else {\n value = cache.get(key)!;\n }\n\n return value;\n };\n}\n\nexport interface ThrottleOptions {\n delay: number;\n noTrailing?: boolean;\n noLeading?: boolean;\n debounceMode?: boolean;\n context?: any;\n}\n\nexport function throttle<T extends (...args: any[]) => any>(\n callback: T,\n options: ThrottleOptions\n): NoReturn<T> & Cancel {\n const { delay, noTrailing = false, noLeading = false, debounceMode = undefined } = options;\n /*\n * After wrapper has stopped being called, this timeout ensures that\n * `callback` is executed at the proper times in `throttle` and `end`\n * debounce modes.\n */\n let timeoutID: ReturnType<typeof setTimeout> | undefined;\n let cancelled = false;\n\n // Keep track of the last time `callback` was executed.\n let lastExec = 0;\n\n // Function to clear existing timeout\n function clearExistingTimeout() {\n if (timeoutID) {\n clearTimeout(timeoutID);\n }\n }\n\n // Function to cancel next exec\n function cancel(options?: CancelOptions) {\n const { upcomingOnly = false } = options || {};\n clearExistingTimeout();\n cancelled = !upcomingOnly;\n }\n\n /*\n * The `wrapper` function encapsulates all of the throttling / debouncing\n * functionality and when executed will limit the rate at which `callback`\n * is executed.\n */\n function wrapper(this: any, ...arguments_: any[]) {\n let context = options.context;\n let elapsed = Date.now() - lastExec;\n\n if (cancelled) {\n return;\n }\n\n // Execute `callback` and update the `lastExec` timestamp.\n function exec() {\n lastExec = Date.now();\n callback.apply(context, arguments_);\n }\n\n /*\n * If `debounceMode` is true (at begin) this is used to clear the flag\n * to allow future `callback` executions.\n */\n function clear() {\n timeoutID = undefined;\n }\n\n if (!noLeading && debounceMode && !timeoutID) {\n /*\n * Since `wrapper` is being called for the first time and\n * `debounceMode` is true (at begin), execute `callback`\n * and noLeading != true.\n */\n exec();\n }\n\n clearExistingTimeout();\n\n if (debounceMode === undefined && elapsed > delay) {\n if (noLeading) {\n /*\n * In throttle mode with noLeading, if `delay` time has\n * been exceeded, update `lastExec` and schedule `callback`\n * to execute after `delay` ms.\n */\n lastExec = Date.now();\n if (!noTrailing) {\n timeoutID = setTimeout(debounceMode ? clear : exec, delay);\n }\n } else {\n /*\n * In throttle mode without noLeading, if `delay` time has been exceeded, execute\n * `callback`.\n */\n exec();\n }\n } else if (noTrailing !== true) {\n /*\n * In trailing throttle mode, since `delay` time has not been\n * exceeded, schedule `callback` to execute `delay` ms after most\n * recent execution.\n *\n * If `debounceMode` is true (at begin), schedule `clear` to execute\n * after `delay` ms.\n *\n * If `debounceMode` is false (at end), schedule `callback` to\n * execute after `delay` ms.\n */\n timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);\n }\n }\n\n wrapper.cancel = cancel;\n\n // Return the wrapper function.\n return wrapper;\n}\n\n/**\n * Debounce execution of a function. Debouncing, unlike throttling,\n * guarantees that a function is only executed a single time, either at the\n * very beginning of a series of calls, or at the very end.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n * to `callback` when the debounced-function is executed.\n * @param {object} [options] - An object to configure options.\n * @param {boolean} [options.atBegin] - Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds\n * after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.\n * (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).\n *\n * @returns {Function} A new, debounced function.\n */\n\nexport interface DebounceOptions {\n delay: number;\n atBegin?: boolean;\n context?: any;\n}\n\nexport function debounce<T extends (...args: any[]) => any>(\n callback: T,\n options: DebounceOptions\n): NoReturn<T> & Cancel {\n const { delay, context, atBegin = false } = options;\n return throttle(callback, { delay, debounceMode: atBegin !== false, context });\n}\n\ntype MemoizedDebounceOptions<TArgs extends any[], TKey> = DebounceOptions & MemoizeOptions<TArgs, TKey>;\n\nexport function debounceWithArgs<TArgs extends any[], TKey>(\n fn: Function<TArgs, any>,\n options: MemoizedDebounceOptions<TArgs, TKey>\n): Function<TArgs, void> {\n const memoizedDebouncedFn = memoize<TArgs, Function<TArgs, void> & Cancel, TKey>(\n () => debounce(fn, options),\n options\n );\n\n return (...args: TArgs) => {\n memoizedDebouncedFn(...args)(...args);\n };\n}\n\ntype MemoizedThrottleOptions<TArgs extends any[], TKey> = ThrottleOptions & MemoizeOptions<TArgs, TKey>;\n\nexport function throttleWithArgs<TArgs extends any[], TKey>(\n fn: Function<TArgs, any>,\n options: MemoizedThrottleOptions<TArgs, TKey>\n): Function<TArgs, void> {\n const memoizedThrottleFn = memoize<TArgs, Function<TArgs, void> & Cancel, TKey>(() => throttle(fn, options), options);\n\n return (...args: TArgs) => {\n memoizedThrottleFn(...args)(...args);\n };\n}\n", "import Debug from 'debug';\nimport { FlowCoreError } from '../../errors';\nimport { FlowCoreMapStyleSpecification } from '../../flow-core-map-style';\nimport { FlowCoreStateStore } from '../../flow-core-state-store';\nimport { isString } from '../../utils';\nimport { capitalize } from '../../utils/string-utils';\nimport { FlowCoreMap } from '../flow-core-map';\nimport { FlowCoreMapEventTypes, FlowCoreMapStyleChangeEvent } from '../support/flow-core-map-events';\nimport { EventHandlers, FlowCoreMapPlugin, PluginConstructor, PluginOptionsType } from './flow-core-map-plugin';\nimport { Bindings as KeyboardShortcuts, KeyboardShortcutManager } from './keyboard-shortcut-manager';\n\nconst debug = Debug('flow:map-plugin-manager');\n\nexport class PluginManager {\n private _map: FlowCoreMap;\n private _keyboardShortcutManager: KeyboardShortcutManager = new KeyboardShortcutManager;\n private _plugins = new Map<PluginConstructor<any>, FlowCoreMapPlugin>();\n private _initialized = false;\n private _exclusivePlugins = new Set<FlowCoreMapPlugin>();\n\n get map() {\n return this._map;\n }\n\n constructor(map: FlowCoreMap) {\n this._map = map;\n\n this.map.initialized.then(() => {\n this._initialized = true;\n // Deferred initialization of plugins\n for (let plugin of this._plugins.values()) {\n if (plugin.initialize) {\n plugin.initialize();\n }\n }\n });\n }\n\n usePlugin<T extends FlowCoreMapPlugin>(plugin: PluginConstructor<T>, options?: PluginOptionsType<T>): this {\n const pluginInstance = new plugin(this, options);\n this._plugins.set(plugin, pluginInstance);\n debug(`${this.map.formattedName()}: Using plugin '${pluginInstance.name}'`);\n\n // Initialize plugin immediately if map already initialized\n if (this._initialized && pluginInstance.initialize) pluginInstance.initialize();\n\n return this;\n }\n\n getPlugin<T extends FlowCoreMapPlugin = FlowCoreMapPlugin>(pluginOrName: PluginConstructor<T> | string): T {\n let name: string;\n let pluginInstance: FlowCoreMapPlugin | undefined;\n\n if (isString(pluginOrName)) {\n pluginInstance = Array.from(this._plugins.values()).find((p) => p.name === pluginOrName);\n name = pluginOrName;\n } else {\n pluginInstance = this._plugins.get(pluginOrName);\n name = pluginOrName.name;\n }\n\n if (!pluginInstance) {\n throw new FlowCoreError(`<${name}>: plugin not registered`);\n }\n\n return pluginInstance as T;\n }\n\n removePlugin<T extends FlowCoreMapPlugin>(plugin: PluginConstructor<T>): this {\n const pluginInstance = this._plugins.get(plugin);\n\n if (pluginInstance && pluginInstance.destroy) {\n pluginInstance.destroy();\n }\n\n this._plugins.delete(plugin);\n\n return this;\n }\n\n removeAllPlugins(): this {\n this._plugins.forEach((plugin) => {\n if (plugin.destroy) plugin.destroy();\n });\n\n this._plugins.clear();\n\n return this;\n }\n\n setExclusivePlugin(plugin: FlowCoreMapPlugin): this {\n this._exclusivePlugins.add(plugin);\n this.forwardSetExclusivePlugin();\n return this;\n }\n\n removeExclusivePlugin(plugin: FlowCoreMapPlugin): this {\n this._exclusivePlugins.delete(plugin);\n this.forwardSetExclusivePlugin();\n return this;\n }\n\n addKeyboardShortcuts(keyboardShortcuts: KeyboardShortcuts, priority = 0) {\n return this._keyboardShortcutManager.addListener(keyboardShortcuts, priority);\n }\n\n forwardEvent<T extends keyof FlowCoreMapEventTypes>(\n eventName: T,\n ...args: Parameters<FlowCoreMapEventTypes[T]>\n ): void {\n const handlerName = `handle${capitalize(eventName)}` as keyof EventHandlers<\n Omit<FlowCoreMapEventTypes, 'destroyed'>\n >;\n\n this._plugins.forEach((plugin: FlowCoreMapPlugin) => {\n // Skip plugin exlusivePlugin override is set\n if (this._exclusivePlugins.size && !this._exclusivePlugins.has(plugin)) return;\n\n const handler = plugin[handlerName];\n if (handler) {\n handler.apply<FlowCoreMapPlugin, any, void>(plugin, args);\n }\n });\n }\n\n forwardStyleChangeEvent(event: FlowCoreMapStyleChangeEvent): FlowCoreMapStyleSpecification {\n this._plugins.forEach((plugin: FlowCoreMapPlugin) => {\n // Skip plugin exlusivePlugin override is set\n if (this._exclusivePlugins.size && !this._exclusivePlugins.has(plugin)) return;\n\n if (plugin.handleBeforeStyleChanged) {\n const result = plugin.handleBeforeStyleChanged(event);\n if (result) {\n event.newStyle = result;\n }\n }\n });\n\n return event.newStyle;\n }\n\n bindState(state: FlowCoreStateStore): this {\n this._plugins.forEach((plugin) => {\n if (plugin.bindState) plugin.bindState(state);\n });\n\n return this;\n }\n\n private forwardSetExclusivePlugin() {\n this._plugins.forEach((plugin: FlowCoreMapPlugin) => {\n if (plugin.handleSetExclusivePlugin) {\n plugin.handleSetExclusivePlugin(Array.from(this._exclusivePlugins));\n }\n });\n }\n}\n", "export const capitalize = (str: string = \"\", lowerRest = false): string =>\n str.slice(0, 1).toUpperCase() +\n (lowerRest ? str.slice(1).toLowerCase() : str.slice(1));\n", "export interface Listener {\n bindings: Bindings;\n priority?: number;\n}\n\nexport interface Handler {\n (event: KeyboardEvent): boolean | void;\n}\n\nexport interface Bindings {\n [key: string]: Handler;\n}\n\nexport interface RemoveListener {\n (): void;\n}\n\nexport class KeyboardShortcutManager {\n private listeners: Listener[];\n\n constructor() {\n this.listeners = [];\n document.addEventListener('keydown', this.handleKeyboardEvent);\n }\n\n /**\n * Adds listener to keyboard events.\n * @param bindings Object containing key/value pairs of keyCode/eventHandler function. Can add multiple comma separated `,` keyCodes for the same handler. Can optionally return `false` to stop propagation of other handlers.\n * @param priority Can optionally set the priority of event handler, higher value means higher priority. Defaults to 0.\n * @returns Function that can be used to unbind the listener.\n */\n public addListener(bindings: Bindings, priority?: number): RemoveListener {\n bindings = this.splitEventBindings(bindings);\n const listener = this.addToListeners({ bindings, priority: priority ?? 0 });\n\n const removeListener = () => {\n this.removeFromListeners(listener);\n };\n\n return removeListener;\n }\n\n /**\n * Handles key events of the root handler and passes them down to listeners.\n * @param event\n */\n private handleKeyboardEvent = (event: KeyboardEvent): void => {\n // Ignore events coming from input type\n if (this.isInputEvent(event)) return;\n\n let key = this.keyDefinitionFromEvent(event);\n\n for (const listener of this.listeners) {\n const handler = listener.bindings[key];\n if (handler) {\n const propagate = handler(event);\n if (propagate === true) {\n continue;\n } else {\n event.stopPropagation();\n return;\n }\n }\n }\n };\n\n /**\n * Splits multiple keyCode events and creates a new bindings map.\n * @param bindings\n */\n private splitEventBindings(bindings: Bindings): Bindings {\n const splitBindings: Bindings = {};\n for (const event in bindings) {\n event.split(',').forEach((splitEvent) => {\n splitBindings[this.normalizeKeyDefinition(splitEvent)] = bindings[event];\n });\n }\n return splitBindings;\n }\n\n /**\n * Checks is the event comes from an input type.\n * @param event\n */\n private isInputEvent(event: KeyboardEvent): boolean {\n if (event.target instanceof Node) {\n switch (event.target.nodeName) {\n case 'INPUT':\n case 'SELECT':\n case 'TEXTAREA':\n return true;\n default:\n return false;\n }\n }\n return false;\n }\n\n /**\n * Adds listener into internal array of listeners and sorts in `descending` order.\n * @param listener\n */\n private addToListeners(listener: Listener): Listener {\n this.listeners.push(listener);\n this.listeners.sort((a, b) => b.priority! - a.priority!);\n\n return listener;\n }\n\n /**\n * Removes listener from internal array of listeners.\n * @param listenerToRemove\n */\n private removeFromListeners(listenerToRemove: Listener): void {\n this.listeners = this.listeners.filter((listener) => listener !== listenerToRemove);\n }\n\n public normalizeKeyDefinition(keyDef: string): string {\n const parts = keyDef.split('+');\n\n const ev = {\n ctrlKey: parts.includes('Ctrl'),\n shiftKey: parts.includes('Shift'),\n altKey: parts.includes('Alt'),\n metaKey: parts.includes('Meta'),\n code: parts[parts.length - 1]\n };\n\n return this.keyDefinitionFromEvent(ev as KeyboardEvent);\n }\n\n public keyDefinitionFromEvent(ev: KeyboardEvent): string {\n let keyDef = '';\n if (ev.ctrlKey) keyDef += 'Ctrl+';\n if (ev.shiftKey) keyDef += 'Shift+';\n if (ev.altKey) keyDef += 'Alt+';\n if (ev.metaKey) keyDef += 'Meta+';\n keyDef += ev.code;\n\n return keyDef;\n }\n}\n", "import * as maplibre from 'maplibre-gl';\nimport { FlowCoreMapError } from '../../errors/flow-core-map-error';\nimport { FlowCoreMapStyleSpecification } from '../../flow-core-map-style';\nimport { FlowCoreMap } from '../flow-core-map';\nimport { FlowCoreMapFeature } from \"../types\";\n\nexport interface FlowCoreMapEventTypes {\n // Mouse events\n click: (event: FlowCoreMapMouseEvent) => void;\n dblClick: (event: FlowCoreMapMouseEvent) => void;\n mouseMove: (event: FlowCoreMapMouseEvent) => void;\n mouseOut: (event: FlowCoreMapMouseEvent) => void;\n moveEnd: (event: FlowCoreMapEvent) => void;\n\n // Source events\n sourceAdded: (event: FlowCoreMapSourceEvent) => void;\n sourceRemoved: (event: FlowCoreMapSourceEvent) => void;\n beforeSourceAdded: (event: FlowCoreMapSourceEvent) => void;\n beforeSourceRemoved: (event: FlowCoreMapSourceEvent) => void;\n sourceFeatureState: (event: FlowCoreMapSourceEvent) => void;\n\n destroyed: (event: FlowCoreMapEvent) => void;\n loading: (event: FlowCoreMapLoadingEvent) => void;\n\n beforeStyleChanged: (event: FlowCoreMapStyleChangeEvent) => void;\n styleChanged: (event: FlowCoreMapStyleChangeEvent) => void;\n\n error: (event: FlowCoreMapError) => void;\n}\n\nexport type FlowCoreMapEventType = keyof FlowCoreMapEventTypes;\n\nexport class FlowCoreMapEvent<EventType extends string = FlowCoreMapEventType, TOrig = undefined> {\n type: EventType;\n map: FlowCoreMap;\n originalEvent?: TOrig;\n\n static fromMaplibreEvent(type: string, map: FlowCoreMap, maplibreEvent: maplibre.MapLibreEvent) {\n return new FlowCoreMapEvent<any>(type, map, maplibreEvent.originalEvent);\n }\n\n constructor(type: EventType, map: FlowCoreMap, originalEvent?: TOrig) {\n this.type = type;\n this.map = map;\n this.originalEvent = originalEvent;\n }\n}\n\ntype MapMouseEventType = 'click' | 'dblClick' | 'mouseMove' | 'mouseOut';\n\nexport class FlowCoreMapMouseEvent extends FlowCoreMapEvent<MapMouseEventType, MouseEvent> {\n /**\n * The pixel coordinates of the mouse cursor, relative to the map and measured from the top left corner.\n */\n point: [number, number];\n /**\n * The geographic location on the map of the mouse cursor.\n */\n lngLat: [number, number];\n\n features: FlowCoreMapFeature[];\n\n static fromMaplibreMouseEvent(\n type: MapMouseEventType,\n maplibreMouseEvent: maplibre.MapMouseEvent,\n map: FlowCoreMap,\n features: FlowCoreMapFeature[]\n ) {\n return new FlowCoreMapMouseEvent(\n type,\n map,\n [maplibreMouseEvent.point.x, maplibreMouseEvent.point.y],\n [maplibreMouseEvent.lngLat.lng, maplibreMouseEvent.lngLat.lat],\n features,\n maplibreMouseEvent.originalEvent\n );\n }\n\n constructor(\n type: MapMouseEventType,\n map: FlowCoreMap,\n point: [number, number],\n lngLat: [number, number],\n features: FlowCoreMapFeature[],\n originalEvent: MouseEvent\n ) {\n super(type, map, originalEvent);\n this.point = point;\n this.lngLat = lngLat;\n this.features = features;\n }\n}\n\ntype SourceEventType = 'sourceAdded' | 'sourceRemoved' | 'beforeSourceAdded' | 'beforeSourceRemoved' | 'sourceFeatureState';\n\nexport class FlowCoreMapSourceEvent extends FlowCoreMapEvent<SourceEventType> {\n source: string;\n\n constructor(type: SourceEventType, map: FlowCoreMap, source: string) {\n super(type, map);\n this.source = source;\n }\n}\n\ntype LoadingEventType = 'loading';\n\nexport class FlowCoreMapLoadingEvent extends FlowCoreMapEvent<LoadingEventType> {\n loading: boolean;\n\n constructor(map: FlowCoreMap, loading: boolean) {\n super('loading', map);\n this.loading = loading;\n }\n}\n\n\ntype StyleChangeEventType = 'beforeStyleChanged' | 'styleChanged'\nexport class FlowCoreMapStyleChangeEvent extends FlowCoreMapEvent<StyleChangeEventType> {\n oldStyle: FlowCoreMapStyleSpecification;\n newStyle: FlowCoreMapStyleSpecification;\n\n constructor(type: StyleChangeEventType, map: FlowCoreMap, oldStyle: FlowCoreMapStyleSpecification, newStyle: FlowCoreMapStyleSpecification) {\n super(type, map);\n this.oldStyle = oldStyle;\n this.newStyle = newStyle;\n }\n}\n", "import Debug from 'debug';\nimport * as maplibre from 'maplibre-gl';\nimport { computed, makeObservable, observable, onBecomeObserved, onBecomeUnobserved, runInAction } from 'mobx';\nimport { ISubscription, toStream } from 'mobx-utils';\nimport { FlowCoreMap } from '../flow-core-map';\nimport { FlowCoreMapFeature, FlowCoreMapFeatureId } from \"../types\";\nimport { FlowCoreMapSourceEvent } from './flow-core-map-events';\n\nconst debug = Debug('emu:feature-stream');\n\nexport interface FeatureStreamOptions {\n featureIds: Array<string | number>;\n fireImmediately?: boolean;\n map: FlowCoreMap;\n source: string;\n sourceLayer?: string;\n}\n\nexport class FlowCoreMapFeatureStream {\n private _boundHandleLoading: (event: maplibre.MapLibreEvent) => void;\n private _boundHandleSourceFeatureState: (event: FlowCoreMapSourceEvent) => void;\n private _options: FeatureStreamOptions;\n private _sourceLoadCount = 0;\n private _sourceLoaded = true;\n\n constructor(options: FeatureStreamOptions) {\n this._options = {\n fireImmediately: true,\n ...options\n };\n\n // Apply default sourceLayer for vector source\n const sourceType = options.map.getSource(options.source).type;\n if (sourceType === 'vector') this._options.sourceLayer ??= 'geometry';\n\n makeObservable<FlowCoreMapFeatureStream, '_options' | '_sourceLoadCount'>(this, {\n _options: observable,\n _sourceLoadCount: observable,\n featureData: computed.struct\n });\n\n this._boundHandleLoading = this.handleLoading.bind(this);\n this._boundHandleSourceFeatureState = this.handleSourceFeatureState.bind(this);\n\n onBecomeObserved<keyof this>(this, 'featureData', this.resume.bind(this));\n onBecomeUnobserved<keyof this>(this, 'featureData', this.suspend.bind(this));\n }\n\n // Computed\n public get featureData(): Record<string | number, FlowCoreMapFeature> {\n this._sourceLoadCount;\n const featureData = this.queryFeatureData(this._options.featureIds);\n return featureData;\n }\n\n public get featureIds() {\n return this._options.featureIds;\n }\n\n public set featureIds(featureIds: Array<string | number>) {\n runInAction(() => {\n this._options.featureIds = featureIds;\n });\n }\n\n public subscribe(handler: (featureData: Record<string | number, FlowCoreMapFeature>) => void): ISubscription {\n const mobxSubscription = toStream(() => this.featureData, this._options.fireImmediately).subscribe(handler);\n\n return {\n unsubscribe: () => {\n mobxSubscription.unsubscribe();\n }\n };\n }\n\n private featureFromMaplibreFeature(feature: maplibre.MapGeoJSONFeature): FlowCoreMapFeature {\n return {\n id: feature.id,\n geometry: feature.geometry,\n source: this._options.source,\n sourceLayer: this._options.sourceLayer,\n properties: feature.properties,\n state: this._options.map.maplibreMap.getFeatureState({\n id: feature.id,\n source: this._options.source,\n sourceLayer: this._options.sourceLayer,\n })\n } as any;\n }\n\n private handleLoading(event: maplibre.MapLibreEvent): void {\n let loaded = false;\n\n if (event.type === 'sourcedata' && (event as maplibre.MapSourceDataEvent).sourceId === this._options.source) {\n loaded = (event as maplibre.MapSourceDataEvent).isSourceLoaded;\n } else if (event.type === 'idle') {\n // Fallback in case sourcedata event is flaky\n loaded = true;\n }\n\n if (this._sourceLoaded !== loaded) {\n this._sourceLoaded = loaded;\n\n if (loaded) {\n // trigger update\n runInAction(() => {\n this._sourceLoadCount++;\n });\n }\n }\n }\n\n private handleSourceFeatureState(event: FlowCoreMapSourceEvent): void {\n if (event.type === 'sourceFeatureState' && event.source === this._options.source) {\n runInAction(() => {\n this._sourceLoadCount++;\n });\n }\n }\n\n private queryFeatureData(featureIDs: FlowCoreMapFeatureId[]): Record<string | number, FlowCoreMapFeature> {\n\n if (featureIDs.length === 0) {\n return {};\n }\n\n const source = this._options.map.getSource(this._options.source);\n\n let features = this._options.map.maplibreMap.querySourceFeatures(this._options.source, {\n sourceLayer: this._options.sourceLayer as string,\n filter: ['in', ['get', source.featureId], ['literal', featureIDs]]\n });\n\n // Dedupe features\n const ids = new Set<number | string>();\n features = features.filter((feature) => (ids.has(feature.id!) ? false : ids.add(feature.id!) && true));\n\n const featureData = features.reduce((accum, f) => {\n accum[f.id!] = this.featureFromMaplibreFeature(f);\n return accum;\n }, {} as Record<string | number, FlowCoreMapFeature>);\n\n return featureData;\n }\n\n private resume() {\n this._options.map.maplibreMap.on('sourcedata', this._boundHandleLoading);\n this._options.map.maplibreMap.on('idle', this._boundHandleLoading);\n this._options.map.on('sourceFeatureState', this._boundHandleSourceFeatureState);\n }\n\n private suspend() {\n this._options.map.maplibreMap.off('sourcedata', this._boundHandleLoading);\n this._options.map.maplibreMap.off('idle', this._boundHandleLoading);\n this._options.map.off('sourceFeatureState', this._boundHandleSourceFeatureState);\n }\n}\n", "import Debug from 'debug';\nconst debug = Debug('flow:image-registry');\n\n/**\n * @internal\n */\ninterface ImageRegistryEntry {\n id: string;\n src: string;\n width?: number;\n height?: number;\n pixelDensity?: number;\n recolor?: boolean;\n image?: HTMLImageElement;\n}\n\n// Default SVG for non-registered image\nconst unknownImageSVG = `data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='flowicon'%3E%3C!--! Font Awesome Free 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--%3E%3Cpath d='M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm0 400c-18 0-32-14-32-32s13.1-32 32-32c17.1 0 32 14 32 32s-14.9 32-32 32zm69.1-142L280 286v2c0 13-11 24-24 24s-24-11-24-24v-16c0-8 4-16 12-21l57-34c7-4 11-11 11-19 0-12-10.9-22-22.9-22H238c-12.9 0-22 10-22 22 0 13-11 24-24 24s-24-11-24-24c0-39 31-70 69.1-70h51.1c40.8 0 71.8 31 71.8 70 0 24-13 47-34.9 60z'/%3E%3C/svg%3E`;\n\n/**\n * @internal\n *\n * The `ImageRegistry` is a container for map icon images.\n *\n * Images can be registered and retrieved by ID.\n */\nexport class ImageRegistry {\n private registry = new Map<string, ImageRegistryEntry>();\n private _unknownImage: ImageRegistryEntry & {image: HTMLImageElement} | null = null;\n\n get unknownImage(): ImageRegistryEntry & {image: HTMLImageElement} {\n if (!this._unknownImage) {\n\n const image = new Image(40, 40);\n image.src = unknownImageSVG;\n\n this._unknownImage = {\n id: 'unknown-image',\n src: unknownImageSVG,\n pixelDensity: 2,\n image\n }\n }\n\n return this._unknownImage;\n }\n\n /**\n * Constructs a new `ImageRegistry`\n */\n constructor() {}\n\n /**\n * Register a map icon image.\n *\n * @param id Image ID.\n * @param src Image source URL.\n * @param width Image display width.\n * @param height Image display height.\n * @param pixelDensity Image pixel density. Defaults to `2` - the source image should be @2x resolution to enable better quality rendering on high-resolution displays.\n * @param recolor Set to `true` to allow recoloring of map icon image using map layer style properties.\n */\n registerImage(\n id: string,\n src: string,\n width?: number,\n height?: number,\n pixelDensity = 2,\n recolor = false\n ): ImageRegistryEntry {\n const entry: ImageRegistryEntry = { id, src, width, height, pixelDensity, recolor};\n this.registry.set(id, entry);\n\n return entry;\n }\n\n /**\n * Get an image registry entry.\n *\n * @param id Image ID.\n * @returns The image registry entry.\n */\n getImage(id: string): ImageRegistryEntry & {image: HTMLImageElement} {\n const registryEntry = this.registry.get(id);\n\n if (!registryEntry) {\n return this.unknownImage;\n }\n\n if (!registryEntry.image) {\n registryEntry.image = this.loadImage(\n registryEntry.src,\n registryEntry.width,\n registryEntry.height,\n registryEntry.pixelDensity\n );\n }\n\n return registryEntry as ImageRegistryEntry & {image: HTMLImageElement};\n }\n\n /**\n *\n * @param src Image source URL.\n * @param width Image display width in pixels.\n * @param height Image display height in pixels.\n * @param pixelDensity Image pixel density. Defaults to `2` - the source image should be @2x resolution to enable better quality rendering on high-resolution displays.\n */\n private loadImage(src: string, width?: number, height?: number, pixelDensity = 2): HTMLImageElement {\n const image = new Image();\n image.crossOrigin = 'Anonymous';\n image.width = width ? width * pixelDensity : image.width;\n image.height = height ? height * pixelDensity : image.height;\n\n // Setting src triggers image load\n image.src = src;\n\n return image;\n }\n}\n", "import {\n action,\n IReactionDisposer,\n IReactionPublic,\n makeObservable,\n observable,\n onBecomeObserved,\n onBecomeUnobserved,\n reaction,\n runInAction\n} from 'mobx';\nimport Debug from 'debug';\nimport { AsyncCommitter } from './async-committer';\nimport { FlowCoreStateStore } from '../flow-core-state-store/';\nimport { Client as FlowClient } from '@emuanalytics/flow-engine-client';\nimport { DatasetQuery } from '@emuanalytics/flow-engine-client/dist/types/lib/dataset.endpoints';\nimport { FlowCoreQueryOptions, FlowCoreQueryResultTransformFn, FlowCoreQueryDefinitionFn, FlowQueryAttribute } from './FlowQueryResultFormat';\n\nconst debug = Debug('flow:flow-core-query');\n\nconst DEFAULT_DELAY = 100;\n\nexport class FlowCoreQuery<TResults, TState extends FlowCoreStateStore = any> {\n private static defaultOptions: FlowCoreQueryOptions = {\n fireImmediately: true,\n delay: DEFAULT_DELAY\n }\n private static queryNum = 1;\n private static queries = new Map<string, WeakRef<FlowCoreQuery<any>>>()\n\n static setDefaultOptions(options: FlowCoreQueryOptions) {\n this.defaultOptions = {...this.defaultOptions, ...options};\n }\n\n /**\n * @internal\n *\n * **DEBUG SUPPORT** Get list of defined queries\n *\n * @returns List of defined queries\n */\n static getQueries(): FlowCoreQuery<any>[] {\n return Array.from(this.queries.values()).map(q => q.deref()).filter(q => !!q) as FlowCoreQuery<any>[];\n }\n\n /**\n * @internal\n *\n * **DEBUG SUPPORT** Get defined query by name\n *\n */\n static getQuery(name: string): FlowCoreQuery<any> | undefined {\n return this.queries.get(name)?.deref();\n }\n\n private options: FlowCoreQueryOptions;\n private committer = new AsyncCommitter<any>();\n private disposer: IReactionDisposer | null = null;\n private store: TState | null = null;\n private transformFn: FlowCoreQueryResultTransformFn<TResults> = (results) => results;\n\n private _flowClient: FlowClient | undefined;\n\n get flowClient() {\n return this._flowClient;\n }\n\n get name() {\n return this.options.name;\n }\n\n results: TResults | null = null;\n busy: boolean = false;\n error: Error | null = null;\n\n constructor(\n private queryFn: FlowCoreQueryDefinitionFn<TState | null>,\n transformFn?: FlowCoreQueryResultTransformFn<TResults>,\n options?: FlowCoreQueryOptions\n ) {\n this.options = {\n ...FlowCoreQuery.defaultOptions,\n ...options\n };\n\n this.options.name = this.options.name ?? `FlowCoreQuery#${FlowCoreQuery.queryNum++}`;\n\n this._flowClient = this.options.flowClient;\n\n makeObservable<FlowCoreQuery<TResults, TState>, 'store'>(\n this,\n {\n results: observable.ref,\n busy: observable,\n error: observable.ref,\n store: observable.ref,\n // actions\n bindState: action\n },\n {\n name: 'flowQuery'\n }\n );\n\n onBecomeObserved(this, 'results', this.wake.bind(this));\n onBecomeUnobserved(this, 'results', this.sleep.bind(this));\n\n if (transformFn) {\n this.transformFn = transformFn;\n }\n\n FlowCoreQuery.queries.set(this.options.name, new WeakRef(this));\n }\n\n bindState(store: TState): this {\n this.store = store;\n return this;\n }\n\n async runImmediately() {\n const queryDefinition = this.queryFn.call(this.store, this.store);\n await this.runQuery(queryDefinition);\n if (this.error) {\n throw this.error;\n }\n\n return this.results;\n }\n\n private wake() {\n this.sleep();\n this.disposer = reaction(\n (r: IReactionPublic) => {\n return this.queryFn.call(this.store, this.store);\n },\n (queryDefinition: any, prev: any, r: IReactionPublic) => {\n this.runQuery(queryDefinition);\n },\n { name: this.formattedName(), fireImmediately: this.options.fireImmediately, delay: this.options.delay }\n );\n }\n\n private sleep() {\n if (this.disposer) {\n runInAction(() => {\n this.results = null;\n this.error = null;\n this.busy = false;\n // Force any pending query to fail\n this.committer.commitId = this.committer.requestId;\n });\n\n const disposer = this.disposer;\n this.disposer = null;\n disposer();\n }\n }\n\n private async runQuery(queryDefinition: DatasetQuery | null) {\n debug(`${this.formattedName()}: running query`, queryDefinition);\n\n try {\n if (queryDefinition === null) {\n runInAction(() => {\n this.results = null;\n this.error = null;\n this.busy = false;\n });\n } else {\n runInAction(() => {\n this.busy = true;\n this.error = null;\n });\n\n if (!this.flowClient) {\n throw new Error('No Flo.w client to execute query');\n }\n\n const response = await this.committer.run(() => {\n return this.flowClient!.datasets.query(queryDefinition);\n });\n\n if (response.succeeded) {\n runInAction(() => {\n this.results = this.transformFn(response.value);\n this.busy = false;\n });\n } else {\n // Error will throw otherwise this is an out of order response - ignore\n }\n }\n } catch (e: any) {\n console.error(`${this.formattedName()}: ${e.message}`);\n runInAction(() => {\n this.results = null;\n this.error = e;\n this.busy = false;\n });\n }\n }\n\n private formattedName(): string {\n return `FlowCoreQuery<${this.options.name}>`;\n }\n}\n\nexport function flowQuery<TResult = any, TState extends FlowCoreStateStore = any>(\n queryFn: FlowCoreQueryDefinitionFn<TState>,\n options: FlowCoreQueryOptions\n): FlowCoreQuery<TResult, TState>\nexport function flowQuery<TResult = any, TState extends FlowCoreStateStore = any>(\n queryFn: FlowCoreQueryDefinitionFn<TState>,\n transformFn?: FlowCoreQueryResultTransformFn<TResult>,\n options?: FlowCoreQueryOptions\n ): FlowCoreQuery<TResult, TState>\nexport function flowQuery<TResult = any, TState extends FlowCoreStateStore = any>(\n queryFn: FlowCoreQueryDefinitionFn<TState>,\n transformFnOrOptions?: FlowCoreQueryResultTransformFn<TResult> | FlowCoreQueryOptions,\n options?: FlowCoreQueryOptions\n): FlowCoreQuery<TResult, TState> {\n if (typeof transformFnOrOptions === 'object') {\n options = transformFnOrOptions;\n transformFnOrOptions = undefined;\n }\n return new FlowCoreQuery<TResult>(queryFn, transformFnOrOptions, options);\n}\n\nexport function flowQueryMany<TResult = any, TState extends FlowCoreStateStore = any>(\n queryFn: FlowCoreQueryDefinitionFn<TState>,\n options: FlowCoreQueryOptions\n): FlowCoreQuery<TResult[], TState>\nexport function flowQueryMany<TResult = any, TState extends FlowCoreStateStore = any>(\n queryFn: FlowCoreQueryDefinitionFn<TState>,\n transformFn?: FlowCoreQueryResultTransformFn<TResult[]>,\n options?: FlowCoreQueryOptions\n): FlowCoreQuery<TResult[], TState>\nexport function flowQueryMany<TResult = any, TState extends FlowCoreStateStore = any>(\n queryFn: FlowCoreQueryDefinitionFn<TState>,\n transformFnOrOptions?: FlowCoreQueryResultTransformFn<TResult[]> | FlowCoreQueryOptions,\n options?: FlowCoreQueryOptions\n): FlowCoreQuery<TResult[], TState> {\n if (typeof transformFnOrOptions === 'object') {\n options = transformFnOrOptions;\n transformFnOrOptions = undefined;\n }\n return flowQuery<TResult[]>(queryFn, transformFnOrOptions, options);\n}\n\nexport function flowQueryOne<TResult = any, TState extends FlowCoreStateStore = any>(\n queryFn: FlowCoreQueryDefinitionFn<TState>,\n options: FlowCoreQueryOptions\n): FlowCoreQuery<TResult, TState>\nexport function flowQueryOne<TResult = any, TState extends FlowCoreStateStore = any>(\n queryFn: FlowCoreQueryDefinitionFn<TState>,\n transformFn?: FlowCoreQueryResultTransformFn<TResult>,\n options?: FlowCoreQueryOptions\n): FlowCoreQuery<TResult, TState>\nexport function flowQueryOne<TResult = any, TState extends FlowCoreStateStore = any>(\n queryFn: FlowCoreQueryDefinitionFn<TState>,\n transformFnOrOptions?: FlowCoreQueryResultTransformFn<TResult> | FlowCoreQueryOptions,\n options?: FlowCoreQueryOptions\n): FlowCoreQuery<TResult, TState> {\n if (typeof transformFnOrOptions === 'object') {\n options = transformFnOrOptions;\n transformFnOrOptions = undefined;\n }\n\n const oneTransform = (results: any[]): TResult | null => {\n let oneResult: TResult | null = null;\n if (results?.length) {\n oneResult = results[0];\n }\n\n if (transformFnOrOptions && typeof transformFnOrOptions === 'function') {\n oneResult = transformFnOrOptions(oneResult);\n }\n\n return oneResult;\n };\n\n return flowQuery<TResult>(queryFn, oneTransform, options);\n}\n", "type AsyncCommitterResult<T> =\n | { succeeded: false; value?: undefined }\n | { succeeded: true; value: T | undefined };\n\nexport class AsyncCommitter<T> {\n requestId = 0;\n commitId = 0;\n async resolve(\n promise: Promise<T | undefined> | T | undefined\n ): Promise<AsyncCommitterResult<T>> {\n this.requestId += 1;\n const currentRequestId = this.requestId;\n const value = await promise;\n if (currentRequestId <= this.commitId) {\n return { succeeded: false };\n }\n this.commitId = currentRequestId;\n return { succeeded: true, value };\n }\n async run(asyncFunction: () => Promise<T>): Promise<AsyncCommitterResult<T>> {\n return this.resolve(asyncFunction());\n }\n}\n", "/**\n * Copyright \u00A9 2018 Emu Analytics\n */\n\nimport Axios, { AxiosError, AxiosInstance } from 'axios';\nimport { FlowEngineError } from './errors';\nimport { AuthEndpoints } from './auth.edpoints';\nimport { IConfig } from './api-interfaces';\nimport { TileEndpoints } from './tile.endpoints';\nimport { StyleEndpoints } from './style.endpoint';\nimport { MapEndpoints } from './map.endoints';\nimport { ApiKeyEndpoints } from './apikey.endpoints';\nimport { ApplicationEndpoints } from './application.endpoints';\nimport { DatabaseEndpoints } from './database.endpoints';\nimport { DatasetEndpoints } from './dataset.endpoints';\nimport { TileSourceEndpoints } from './tile-source.endpoints';\nimport { UploadEndpoints } from './upload.endpoints';\nimport { AppConfigEndpoints } from './appconfig.endpoints';\nimport { JobEndpoints } from './job.endpoints';\n\nexport class Client {\n private readonly axios: AxiosInstance;\n\n accessToken: string | null = null;\n\n auth = new AuthEndpoints(this);\n tiles = new TileEndpoints(this);\n maps = new MapEndpoints(this);\n apiKeys = new ApiKeyEndpoints(this);\n applications = new ApplicationEndpoints(this);\n appconfig = new AppConfigEndpoints(this);\n databases = new DatabaseEndpoints(this);\n datasets = new DatasetEndpoints(this);\n styles = new StyleEndpoints(this);\n tileSources = new TileSourceEndpoints(this);\n uploads = new UploadEndpoints(this);\n jobs = new JobEndpoints(this);\n\n constructor(public baseUrl: string, public readonly apiKey: string | null = null) {\n this.axios = Axios.create({\n baseURL: baseUrl,\n maxContentLength: 524288000\n });\n }\n\n config(): Promise<IConfig> {\n return this._get('/api/v1/config');\n }\n\n _get(path: string, options: any = {}): Promise<any> {\n // Move apiKey from params\n if (options.params?.apiKey) {\n options.apiKey = options.params.apiKey;\n delete options.params.apiKey;\n }\n\n return this.axios({\n method: 'get',\n url: path,\n ...options,\n ...this.headers(options)\n })\n .then(res => res.data)\n .catch(this.handleError);\n }\n\n _post(path: string, data: object, options: any = {}): Promise<any> {\n // Move apiKey from params\n if (options.params?.apiKey) {\n options.apiKey = options.params.apiKey;\n delete options.params.apiKey;\n }\n\n return this.axios({\n method: 'post',\n url: path,\n data,\n maxContentLength: Infinity,\n maxBodyLength: Infinity,\n ...options,\n ...this.headers(options)\n })\n .then(res => res.data)\n .catch(this.handleError);\n }\n\n _put(path: string, data: object, options: any = {}): Promise<any> {\n // Move apiKey from params\n if (options.params?.apiKey) {\n options.apiKey = options.params.apiKey;\n delete options.params.apiKey;\n }\n\n return this.axios({\n method: 'put',\n url: path,\n data,\n ...options,\n ...this.headers(options)\n })\n .then(res => res.data)\n .catch(this.handleError);\n }\n\n _delete(path: string, options: any = {}): Promise<any> {\n // Move apiKey from params\n if (options.params?.apiKey) {\n options.apiKey = options.params.apiKey;\n delete options.params.apiKey;\n }\n\n return this.axios({\n method: 'delete',\n url: path,\n ...options,\n ...this.headers(options)\n })\n .then(res => res.data)\n .catch(this.handleError);\n }\n\n /**\n * Normalize errors\n * Throws a new error based on type of input error\n *\n * @param {AxiosError} e\n */\n private handleError(e: AxiosError) {\n // Flow API error\n if (e.response && e.response.data) {\n if (typeof e.response.data === 'object') {\n const data: any = e.response.data;\n throw new FlowEngineError(data.message || data.error, data.error, e.response.status);\n } else if (typeof e.response.data === 'string') {\n throw new FlowEngineError(e.response.data, null, e.response.status);\n }\n }\n\n // Generic error\n\n // Don't leak information in error\n const cleanError: any = e;\n delete cleanError.config;\n delete cleanError.request;\n delete cleanError.response;\n\n throw new FlowEngineError(cleanError.message, cleanError);\n }\n\n private headers(options: any) {\n const headers = options.headers || {};\n\n if (options.apiKey || this.apiKey) {\n headers['X-Api-Key'] = options.apiKey || this.apiKey;\n }\n\n // Add default auth header if token supplied and not already set in options\n if (this.accessToken) {\n headers.Authorization = headers.Authorization || `Bearer ${this.accessToken}`;\n }\n\n return { headers };\n }\n}\n", "/**\n * Copyright \u00A9 2018 Emu Analytics\n */\n\nexport class FlowEngineError extends Error {\n error: object | null;\n statusCode: number;\n\n constructor(message: string, underlyingError: Error | null = null, statusCode = 500) {\n super(message || 'Unknown Error');\n\n Object.setPrototypeOf(this, FlowEngineError.prototype);\n\n this.statusCode = statusCode;\n this.error = underlyingError;\n }\n}\n", "/**\n * Copyright \u00A9 2018 Emu Analytics\n */\n\nimport { Client } from './client';\nimport { IBaseResource, IQuery } from './api-interfaces';\n\nexport class BaseEndpoints<T extends IBaseResource> {\n constructor(protected readonly client: Client, private readonly resourcePath: string) {}\n\n protected get resourceEndpoint(): string {\n return `/api/v1/${this.resourcePath}`;\n }\n\n list(params?: IQuery): Promise<T[]> {\n // Reformat filter for query string\n if (params?.filter) {\n const filter = params.filter;\n Object.keys(filter).forEach(key => {\n (params as any)[`filter[${key}]`] = filter[key];\n });\n delete params.filter;\n }\n\n return this.client._get(this.resourceEndpoint, { params });\n }\n\n get(id: string, params: Record<string, any> = {}): Promise<T> {\n return this.client._get(`${this.resourceEndpoint}/${id}`, { params });\n }\n\n create(data: Partial<T>, params: Record<string, any> = {}): Promise<T> {\n return this.client._post(`${this.resourceEndpoint}`, data, { params });\n }\n\n update(id: string, data: Partial<T>, params: Record<string, any> = {}): Promise<T> {\n return this.client._put(`${this.resourceEndpoint}/${id}`, data, { params });\n }\n\n delete(id: string, params: Record<string, any> = {}) {\n return this.client._delete(`${this.resourceEndpoint}/${id}`, { params });\n }\n\n getMetadata(id: string, key?: string, params: Record<string, any> = {}): Promise<any> {\n const endpoint = key\n ? `${this.resourceEndpoint}/${id}/metadata/${key}`\n : `${this.resourceEndpoint}/${id}/metadata`;\n return this.client._get(endpoint, { params });\n }\n\n setMetadata(id: string, key: string, value: any, params: Record<string, any> = {}): Promise<any> {\n return this.client._put(`${this.resourceEndpoint}/${id}/metadata/${key}`, value, {\n headers: {\n 'Content-Type': 'application/json'\n },\n params\n });\n }\n\n deleteMetadata(id: string, key: string, params: Record<string, any> = {}): Promise<any> {\n return this.client._delete(`${this.resourceEndpoint}/${id}/metadata/${key}`, {\n headers: {\n 'Content-Type': 'application/json'\n },\n params\n });\n }\n}\n", "/**\n * Copyright \u00A9 2018 Emu Analytics\n */\n\nimport { Client } from './client';\nimport { IUser, UsersMeResponse } from './api-interfaces';\nimport { BaseEndpoints } from './base.endpoints';\n\nexport class UserEndpoint extends BaseEndpoints<IUser> {\n constructor(client: Client) {\n super(client, 'auth/users');\n }\n\n me(token: string): Promise<UsersMeResponse> {\n return this.client._get(`${this.resourceEndpoint}/me`, {\n headers: { Authorization: `Bearer ${token}` }\n });\n }\n}\n", "/**\n * Copyright \u00A9 2018 Emu Analytics\n */\n\nimport { Client } from './client';\nimport { UserEndpoint } from './user.endpoints';\nimport { ILoginResponse, ITokenRefreshResponse } from './api-interfaces';\n\nexport class AuthEndpoints {\n users = new UserEndpoint(this.client);\n\n constructor(private readonly client: Client) {}\n\n login(email: string, password: string, applicationId?: string): Promise<ILoginResponse> {\n return this.client._post('/api/v1/auth/login', { email, password, applicationId });\n }\n\n logout(accessToken: string, refreshToken: string): Promise<void> {\n return this.client._post(\n '/api/v1/auth/logout',\n { refreshToken },\n {\n headers: { Authorization: `Bearer ${accessToken}` }\n }\n );\n }\n\n refresh(refreshToken: string, applicationId: string): Promise<ITokenRefreshResponse> {\n return this.client._post('/api/v1/auth/refresh', { refreshToken, applicationId });\n }\n\n changePassword(password: string, newPassword: string, token: string): Promise<void> {\n return this.client._post(\n '/api/v1/auth/changepassword',\n {\n password,\n newPassword\n },\n {\n headers: { Authorization: `Bearer ${token}` }\n }\n );\n }\n\n signUp(\n firstName: string,\n lastName: string,\n email: string,\n password: string,\n applicationId: string,\n redirectUrl: string\n ): Promise<void> {\n return this.client._post('/api/v1/auth/signup', {\n firstName,\n lastName,\n email,\n password,\n applicationId,\n confirmUrl: `${this.client.baseUrl}/api/v1/auth/confirmsignup`,\n redirectUrl\n });\n }\n\n requestPasswordReset(email: string, applicationId: string, redirectUrl: string): Promise<void> {\n return this.client._post('/api/v1/auth/requestpasswordreset', { email, applicationId, redirectUrl });\n }\n\n resetPassword(email: string, password: string, applicationId: string, token: string): Promise<void> {\n return this.client._post('/api/v1/auth/resetpassword', { email, password, applicationId, token });\n }\n}\n", "/**\n * Copyright \u00A9 2018 Emu Analytics\n */\n\nimport { Client } from './client';\nimport { ITileSpec } from './api-interfaces';\n\nexport class TileEndpoints {\n constructor(private readonly client: Client) {}\n\n getTileSpec(tilesourceId: string, params: Record<string, any> = {}): Promise<ITileSpec> {\n return this.client._get(`/tiles/${tilesourceId}/index.json`, { params });\n }\n\n getPreviewStyle(tilesourceId: string, params: Record<string, any> = {}): Promise<ITileSpec> {\n return this.client._get(`/tiles/${tilesourceId}/style.json`, { params });\n }\n}\n", "/**\n * Copyright \u00A9 2018 Emu Analytics\n */\n\nimport { Client } from './client';\nimport { IStyle } from './api-interfaces';\nimport { BaseEndpoints } from './base.endpoints';\n\nexport class StyleEndpoints extends BaseEndpoints<IStyle> {\n constructor(client: Client) {\n super(client, 'styles');\n }\n}\n", "/**\n * Copyright \u00A9 2018 Emu Analytics\n */\n\nimport { Client } from './client';\nimport { IStyle } from './api-interfaces';\n\nexport class MapEndpoints {\n constructor(private readonly client: Client) {}\n\n get(id: string, params: Record<string, any> = {}): Promise<IStyle> {\n return this.client._get(`/maps/${id}.json`, { params });\n }\n}\n", "/**\n * Copyright \u00A9 2018 Emu Analytics\n */\n\nimport { Client } from './client';\nimport { BaseEndpoints } from './base.endpoints';\nimport { IApiKey } from './api-interfaces';\n\nexport class ApiKeyEndpoints extends BaseEndpoints<IApiKey> {\n constructor(client: Client) {\n super(client, 'apikeys');\n }\n}\n", "/**\n * Copyright \u00A9 2018 Emu Analytics\n */\n\nimport { Client } from './client';\nimport { BaseEndpoints } from './base.endpoints';\nimport { IApplication } from './api-interfaces';\n\nexport class ApplicationEndpoints extends BaseEndpoints<IApplication> {\n constructor(client: Client) {\n super(client, 'applications');\n }\n}\n", "/**\n * Copyright \u00A9 2018 Emu Analytics\n */\n\nimport { Client } from './client';\nimport { BaseEndpoints } from './base.endpoints';\nimport { IDatabase } from './api-interfaces';\n\nexport class DatabaseEndpoints extends BaseEndpoints<IDatabase> {\n constructor(client: Client) {\n super(client, 'databases');\n }\n\n drivers(): Promise<string[]> {\n return this.client._get(`/api/v1/databases/drivers`).catch(e => {\n if (e.status === 404) {\n // Backwards compatibility for pre-1.0.0 Flo.w\n return ['postgis', 'postgis-mapnik'];\n }\n });\n }\n}\n", "/**\n * Copyright \u00A9 2018 Emu Analytics\n */\n\nimport { Client } from './client';\nimport { BaseEndpoints } from './base.endpoints';\nimport { IDataset, FileExportFormat } from './api-interfaces';\nimport { type } from 'os';\n\nexport interface DatasetQuery {\n [key: string]: any;\n}\n\ntype QueryOutputFormat = 'plain' | 'json' | 'csv' | 'geojson';\n\nexport interface DatasetQueryOptions {\n [param: string]: any;\n format?: QueryOutputFormat;\n explain?: boolean | string;\n}\n\nexport class DatasetEndpoints extends BaseEndpoints<IDataset> {\n constructor(client: Client) {\n super(client, 'datasets');\n }\n\n query(\n datasetId: string | DatasetQuery,\n query: DatasetQuery = {},\n params: DatasetQueryOptions | QueryOutputFormat = {}\n ): Promise<any> {\n // Support Flo.w RDF-style query definition\n if (typeof datasetId === 'object') {\n params = { ...datasetId.params, format: datasetId.format || 'json' };\n query = datasetId;\n datasetId = query.datasetId;\n delete query.datasetId;\n delete query.format;\n }\n\n if (typeof params === 'string') {\n params = { format: params };\n }\n\n return this.client\n ._post(`/api/v1/datasets/${datasetId}/query`, query, {\n params: {\n ...params,\n format: params.format || 'json',\n explain: params.explain || false\n }\n })\n .catch(e => {\n if (e.message === 'Network Error') {\n throw new Error('Query timed out');\n } else {\n throw e;\n }\n });\n }\n\n getExportUrl(datasetId: string, format: FileExportFormat): string {\n const credentials = this.client.accessToken\n ? `accesstoken=${this.client.accessToken}`\n : `apikey=${this.client.apiKey}`;\n return `${this.client.baseUrl}/api/v1/datasets/${datasetId}/export?format=${format}&${credentials}`;\n }\n}\n", "/**\n * Copyright \u00A9 2018 Emu Analytics\n */\n\nimport { Client } from './client';\nimport { BaseEndpoints } from './base.endpoints';\nimport { ITileSource } from './api-interfaces';\n\nexport class TileSourceEndpoints extends BaseEndpoints<ITileSource> {\n constructor(client: Client) {\n super(client, 'tilesources');\n }\n\n drivers(): Promise<string[]> {\n return this.client._get(`/api/v1/tilesources/drivers`).catch(e => {\n if (e.statusCode === 404) {\n // Backwards compatibility for pre-1.0.0 Flo.w\n return ['tilelive', 'dataset'];\n }\n });\n }\n}\n", "/**\n * Copyright \u00A9 2018 Emu Analytics\n */\nimport { Client } from './client';\nimport { BaseEndpoints } from './base.endpoints';\nimport { IUpload } from './api-interfaces';\nimport FormData from 'form-data';\n\ndeclare var process: any;\n\nexport interface UploadOptions {\n data: any;\n filename: string;\n datasetId?: string;\n datasetName?: string;\n datasetDescription?: string;\n attribution?: string;\n sourceSrid?: number;\n targetSrid?: number;\n schema?: string;\n progress?: (event: any) => void;\n}\n\nexport class UploadEndpoints extends BaseEndpoints<IUpload> {\n constructor(client: Client) {\n super(client, 'uploads');\n }\n\n async upload(options: UploadOptions, params: Record<string, any> = {}): Promise<IUpload> {\n const form = new FormData();\n if (options.datasetName) {\n form.append('name', options.datasetName);\n }\n if (options.datasetDescription) {\n form.append('description', options.datasetDescription);\n }\n if (options.attribution) {\n form.append('attribution', options.attribution);\n }\n if (options.datasetId) {\n form.append('datasetId', options.datasetId);\n }\n if (options.sourceSrid) {\n form.append('sourceSrid', options.sourceSrid);\n }\n if (options.targetSrid) {\n form.append('targetSrid', options.targetSrid);\n }\n if (options.schema) {\n form.append('schema', options.schema);\n }\n form.append('file', options.data, options.filename);\n\n const upload: IUpload = await this.client._post(this.resourceEndpoint, form, {\n headers: form.getHeaders(),\n params,\n // Note that progress only works in the browser!!\n onUploadProgress: options.progress\n });\n\n return upload;\n }\n}\n", "/**\n * Copyright \u00A9 2018 Emu Analytics\n */\n\nimport { Client } from './client';\nimport { IAppConfig } from './api-interfaces';\nimport { BaseEndpoints } from './base.endpoints';\n\nexport class AppConfigEndpoints extends BaseEndpoints<IAppConfig> {\n constructor(client: Client) {\n super(client, 'appconfig');\n }\n}\n", "/**\n * Copyright \u00A9 2018 Emu Analytics\n */\n\nimport { Client } from './client';\nimport { BaseEndpoints } from './base.endpoints';\nimport { IJob, IJobSubmission, IJobStatus } from './api-interfaces';\n\nexport class JobEndpoints extends BaseEndpoints<IJob> {\n constructor(client: Client) {\n super(client, 'jobs');\n }\n\n submit(submission: IJobSubmission): Promise<IJob> {\n return this.client._post(`/api/v1/jobs/submit`, submission);\n }\n\n getStatus(jobId: string): Promise<IJobStatus> {\n return this.client._get(`/api/v1/jobs/${jobId}/status`);\n }\n\n setStatus(jobId: string, status: IJobStatus): Promise<IJob> {\n return this.client._post(`/api/v1/jobs/${jobId}/status`, status);\n }\n\n cancel(jobId: string): Promise<IJob> {\n return this.client._post(`/api/v1/jobs/${jobId}/cancel`, {});\n }\n\n request(jobType: string): Promise<IJob> {\n return this.client._post(`/api/v1/jobs/request`, { type: jobType });\n }\n}\n"],
5
- "mappings": "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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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",
6
- "names": ["n", "t", "r", "e", "u", "o", "i", "a", "f", "c", "s", "_", "P", "l", "h", "p", "d", "v", "g", "m", "debug", "self", "index", "index", "error", "has", "once", "EventEmitter", "toString", "cache", "isArray", "isUndefined", "isBuffer", "isString", "isNumber", "isObject", "isPlainObject", "isDate", "isFunction", "encode", "url", "toJSON", "error", "remove", "url", "url", "url", "keys", "Axios", "error", "url", "index", "Axios", "require_axios", "require_browser", "punycode", "errors", "error", "map", "array", "decode", "index", "encode", "eq", "url", "keys", "isString", "inspect", "x", "_", "isNull", "isObject", "isUndefined", "set", "isBoolean", "array", "isFunction", "keys", "isDate", "isArray", "isNumber", "hasOwnProperty", "isBuffer", "self", "strict", "object", "error", "expression", "rgba", "values", "type", "shift", "errors", "index", "t0", "t1", "op", "lt", "number", "types", "object", "errors", "array", "options", "expression", "error", "layer", "o", "parser", "trace", "self", "lexer", "action", "index", "import_parsimmon", "P", "P", "keys", "isValue", "isFunction", "niceErrors", "annotationType", "key", "toString", "_", "index", "length", "other", "constructor", "name", "dataStructure", "thing", "property", "derivation", "method", "errors", "die", "error", "args", "e", "apply", "Error", "map", "String", "join", "mockGlobal", "getGlobal", "globalThis", "window", "global", "self", "assign", "Object", "getDescriptor", "getOwnPropertyDescriptor", "defineProperty", "objectPrototype", "prototype", "EMPTY_ARRAY", "freeze", "EMPTY_OBJECT", "hasProxy", "Proxy", "plainObjectString", "assertProxies", "warnAboutProxyRequirement", "msg", "globalState", "verifyProxies", "getNextId", "mobxGuid", "once", "func", "invoked", "arguments", "noop", "isFunction", "fn", "isStringish", "value", "t", "isObject", "isPlainObject", "proto", "getPrototypeOf", "protoConstructor", "hasOwnProperty", "call", "isGenerator", "obj", "displayName", "addHiddenProp", "object", "propName", "enumerable", "writable", "configurable", "addHiddenFinalProp", "createInstanceofPredicate", "theClass", "x", "isES6Map", "Map", "isES6Set", "Set", "hasGetOwnPropertySymbols", "getOwnPropertySymbols", "getPlainObjectKeys", "keys", "symbols", "filter", "s", "propertyIsEnumerable", "ownKeys", "Reflect", "getOwnPropertyNames", "concat", "stringifyKey", "toPrimitive", "hasProp", "target", "prop", "getOwnPropertyDescriptors", "res", "forEach", "storedAnnotationsSymbol", "Symbol", "createDecoratorAnnotation", "annotation", "decorator", "storeAnnotation", "isOverride", "fieldName", "assertNotDecorated", "currentAnnotationType", "annotationType_", "requestedAnnotationType", "collectStoredAnnotations", "$mobx", "Atom", "name_", "isPendingUnobservation_", "isBeingObserved_", "observers_", "diffValue_", "lastAccessedBy_", "lowestObserverState_", "IDerivationState_", "NOT_TRACKING_", "onBOL", "onBUOL", "onBO", "listener", "onBUO", "reportObserved", "reportChanged", "startBatch", "propagateChanged", "endBatch", "isAtom", "createAtom", "onBecomeObservedHandler", "onBecomeUnobservedHandler", "atom", "onBecomeObserved", "onBecomeUnobserved", "identityComparer", "a", "b", "structuralComparer", "deepEqual", "shallowComparer", "defaultComparer", "is", "comparer", "identity", "structural", "shallow", "deepEnhancer", "v", "isObservable", "Array", "isArray", "observable", "array", "undefined", "set", "isAction", "isFlow", "flow", "autoAction", "shallowEnhancer", "isObservableObject", "isObservableArray", "isObservableMap", "isObservableSet", "deep", "referenceEnhancer", "newValue", "refStructEnhancer", "oldValue", "OVERRIDE", "isOverride", "annotation", "annotationType_", "OVERRIDE", "createActionAnnotation", "name", "options", "annotationType_", "options_", "make_", "extend_", "adm", "key", "descriptor", "source", "bound", "target_", "isAction", "value", "actionDescriptor", "createActionDescriptor", "defineProperty", "proxyTrap", "defineProperty_", "assertActionDescriptor", "isFunction", "die", "name_", "toString", "annotation", "safeDescriptors", "globalState", "bind", "proxy_", "createAction", "autoAction", "undefined", "configurable", "isPlainObject_", "enumerable", "writable", "createFlowAnnotation", "hasProp", "isFlow", "flowDescriptor", "createFlowDescriptor", "assertFlowDescriptor", "flow", "isMobXFlow", "createComputedAnnotation", "assertComputedDescriptor", "defineComputedProperty_", "get", "set", "createObservableAnnotation", "assertObservableDescriptor", "defineObservableProperty_", "enhancer", "deepEnhancer", "AUTO", "autoAnnotation", "createAutoAnnotation", "computed", "isGenerator", "flowAnnotation", "autoBind", "actionAnnotation", "observableAnnotation", "deep", "observable", "ref", "OBSERVABLE", "OBSERVABLE_REF", "OBSERVABLE_SHALLOW", "OBSERVABLE_STRUCT", "defaultCreateObservableOptions", "defaultDecorator", "proxy", "Object", "freeze", "asCreateObservableOptions", "thing", "observableRefAnnotation", "referenceEnhancer", "observableShallowAnnotation", "shallowEnhancer", "observableStructAnnotation", "refStructEnhancer", "observableDecoratorAnnotation", "createDecoratorAnnotation", "getEnhancerFromOptions", "getEnhancerFromAnnotation", "getAnnotationFromOptions", "createObservable", "v", "arg2", "arg3", "isStringish", "storeAnnotation", "isObservable", "isPlainObject", "object", "Array", "isArray", "array", "isES6Map", "map", "isES6Set", "box", "assign", "observableFactories", "o", "ObservableValue", "equals", "initialValues", "useProxies", "createLegacyArray", "createObservableArray", "ObservableMap", "ObservableSet", "props", "decorators", "extendObservable", "asObservableObject", "asDynamicObservableObject", "shallow", "struct", "COMPUTED", "COMPUTED_STRUCT", "computedAnnotation", "computedStructAnnotation", "comparer", "structural", "arg1", "opts", "ComputedValue", "currentActionId", "nextActionId", "isFunctionNameConfigurable", "getDescriptor", "tmpNameDescriptor", "actionName", "fn", "res", "executeAction", "arguments", "isMobxAction", "canRunAsDerivation", "scope", "args", "runInfo", "_startAction", "apply", "err", "error_", "_endAction", "notifySpy_", "isSpyEnabled", "startTime_", "Date", "now", "flattenedArgs", "from", "EMPTY_ARRAY", "spyReportStart", "type", "ACTION", "prevDerivation_", "trackingDerivation", "runAsAction", "startBatch", "prevAllowStateChanges_", "allowStateChanges", "untrackedStart", "allowStateChangesStart", "prevAllowStateReads_", "allowStateReadsStart", "runAsAction_", "actionId_", "parentActionId_", "suppressReactionErrors", "allowStateChangesEnd", "allowStateReadsEnd", "endBatch", "untrackedEnd", "spyReportEnd", "time", "func", "prev", "CREATE", "Symbol", "toPrimitive", "notifySpy", "getNextId", "hasUnreportedChange_", "interceptors_", "changeListeners_", "value_", "dehancer", "spyReport", "observableKind", "debugObjectName", "newValue", "dehanceValue", "oldValue", "prepareNewValue_", "UNCHANGED", "UPDATE", "setNewValue_", "checkIfStateModificationsAreAllowed", "hasInterceptors", "change", "interceptChange", "reportChanged", "hasListeners", "notifyListeners", "reportObserved", "intercept_", "handler", "registerInterceptor", "observe_", "listener", "fireImmediately", "registerListener", "raw", "toJSON", "valueOf", "Atom", "isObservableValue", "createInstanceofPredicate", "dependenciesState_", "IDerivationState_", "NOT_TRACKING_", "observing_", "newObserving_", "isBeingObserved_", "isPendingUnobservation_", "observers_", "Set", "diffValue_", "runId_", "lastAccessedBy_", "lowestObserverState_", "UP_TO_DATE_", "unboundDepsCount_", "CaughtException", "triggeredBy_", "isComputing_", "isRunningSetter_", "derivation", "setter_", "isTracing_", "TraceMode", "NONE", "scope_", "equals_", "requiresReaction_", "keepAlive_", "onBOL", "onBUOL", "compareStructural", "context", "requiresReaction", "keepAlive", "onBecomeStale_", "propagateMaybeChanged", "onBO", "forEach", "onBUO", "inBatch", "size", "shouldCompute", "warnAboutUntrackedRead_", "computeValue_", "prevTrackingContext", "trackingContext", "trackAndCompute", "propagateChangeConfirmed", "result", "isCaughtException", "cause", "call", "wasSuspended", "changed", "track", "trackDerivedFunction", "disableErrorBoundaries", "e", "suspend_", "clearObserving", "console", "log", "firstTime", "prevValue", "autorun", "prevU", "computedRequiresReaction", "warn", "isComputedValue", "STALE_", "POSSIBLY_STALE_", "prevAllowStateReads", "prevUntracked", "obs", "l", "length", "i", "obj", "changeDependenciesStateTo0", "checkIfStateModificationsAreAllowed", "atom", "hasObservers", "observers_", "size", "globalState", "allowStateChanges", "enforceActions", "console", "warn", "name_", "checkIfStateReadsAreAllowed", "observable", "allowStateReads", "observableRequiresReaction", "trackDerivedFunction", "derivation", "f", "context", "prevAllowStateReads", "allowStateReadsStart", "changeDependenciesStateTo0", "newObserving_", "Array", "observing_", "length", "unboundDepsCount_", "runId_", "runId", "prevTracking", "trackingDerivation", "inBatch", "result", "disableErrorBoundaries", "call", "e", "CaughtException", "bindDependencies", "warnAboutDerivationWithoutDependencies", "allowStateReadsEnd", "requiresObservable_", "reactionRequiresObservable", "prevObserving", "observing", "lowestNewObservingDerivationState", "IDerivationState_", "UP_TO_DATE_", "i0", "l", "i", "dep", "diffValue_", "dependenciesState_", "removeObserver", "addObserver", "onBecomeStale_", "clearObserving", "obs", "NOT_TRACKING_", "untracked", "action", "prev", "untrackedStart", "untrackedEnd", "lowestObserverState_", "MobXGlobals", "version", "UNCHANGED", "trackingDerivation", "trackingContext", "runId", "mobxGuid", "inBatch", "pendingUnobservations", "pendingReactions", "isRunningReactions", "allowStateChanges", "allowStateReads", "enforceActions", "spyListeners", "globalReactionErrorHandlers", "computedRequiresReaction", "reactionRequiresObservable", "observableRequiresReaction", "disableErrorBoundaries", "suppressReactionErrors", "useProxies", "verifyProxies", "safeDescriptors", "canMergeGlobalState", "isolateCalled", "globalState", "global", "getGlobal", "__mobxInstanceCount", "__mobxGlobals", "setTimeout", "die", "addObserver", "observable", "node", "observers_", "add", "lowestObserverState_", "dependenciesState_", "removeObserver", "size", "queueForUnobservation", "isPendingUnobservation_", "globalState", "pendingUnobservations", "push", "startBatch", "inBatch", "endBatch", "runReactions", "list", "i", "length", "isBeingObserved_", "onBUO", "ComputedValue", "suspend_", "reportObserved", "checkIfStateReadsAreAllowed", "derivation", "trackingDerivation", "runId_", "lastAccessedBy_", "newObserving_", "unboundDepsCount_", "trackingContext", "onBO", "propagateChanged", "IDerivationState_", "STALE_", "forEach", "d", "UP_TO_DATE_", "isTracing_", "TraceMode", "NONE", "logTraceInfo", "onBecomeStale_", "propagateChangeConfirmed", "POSSIBLY_STALE_", "propagateMaybeChanged", "console", "log", "name_", "BREAK", "lines", "printDepTree", "getDependencyTree", "Function", "toString", "replace", "join", "tree", "depth", "repeat", "name", "dependencies", "child", "Reaction", "onInvalidate_", "errorHandler_", "requiresObservable_", "getNextId", "observing_", "NOT_TRACKING_", "diffValue_", "isDisposed_", "isScheduled_", "isTrackPending_", "isRunning_", "schedule_", "pendingReactions", "isScheduled", "runReaction_", "prev", "shouldCompute", "isSpyEnabled", "spyReport", "type", "e", "reportExceptionInDerivation_", "track", "fn", "notify", "startTime", "Date", "now", "spyReportStart", "prevReaction", "result", "trackDerivedFunction", "undefined", "clearObserving", "isCaughtException", "cause", "spyReportEnd", "time", "error", "disableErrorBoundaries", "message", "suppressReactionErrors", "warn", "globalReactionErrorHandlers", "f", "dispose", "getDisposer_", "r", "bind", "$mobx", "trace", "enterBreakPoint", "MAX_REACTION_ITERATIONS", "reactionScheduler", "f", "runReactions", "globalState", "inBatch", "isRunningReactions", "runReactionsHelper", "allReactions", "pendingReactions", "iterations", "length", "console", "error", "splice", "remainingReactions", "i", "l", "runReaction_", "isReaction", "createInstanceofPredicate", "Reaction", "isSpyEnabled", "globalState", "spyListeners", "length", "spyReport", "event", "listeners", "i", "l", "spyReportStart", "change", "END_EVENT", "type", "spyReportEnd", "spy", "listener", "console", "warn", "push", "once", "filter", "ACTION", "ACTION_BOUND", "AUTOACTION", "AUTOACTION_BOUND", "DEFAULT_ACTION_NAME", "actionAnnotation", "createActionAnnotation", "actionBoundAnnotation", "bound", "autoActionAnnotation", "autoAction", "autoActionBoundAnnotation", "createActionFactory", "res", "action", "arg1", "arg2", "isFunction", "createAction", "name", "isStringish", "storeAnnotation", "createDecoratorAnnotation", "die", "Object", "assign", "runInAction", "fn", "executeAction", "undefined", "isAction", "thing", "isMobxAction", "autorun", "view", "opts", "EMPTY_OBJECT", "getNextId", "runSync", "scheduler", "delay", "reaction", "Reaction", "track", "reactionRunner", "onError", "requiresObservable", "createSchedulerFromOptions", "isScheduled", "isDisposed_", "schedule_", "getDisposer_", "run", "f", "setTimeout", "expression", "effect", "isPlainObject", "effectAction", "wrapErrorHandler", "firstTime", "value", "oldValue", "equals", "compareStructural", "comparer", "structural", "r", "changed", "nextValue", "allowStateChanges", "fireImmediately", "errorHandler", "baseFn", "apply", "arguments", "e", "call", "ON_BECOME_OBSERVED", "ON_BECOME_UNOBSERVED", "onBecomeObserved", "arg3", "interceptHook", "onBecomeUnobserved", "hook", "atom", "getAtom", "cb", "listenersKey", "add", "Set", "hookListeners", "size", "extendObservable", "target", "properties", "annotations", "options", "arguments", "length", "die", "isObservableMap", "isPlainObject", "isObservable", "descriptors", "getOwnPropertyDescriptors", "adm", "asObservableObject", "$mobx", "startBatch", "ownKeys", "forEach", "key", "extend_", "endBatch", "getDependencyTree", "thing", "property", "nodeToDependencyTree", "getAtom", "node", "result", "name", "name_", "observing_", "dependencies", "unique", "map", "unique", "list", "Array", "from", "Set", "generatorId", "FlowCancellationError", "message", "prototype", "Object", "create", "Error", "flowAnnotation", "createFlowAnnotation", "flowBoundAnnotation", "bound", "flow", "Object", "assign", "arg1", "arg2", "isStringish", "storeAnnotation", "arguments", "length", "die", "generator", "name", "res", "ctx", "args", "runId", "generatorId", "gen", "action", "apply", "rejector", "pendingPromise", "undefined", "promise", "Promise", "resolve", "reject", "stepId", "onFulfilled", "ret", "next", "call", "e", "onRejected", "err", "isFunction", "then", "done", "value", "cancel", "cancelPromise", "yieldedPromise", "noop", "FlowCancellationError", "isMobXFlow", "createDecoratorAnnotation", "isFlow", "fn", "isMobXFlow", "_isComputed", "value", "property", "undefined", "isComputedValue", "isObservableObject", "$mobx", "values_", "has", "atom", "getAtom", "isComputed", "arguments", "length", "die", "isComputedProp", "propName", "isStringish", "_isObservable", "isObservableMap", "isObservableArray", "isAtom", "isReaction", "isObservable", "keys", "obj", "isObservableObject", "$mobx", "keys_", "isObservableMap", "isObservableSet", "Array", "from", "isObservableArray", "map", "_", "index", "die", "apiOwnKeys", "obj", "isObservableObject", "$mobx", "ownKeys_", "die", "observe", "thing", "propOrCb", "cbOrFire", "fireImmediately", "isFunction", "observeObservableProperty", "observeObservable", "listener", "getAdministration", "observe_", "property", "cache", "map", "key", "value", "set", "toJSHelper", "source", "__alreadySeen", "Date", "isObservable", "isObservableValue", "isComputedValue", "get", "has", "isObservableArray", "res", "Array", "length", "forEach", "idx", "isObservableSet", "Set", "add", "isObservableMap", "Map", "objectPrototype", "propertyIsEnumerable", "call", "toJS", "options", "trace", "enterBreakPoint", "args", "pop", "derivation", "getAtomFromArgs", "isTracing_", "TraceMode", "NONE", "console", "log", "name_", "BREAK", "LOG", "globalState", "trackingDerivation", "getAtom", "transaction", "action", "thisArg", "undefined", "startBatch", "apply", "endBatch", "getAdm", "target", "$mobx", "objectProxyTraps", "has", "name", "globalState", "trackingDerivation", "warnAboutProxyRequirement", "has_", "get", "get_", "set", "value", "isStringish", "values_", "set_", "deleteProperty", "delete_", "defineProperty", "descriptor", "defineProperty_", "ownKeys", "ownKeys_", "preventExtensions", "die", "asDynamicObservableObject", "options", "assertProxies", "asObservableObject", "proxy_", "Proxy", "hasInterceptors", "interceptable", "interceptors_", "undefined", "length", "registerInterceptor", "handler", "interceptors", "push", "once", "idx", "indexOf", "splice", "interceptChange", "change", "prevU", "untrackedStart", "i", "l", "type", "untrackedEnd", "hasListeners", "listenable", "changeListeners_", "registerListener", "listeners", "notifyListeners", "slice", "makeObservable", "annotations", "adm", "startBatch", "storedAnnotationsSymbol", "collectStoredAnnotations", "forEach", "key", "make_", "endBatch", "SPLICE", "UPDATE", "MAX_SPLICE_SIZE", "arrayTraps", "get", "target", "name", "adm", "$mobx", "getArrayLength_", "isNaN", "get_", "parseInt", "hasProp", "arrayExtensions", "set", "value", "setArrayLength_", "set_", "preventExtensions", "die", "ObservableArrayAdministration", "enhancer", "owned_", "legacyMode_", "getNextId", "atom_", "values_", "interceptors_", "changeListeners_", "enhancer_", "dehancer", "proxy_", "lastKnownLength_", "Atom", "newV", "oldV", "dehanceValue_", "undefined", "dehanceValues_", "values", "length", "map", "intercept_", "handler", "registerInterceptor", "observe_", "listener", "fireImmediately", "observableKind", "object", "debugObjectName", "name_", "type", "index", "added", "slice", "addedCount", "removed", "removedCount", "registerListener", "reportObserved", "newLength", "currentLength", "newItems", "Array", "i", "spliceWithArray_", "updateArrayLength_", "oldLength", "delta", "reserveArrayBuffer", "deleteCount", "checkIfStateModificationsAreAllowed", "Math", "max", "arguments", "min", "EMPTY_ARRAY", "hasInterceptors", "change", "interceptChange", "v", "lengthDelta", "res", "spliceItemsIntoValues_", "notifyArraySplice_", "splice", "oldItems", "notifyArrayChildUpdate_", "newValue", "oldValue", "notifySpy", "isSpyEnabled", "notify", "hasListeners", "spyReportStart", "reportChanged", "notifyListeners", "spyReportEnd", "console", "warn", "changed", "createObservableArray", "initialValues", "owned", "assertProxies", "addHiddenFinalProp", "proxy", "Proxy", "prev", "allowStateChangesStart", "allowStateChangesEnd", "clear", "replace", "toJSON", "spliceWithArray", "push", "items", "pop", "shift", "unshift", "reverse", "globalState", "trackingDerivation", "sort", "copy", "apply", "remove", "idx", "indexOf", "addArrayExtension", "simpleFunc", "mapLikeFunc", "reduceLikeFunc", "funcName", "funcFactory", "prototype", "dehancedValues", "callback", "thisArg", "element", "call", "accumulator", "currentValue", "isObservableArrayAdministration", "createInstanceofPredicate", "isObservableArray", "thing", "isObject", "ObservableMapMarker", "ADD", "DELETE", "Symbol", "iterator", "toStringTag", "ObservableMap", "initialData", "deepEnhancer", "data_", "hasMap_", "keysAtom_", "isFunction", "Map", "createAtom", "allowStateChanges", "merge", "has_", "key", "has", "entry", "newEntry", "ObservableValue", "referenceEnhancer", "stringifyKey", "onBecomeUnobserved", "hasKey", "updateValue_", "addValue_", "value_", "transaction", "setNewValue_", "observable", "prepareNewValue_", "UNCHANGED", "keys", "self", "makeIterable", "next", "done", "entries", "forEach", "other", "isObservableMap", "isPlainObject", "getPlainObjectKeys", "isArray", "isES6Map", "constructor", "untracked", "replacementMap", "convertToMap", "orderedData", "keysReportChangedCalled", "deleted", "keyExisted", "size", "iter1", "iter2", "next1", "next2", "toString", "from", "dataStructure", "ObservableSetMarker", "ObservableSet", "Set", "callbackFn", "add", "nextIndex", "observableValues", "isObservableSet", "isES6Set", "descriptorCache", "Object", "create", "REMOVE", "ObservableObjectAdministration", "target_", "defaultAnnotation_", "autoAnnotation", "isPlainObject_", "appliedAnnotations_", "pendingKeys_", "isAnnotation", "getObservablePropValue_", "setObservablePropValue_", "ComputedValue", "proxyTrap", "Reflect", "extend_", "enumerable", "writable", "configurable", "make_", "annotation", "assertAnnotable", "storedAnnotationsSymbol", "annotationType_", "source", "objectPrototype", "descriptor", "getDescriptor", "outcome", "getPrototypeOf", "recordAnnotationApplied", "defineProperty_", "startBatch", "deleteOutcome", "delete_", "defineProperty", "notifyPropertyAddition_", "endBatch", "defineObservableProperty_", "cachedDescriptor", "getCachedObservablePropDescriptor", "safeDescriptors", "defineComputedProperty_", "options", "context", "_getDescriptor", "deleteProperty", "propagateChanged", "ownKeys_", "ownKeys", "keys_", "asObservableObject", "isObservableObject", "getAdministration", "getDebugName", "isExtensible", "String", "getAnnotationFromOptions", "addHiddenProp", "isObservableObjectAdministration", "isOverride", "fieldName", "currentAnnotationType", "requestedAnnotationType", "OBSERVABLE_ARRAY_BUFFER_SIZE", "StubArray", "inherit", "ctor", "proto", "setPrototypeOf", "__proto__", "LegacyObservableArray", "concat", "arrays", "a", "prop", "fn", "createArrayEntryDescriptor", "createArrayBufferItem", "createLegacyArray", "getAtom", "property", "isAtom", "isComputedValue", "isReaction", "named", "isAction", "deepEqual", "b", "depth", "eq", "aStack", "bStack", "className", "valueOf", "unwrap", "areArrays", "aCtor", "bCtor", "getSelf", "m", "g", "getGlobal", "__MOBX_DEVTOOLS_GLOBAL_HOOK__", "injectMobx", "spy", "extras", "fail", "index", "fromPromise", "expression", "_a", "StreamListener", "observable", "ViewModel", "get", "set", "d", "b", "ObservableGroupMap", "_a", "_b", "_c", "DeepMapEntry", "DeepMap", "expression", "errors", "keys", "expression", "value", "import_debug", "id", "index", "expression", "expression", "_", "assert", "cache", "options", "clear", "Debug", "map", "map", "import_debug", "debug", "Debug", "import_debug", "debug", "Debug", "debug", "Debug", "EventEmitter", "error", "feature", "assert", "cache", "url", "import_debug", "debug", "Debug", "__extends", "FlowEngineError", "BaseEndpoints", "__extends", "UserEndpoint", "AuthEndpoints", "TileEndpoints", "__extends", "StyleEndpoints", "MapEndpoints", "__extends", "ApiKeyEndpoints", "__extends", "ApplicationEndpoints", "__extends", "DatabaseEndpoints", "__extends", "DatasetEndpoints", "__assign", "__extends", "TileSourceEndpoints", "__extends", "UploadEndpoints", "FormData", "__extends", "AppConfigEndpoints", "__extends", "JobEndpoints", "Client", "Axios", "__assign"]
7
- }