@nyaruka/temba-components 0.156.14 → 0.156.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/dist/temba-components.js +157 -155
- package/dist/temba-components.js.map +1 -1
- package/package.json +1 -1
- package/src/flow/AutoTranslate.ts +104 -36
- package/src/flow/Editor.ts +14 -18
- package/src/flow/RevisionsWindow.ts +142 -36
- package/src/flow/flow-translations.ts +24 -1
- package/src/flow/revision-summary.ts +62 -0
- package/src/flow/types.ts +1 -2
- package/src/layout/Dialog.ts +1 -4
- package/src/store/AppState.ts +2 -0
- package/src/store/Store.ts +4 -0
- package/web-test-runner.config.mjs +7 -7
package/dist/temba-components.js
CHANGED
|
@@ -613,7 +613,7 @@ class ul{constructor(){this.settled=!1,this.promise=new Promise((t,e)=>{this._re
|
|
|
613
613
|
-webkit-box-orient: vertical;
|
|
614
614
|
overflow: hidden;
|
|
615
615
|
}
|
|
616
|
-
`,t([mt({type:Number})],zl.prototype,"scale",void 0),t([mt({type:Boolean})],zl.prototype,"showName",void 0),t([mt({type:Boolean})],zl.prototype,"system",void 0),t([mt({type:String,attribute:!1})],zl.prototype,"bgimage",void 0),t([mt({type:String,attribute:!1})],zl.prototype,"bgcolor",void 0),t([mt({type:String,attribute:!1})],zl.prototype,"initials",void 0),t([mt({type:String})],zl.prototype,"name",void 0),t([mt({type:String})],zl.prototype,"email",void 0),t([mt({type:String})],zl.prototype,"uuid",void 0),t([mt({type:String})],zl.prototype,"avatar",void 0);const Il=t=>{let e;const i=new Set,o=(t,o)=>{const n="function"==typeof t?t(e):t;if(!Object.is(n,e)){const t=e;e=(null!=o?o:"object"!=typeof n||null===n)?n:Object.assign({},e,n),i.forEach(i=>i(e,t))}},n=()=>e,s={setState:o,getState:n,getInitialState:()=>r,subscribe:t=>(i.add(t),()=>i.delete(t))},r=e=t(o,n,s);return s};var Ol=Symbol.for("immer-nothing"),Ll=Symbol.for("immer-draftable"),Pl=Symbol.for("immer-state"),Rl=[function(t){return`The plugin for '${t}' has not been loaded into Immer. To enable the plugin, import and call \`enable${t}()\` when initializing your application.`},function(t){return`produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${t}'`},"This object has been frozen and should not be mutated",function(t){return"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? "+t},"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.","Immer forbids circular references","The first or second argument to `produce` must be a function","The third argument to `produce` must be a function or undefined","First argument to `createDraft` must be a plain object, an array, or an immerable object","First argument to `finishDraft` must be a draft returned by `createDraft`",function(t){return`'current' expects a draft, got: ${t}`},"Object.defineProperty() cannot be used on an Immer draft","Object.setPrototypeOf() cannot be used on an Immer draft","Immer only supports deleting array indices","Immer only supports setting array indices and the 'length' property",function(t){return`'original' expects a draft, got: ${t}`}];function Nl(t,...e){{const i=Rl[t],o="function"==typeof i?i.apply(null,e):i;throw new Error(`[Immer] ${o}`)}}var Bl=Object.getPrototypeOf;function Fl(t){return!!t&&!!t[Pl]}function ql(t){return!!t&&(Hl(t)||Array.isArray(t)||!!t[Ll]||!!t.constructor?.[Ll]||Kl(t)||Gl(t))}var Ul=Object.prototype.constructor.toString(),jl=new WeakMap;function Hl(t){if(!t||"object"!=typeof t)return!1;const e=Object.getPrototypeOf(t);if(null===e||e===Object.prototype)return!0;const i=Object.hasOwnProperty.call(e,"constructor")&&e.constructor;if(i===Object)return!0;if("function"!=typeof i)return!1;let o=jl.get(i);return void 0===o&&(o=Function.toString.call(i),jl.set(i,o)),o===Ul}function Wl(t,e,i=!0){if(0===Vl(t)){(i?Reflect.ownKeys(t):Object.keys(t)).forEach(i=>{e(i,t[i],t)})}else t.forEach((i,o)=>e(o,i,t))}function Vl(t){const e=t[Pl];return e?e.type_:Array.isArray(t)?1:Kl(t)?2:Gl(t)?3:0}function Zl(t,e){return 2===Vl(t)?t.has(e):Object.prototype.hasOwnProperty.call(t,e)}function Yl(t,e,i){const o=Vl(t);2===o?t.set(e,i):3===o?t.add(i):t[e]=i}function Kl(t){return t instanceof Map}function Gl(t){return t instanceof Set}function Xl(t){return t.copy_||t.base_}function Ql(t,e){if(Kl(t))return new Map(t);if(Gl(t))return new Set(t);if(Array.isArray(t))return Array.prototype.slice.call(t);const i=Hl(t);if(!0===e||"class_only"===e&&!i){const e=Object.getOwnPropertyDescriptors(t);delete e[Pl];let i=Reflect.ownKeys(e);for(let o=0;o<i.length;o++){const n=i[o],s=e[n];!1===s.writable&&(s.writable=!0,s.configurable=!0),(s.get||s.set)&&(e[n]={configurable:!0,writable:!0,enumerable:s.enumerable,value:t[n]})}return Object.create(Bl(t),e)}{const e=Bl(t);if(null!==e&&i)return{...t};const o=Object.create(e);return Object.assign(o,t)}}function Jl(t,e=!1){return ed(t)||Fl(t)||!ql(t)||(Vl(t)>1&&Object.defineProperties(t,{set:td,add:td,clear:td,delete:td}),Object.freeze(t),e&&Object.values(t).forEach(t=>Jl(t,!0))),t}var td={value:function(){Nl(2)}};function ed(t){return null===t||"object"!=typeof t||Object.isFrozen(t)}var id,od={};function nd(t){const e=od[t];return e||Nl(0,t),e}function sd(){return id}function rd(t,e){e&&(nd("Patches"),t.patches_=[],t.inversePatches_=[],t.patchListener_=e)}function ad(t){ld(t),t.drafts_.forEach(cd),t.drafts_=null}function ld(t){t===id&&(id=t.parent_)}function dd(t){return id={drafts_:[],parent_:id,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function cd(t){const e=t[Pl];0===e.type_||1===e.type_?e.revoke_():e.revoked_=!0}function hd(t,e){e.unfinalizedDrafts_=e.drafts_.length;const i=e.drafts_[0];return void 0!==t&&t!==i?(i[Pl].modified_&&(ad(e),Nl(4)),ql(t)&&(t=ud(e,t),e.parent_||md(e,t)),e.patches_&&nd("Patches").generateReplacementPatches_(i[Pl].base_,t,e.patches_,e.inversePatches_)):t=ud(e,i,[]),ad(e),e.patches_&&e.patchListener_(e.patches_,e.inversePatches_),t!==Ol?t:void 0}function ud(t,e,i){if(ed(e))return e;const o=t.immer_.shouldUseStrictIteration(),n=e[Pl];if(!n)return Wl(e,(o,s)=>pd(t,n,e,o,s,i),o),e;if(n.scope_!==t)return e;if(!n.modified_)return md(t,n.base_,!0),n.base_;if(!n.finalized_){n.finalized_=!0,n.scope_.unfinalizedDrafts_--;const e=n.copy_;let s=e,r=!1;3===n.type_&&(s=new Set(e),e.clear(),r=!0),Wl(s,(o,s)=>pd(t,n,e,o,s,i,r),o),md(t,e,!1),i&&t.patches_&&nd("Patches").generatePatches_(n,i,t.patches_,t.inversePatches_)}return n.copy_}function pd(t,e,i,o,n,s,r){if(null==n)return;if("object"!=typeof n&&!r)return;const a=ed(n);if(!a||r){if(n===i&&Nl(5),Fl(n)){const r=ud(t,n,s&&e&&3!==e.type_&&!Zl(e.assigned_,o)?s.concat(o):void 0);if(Yl(i,o,r),!Fl(r))return;t.canAutoFreeze_=!1}else r&&i.add(n);if(ql(n)&&!a){if(!t.immer_.autoFreeze_&&t.unfinalizedDrafts_<1)return;if(e&&e.base_&&e.base_[o]===n&&a)return;ud(t,n),e&&e.scope_.parent_||"symbol"==typeof o||!(Kl(i)?i.has(o):Object.prototype.propertyIsEnumerable.call(i,o))||md(t,n)}}}function md(t,e,i=!1){!t.parent_&&t.immer_.autoFreeze_&&t.canAutoFreeze_&&Jl(e,i)}var gd={get(t,e){if(e===Pl)return t;const i=Xl(t);if(!Zl(i,e))return function(t,e,i){const o=bd(e,i);return o?"value"in o?o.value:o.get?.call(t.draft_):void 0}(t,i,e);const o=i[e];return t.finalized_||!ql(o)?o:o===vd(t.base_,e)?(xd(t),t.copy_[e]=wd(o,t)):o},has:(t,e)=>e in Xl(t),ownKeys:t=>Reflect.ownKeys(Xl(t)),set(t,e,i){const o=bd(Xl(t),e);if(o?.set)return o.set.call(t.draft_,i),!0;if(!t.modified_){const o=vd(Xl(t),e),n=o?.[Pl];if(n&&n.base_===i)return t.copy_[e]=i,t.assigned_[e]=!1,!0;if(function(t,e){return t===e?0!==t||1/t==1/e:t!=t&&e!=e}(i,o)&&(void 0!==i||Zl(t.base_,e)))return!0;xd(t),yd(t)}return t.copy_[e]===i&&(void 0!==i||e in t.copy_)||Number.isNaN(i)&&Number.isNaN(t.copy_[e])||(t.copy_[e]=i,t.assigned_[e]=!0),!0},deleteProperty:(t,e)=>(void 0!==vd(t.base_,e)||e in t.base_?(t.assigned_[e]=!1,xd(t),yd(t)):delete t.assigned_[e],t.copy_&&delete t.copy_[e],!0),getOwnPropertyDescriptor(t,e){const i=Xl(t),o=Reflect.getOwnPropertyDescriptor(i,e);return o?{writable:!0,configurable:1!==t.type_||"length"!==e,enumerable:o.enumerable,value:i[e]}:o},defineProperty(){Nl(11)},getPrototypeOf:t=>Bl(t.base_),setPrototypeOf(){Nl(12)}},fd={};function vd(t,e){const i=t[Pl];return(i?Xl(i):t)[e]}function bd(t,e){if(!(e in t))return;let i=Bl(t);for(;i;){const t=Object.getOwnPropertyDescriptor(i,e);if(t)return t;i=Bl(i)}}function yd(t){t.modified_||(t.modified_=!0,t.parent_&&yd(t.parent_))}function xd(t){t.copy_||(t.copy_=Ql(t.base_,t.scope_.immer_.useStrictShallowCopy_))}Wl(gd,(t,e)=>{fd[t]=function(){return arguments[0]=arguments[0][0],e.apply(this,arguments)}}),fd.deleteProperty=function(t,e){return isNaN(parseInt(e))&&Nl(13),fd.set.call(this,t,e,void 0)},fd.set=function(t,e,i){return"length"!==e&&isNaN(parseInt(e))&&Nl(14),gd.set.call(this,t[0],e,i,t[0])};function wd(t,e){const i=Kl(t)?nd("MapSet").proxyMap_(t,e):Gl(t)?nd("MapSet").proxySet_(t,e):function(t,e){const i=Array.isArray(t),o={type_:i?1:0,scope_:e?e.scope_:sd(),modified_:!1,finalized_:!1,assigned_:{},parent_:e,base_:t,draft_:null,copy_:null,revoke_:null,isManual_:!1};let n=o,s=gd;i&&(n=[o],s=fd);const{revoke:r,proxy:a}=Proxy.revocable(n,s);return o.draft_=a,o.revoke_=r,a}(t,e);return(e?e.scope_:sd()).drafts_.push(i),i}function _d(t){if(!ql(t)||ed(t))return t;const e=t[Pl];let i,o=!0;if(e){if(!e.modified_)return e.base_;e.finalized_=!0,i=Ql(t,e.scope_.immer_.useStrictShallowCopy_),o=e.scope_.immer_.shouldUseStrictIteration()}else i=Ql(t,!0);return Wl(i,(t,e)=>{Yl(i,t,_d(e))},o),e&&(e.finalized_=!1),i}var kd=new class{constructor(t){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!0,this.produce=(t,e,i)=>{if("function"==typeof t&&"function"!=typeof e){const i=e;e=t;const o=this;return function(t=i,...n){return o.produce(t,t=>e.call(this,t,...n))}}let o;if("function"!=typeof e&&Nl(6),void 0!==i&&"function"!=typeof i&&Nl(7),ql(t)){const n=dd(this),s=wd(t,void 0);let r=!0;try{o=e(s),r=!1}finally{r?ad(n):ld(n)}return rd(n,i),hd(o,n)}if(!t||"object"!=typeof t){if(o=e(t),void 0===o&&(o=t),o===Ol&&(o=void 0),this.autoFreeze_&&Jl(o,!0),i){const e=[],n=[];nd("Patches").generateReplacementPatches_(t,o,e,n),i(e,n)}return o}Nl(1,t)},this.produceWithPatches=(t,e)=>{if("function"==typeof t)return(e,...i)=>this.produceWithPatches(e,e=>t(e,...i));let i,o;const n=this.produce(t,e,(t,e)=>{i=t,o=e});return[n,i,o]},"boolean"==typeof t?.autoFreeze&&this.setAutoFreeze(t.autoFreeze),"boolean"==typeof t?.useStrictShallowCopy&&this.setUseStrictShallowCopy(t.useStrictShallowCopy),"boolean"==typeof t?.useStrictIteration&&this.setUseStrictIteration(t.useStrictIteration)}createDraft(t){ql(t)||Nl(8),Fl(t)&&(t=function(t){Fl(t)||Nl(10,t);return _d(t)}(t));const e=dd(this),i=wd(t,void 0);return i[Pl].isManual_=!0,ld(e),i}finishDraft(t,e){const i=t&&t[Pl];i&&i.isManual_||Nl(9);const{scope_:o}=i;return rd(o,e),hd(void 0,o)}setAutoFreeze(t){this.autoFreeze_=t}setUseStrictShallowCopy(t){this.useStrictShallowCopy_=t}setUseStrictIteration(t){this.useStrictIteration_=t}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(t,e){let i;for(i=e.length-1;i>=0;i--){const o=e[i];if(0===o.path.length&&"replace"===o.op){t=o.value;break}}i>-1&&(e=e.slice(i+1));const o=nd("Patches").applyPatches_;return Fl(t)?o(t,e):this.produce(t,t=>o(t,e))}},Cd=kd.produce;const Sd=t=>(e,i,o)=>(o.setState=(t,i,...o)=>{const n="function"==typeof t?Cd(t):t;return e(n,i,...o)},t(o.setState,i,o)),Ad=t=>(e,i,o)=>{const n=o.subscribe;o.subscribe=(t,e,i)=>{let s=t;if(e){const n=(null==i?void 0:i.equalityFn)||Object.is;let r=t(o.getState());s=i=>{const o=t(i);if(!n(r,o)){const t=r;e(r=o,t)}},(null==i?void 0:i.fireImmediately)&&e(r,r)}return n(s)};return t(e,i,o)},$d="14.3";function Ed(t){var e,i;if((null==t?void 0:t.nodes)&&(null===(e=null==t?void 0:t._ui)||void 0===e?void 0:e.nodes))for(const e of t.nodes){const o=t._ui.nodes[e.uuid];if(!o)continue;const n=null===(i=e.actions)||void 0===i?void 0:i.some(t=>!0===t.terminal);"execute_actions"===o.type&&n?o.type="terminal":"terminal"!==o.type||n||(o.type="execute_actions")}}function Td(t){var e,i,o;if((null==t?void 0:t.nodes)&&(null===(e=null==t?void 0:t._ui)||void 0===e?void 0:e.nodes))for(const e of t.nodes){const n=t._ui.nodes[e.uuid];if(!n||"wait_for_response"!==n.type)continue;const s=null===(o=null===(i=e.router)||void 0===i?void 0:i.wait)||void 0===o?void 0:o.hint;s&&("digits"===s.type&&1===s.count?n.type="wait_for_menu":"digits"===s.type?n.type="wait_for_digits":"audio"===s.type&&(n.type="wait_for_audio"))}}function Dd(t,e){t.sort((t,i)=>{var o,n;const s=null===(o=e[t.uuid])||void 0===o?void 0:o.position,r=null===(n=e[i.uuid])||void 0===n?void 0:n.position;return s&&r?s.top!==r.top?s.top-r.top:s.left-r.left:0})}function Md(t=[]){const e=new Map,i=new Map;for(const o of t)if(o.action_uuid){const t=i.get(o.action_uuid)||[];t.push(o),i.set(o.action_uuid,t)}else{const t=e.get(o.node_uuid)||[];t.push(o),e.set(o.node_uuid,t)}return{byNode:e,byAction:i}}const zd=Il(Ad(Sd((t,e)=>({features:[],languageNames:{},canvasSize:{width:0,height:0},languageCode:"",workspace:null,flowDefinition:null,flowInfo:null,issuesByNode:new Map,issuesByAction:new Map,isTranslating:!1,viewingRevision:!1,dirtyDate:null,activity:null,simulatorActivity:null,activityEndpoint:null,simulatorActive:!1,flushSave:null,setFlushSave:e=>{t({flushSave:e})},setDirtyDate:e=>{t(t=>{t.dirtyDate=e})},fetchRevision:async(e,i=null)=>{var o;const n=!!i&&"latest"!==i;i||(i="latest");const s=await fetch(`${e}/${i}/?version=${$d}`);if(!s.ok)throw new Error("Network response was not ok");const r=await s.json();Ed(r.definition),Td(r.definition);const a=Md(null===(o=r.info)||void 0===o?void 0:o.issues),l=r.definition.language;t({flowInfo:r.info,flowDefinition:r.definition,viewingRevision:n,issuesByNode:a.byNode,issuesByAction:a.byAction,languageCode:l,isTranslating:!1})},fetchWorkspace:async e=>{const i=await fetch(e);if(!i.ok)throw new Error("Network response was not ok");const o=await i.json();t({workspace:o})},fetchAllLanguages:async e=>{const i=(await fe(e)).reduce(function(t,e){return t[e.value]=e.name,t},{});t({languageNames:i})},setActivityEndpoint:e=>{t({activityEndpoint:e})},fetchActivity:async e=>{try{const i=await fetch(e);if(!i.ok)return;const o=await i.json();t({activity:o})}catch(t){console.error("Failed to fetch activity:",t)}},updateActivity:e=>{t({activity:e})},updateSimulatorActivity:e=>{t({simulatorActivity:e})},setSimulatorActive:e=>{t({simulatorActive:e})},getCurrentActivity:()=>{const t=e();return t.simulatorActive?t.simulatorActivity:t.activity},getFlowResults:()=>e().flowInfo.results,getResultByKey:t=>e().flowInfo.results.find(e=>e.key===t),getLanguage:()=>{const t=e(),i=t.languageCode;return{name:t.languageNames[i],code:i}},setFeatures:e=>{t({features:e})},clearFlowData:()=>{t({flowDefinition:null,flowInfo:null,issuesByNode:new Map,issuesByAction:new Map,activity:null,simulatorActivity:null,simulatorActive:!1,dirtyDate:null,viewingRevision:!1})},setFlowContents:e=>{t(t=>{var i,o,n,s;const r=e.definition.language;t.flowDefinition={...e.definition,nodes:[...e.definition.nodes||[]]},t.flowInfo=e.info;const a=Md(null===(i=e.info)||void 0===i?void 0:i.issues);t.issuesByNode=a.byNode,t.issuesByAction=a.byAction,t.languageCode=r,t.isTranslating=!1,t.viewingRevision=!1,Ed(t.flowDefinition),Td(t.flowDefinition),(null===(o=t.flowDefinition)||void 0===o?void 0:o.nodes)&&(null===(s=null===(n=t.flowDefinition)||void 0===n?void 0:n._ui)||void 0===s?void 0:s.nodes)&&Dd(t.flowDefinition.nodes,t.flowDefinition._ui.nodes)})},setFlowInfo:e=>{t(t=>{t.flowInfo=e;const i=Md(null==e?void 0:e.issues);t.issuesByNode=i.byNode,t.issuesByAction=i.byAction})},setRevision:e=>{t(t=>{t.flowDefinition.revision=e})},setLanguageCode:e=>{t(t=>{t.languageCode=e,t.isTranslating=t.flowDefinition.language!==e})},expandCanvas:(e,i)=>{t(t=>{const o=Math.max(t.canvasSize.width,e+800),n=Math.max(t.canvasSize.height,i+800);t.canvasSize.width=o,t.canvasSize.height=n})},updateCanvasPositions:e=>{t(t=>{for(const i in e)t.flowDefinition._ui.nodes[i]?t.flowDefinition._ui.nodes[i].position=e[i]:t.flowDefinition._ui.stickies[i]&&(t.flowDefinition._ui.stickies[i].position=e[i]);Dd(t.flowDefinition.nodes,t.flowDefinition._ui.nodes),t.dirtyDate=new Date})},removeNodes:e=>{t(t=>{for(const i of e)delete t.flowDefinition._ui.nodes[i];t.flowDefinition=Cd(t.flowDefinition,t=>{e.forEach(i=>{const o=t.nodes.find(t=>t.uuid===i);if(!o||!o.exits.length)return;const n=o.exits.map(t=>t.destination_uuid).filter(t=>t);if(n.length===o.exits.length&&n.every(t=>t===n[0])){const o=n[0];if(e.includes(o))return;t.nodes.forEach(t=>{t.exits.forEach(t=>{t.destination_uuid===i&&(t.destination_uuid=o)})})}}),t.nodes=t.nodes.filter(t=>!e.includes(t.uuid)),t.nodes.forEach(t=>{t.exits.forEach(t=>{e.includes(t.destination_uuid)&&(t.destination_uuid=null)})}),Dd(t.nodes,t._ui.nodes)}),t.dirtyDate=new Date})},removeStickyNotes:e=>{t(t=>{var i;if(null===(i=t.flowDefinition._ui)||void 0===i?void 0:i.stickies)for(const i of e)delete t.flowDefinition._ui.stickies[i];t.dirtyDate=new Date})},updateNode:(e,i)=>{t(t=>{var o;const n=null===(o=t.flowDefinition)||void 0===o?void 0:o.nodes.find(t=>t.uuid===e);n&&(n.actions=i.actions,n.uuid=i.uuid,n.exits=i.exits,n.router=i.router),t.dirtyDate=new Date})},updateNodeUIConfig:(e,i)=>{t(t=>{if(t.flowDefinition._ui.nodes[e]){void 0!==i.type&&(t.flowDefinition._ui.nodes[e].type=i.type),t.flowDefinition._ui.nodes[e].config||(t.flowDefinition._ui.nodes[e].config={});const{type:o,...n}=i;Object.assign(t.flowDefinition._ui.nodes[e].config,n)}t.dirtyDate=new Date})},updateConnection:(e,i,o)=>{t(t=>{const n=t.flowDefinition.nodes.find(t=>t.uuid===e),s=null==n?void 0:n.exits.find(t=>t.uuid===i);s&&(s.destination_uuid=o,t.dirtyDate=new Date)})},updateStickyNote:(e,i)=>{t(t=>{t.flowDefinition._ui.stickies||(t.flowDefinition._ui.stickies={}),t.flowDefinition._ui.stickies[e]=i,t.dirtyDate=new Date})},createStickyNote:e=>{const i=Kt();return t(t=>{t.flowDefinition._ui.stickies||(t.flowDefinition._ui.stickies={});const o={position:e,title:"",body:"",color:"yellow"};t.flowDefinition._ui.stickies[i]=o,t.dirtyDate=new Date}),i},createNode:(e,i)=>{const o=Kt(),n=Kt();return t(t=>{const s={uuid:o,actions:[],exits:[{uuid:n,destination_uuid:null}]};t.flowDefinition.nodes.push(s),t.flowDefinition._ui.nodes||(t.flowDefinition._ui.nodes={}),t.flowDefinition._ui.nodes[o]={position:i,type:e,config:{}},Dd(t.flowDefinition.nodes,t.flowDefinition._ui.nodes),t.dirtyDate=new Date}),o},addNode:(e,i)=>{t(t=>{t.flowDefinition.nodes.push(e),t.flowDefinition._ui.nodes||(t.flowDefinition._ui.nodes={}),t.flowDefinition._ui.nodes[e.uuid]=i,Dd(t.flowDefinition.nodes,t.flowDefinition._ui.nodes),t.dirtyDate=new Date})},duplicateNodes:i=>{var o,n;const s=e(),r=new Set(i),a={},l=s.flowDefinition._ui.stickies||{};for(const t of i){if(l[t]){a[t]=Kt();continue}const e=s.flowDefinition.nodes.find(e=>e.uuid===t);if(e){a[t]=Kt();for(const t of e.actions)a[t.uuid]=Kt();for(const t of e.exits)a[t.uuid]=Kt();if(e.router){for(const t of e.router.categories)a[t.uuid]=Kt();for(const t of e.router.cases||[])a[t.uuid]=Kt()}}}const d=[],c=[];for(const t of i){if(l[t]){const e=JSON.parse(JSON.stringify(l[t]));c.push({uuid:a[t],sticky:e});continue}const e=s.flowDefinition.nodes.find(e=>e.uuid===t),i=s.flowDefinition._ui.nodes[t];if(!e||!i)continue;const h=JSON.parse(JSON.stringify(e));h.uuid=a[t];for(const t of h.actions)t.uuid=a[t.uuid];for(const t of h.exits)t.uuid=a[t.uuid],t.destination_uuid&&r.has(t.destination_uuid)?t.destination_uuid=a[t.destination_uuid]:t.destination_uuid=null;if(h.router){for(const t of h.router.categories)t.uuid=a[t.uuid],t.exit_uuid=a[t.exit_uuid];if(h.router.cases)for(const t of h.router.cases)t.uuid=a[t.uuid],t.category_uuid=a[t.category_uuid];h.router.default_category_uuid&&(h.router.default_category_uuid=a[h.router.default_category_uuid]),(null===(n=null===(o=h.router.wait)||void 0===o?void 0:o.timeout)||void 0===n?void 0:n.category_uuid)&&(h.router.wait.timeout.category_uuid=a[h.router.wait.timeout.category_uuid])}const u=JSON.parse(JSON.stringify(i));d.push({node:h,ui:u})}const h={},u=s.flowDefinition.localization;if(u)for(const t of Object.keys(u)){const e=u[t];for(const i of Object.keys(a))e[i]&&(h[t]||(h[t]={}),h[t][a[i]]=JSON.parse(JSON.stringify(e[i])))}return t(t=>{for(const{node:e,ui:i}of d)t.flowDefinition.nodes.push(e),t.flowDefinition._ui.nodes[e.uuid]=i;t.flowDefinition._ui.stickies||(t.flowDefinition._ui.stickies={});for(const{uuid:e,sticky:i}of c)t.flowDefinition._ui.stickies[e]=i;for(const e of Object.keys(h)){t.flowDefinition.localization[e]||(t.flowDefinition.localization[e]={});for(const[i,o]of Object.entries(h[e]))t.flowDefinition.localization[e][i]=o}Dd(t.flowDefinition.nodes,t.flowDefinition._ui.nodes)}),a},updateLocalization:(e,i,o)=>{t(t=>{t.flowDefinition.localization||(t.flowDefinition.localization={}),t.flowDefinition.localization[e]||(t.flowDefinition.localization[e]={}),Object.keys(o).length>0?t.flowDefinition.localization[e][i]=o:delete t.flowDefinition.localization[e][i],0===Object.keys(t.flowDefinition.localization[e]).length&&delete t.flowDefinition.localization[e],0===Object.keys(t.flowDefinition.localization).length&&delete t.flowDefinition.localization,t.dirtyDate=new Date})},setTranslationFilters:e=>{t(t=>{var i;if(!(null===(i=t.flowDefinition)||void 0===i?void 0:i._ui))return;const o=t.flowDefinition._ui.translation_filters||{categories:!1},n=!!e.categories;o.categories!==n&&(t.flowDefinition._ui.translation_filters={...o,categories:n},t.dirtyDate=new Date)})},markAutoTranslated:(e,i,o)=>{t(t=>{var n;if(!(null===(n=t.flowDefinition)||void 0===n?void 0:n._ui))return;t.flowDefinition._ui.auto_translations||(t.flowDefinition._ui.auto_translations={}),t.flowDefinition._ui.auto_translations[e]||(t.flowDefinition._ui.auto_translations[e]={});const s=t.flowDefinition._ui.auto_translations[e][i]||[],r=Array.from(new Set([...s,...o||[]]));t.flowDefinition._ui.auto_translations[e][i]=r,t.dirtyDate=new Date})}}))));function Id(t,e){return(i,o)=>{mt()(i,o);const n="connectedCallback",s="disconnectedCallback",r=i[n],a=i[s];i[n]=function(){var i;null!==(i=this._zustandUnsubscribe)&&void 0!==i||(this._zustandUnsubscribe={}),this[o]=e(t.getState()),this._zustandUnsubscribe[o]=t.subscribe(e,t=>{this[o]=t}),r&&r.call(this)},i[s]=function(){var t,e;null===(e=null===(t=this._zustandUnsubscribe)||void 0===t?void 0:t[o])||void 0===e||e.call(t),a&&a.call(this)}}}var Od;!function(t){t.Text="text",t.ExpressionPrefix="prefix",t.Identifier="identifier",t.Paren="paren",t.Operator="operator",t.FunctionName="fn",t.StringLiteral="string",t.NumberLiteral="number",t.Keyword="keyword",t.ContextRef="context-ref",t.Separator="separator",t.Whitespace="ws",t.Arrow="arrow",t.Bracket="bracket",t.EscapedAt="escaped-at"}(Od||(Od={}));const Ld=new Set(["true","false","null"]),Pd=new Set(["+","-","*","/","^","&","=","<",">"]),Rd=t=>t>="0"&&t<="9",Nd=t=>t>="a"&&t<="z"||t>="A"&&t<="Z"||t>="0"&&t<="9"||"_"===t;function Bd(t,e,i){const o=[];let n=0,s=i;const r=(e=0)=>t[n+e],a=(i,n)=>{const s=t.substring(i,n),r=e+i;if(Ld.has(s.toLowerCase()))return void o.push({type:Od.Keyword,text:s,start:r});let a=n;for(;a<t.length&&" "===t[a];)a++;a<t.length&&"("===t[a]?o.push({type:Od.FunctionName,text:s,start:r}):o.push({type:Od.ContextRef,text:s,start:r})};for(;n<t.length;){const i=t[n];if('"'===i){const i=n;for(n++;n<t.length;)if("\\"===t[n]&&n+1<t.length&&'"'===t[n+1])n+=2;else{if('"'===t[n]){n++;break}n++}o.push({type:Od.StringLiteral,text:t.substring(i,n),start:e+i});continue}if(Rd(i)||"."===i&&r(1)&&Rd(r(1))){const i=n;for(;n<t.length&&Rd(t[n]);)n++;if(n<t.length&&"."===t[n]&&n+1<t.length&&Rd(t[n+1]))for(n++;n<t.length&&Rd(t[n]);)n++;o.push({type:Od.NumberLiteral,text:t.substring(i,n),start:e+i});continue}if(Nd(i)&&!Rd(i)){const e=n;for(;n<t.length&&(Nd(t[n])||"."===t[n])&&("."!==t[n]||!(n+1>=t.length)&&Nd(t[n+1]));)n++;a(e,n);continue}if("("!==i)if(")"!==i)if("["!==i&&"]"!==i)if("="!==i||">"!==r(1))if("!"===i&&"="===r(1)||"<"===i&&"="===r(1)||">"===i&&"="===r(1))o.push({type:Od.Operator,text:i+r(1),start:e+n}),n+=2;else if(Pd.has(i))o.push({type:Od.Operator,text:i,start:e+n}),n++;else if(","!==i){if(" "===i||"\t"===i||"\n"===i||"\r"===i){const i=n;for(;n<t.length&&(" "===t[n]||"\t"===t[n]||"\n"===t[n]||"\r"===t[n]);)n++;o.push({type:Od.Whitespace,text:t.substring(i,n),start:e+i});continue}o.push({type:Od.Text,text:i,start:e+n}),n++}else o.push({type:Od.Separator,text:",",start:e+n}),n++;else o.push({type:Od.Arrow,text:"=>",start:e+n}),n+=2;else o.push({type:Od.Bracket,text:i,start:e+n}),n++;else s--,o.push({type:Od.Paren,text:")",start:e+n,depth:Math.max(0,s),balanced:!0}),n++;else o.push({type:Od.Paren,text:"(",start:e+n,depth:s,balanced:!0}),s++,n++}return o}function Fd(t,e){if(!t)return[];const i=e.findExpressions(t),o=[];let n=0;for(const e of i){if(e.start>n){const i=t.substring(n,e.start);let s=0;for(;s<i.length;){const t=i.indexOf("@@",s);if(-1===t){s<i.length&&o.push({type:Od.Text,text:i.substring(s),start:n+s});break}t>s&&o.push({type:Od.Text,text:i.substring(s,t),start:n+s}),o.push({type:Od.EscapedAt,text:"@@",start:n+t}),s=t+2}}const i=e.text;if(o.push({type:Od.ExpressionPrefix,text:"@",start:e.start}),i.length>1&&"("===i[1]){o.push({type:Od.Paren,text:"(",start:e.start+1,depth:0,balanced:e.closed});const t=e.closed&&")"===i[i.length-1],n=t?i.length-1:i.length,s=i.substring(2,n);if(s.length>0){const t=Bd(s,e.start+2,1);o.push(...t)}t&&o.push({type:Od.Paren,text:")",start:e.start+i.length-1,depth:0,balanced:!0}),e.closed||qd(o,e.start)}else o.push({type:Od.Identifier,text:i.substring(1),start:e.start+1});n=e.end}if(n<t.length){const e=t.substring(n);let i=0;for(;i<e.length;){const t=e.indexOf("@@",i);if(-1===t){i<e.length&&o.push({type:Od.Text,text:e.substring(i),start:n+i});break}t>i&&o.push({type:Od.Text,text:e.substring(i,t),start:n+i}),o.push({type:Od.EscapedAt,text:"@@",start:n+t}),i=t+2}}return o}function qd(t,e){for(const i of t)i.type===Od.Paren&&i.start>=e&&"("===i.text&&0===i.depth&&(i.balanced=!1)}const Ud={expression:"#0086e0",fn:"#0086e0",string:"#06a810",number:"#c25ceb",keyword:"#1750eb",operator:"#666",paren:"#999",parenUnmatched:"#ff0011"},jd={[Od.Text]:"tok-text",[Od.ExpressionPrefix]:"tok-prefix",[Od.Identifier]:"tok-id",[Od.FunctionName]:"tok-fn",[Od.StringLiteral]:"tok-str",[Od.NumberLiteral]:"tok-num",[Od.Keyword]:"tok-kw",[Od.Operator]:"tok-op",[Od.ContextRef]:"tok-ctx",[Od.Separator]:"tok-sep",[Od.Whitespace]:"tok-ws",[Od.Arrow]:"tok-arrow",[Od.Bracket]:"tok-bracket",[Od.EscapedAt]:"tok-text",[Od.Paren]:"tok-paren"},Hd=new Set([Od.ExpressionPrefix,Od.Identifier,Od.FunctionName,Od.StringLiteral,Od.NumberLiteral,Od.Keyword,Od.Operator,Od.ContextRef,Od.Separator,Od.Whitespace,Od.Arrow,Od.Bracket,Od.Paren]);function Wd(t){return t.type===Od.Paren&&!1===t.balanced?"tok-paren-unmatched":jd[t.type]||"tok-text"}const Vd=t=>r(Ud[t]),Zd=a`
|
|
616
|
+
`,t([mt({type:Number})],zl.prototype,"scale",void 0),t([mt({type:Boolean})],zl.prototype,"showName",void 0),t([mt({type:Boolean})],zl.prototype,"system",void 0),t([mt({type:String,attribute:!1})],zl.prototype,"bgimage",void 0),t([mt({type:String,attribute:!1})],zl.prototype,"bgcolor",void 0),t([mt({type:String,attribute:!1})],zl.prototype,"initials",void 0),t([mt({type:String})],zl.prototype,"name",void 0),t([mt({type:String})],zl.prototype,"email",void 0),t([mt({type:String})],zl.prototype,"uuid",void 0),t([mt({type:String})],zl.prototype,"avatar",void 0);const Il=t=>{let e;const i=new Set,o=(t,o)=>{const n="function"==typeof t?t(e):t;if(!Object.is(n,e)){const t=e;e=(null!=o?o:"object"!=typeof n||null===n)?n:Object.assign({},e,n),i.forEach(i=>i(e,t))}},n=()=>e,s={setState:o,getState:n,getInitialState:()=>r,subscribe:t=>(i.add(t),()=>i.delete(t))},r=e=t(o,n,s);return s};var Ol=Symbol.for("immer-nothing"),Ll=Symbol.for("immer-draftable"),Pl=Symbol.for("immer-state"),Rl=[function(t){return`The plugin for '${t}' has not been loaded into Immer. To enable the plugin, import and call \`enable${t}()\` when initializing your application.`},function(t){return`produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${t}'`},"This object has been frozen and should not be mutated",function(t){return"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? "+t},"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.","Immer forbids circular references","The first or second argument to `produce` must be a function","The third argument to `produce` must be a function or undefined","First argument to `createDraft` must be a plain object, an array, or an immerable object","First argument to `finishDraft` must be a draft returned by `createDraft`",function(t){return`'current' expects a draft, got: ${t}`},"Object.defineProperty() cannot be used on an Immer draft","Object.setPrototypeOf() cannot be used on an Immer draft","Immer only supports deleting array indices","Immer only supports setting array indices and the 'length' property",function(t){return`'original' expects a draft, got: ${t}`}];function Nl(t,...e){{const i=Rl[t],o="function"==typeof i?i.apply(null,e):i;throw new Error(`[Immer] ${o}`)}}var Bl=Object.getPrototypeOf;function Fl(t){return!!t&&!!t[Pl]}function ql(t){return!!t&&(Hl(t)||Array.isArray(t)||!!t[Ll]||!!t.constructor?.[Ll]||Kl(t)||Gl(t))}var Ul=Object.prototype.constructor.toString(),jl=new WeakMap;function Hl(t){if(!t||"object"!=typeof t)return!1;const e=Object.getPrototypeOf(t);if(null===e||e===Object.prototype)return!0;const i=Object.hasOwnProperty.call(e,"constructor")&&e.constructor;if(i===Object)return!0;if("function"!=typeof i)return!1;let o=jl.get(i);return void 0===o&&(o=Function.toString.call(i),jl.set(i,o)),o===Ul}function Wl(t,e,i=!0){if(0===Vl(t)){(i?Reflect.ownKeys(t):Object.keys(t)).forEach(i=>{e(i,t[i],t)})}else t.forEach((i,o)=>e(o,i,t))}function Vl(t){const e=t[Pl];return e?e.type_:Array.isArray(t)?1:Kl(t)?2:Gl(t)?3:0}function Zl(t,e){return 2===Vl(t)?t.has(e):Object.prototype.hasOwnProperty.call(t,e)}function Yl(t,e,i){const o=Vl(t);2===o?t.set(e,i):3===o?t.add(i):t[e]=i}function Kl(t){return t instanceof Map}function Gl(t){return t instanceof Set}function Xl(t){return t.copy_||t.base_}function Ql(t,e){if(Kl(t))return new Map(t);if(Gl(t))return new Set(t);if(Array.isArray(t))return Array.prototype.slice.call(t);const i=Hl(t);if(!0===e||"class_only"===e&&!i){const e=Object.getOwnPropertyDescriptors(t);delete e[Pl];let i=Reflect.ownKeys(e);for(let o=0;o<i.length;o++){const n=i[o],s=e[n];!1===s.writable&&(s.writable=!0,s.configurable=!0),(s.get||s.set)&&(e[n]={configurable:!0,writable:!0,enumerable:s.enumerable,value:t[n]})}return Object.create(Bl(t),e)}{const e=Bl(t);if(null!==e&&i)return{...t};const o=Object.create(e);return Object.assign(o,t)}}function Jl(t,e=!1){return ed(t)||Fl(t)||!ql(t)||(Vl(t)>1&&Object.defineProperties(t,{set:td,add:td,clear:td,delete:td}),Object.freeze(t),e&&Object.values(t).forEach(t=>Jl(t,!0))),t}var td={value:function(){Nl(2)}};function ed(t){return null===t||"object"!=typeof t||Object.isFrozen(t)}var id,od={};function nd(t){const e=od[t];return e||Nl(0,t),e}function sd(){return id}function rd(t,e){e&&(nd("Patches"),t.patches_=[],t.inversePatches_=[],t.patchListener_=e)}function ad(t){ld(t),t.drafts_.forEach(cd),t.drafts_=null}function ld(t){t===id&&(id=t.parent_)}function dd(t){return id={drafts_:[],parent_:id,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function cd(t){const e=t[Pl];0===e.type_||1===e.type_?e.revoke_():e.revoked_=!0}function hd(t,e){e.unfinalizedDrafts_=e.drafts_.length;const i=e.drafts_[0];return void 0!==t&&t!==i?(i[Pl].modified_&&(ad(e),Nl(4)),ql(t)&&(t=ud(e,t),e.parent_||md(e,t)),e.patches_&&nd("Patches").generateReplacementPatches_(i[Pl].base_,t,e.patches_,e.inversePatches_)):t=ud(e,i,[]),ad(e),e.patches_&&e.patchListener_(e.patches_,e.inversePatches_),t!==Ol?t:void 0}function ud(t,e,i){if(ed(e))return e;const o=t.immer_.shouldUseStrictIteration(),n=e[Pl];if(!n)return Wl(e,(o,s)=>pd(t,n,e,o,s,i),o),e;if(n.scope_!==t)return e;if(!n.modified_)return md(t,n.base_,!0),n.base_;if(!n.finalized_){n.finalized_=!0,n.scope_.unfinalizedDrafts_--;const e=n.copy_;let s=e,r=!1;3===n.type_&&(s=new Set(e),e.clear(),r=!0),Wl(s,(o,s)=>pd(t,n,e,o,s,i,r),o),md(t,e,!1),i&&t.patches_&&nd("Patches").generatePatches_(n,i,t.patches_,t.inversePatches_)}return n.copy_}function pd(t,e,i,o,n,s,r){if(null==n)return;if("object"!=typeof n&&!r)return;const a=ed(n);if(!a||r){if(n===i&&Nl(5),Fl(n)){const r=ud(t,n,s&&e&&3!==e.type_&&!Zl(e.assigned_,o)?s.concat(o):void 0);if(Yl(i,o,r),!Fl(r))return;t.canAutoFreeze_=!1}else r&&i.add(n);if(ql(n)&&!a){if(!t.immer_.autoFreeze_&&t.unfinalizedDrafts_<1)return;if(e&&e.base_&&e.base_[o]===n&&a)return;ud(t,n),e&&e.scope_.parent_||"symbol"==typeof o||!(Kl(i)?i.has(o):Object.prototype.propertyIsEnumerable.call(i,o))||md(t,n)}}}function md(t,e,i=!1){!t.parent_&&t.immer_.autoFreeze_&&t.canAutoFreeze_&&Jl(e,i)}var gd={get(t,e){if(e===Pl)return t;const i=Xl(t);if(!Zl(i,e))return function(t,e,i){const o=bd(e,i);return o?"value"in o?o.value:o.get?.call(t.draft_):void 0}(t,i,e);const o=i[e];return t.finalized_||!ql(o)?o:o===vd(t.base_,e)?(xd(t),t.copy_[e]=wd(o,t)):o},has:(t,e)=>e in Xl(t),ownKeys:t=>Reflect.ownKeys(Xl(t)),set(t,e,i){const o=bd(Xl(t),e);if(o?.set)return o.set.call(t.draft_,i),!0;if(!t.modified_){const o=vd(Xl(t),e),n=o?.[Pl];if(n&&n.base_===i)return t.copy_[e]=i,t.assigned_[e]=!1,!0;if(function(t,e){return t===e?0!==t||1/t==1/e:t!=t&&e!=e}(i,o)&&(void 0!==i||Zl(t.base_,e)))return!0;xd(t),yd(t)}return t.copy_[e]===i&&(void 0!==i||e in t.copy_)||Number.isNaN(i)&&Number.isNaN(t.copy_[e])||(t.copy_[e]=i,t.assigned_[e]=!0),!0},deleteProperty:(t,e)=>(void 0!==vd(t.base_,e)||e in t.base_?(t.assigned_[e]=!1,xd(t),yd(t)):delete t.assigned_[e],t.copy_&&delete t.copy_[e],!0),getOwnPropertyDescriptor(t,e){const i=Xl(t),o=Reflect.getOwnPropertyDescriptor(i,e);return o?{writable:!0,configurable:1!==t.type_||"length"!==e,enumerable:o.enumerable,value:i[e]}:o},defineProperty(){Nl(11)},getPrototypeOf:t=>Bl(t.base_),setPrototypeOf(){Nl(12)}},fd={};function vd(t,e){const i=t[Pl];return(i?Xl(i):t)[e]}function bd(t,e){if(!(e in t))return;let i=Bl(t);for(;i;){const t=Object.getOwnPropertyDescriptor(i,e);if(t)return t;i=Bl(i)}}function yd(t){t.modified_||(t.modified_=!0,t.parent_&&yd(t.parent_))}function xd(t){t.copy_||(t.copy_=Ql(t.base_,t.scope_.immer_.useStrictShallowCopy_))}Wl(gd,(t,e)=>{fd[t]=function(){return arguments[0]=arguments[0][0],e.apply(this,arguments)}}),fd.deleteProperty=function(t,e){return isNaN(parseInt(e))&&Nl(13),fd.set.call(this,t,e,void 0)},fd.set=function(t,e,i){return"length"!==e&&isNaN(parseInt(e))&&Nl(14),gd.set.call(this,t[0],e,i,t[0])};function wd(t,e){const i=Kl(t)?nd("MapSet").proxyMap_(t,e):Gl(t)?nd("MapSet").proxySet_(t,e):function(t,e){const i=Array.isArray(t),o={type_:i?1:0,scope_:e?e.scope_:sd(),modified_:!1,finalized_:!1,assigned_:{},parent_:e,base_:t,draft_:null,copy_:null,revoke_:null,isManual_:!1};let n=o,s=gd;i&&(n=[o],s=fd);const{revoke:r,proxy:a}=Proxy.revocable(n,s);return o.draft_=a,o.revoke_=r,a}(t,e);return(e?e.scope_:sd()).drafts_.push(i),i}function _d(t){if(!ql(t)||ed(t))return t;const e=t[Pl];let i,o=!0;if(e){if(!e.modified_)return e.base_;e.finalized_=!0,i=Ql(t,e.scope_.immer_.useStrictShallowCopy_),o=e.scope_.immer_.shouldUseStrictIteration()}else i=Ql(t,!0);return Wl(i,(t,e)=>{Yl(i,t,_d(e))},o),e&&(e.finalized_=!1),i}var kd=new class{constructor(t){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!0,this.produce=(t,e,i)=>{if("function"==typeof t&&"function"!=typeof e){const i=e;e=t;const o=this;return function(t=i,...n){return o.produce(t,t=>e.call(this,t,...n))}}let o;if("function"!=typeof e&&Nl(6),void 0!==i&&"function"!=typeof i&&Nl(7),ql(t)){const n=dd(this),s=wd(t,void 0);let r=!0;try{o=e(s),r=!1}finally{r?ad(n):ld(n)}return rd(n,i),hd(o,n)}if(!t||"object"!=typeof t){if(o=e(t),void 0===o&&(o=t),o===Ol&&(o=void 0),this.autoFreeze_&&Jl(o,!0),i){const e=[],n=[];nd("Patches").generateReplacementPatches_(t,o,e,n),i(e,n)}return o}Nl(1,t)},this.produceWithPatches=(t,e)=>{if("function"==typeof t)return(e,...i)=>this.produceWithPatches(e,e=>t(e,...i));let i,o;const n=this.produce(t,e,(t,e)=>{i=t,o=e});return[n,i,o]},"boolean"==typeof t?.autoFreeze&&this.setAutoFreeze(t.autoFreeze),"boolean"==typeof t?.useStrictShallowCopy&&this.setUseStrictShallowCopy(t.useStrictShallowCopy),"boolean"==typeof t?.useStrictIteration&&this.setUseStrictIteration(t.useStrictIteration)}createDraft(t){ql(t)||Nl(8),Fl(t)&&(t=function(t){Fl(t)||Nl(10,t);return _d(t)}(t));const e=dd(this),i=wd(t,void 0);return i[Pl].isManual_=!0,ld(e),i}finishDraft(t,e){const i=t&&t[Pl];i&&i.isManual_||Nl(9);const{scope_:o}=i;return rd(o,e),hd(void 0,o)}setAutoFreeze(t){this.autoFreeze_=t}setUseStrictShallowCopy(t){this.useStrictShallowCopy_=t}setUseStrictIteration(t){this.useStrictIteration_=t}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(t,e){let i;for(i=e.length-1;i>=0;i--){const o=e[i];if(0===o.path.length&&"replace"===o.op){t=o.value;break}}i>-1&&(e=e.slice(i+1));const o=nd("Patches").applyPatches_;return Fl(t)?o(t,e):this.produce(t,t=>o(t,e))}},Cd=kd.produce;const Sd=t=>(e,i,o)=>(o.setState=(t,i,...o)=>{const n="function"==typeof t?Cd(t):t;return e(n,i,...o)},t(o.setState,i,o)),Ad=t=>(e,i,o)=>{const n=o.subscribe;o.subscribe=(t,e,i)=>{let s=t;if(e){const n=(null==i?void 0:i.equalityFn)||Object.is;let r=t(o.getState());s=i=>{const o=t(i);if(!n(r,o)){const t=r;e(r=o,t)}},(null==i?void 0:i.fireImmediately)&&e(r,r)}return n(s)};return t(e,i,o)},$d="14.3";function Ed(t){var e,i;if((null==t?void 0:t.nodes)&&(null===(e=null==t?void 0:t._ui)||void 0===e?void 0:e.nodes))for(const e of t.nodes){const o=t._ui.nodes[e.uuid];if(!o)continue;const n=null===(i=e.actions)||void 0===i?void 0:i.some(t=>!0===t.terminal);"execute_actions"===o.type&&n?o.type="terminal":"terminal"!==o.type||n||(o.type="execute_actions")}}function Td(t){var e,i,o;if((null==t?void 0:t.nodes)&&(null===(e=null==t?void 0:t._ui)||void 0===e?void 0:e.nodes))for(const e of t.nodes){const n=t._ui.nodes[e.uuid];if(!n||"wait_for_response"!==n.type)continue;const s=null===(o=null===(i=e.router)||void 0===i?void 0:i.wait)||void 0===o?void 0:o.hint;s&&("digits"===s.type&&1===s.count?n.type="wait_for_menu":"digits"===s.type?n.type="wait_for_digits":"audio"===s.type&&(n.type="wait_for_audio"))}}function Dd(t,e){t.sort((t,i)=>{var o,n;const s=null===(o=e[t.uuid])||void 0===o?void 0:o.position,r=null===(n=e[i.uuid])||void 0===n?void 0:n.position;return s&&r?s.top!==r.top?s.top-r.top:s.left-r.left:0})}function Md(t=[]){const e=new Map,i=new Map;for(const o of t)if(o.action_uuid){const t=i.get(o.action_uuid)||[];t.push(o),i.set(o.action_uuid,t)}else{const t=e.get(o.node_uuid)||[];t.push(o),e.set(o.node_uuid,t)}return{byNode:e,byAction:i}}const zd=Il(Ad(Sd((t,e)=>({features:[],brand:"",languageNames:{},canvasSize:{width:0,height:0},languageCode:"",workspace:null,flowDefinition:null,flowInfo:null,issuesByNode:new Map,issuesByAction:new Map,isTranslating:!1,viewingRevision:!1,dirtyDate:null,activity:null,simulatorActivity:null,activityEndpoint:null,simulatorActive:!1,flushSave:null,setFlushSave:e=>{t({flushSave:e})},setDirtyDate:e=>{t(t=>{t.dirtyDate=e})},fetchRevision:async(e,i=null)=>{var o;const n=!!i&&"latest"!==i;i||(i="latest");const s=await fetch(`${e}/${i}/?version=${$d}`);if(!s.ok)throw new Error("Network response was not ok");const r=await s.json();Ed(r.definition),Td(r.definition);const a=Md(null===(o=r.info)||void 0===o?void 0:o.issues),l=r.definition.language;t({flowInfo:r.info,flowDefinition:r.definition,viewingRevision:n,issuesByNode:a.byNode,issuesByAction:a.byAction,languageCode:l,isTranslating:!1})},fetchWorkspace:async e=>{const i=await fetch(e);if(!i.ok)throw new Error("Network response was not ok");const o=await i.json();t({workspace:o})},fetchAllLanguages:async e=>{const i=(await fe(e)).reduce(function(t,e){return t[e.value]=e.name,t},{});t({languageNames:i})},setActivityEndpoint:e=>{t({activityEndpoint:e})},fetchActivity:async e=>{try{const i=await fetch(e);if(!i.ok)return;const o=await i.json();t({activity:o})}catch(t){console.error("Failed to fetch activity:",t)}},updateActivity:e=>{t({activity:e})},updateSimulatorActivity:e=>{t({simulatorActivity:e})},setSimulatorActive:e=>{t({simulatorActive:e})},getCurrentActivity:()=>{const t=e();return t.simulatorActive?t.simulatorActivity:t.activity},getFlowResults:()=>e().flowInfo.results,getResultByKey:t=>e().flowInfo.results.find(e=>e.key===t),getLanguage:()=>{const t=e(),i=t.languageCode;return{name:t.languageNames[i],code:i}},setFeatures:e=>{t({features:e})},clearFlowData:()=>{t({flowDefinition:null,flowInfo:null,issuesByNode:new Map,issuesByAction:new Map,activity:null,simulatorActivity:null,simulatorActive:!1,dirtyDate:null,viewingRevision:!1})},setFlowContents:e=>{t(t=>{var i,o,n,s;const r=e.definition.language;t.flowDefinition={...e.definition,nodes:[...e.definition.nodes||[]]},t.flowInfo=e.info;const a=Md(null===(i=e.info)||void 0===i?void 0:i.issues);t.issuesByNode=a.byNode,t.issuesByAction=a.byAction,t.languageCode=r,t.isTranslating=!1,t.viewingRevision=!1,Ed(t.flowDefinition),Td(t.flowDefinition),(null===(o=t.flowDefinition)||void 0===o?void 0:o.nodes)&&(null===(s=null===(n=t.flowDefinition)||void 0===n?void 0:n._ui)||void 0===s?void 0:s.nodes)&&Dd(t.flowDefinition.nodes,t.flowDefinition._ui.nodes)})},setFlowInfo:e=>{t(t=>{t.flowInfo=e;const i=Md(null==e?void 0:e.issues);t.issuesByNode=i.byNode,t.issuesByAction=i.byAction})},setRevision:e=>{t(t=>{t.flowDefinition.revision=e})},setLanguageCode:e=>{t(t=>{t.languageCode=e,t.isTranslating=t.flowDefinition.language!==e})},expandCanvas:(e,i)=>{t(t=>{const o=Math.max(t.canvasSize.width,e+800),n=Math.max(t.canvasSize.height,i+800);t.canvasSize.width=o,t.canvasSize.height=n})},updateCanvasPositions:e=>{t(t=>{for(const i in e)t.flowDefinition._ui.nodes[i]?t.flowDefinition._ui.nodes[i].position=e[i]:t.flowDefinition._ui.stickies[i]&&(t.flowDefinition._ui.stickies[i].position=e[i]);Dd(t.flowDefinition.nodes,t.flowDefinition._ui.nodes),t.dirtyDate=new Date})},removeNodes:e=>{t(t=>{for(const i of e)delete t.flowDefinition._ui.nodes[i];t.flowDefinition=Cd(t.flowDefinition,t=>{e.forEach(i=>{const o=t.nodes.find(t=>t.uuid===i);if(!o||!o.exits.length)return;const n=o.exits.map(t=>t.destination_uuid).filter(t=>t);if(n.length===o.exits.length&&n.every(t=>t===n[0])){const o=n[0];if(e.includes(o))return;t.nodes.forEach(t=>{t.exits.forEach(t=>{t.destination_uuid===i&&(t.destination_uuid=o)})})}}),t.nodes=t.nodes.filter(t=>!e.includes(t.uuid)),t.nodes.forEach(t=>{t.exits.forEach(t=>{e.includes(t.destination_uuid)&&(t.destination_uuid=null)})}),Dd(t.nodes,t._ui.nodes)}),t.dirtyDate=new Date})},removeStickyNotes:e=>{t(t=>{var i;if(null===(i=t.flowDefinition._ui)||void 0===i?void 0:i.stickies)for(const i of e)delete t.flowDefinition._ui.stickies[i];t.dirtyDate=new Date})},updateNode:(e,i)=>{t(t=>{var o;const n=null===(o=t.flowDefinition)||void 0===o?void 0:o.nodes.find(t=>t.uuid===e);n&&(n.actions=i.actions,n.uuid=i.uuid,n.exits=i.exits,n.router=i.router),t.dirtyDate=new Date})},updateNodeUIConfig:(e,i)=>{t(t=>{if(t.flowDefinition._ui.nodes[e]){void 0!==i.type&&(t.flowDefinition._ui.nodes[e].type=i.type),t.flowDefinition._ui.nodes[e].config||(t.flowDefinition._ui.nodes[e].config={});const{type:o,...n}=i;Object.assign(t.flowDefinition._ui.nodes[e].config,n)}t.dirtyDate=new Date})},updateConnection:(e,i,o)=>{t(t=>{const n=t.flowDefinition.nodes.find(t=>t.uuid===e),s=null==n?void 0:n.exits.find(t=>t.uuid===i);s&&(s.destination_uuid=o,t.dirtyDate=new Date)})},updateStickyNote:(e,i)=>{t(t=>{t.flowDefinition._ui.stickies||(t.flowDefinition._ui.stickies={}),t.flowDefinition._ui.stickies[e]=i,t.dirtyDate=new Date})},createStickyNote:e=>{const i=Kt();return t(t=>{t.flowDefinition._ui.stickies||(t.flowDefinition._ui.stickies={});const o={position:e,title:"",body:"",color:"yellow"};t.flowDefinition._ui.stickies[i]=o,t.dirtyDate=new Date}),i},createNode:(e,i)=>{const o=Kt(),n=Kt();return t(t=>{const s={uuid:o,actions:[],exits:[{uuid:n,destination_uuid:null}]};t.flowDefinition.nodes.push(s),t.flowDefinition._ui.nodes||(t.flowDefinition._ui.nodes={}),t.flowDefinition._ui.nodes[o]={position:i,type:e,config:{}},Dd(t.flowDefinition.nodes,t.flowDefinition._ui.nodes),t.dirtyDate=new Date}),o},addNode:(e,i)=>{t(t=>{t.flowDefinition.nodes.push(e),t.flowDefinition._ui.nodes||(t.flowDefinition._ui.nodes={}),t.flowDefinition._ui.nodes[e.uuid]=i,Dd(t.flowDefinition.nodes,t.flowDefinition._ui.nodes),t.dirtyDate=new Date})},duplicateNodes:i=>{var o,n;const s=e(),r=new Set(i),a={},l=s.flowDefinition._ui.stickies||{};for(const t of i){if(l[t]){a[t]=Kt();continue}const e=s.flowDefinition.nodes.find(e=>e.uuid===t);if(e){a[t]=Kt();for(const t of e.actions)a[t.uuid]=Kt();for(const t of e.exits)a[t.uuid]=Kt();if(e.router){for(const t of e.router.categories)a[t.uuid]=Kt();for(const t of e.router.cases||[])a[t.uuid]=Kt()}}}const d=[],c=[];for(const t of i){if(l[t]){const e=JSON.parse(JSON.stringify(l[t]));c.push({uuid:a[t],sticky:e});continue}const e=s.flowDefinition.nodes.find(e=>e.uuid===t),i=s.flowDefinition._ui.nodes[t];if(!e||!i)continue;const h=JSON.parse(JSON.stringify(e));h.uuid=a[t];for(const t of h.actions)t.uuid=a[t.uuid];for(const t of h.exits)t.uuid=a[t.uuid],t.destination_uuid&&r.has(t.destination_uuid)?t.destination_uuid=a[t.destination_uuid]:t.destination_uuid=null;if(h.router){for(const t of h.router.categories)t.uuid=a[t.uuid],t.exit_uuid=a[t.exit_uuid];if(h.router.cases)for(const t of h.router.cases)t.uuid=a[t.uuid],t.category_uuid=a[t.category_uuid];h.router.default_category_uuid&&(h.router.default_category_uuid=a[h.router.default_category_uuid]),(null===(n=null===(o=h.router.wait)||void 0===o?void 0:o.timeout)||void 0===n?void 0:n.category_uuid)&&(h.router.wait.timeout.category_uuid=a[h.router.wait.timeout.category_uuid])}const u=JSON.parse(JSON.stringify(i));d.push({node:h,ui:u})}const h={},u=s.flowDefinition.localization;if(u)for(const t of Object.keys(u)){const e=u[t];for(const i of Object.keys(a))e[i]&&(h[t]||(h[t]={}),h[t][a[i]]=JSON.parse(JSON.stringify(e[i])))}return t(t=>{for(const{node:e,ui:i}of d)t.flowDefinition.nodes.push(e),t.flowDefinition._ui.nodes[e.uuid]=i;t.flowDefinition._ui.stickies||(t.flowDefinition._ui.stickies={});for(const{uuid:e,sticky:i}of c)t.flowDefinition._ui.stickies[e]=i;for(const e of Object.keys(h)){t.flowDefinition.localization[e]||(t.flowDefinition.localization[e]={});for(const[i,o]of Object.entries(h[e]))t.flowDefinition.localization[e][i]=o}Dd(t.flowDefinition.nodes,t.flowDefinition._ui.nodes)}),a},updateLocalization:(e,i,o)=>{t(t=>{t.flowDefinition.localization||(t.flowDefinition.localization={}),t.flowDefinition.localization[e]||(t.flowDefinition.localization[e]={}),Object.keys(o).length>0?t.flowDefinition.localization[e][i]=o:delete t.flowDefinition.localization[e][i],0===Object.keys(t.flowDefinition.localization[e]).length&&delete t.flowDefinition.localization[e],0===Object.keys(t.flowDefinition.localization).length&&delete t.flowDefinition.localization,t.dirtyDate=new Date})},setTranslationFilters:e=>{t(t=>{var i;if(!(null===(i=t.flowDefinition)||void 0===i?void 0:i._ui))return;const o=t.flowDefinition._ui.translation_filters||{categories:!1},n=!!e.categories;o.categories!==n&&(t.flowDefinition._ui.translation_filters={...o,categories:n},t.dirtyDate=new Date)})},markAutoTranslated:(e,i,o)=>{t(t=>{var n;if(!(null===(n=t.flowDefinition)||void 0===n?void 0:n._ui))return;t.flowDefinition._ui.auto_translations||(t.flowDefinition._ui.auto_translations={}),t.flowDefinition._ui.auto_translations[e]||(t.flowDefinition._ui.auto_translations[e]={});const s=t.flowDefinition._ui.auto_translations[e][i]||[],r=Array.from(new Set([...s,...o||[]]));t.flowDefinition._ui.auto_translations[e][i]=r,t.dirtyDate=new Date})}}))));function Id(t,e){return(i,o)=>{mt()(i,o);const n="connectedCallback",s="disconnectedCallback",r=i[n],a=i[s];i[n]=function(){var i;null!==(i=this._zustandUnsubscribe)&&void 0!==i||(this._zustandUnsubscribe={}),this[o]=e(t.getState()),this._zustandUnsubscribe[o]=t.subscribe(e,t=>{this[o]=t}),r&&r.call(this)},i[s]=function(){var t,e;null===(e=null===(t=this._zustandUnsubscribe)||void 0===t?void 0:t[o])||void 0===e||e.call(t),a&&a.call(this)}}}var Od;!function(t){t.Text="text",t.ExpressionPrefix="prefix",t.Identifier="identifier",t.Paren="paren",t.Operator="operator",t.FunctionName="fn",t.StringLiteral="string",t.NumberLiteral="number",t.Keyword="keyword",t.ContextRef="context-ref",t.Separator="separator",t.Whitespace="ws",t.Arrow="arrow",t.Bracket="bracket",t.EscapedAt="escaped-at"}(Od||(Od={}));const Ld=new Set(["true","false","null"]),Pd=new Set(["+","-","*","/","^","&","=","<",">"]),Rd=t=>t>="0"&&t<="9",Nd=t=>t>="a"&&t<="z"||t>="A"&&t<="Z"||t>="0"&&t<="9"||"_"===t;function Bd(t,e,i){const o=[];let n=0,s=i;const r=(e=0)=>t[n+e],a=(i,n)=>{const s=t.substring(i,n),r=e+i;if(Ld.has(s.toLowerCase()))return void o.push({type:Od.Keyword,text:s,start:r});let a=n;for(;a<t.length&&" "===t[a];)a++;a<t.length&&"("===t[a]?o.push({type:Od.FunctionName,text:s,start:r}):o.push({type:Od.ContextRef,text:s,start:r})};for(;n<t.length;){const i=t[n];if('"'===i){const i=n;for(n++;n<t.length;)if("\\"===t[n]&&n+1<t.length&&'"'===t[n+1])n+=2;else{if('"'===t[n]){n++;break}n++}o.push({type:Od.StringLiteral,text:t.substring(i,n),start:e+i});continue}if(Rd(i)||"."===i&&r(1)&&Rd(r(1))){const i=n;for(;n<t.length&&Rd(t[n]);)n++;if(n<t.length&&"."===t[n]&&n+1<t.length&&Rd(t[n+1]))for(n++;n<t.length&&Rd(t[n]);)n++;o.push({type:Od.NumberLiteral,text:t.substring(i,n),start:e+i});continue}if(Nd(i)&&!Rd(i)){const e=n;for(;n<t.length&&(Nd(t[n])||"."===t[n])&&("."!==t[n]||!(n+1>=t.length)&&Nd(t[n+1]));)n++;a(e,n);continue}if("("!==i)if(")"!==i)if("["!==i&&"]"!==i)if("="!==i||">"!==r(1))if("!"===i&&"="===r(1)||"<"===i&&"="===r(1)||">"===i&&"="===r(1))o.push({type:Od.Operator,text:i+r(1),start:e+n}),n+=2;else if(Pd.has(i))o.push({type:Od.Operator,text:i,start:e+n}),n++;else if(","!==i){if(" "===i||"\t"===i||"\n"===i||"\r"===i){const i=n;for(;n<t.length&&(" "===t[n]||"\t"===t[n]||"\n"===t[n]||"\r"===t[n]);)n++;o.push({type:Od.Whitespace,text:t.substring(i,n),start:e+i});continue}o.push({type:Od.Text,text:i,start:e+n}),n++}else o.push({type:Od.Separator,text:",",start:e+n}),n++;else o.push({type:Od.Arrow,text:"=>",start:e+n}),n+=2;else o.push({type:Od.Bracket,text:i,start:e+n}),n++;else s--,o.push({type:Od.Paren,text:")",start:e+n,depth:Math.max(0,s),balanced:!0}),n++;else o.push({type:Od.Paren,text:"(",start:e+n,depth:s,balanced:!0}),s++,n++}return o}function Fd(t,e){if(!t)return[];const i=e.findExpressions(t),o=[];let n=0;for(const e of i){if(e.start>n){const i=t.substring(n,e.start);let s=0;for(;s<i.length;){const t=i.indexOf("@@",s);if(-1===t){s<i.length&&o.push({type:Od.Text,text:i.substring(s),start:n+s});break}t>s&&o.push({type:Od.Text,text:i.substring(s,t),start:n+s}),o.push({type:Od.EscapedAt,text:"@@",start:n+t}),s=t+2}}const i=e.text;if(o.push({type:Od.ExpressionPrefix,text:"@",start:e.start}),i.length>1&&"("===i[1]){o.push({type:Od.Paren,text:"(",start:e.start+1,depth:0,balanced:e.closed});const t=e.closed&&")"===i[i.length-1],n=t?i.length-1:i.length,s=i.substring(2,n);if(s.length>0){const t=Bd(s,e.start+2,1);o.push(...t)}t&&o.push({type:Od.Paren,text:")",start:e.start+i.length-1,depth:0,balanced:!0}),e.closed||qd(o,e.start)}else o.push({type:Od.Identifier,text:i.substring(1),start:e.start+1});n=e.end}if(n<t.length){const e=t.substring(n);let i=0;for(;i<e.length;){const t=e.indexOf("@@",i);if(-1===t){i<e.length&&o.push({type:Od.Text,text:e.substring(i),start:n+i});break}t>i&&o.push({type:Od.Text,text:e.substring(i,t),start:n+i}),o.push({type:Od.EscapedAt,text:"@@",start:n+t}),i=t+2}}return o}function qd(t,e){for(const i of t)i.type===Od.Paren&&i.start>=e&&"("===i.text&&0===i.depth&&(i.balanced=!1)}const Ud={expression:"#0086e0",fn:"#0086e0",string:"#06a810",number:"#c25ceb",keyword:"#1750eb",operator:"#666",paren:"#999",parenUnmatched:"#ff0011"},jd={[Od.Text]:"tok-text",[Od.ExpressionPrefix]:"tok-prefix",[Od.Identifier]:"tok-id",[Od.FunctionName]:"tok-fn",[Od.StringLiteral]:"tok-str",[Od.NumberLiteral]:"tok-num",[Od.Keyword]:"tok-kw",[Od.Operator]:"tok-op",[Od.ContextRef]:"tok-ctx",[Od.Separator]:"tok-sep",[Od.Whitespace]:"tok-ws",[Od.Arrow]:"tok-arrow",[Od.Bracket]:"tok-bracket",[Od.EscapedAt]:"tok-text",[Od.Paren]:"tok-paren"},Hd=new Set([Od.ExpressionPrefix,Od.Identifier,Od.FunctionName,Od.StringLiteral,Od.NumberLiteral,Od.Keyword,Od.Operator,Od.ContextRef,Od.Separator,Od.Whitespace,Od.Arrow,Od.Bracket,Od.Paren]);function Wd(t){return t.type===Od.Paren&&!1===t.balanced?"tok-paren-unmatched":jd[t.type]||"tok-text"}const Vd=t=>r(Ud[t]),Zd=a`
|
|
617
617
|
.tok-text {
|
|
618
618
|
color: inherit;
|
|
619
619
|
}
|
|
@@ -746,7 +746,7 @@ class ul{constructor(){this.settled=!1,this.promise=new Promise((t,e)=>{this._re
|
|
|
746
746
|
</div>`,qc=(t,e,i)=>{const o=[],n=4===t.length?4:Math.min(3,t.length);for(let s=0;s<n;s++)o.push(Fc(t[s],e,i));if(t.length>3&&4!==t.length){const e=t.length-3;o.push(W`<div style="display:flex;align-items:center;margin-top:0.2em;">
|
|
747
747
|
${i?W`<div style="margin-right:0.4em; width: 1em;"></div>`:null}
|
|
748
748
|
<div style="font-size:0.8em">+${e} more</div>
|
|
749
|
-
</div>`)}return o},Uc=(t,e)=>qc(t,Fo.FlowClicked,e),jc=(t,e)=>qc(t,Fo.GroupClicked,e),Hc=[{scheme:"tel",name:"SMS",path:"Phone Number"},{scheme:"whatsapp",name:"WhatsApp",path:"WhatsApp Number"},{scheme:"facebook",name:"Facebook",path:"Facebook ID"},{scheme:"instagram",name:"Instagram",path:"Instagram ID"},{scheme:"twitterid",name:"Twitter",path:"Twitter ID",excludeFromSplit:!0},{scheme:"telegram",name:"Telegram",path:"Telegram ID"},{scheme:"viber",name:"Viber",path:"Viber ID"},{scheme:"line",name:"Line",path:"Line ID"},{scheme:"wechat",name:"WeChat",path:"WeChat ID"},{scheme:"fcm",name:"Firebase",path:"Firebase ID"},{scheme:"jiochat",name:"JioChat",path:"JioChat ID"},{scheme:"freshchat",name:"Freshchat",path:"Freshchat ID"},{scheme:"mailto",name:"Email",path:"Email Address",excludeFromSplit:!0},{scheme:"twitter",name:"Twitter",path:"Twitter Handle",excludeFromSplit:!0},{scheme:"vk",name:"VK",path:"VK ID"},{scheme:"discord",name:"Discord",path:"Discord ID"},{scheme:"webchat",name:"Webchat",path:"Webchat ID",excludeFromSplit:!0},{scheme:"rocketchat",name:"RocketChat",path:"RocketChat ID"},{scheme:"ext",name:"External",path:"External ID"}],Wc=(t,e,i)=>{const o=i||document.querySelector(`[id="${t}"]`);if(!o)return null;const n=o.offsetWidth,s=o.offsetHeight;return{uuid:t,left:e.left,top:e.top,right:e.left+n,bottom:e.top+s,width:n,height:s}},Vc=(t,e)=>!(t.right<=e.left-10||t.left>=e.right+10||t.bottom<=e.top-10||t.top>=e.bottom+10),Zc=["down","up","right","left"],Yc=(t,e,i)=>({...t,left:e,top:i,right:e+t.width,bottom:i+t.height}),Kc=(t,e,i)=>{switch(i){case"down":{const i=Math.max(...e.map(t=>t.bottom)),o=Mc(i+30);return{left:t.left,top:o}}case"up":{const i=Math.min(...e.map(t=>t.top)),o=Mc(i-t.height-30);return o<0?{left:t.left,top:0}:{left:t.left,top:o}}case"right":{const i=Math.max(...e.map(t=>t.right));return{left:Mc(i+30),top:t.top}}case"left":{const i=Math.min(...e.map(t=>t.left)),o=Mc(i-t.width-30);return o<0?{left:0,top:t.top}:{left:o,top:t.top}}}};function Gc(t,e){if(!e)return t;const i={...t};for(const o of Object.keys(e)){const n=e[o];Array.isArray(n)&&n.length>0&&(Array.isArray(t[o])?i[o]=n:i[o]=n[0])}return i}const{setLocale:Xc}=(t=>(function(t){if(hl)throw new Error("lit-localize can only be configured once");cl=t,hl=!0}((t,e)=>vl(kl,t,e)),Cl=xl=t.sourceLocale,wl=new Set(t.targetLocales),wl.add(t.sourceLocale),_l=t.loadLocale,{getLocale:$l,setLocale:El}))({sourceLocale:"en",targetLocales:Tl,loadLocale:t=>import(`./locales/${t}.js`)}),Qc=()=>document.querySelector("temba-store");class Jc extends Ve{constructor(){super(...arguments),this.settings={},this.ttl=6e4,this.max=20,this.ready=!1,this.loader=!1,this.keyedAssets={},this.locale=[...navigator.languages],this.fields={},this.groups={},this.shortcuts=[],this.languages={},this.featuredFields=[],this.dirtyElements=[],this.pendingResolves={},this.fetching={}}static get styles(){return a`
|
|
749
|
+
</div>`)}return o},Uc=(t,e)=>qc(t,Fo.FlowClicked,e),jc=(t,e)=>qc(t,Fo.GroupClicked,e),Hc=[{scheme:"tel",name:"SMS",path:"Phone Number"},{scheme:"whatsapp",name:"WhatsApp",path:"WhatsApp Number"},{scheme:"facebook",name:"Facebook",path:"Facebook ID"},{scheme:"instagram",name:"Instagram",path:"Instagram ID"},{scheme:"twitterid",name:"Twitter",path:"Twitter ID",excludeFromSplit:!0},{scheme:"telegram",name:"Telegram",path:"Telegram ID"},{scheme:"viber",name:"Viber",path:"Viber ID"},{scheme:"line",name:"Line",path:"Line ID"},{scheme:"wechat",name:"WeChat",path:"WeChat ID"},{scheme:"fcm",name:"Firebase",path:"Firebase ID"},{scheme:"jiochat",name:"JioChat",path:"JioChat ID"},{scheme:"freshchat",name:"Freshchat",path:"Freshchat ID"},{scheme:"mailto",name:"Email",path:"Email Address",excludeFromSplit:!0},{scheme:"twitter",name:"Twitter",path:"Twitter Handle",excludeFromSplit:!0},{scheme:"vk",name:"VK",path:"VK ID"},{scheme:"discord",name:"Discord",path:"Discord ID"},{scheme:"webchat",name:"Webchat",path:"Webchat ID",excludeFromSplit:!0},{scheme:"rocketchat",name:"RocketChat",path:"RocketChat ID"},{scheme:"ext",name:"External",path:"External ID"}],Wc=(t,e,i)=>{const o=i||document.querySelector(`[id="${t}"]`);if(!o)return null;const n=o.offsetWidth,s=o.offsetHeight;return{uuid:t,left:e.left,top:e.top,right:e.left+n,bottom:e.top+s,width:n,height:s}},Vc=(t,e)=>!(t.right<=e.left-10||t.left>=e.right+10||t.bottom<=e.top-10||t.top>=e.bottom+10),Zc=["down","up","right","left"],Yc=(t,e,i)=>({...t,left:e,top:i,right:e+t.width,bottom:i+t.height}),Kc=(t,e,i)=>{switch(i){case"down":{const i=Math.max(...e.map(t=>t.bottom)),o=Mc(i+30);return{left:t.left,top:o}}case"up":{const i=Math.min(...e.map(t=>t.top)),o=Mc(i-t.height-30);return o<0?{left:t.left,top:0}:{left:t.left,top:o}}case"right":{const i=Math.max(...e.map(t=>t.right));return{left:Mc(i+30),top:t.top}}case"left":{const i=Math.min(...e.map(t=>t.left)),o=Mc(i-t.width-30);return o<0?{left:0,top:t.top}:{left:o,top:t.top}}}};function Gc(t,e){if(!e)return t;const i={...t};for(const o of Object.keys(e)){const n=e[o];Array.isArray(n)&&n.length>0&&(Array.isArray(t[o])?i[o]=n:i[o]=n[0])}return i}const{setLocale:Xc}=(t=>(function(t){if(hl)throw new Error("lit-localize can only be configured once");cl=t,hl=!0}((t,e)=>vl(kl,t,e)),Cl=xl=t.sourceLocale,wl=new Set(t.targetLocales),wl.add(t.sourceLocale),_l=t.loadLocale,{getLocale:$l,setLocale:El}))({sourceLocale:"en",targetLocales:Tl,loadLocale:t=>import(`./locales/${t}.js`)}),Qc=()=>document.querySelector("temba-store");class Jc extends Ve{constructor(){super(...arguments),this.settings={},this.ttl=6e4,this.max=20,this.ready=!1,this.loader=!1,this.brand="",this.keyedAssets={},this.locale=[...navigator.languages],this.fields={},this.groups={},this.shortcuts=[],this.languages={},this.featuredFields=[],this.dirtyElements=[],this.pendingResolves={},this.fetching={}}static get styles(){return a`
|
|
750
750
|
:host {
|
|
751
751
|
position: fixed;
|
|
752
752
|
z-index: 1000;
|
|
@@ -757,7 +757,7 @@ class ul{constructor(){this.settled=!1,this.promise=new Promise((t,e)=>{this._re
|
|
|
757
757
|
width: 100%;
|
|
758
758
|
top: 0.5em;
|
|
759
759
|
}
|
|
760
|
-
`}markDirty(t){this.dirtyElements.includes(t)||this.dirtyElements.push(t)}cleanAll(){this.dirtyElements.forEach(t=>t.markClean()),this.dirtyElements=[]}markClean(t){this.dirtyElements=this.dirtyElements.filter(e=>e!==t)}getDirtyMessage(){if(this.dirtyElements.length>0)return this.dirtyElements[0].dirtyMessage||"You have unsaved changes, are you sure you want to continue?"}getLocale(){return this.locale[0]}clearCache(){this.cache=jo(this.max,this.ttl)}reset(){const t=this.getState();this.ready=!1,this.clearCache(),this.settings=JSON.parse($e("settings")||"{}");const e=[];this.completionEndpoint&&e.push(pe(this.completionEndpoint).then(t=>{this.schema=t.json.context,this.fnOptions=t.json.functions})),this.fieldsEndpoint&&e.push(this.refreshFields()),this.globalsEndpoint&&e.push(be(this.globalsEndpoint).then(t=>{this.keyedAssets.globals=t.map(t=>t.key)})),this.languagesEndpoint&&(t.fetchAllLanguages(this.languagesEndpoint),e.push(be(this.languagesEndpoint).then(t=>{this.languages=t.reduce(function(t,e){return t[e.value]=e.name,t},{})}))),this.groupsEndpoint&&e.push(be(this.groupsEndpoint).then(t=>{t.forEach(t=>{this.groups[t.uuid]=t})})),this.workspaceEndpoint&&(t.fetchWorkspace(this.workspaceEndpoint),e.push(pe(this.workspaceEndpoint).then(t=>{this.workspace=t.json;const e=t.headers.get("content-language");e&&(this.locale=[e,...this.locale])}))),this.shortcutsEndpoint&&e.push(this.refreshShortcuts()),this.initialHttpComplete=Promise.all(e),this.initialHttpComplete.then(()=>{this.ready=!0})}getShortcuts(){return this.shortcuts||[]}firstUpdated(){this.reset()}getLanguageCode(){return this.locale.length>0?this.locale[0].split("-")[0]:"en"}async refreshGlobals(){return be(this.globalsEndpoint).then(t=>{this.keyedAssets.globals=t.map(t=>t.key)})}async refreshShortcuts(){return be(this.shortcutsEndpoint).then(t=>{this.shortcuts=t})}async refreshFields(){return be(this.fieldsEndpoint).then(t=>{this.keyedAssets.fields=[],this.featuredFields=[],t.forEach(t=>{this.keyedAssets.fields.push(t.key),this.fields[t.key]=t,t.featured&&this.featuredFields.push(t)}),this.featuredFields.sort((t,e)=>e.priority-t.priority),this.keyedAssets.fields.sort(),this.fireCustomEvent(Fo.StoreUpdated,{url:this.fieldsEndpoint,data:this.keyedAssets.fields})})}shiftAndRound(t,e,i){const o=Math.round(t.shiftTo(e).get(e));return 1==o?`1 ${i}`:`${o} ${e}`}getCountdown(t){const e=t.diff(rl.now()).rescale();return e.months>0?"> 1 month":e.days>1?`~ ${this.shiftAndRound(e,"days","day")}`:e.hours>0?`~ ${this.shiftAndRound(e,"hours","hour")}`:`~ ${this.shiftAndRound(e,"minutes","minute")}`}getShortDuration(t,e=null){const i=e||rl.now();return t.setLocale(this.locale[0]).toRelative({base:i,style:"long"})}getShortDurationFromIso(t,e=null){const i=rl.fromISO(t),o=e?rl.fromISO(e):rl.now();return this.getShortDuration(i,o)}setKeyedAssets(t,e){this.keyedAssets[t]=e}updated(t){if(super.updated(t),t.has("ready")&&this.ready){const t=this.getLanguageCode(),e=Tl.find(e=>e===t);e&&Xc(e)}}getCompletionSchema(){return this.schema}getFunctions(){return this.fnOptions}getKeyedAssets(){return this.keyedAssets}getFieldKeys(){return this.keyedAssets.fields||[]}getContactField(t){return this.fields[t]}getFeaturedFields(){return this.featuredFields}getLanguageName(t){const e=this.languages[t];return e&&"und"!==e&&"und"!==t?e:$c(t)}isDynamicGroup(t){const e=this.groups[t];return!(e&&!e.query)}getWorkspace(){return this.workspace}formatDate(t){return rl.fromISO(t).setLocale(this.getLocale()).toLocaleString(rl.DATETIME_SHORT)}postJSON(t,e=""){return xe(t,e)}postForm(t,e,i={}){return((t,e,i={})=>{const o=new FormData;return Object.keys(e).forEach(t=>{o.append(t,e[t])}),we(t,o,i)})(t,e,i)}postUrl(t,e="",i={},o=null){return ye(t,e,i,o)}getUrl(t,e){return!(e=e||{}).force&&this.cache.has(t)?new Promise(e=>{e(this.cache.get(t))}):pe(t,e.controller,e.headers||{}).then(i=>new Promise((o,n)=>{i.status>=200&&i.status<=300?(e.skipCache||this.cache.set(t,i),o(i)):n("Status: "+i.status)}))}getResults(t,e){e=e||{};const i="results_"+t,o=this.cache.get(i);return!e.force&&o?new Promise(t=>{t(o)}):new Promise(e=>{const o=this.pendingResolves[t]||[];o.push(e),this.pendingResolves[t]=o,o.length<=1&&fe(t).then(e=>{this.cache.set(i,e);const o=this.pendingResolves[t]||[];for(;o.length>0;){o.pop()(e)}})})}updateCache(t,e){this.cache.set(t,e),this.fireCustomEvent(Fo.StoreUpdated,{url:t,data:e})}removeFromCache(t){this.cache.delete(t)}resolveUsers(t,e){return new Promise(i=>{const o=new Set;t.forEach(t=>{e.forEach(e=>{const i=e.split(".");let n=t;for(let t=0;t<i.length&&(n=n[i[t]],n);t++);n&&n.uuid&&o.add(n.uuid)})});const n=[];o.forEach(t=>{n.push(this.getUrl(`/api/v2/users.json?uuid=${encodeURIComponent(t)}`,{force:!0}))}),Promise.all(n).then(o=>{o.forEach(i=>{if(i&&i.json){const o=i.json.results;if(o&&1===o.length){const i=o[0];t.forEach(t=>{e.forEach(e=>{const o=e.split(".");let n=t,s=n;for(let t=0;t<o.length&&(s=n,n=n[o[t]],n);t++);if(n&&n.email===i.email){const t=s[o[o.length-1]];t.avatar=i.avatar,t.name=Ml(i),t.uuid=i.uuid,s[o[o.length-1]].avatar=i.avatar}})})}}}),i()})})}makeRequest(t,e){const i=this.fetching[t],o=(new Date).getTime();if(i)return void setTimeout(()=>{this.makeRequest(t,e)},500);let n=this.cache.get(t);n&&!e.force?(n=e.prepareData?e.prepareData(n):n,this.fireCustomEvent(Fo.StoreUpdated,{url:t,data:n})):(e=e||{},this.fetching[t]=o,fe(t).then(i=>{i?(this.cache.set(t,i),delete this.fetching[t],i=e.prepareData?e.prepareData(i):i,this.fireCustomEvent(Fo.StoreUpdated,{url:t,data:i})):delete this.fetching[t]}))}get(t,e=null){return this.settings[t]||e}set(t,e){this.settings[t]=e}render(){if(!this.ready&&this.loader)return W`<temba-loading size="10" units="8"></temba-loading>`}getCompletions(t){const e=this.getState().flowInfo;return"results"===t?e.results.map(t=>t.key):"locals"===t?e.locals:this.keyedAssets[t]||[]}getApp(){return zd}getState(){return zd.getState()}}t([mt({type:Number})],Jc.prototype,"ttl",void 0),t([mt({type:Number})],Jc.prototype,"max",void 0),t([mt({type:Boolean})],Jc.prototype,"ready",void 0),t([mt({type:Boolean})],Jc.prototype,"loader",void 0),t([mt({type:String,attribute:"completion"})],Jc.prototype,"completionEndpoint",void 0),t([mt({type:String,attribute:"fields"})],Jc.prototype,"fieldsEndpoint",void 0),t([mt({type:String,attribute:"groups"})],Jc.prototype,"groupsEndpoint",void 0),t([mt({type:String,attribute:"globals"})],Jc.prototype,"globalsEndpoint",void 0),t([mt({type:String,attribute:"languages"})],Jc.prototype,"languagesEndpoint",void 0),t([mt({type:String,attribute:"workspace"})],Jc.prototype,"workspaceEndpoint",void 0),t([mt({type:String,attribute:"shortcuts"})],Jc.prototype,"shortcutsEndpoint",void 0),t([mt({type:Object,attribute:!1})],Jc.prototype,"schema",void 0),t([mt({type:Object,attribute:!1})],Jc.prototype,"fnOptions",void 0),t([mt({type:Object,attribute:!1})],Jc.prototype,"keyedAssets",void 0);class th extends Ve{constructor(){super(...arguments),this.marginHorizontal=0,this.marginVertical=7,this.scrollPct=75,this.cursorIndex=-1,this.internalFocusDisabled=!1,this.nameKey="name",this.loading=!1,this.hideShadow=!1,this.getName=function(t){return t[this.nameKey||"name"]},this.renderInputOption=function(){return null},this.scrollHeight=0,this.triggerScroll=!1,this.showEmptyMessage=!1,this.scrollParent=null,this.setCursor=Ce(function(t){this.internalFocusDisabled||t!==this.cursorIndex&&(this.cursorIndex=t)},50)}static get styles(){return a`
|
|
760
|
+
`}markDirty(t){this.dirtyElements.includes(t)||this.dirtyElements.push(t)}cleanAll(){this.dirtyElements.forEach(t=>t.markClean()),this.dirtyElements=[]}markClean(t){this.dirtyElements=this.dirtyElements.filter(e=>e!==t)}getDirtyMessage(){if(this.dirtyElements.length>0)return this.dirtyElements[0].dirtyMessage||"You have unsaved changes, are you sure you want to continue?"}getLocale(){return this.locale[0]}clearCache(){this.cache=jo(this.max,this.ttl)}reset(){const t=this.getState();this.ready=!1,this.clearCache(),this.settings=JSON.parse($e("settings")||"{}"),zd.setState({brand:this.brand});const e=[];this.completionEndpoint&&e.push(pe(this.completionEndpoint).then(t=>{this.schema=t.json.context,this.fnOptions=t.json.functions})),this.fieldsEndpoint&&e.push(this.refreshFields()),this.globalsEndpoint&&e.push(be(this.globalsEndpoint).then(t=>{this.keyedAssets.globals=t.map(t=>t.key)})),this.languagesEndpoint&&(t.fetchAllLanguages(this.languagesEndpoint),e.push(be(this.languagesEndpoint).then(t=>{this.languages=t.reduce(function(t,e){return t[e.value]=e.name,t},{})}))),this.groupsEndpoint&&e.push(be(this.groupsEndpoint).then(t=>{t.forEach(t=>{this.groups[t.uuid]=t})})),this.workspaceEndpoint&&(t.fetchWorkspace(this.workspaceEndpoint),e.push(pe(this.workspaceEndpoint).then(t=>{this.workspace=t.json;const e=t.headers.get("content-language");e&&(this.locale=[e,...this.locale])}))),this.shortcutsEndpoint&&e.push(this.refreshShortcuts()),this.initialHttpComplete=Promise.all(e),this.initialHttpComplete.then(()=>{this.ready=!0})}getShortcuts(){return this.shortcuts||[]}firstUpdated(){this.reset()}getLanguageCode(){return this.locale.length>0?this.locale[0].split("-")[0]:"en"}async refreshGlobals(){return be(this.globalsEndpoint).then(t=>{this.keyedAssets.globals=t.map(t=>t.key)})}async refreshShortcuts(){return be(this.shortcutsEndpoint).then(t=>{this.shortcuts=t})}async refreshFields(){return be(this.fieldsEndpoint).then(t=>{this.keyedAssets.fields=[],this.featuredFields=[],t.forEach(t=>{this.keyedAssets.fields.push(t.key),this.fields[t.key]=t,t.featured&&this.featuredFields.push(t)}),this.featuredFields.sort((t,e)=>e.priority-t.priority),this.keyedAssets.fields.sort(),this.fireCustomEvent(Fo.StoreUpdated,{url:this.fieldsEndpoint,data:this.keyedAssets.fields})})}shiftAndRound(t,e,i){const o=Math.round(t.shiftTo(e).get(e));return 1==o?`1 ${i}`:`${o} ${e}`}getCountdown(t){const e=t.diff(rl.now()).rescale();return e.months>0?"> 1 month":e.days>1?`~ ${this.shiftAndRound(e,"days","day")}`:e.hours>0?`~ ${this.shiftAndRound(e,"hours","hour")}`:`~ ${this.shiftAndRound(e,"minutes","minute")}`}getShortDuration(t,e=null){const i=e||rl.now();return t.setLocale(this.locale[0]).toRelative({base:i,style:"long"})}getShortDurationFromIso(t,e=null){const i=rl.fromISO(t),o=e?rl.fromISO(e):rl.now();return this.getShortDuration(i,o)}setKeyedAssets(t,e){this.keyedAssets[t]=e}updated(t){if(super.updated(t),t.has("ready")&&this.ready){const t=this.getLanguageCode(),e=Tl.find(e=>e===t);e&&Xc(e)}}getCompletionSchema(){return this.schema}getFunctions(){return this.fnOptions}getKeyedAssets(){return this.keyedAssets}getFieldKeys(){return this.keyedAssets.fields||[]}getContactField(t){return this.fields[t]}getFeaturedFields(){return this.featuredFields}getLanguageName(t){const e=this.languages[t];return e&&"und"!==e&&"und"!==t?e:$c(t)}isDynamicGroup(t){const e=this.groups[t];return!(e&&!e.query)}getWorkspace(){return this.workspace}formatDate(t){return rl.fromISO(t).setLocale(this.getLocale()).toLocaleString(rl.DATETIME_SHORT)}postJSON(t,e=""){return xe(t,e)}postForm(t,e,i={}){return((t,e,i={})=>{const o=new FormData;return Object.keys(e).forEach(t=>{o.append(t,e[t])}),we(t,o,i)})(t,e,i)}postUrl(t,e="",i={},o=null){return ye(t,e,i,o)}getUrl(t,e){return!(e=e||{}).force&&this.cache.has(t)?new Promise(e=>{e(this.cache.get(t))}):pe(t,e.controller,e.headers||{}).then(i=>new Promise((o,n)=>{i.status>=200&&i.status<=300?(e.skipCache||this.cache.set(t,i),o(i)):n("Status: "+i.status)}))}getResults(t,e){e=e||{};const i="results_"+t,o=this.cache.get(i);return!e.force&&o?new Promise(t=>{t(o)}):new Promise(e=>{const o=this.pendingResolves[t]||[];o.push(e),this.pendingResolves[t]=o,o.length<=1&&fe(t).then(e=>{this.cache.set(i,e);const o=this.pendingResolves[t]||[];for(;o.length>0;){o.pop()(e)}})})}updateCache(t,e){this.cache.set(t,e),this.fireCustomEvent(Fo.StoreUpdated,{url:t,data:e})}removeFromCache(t){this.cache.delete(t)}resolveUsers(t,e){return new Promise(i=>{const o=new Set;t.forEach(t=>{e.forEach(e=>{const i=e.split(".");let n=t;for(let t=0;t<i.length&&(n=n[i[t]],n);t++);n&&n.uuid&&o.add(n.uuid)})});const n=[];o.forEach(t=>{n.push(this.getUrl(`/api/v2/users.json?uuid=${encodeURIComponent(t)}`,{force:!0}))}),Promise.all(n).then(o=>{o.forEach(i=>{if(i&&i.json){const o=i.json.results;if(o&&1===o.length){const i=o[0];t.forEach(t=>{e.forEach(e=>{const o=e.split(".");let n=t,s=n;for(let t=0;t<o.length&&(s=n,n=n[o[t]],n);t++);if(n&&n.email===i.email){const t=s[o[o.length-1]];t.avatar=i.avatar,t.name=Ml(i),t.uuid=i.uuid,s[o[o.length-1]].avatar=i.avatar}})})}}}),i()})})}makeRequest(t,e){const i=this.fetching[t],o=(new Date).getTime();if(i)return void setTimeout(()=>{this.makeRequest(t,e)},500);let n=this.cache.get(t);n&&!e.force?(n=e.prepareData?e.prepareData(n):n,this.fireCustomEvent(Fo.StoreUpdated,{url:t,data:n})):(e=e||{},this.fetching[t]=o,fe(t).then(i=>{i?(this.cache.set(t,i),delete this.fetching[t],i=e.prepareData?e.prepareData(i):i,this.fireCustomEvent(Fo.StoreUpdated,{url:t,data:i})):delete this.fetching[t]}))}get(t,e=null){return this.settings[t]||e}set(t,e){this.settings[t]=e}render(){if(!this.ready&&this.loader)return W`<temba-loading size="10" units="8"></temba-loading>`}getCompletions(t){const e=this.getState().flowInfo;return"results"===t?e.results.map(t=>t.key):"locals"===t?e.locals:this.keyedAssets[t]||[]}getApp(){return zd}getState(){return zd.getState()}}t([mt({type:Number})],Jc.prototype,"ttl",void 0),t([mt({type:Number})],Jc.prototype,"max",void 0),t([mt({type:Boolean})],Jc.prototype,"ready",void 0),t([mt({type:Boolean})],Jc.prototype,"loader",void 0),t([mt({type:String,attribute:"completion"})],Jc.prototype,"completionEndpoint",void 0),t([mt({type:String,attribute:"fields"})],Jc.prototype,"fieldsEndpoint",void 0),t([mt({type:String,attribute:"groups"})],Jc.prototype,"groupsEndpoint",void 0),t([mt({type:String,attribute:"globals"})],Jc.prototype,"globalsEndpoint",void 0),t([mt({type:String,attribute:"languages"})],Jc.prototype,"languagesEndpoint",void 0),t([mt({type:String,attribute:"workspace"})],Jc.prototype,"workspaceEndpoint",void 0),t([mt({type:String,attribute:"shortcuts"})],Jc.prototype,"shortcutsEndpoint",void 0),t([mt({type:String})],Jc.prototype,"brand",void 0),t([mt({type:Object,attribute:!1})],Jc.prototype,"schema",void 0),t([mt({type:Object,attribute:!1})],Jc.prototype,"fnOptions",void 0),t([mt({type:Object,attribute:!1})],Jc.prototype,"keyedAssets",void 0);class th extends Ve{constructor(){super(...arguments),this.marginHorizontal=0,this.marginVertical=7,this.scrollPct=75,this.cursorIndex=-1,this.internalFocusDisabled=!1,this.nameKey="name",this.loading=!1,this.hideShadow=!1,this.getName=function(t){return t[this.nameKey||"name"]},this.renderInputOption=function(){return null},this.scrollHeight=0,this.triggerScroll=!1,this.showEmptyMessage=!1,this.scrollParent=null,this.setCursor=Ce(function(t){this.internalFocusDisabled||t!==this.cursorIndex&&(this.cursorIndex=t)},50)}static get styles(){return a`
|
|
761
761
|
:host {
|
|
762
762
|
--transition-speed: 0;
|
|
763
763
|
}
|
|
@@ -1846,10 +1846,7 @@ class ul{constructor(){this.settled=!1,this.promise=new Promise((t,e)=>{this._re
|
|
|
1846
1846
|
}
|
|
1847
1847
|
|
|
1848
1848
|
.dialog-footer {
|
|
1849
|
-
background: var(
|
|
1850
|
-
--dialog-footer-background,
|
|
1851
|
-
var(--color-primary-light)
|
|
1852
|
-
);
|
|
1849
|
+
background: var(--dialog-footer-background, var(--color-primary-light));
|
|
1853
1850
|
padding: var(--dialog-footer-padding-top, 10px) 10px 10px;
|
|
1854
1851
|
display: flex;
|
|
1855
1852
|
flex-flow: row;
|
|
@@ -8879,8 +8876,8 @@ background: #ccc;
|
|
|
8879
8876
|
${this.renderUploader()}
|
|
8880
8877
|
</div>
|
|
8881
8878
|
</div>
|
|
8882
|
-
</div>`}}t([mt({type:String,attribute:!1})],rp.prototype,"endpoint",void 0),t([mt({type:Boolean})],rp.prototype,"pendingDrop",void 0),t([mt({type:Boolean})],rp.prototype,"ignoreDrops",void 0),t([mt({type:String})],rp.prototype,"icon",void 0),t([mt({type:String})],rp.prototype,"accept",void 0),t([mt({type:Number})],rp.prototype,"max",void 0),t([mt({type:Array})],rp.prototype,"attachments",void 0),t([mt({type:Boolean,attribute:!1})],rp.prototype,"uploading",void 0);let ap="dev";try{ap="0.156.
|
|
8883
|
-
${Lc(e.value,!0)}`,`Set ${e.field.name} to ${e.value}`):Pc(W`Clear <strong>${e.field.name}</strong>`,`Clear ${e.field.name}`),form:{field:{type:"select",label:"Field",required:!0,searchable:!0,clearable:!1,placeholder:"Search for contact fields...",nameKey:"name",valueKey:"key",endpoint:"/api/v2/fields.json",helpText:"Select the contact field to update",allowCreate:!0,createArbitraryOption:t=>({key:t,name:t,type:"text"})},value:{type:"textarea",label:"Value",placeholder:"Enter field value...",evaluated:!0,helpText:"The new value for the contact field. You can use expressions like @contact.name"}},toFormData:t=>({uuid:t.uuid,field:t.field?[t.field]:null,value:t.value}),fromFormData:t=>{const e=t.field[0];return{uuid:t.uuid,type:"set_contact_field",field:{name:e.name,key:e.key},value:t.value}},sanitize:t=>{t.value&&"string"==typeof t.value&&(t.value=t.value.trim())}},
|
|
8879
|
+
</div>`}}t([mt({type:String,attribute:!1})],rp.prototype,"endpoint",void 0),t([mt({type:Boolean})],rp.prototype,"pendingDrop",void 0),t([mt({type:Boolean})],rp.prototype,"ignoreDrops",void 0),t([mt({type:String})],rp.prototype,"icon",void 0),t([mt({type:String})],rp.prototype,"accept",void 0),t([mt({type:Number})],rp.prototype,"max",void 0),t([mt({type:Array})],rp.prototype,"attachments",void 0),t([mt({type:Boolean,attribute:!1})],rp.prototype,"uploading",void 0);let ap="dev";try{ap="0.156.16"}catch(t){}const lp=ap,dp="message",cp="voice",hp="background",up={[dp]:[{type:"send_msg",name:"Send Message",icon:"send"},{type:"wait_for_response",name:"Wait for Response",icon:"message"}],[cp]:[{type:"say_msg",name:"Say Message",icon:"recording"},{type:"wait_for_menu",name:"Wait for Menu",icon:"dots-grid"}],[hp]:[{type:"set_contact_field",name:"Update Contact",icon:"contact"}]},pp="ai",mp="airtime",gp={send:"send",contacts:"contacts",save:"save",services:"services",broadcast:"broadcast",trigger:"trigger"},fp={wait:"wait",split:"split"},vp={[gp.send]:{color:"#3498db",title:"Send",description:"Actions that send messages or content to contacts"},[gp.contacts]:{color:"#01c1af",title:"Contact",description:"Actions that update contact information"},[gp.save]:{color:"#1a777c",title:"Save",description:"Actions that save or store data"},[gp.services]:{color:"#f79035ff",title:"Services",description:"Call external services and APIs"},[gp.broadcast]:{color:"#8e5ea7",title:"Other People",description:"Actions that apply to others instead of the contact"},[gp.trigger]:{color:"#df419f",title:"Trigger",description:"Actions that trigger other behavior"}},bp={[fp.wait]:{color:"#4d7dad",title:"Wait",description:"Wait for user and split on their response"},[fp.split]:{color:"#aaaaaa",title:"Split",description:"Split the flow based on conditions"}},yp={name:"Add Input Labels",group:gp.save,flowTypes:[cp,dp,hp],render:(t,e)=>{return W`<div>${i=e.labels,o="label",Nc(i.map(t=>t.name),o)}</div>`;var i,o},toFormData:t=>({labels:t.labels||null,uuid:t.uuid}),form:{labels:{type:"select",label:"Labels",helpText:"Select labels to add to the input. Type a new label name to create it.",required:!0,options:[],multi:!0,searchable:!0,endpoint:"/api/v2/labels.json",valueKey:"uuid",nameKey:"name",placeholder:"Search for labels or type to create new ones...",allowCreate:!0,createArbitraryOption:(t,e)=>!e.find(e=>e.name.toLowerCase().trim()===t.toLowerCase().trim())&&t.trim()?{name:t.trim(),arbitrary:!0}:null}},fromFormData:t=>({uuid:t.uuid,type:"add_input_labels",labels:(t.labels||[]).map(t=>({uuid:t.uuid,name:t.name}))})},xp={name:"Add URN",group:gp.contacts,flowTypes:[cp,dp,hp],render:(t,e)=>{const i=Hc.find(t=>t.scheme===e.scheme),o=(null==i?void 0:i.path)||e.scheme;return Pc(W`Add ${o} ${Lc(e.path,!0)}`,`Add ${o} ${e.path}`)},toFormData:t=>{const e=Hc.find(e=>e.scheme===t.scheme);return{uuid:t.uuid,scheme:e?[{name:e.path,value:t.scheme}]:null,path:t.path||""}},fromFormData:t=>{const e=Array.isArray(t.scheme)&&t.scheme.length>0?t.scheme[0].value:"tel";return{uuid:t.uuid,type:"add_contact_urn",scheme:e,path:t.path||""}},form:{scheme:{type:"select",label:"URN Type",helpText:"Select the type of URN to add to the contact",required:!0,searchable:!1,multi:!1,options:Hc.map(t=>({name:t.path,value:t.scheme}))},path:{type:"text",label:"URN Value",helpText:"Enter the URN value (e.g., phone number, Facebook ID, etc.)",required:!0,placeholder:"Enter the URN value...",evaluated:!0}},validate:t=>{const e={};return t.scheme&&0!==t.scheme.length||(e.scheme="URN type is required"),t.path&&""!==t.path.trim()||(e.path="URN value is required"),{valid:0===Object.keys(e).length,errors:e}}},wp={name:"Update Field",group:gp.contacts,flowTypes:[cp,dp,hp],render:(t,e)=>e.value?Pc(W`Set <strong>${e.field.name}</strong> to
|
|
8880
|
+
${Lc(e.value,!0)}`,`Set ${e.field.name} to ${e.value}`):Pc(W`Clear <strong>${e.field.name}</strong>`,`Clear ${e.field.name}`),form:{field:{type:"select",label:"Field",required:!0,searchable:!0,clearable:!1,placeholder:"Search for contact fields...",nameKey:"name",valueKey:"key",endpoint:"/api/v2/fields.json",helpText:"Select the contact field to update",allowCreate:!0,createArbitraryOption:t=>({key:t,name:t,type:"text"})},value:{type:"textarea",label:"Value",placeholder:"Enter field value...",evaluated:!0,helpText:"The new value for the contact field. You can use expressions like @contact.name"}},toFormData:t=>({uuid:t.uuid,field:t.field?[t.field]:null,value:t.value}),fromFormData:t=>{const e=t.field[0];return{uuid:t.uuid,type:"set_contact_field",field:{name:e.name,key:e.key},value:t.value}},sanitize:t=>{t.value&&"string"==typeof t.value&&(t.value=t.value.trim())}},_p={name:"Update Channel",group:gp.contacts,flowTypes:[cp,dp,hp],render:(t,e)=>Pc(W`Set to <strong>${e.channel.name}</strong>`,`Set to ${e.channel.name}`),form:{channel:{type:"select",label:"Channel",required:!0,searchable:!0,clearable:!1,endpoint:"/api/v2/channels.json",valueKey:"uuid",nameKey:"name",placeholder:"Select channel",helpText:"Select the channel to set for the contact"}},toFormData:t=>({uuid:t.uuid,channel:t.channel?[t.channel]:null}),fromFormData:t=>{var e;const i=null===(e=t.channel)||void 0===e?void 0:e[0];return{uuid:t.uuid,type:"set_contact_channel",channel:{uuid:i.uuid||i.value,name:i.name}}}},kp={name:"Update Language",group:gp.contacts,flowTypes:[cp,dp,hp],render:(t,e)=>{const i=$c(e.language);return Pc(W`Set to <strong>${i}</strong>`,`Set to ${i}`)},form:{language:{type:"select",label:"Language",required:!0,searchable:!0,clearable:!1,valueKey:"value",nameKey:"name",helpText:"Select the language to set for the contact",getDynamicOptions:()=>{const t=Qc(),e=null==t?void 0:t.getState().workspace;return(null==e?void 0:e.languages)&&Array.isArray(e.languages)?e.languages.map(t=>({value:t,name:$c(t)})):[]}}},toFormData:t=>t.language?{language:[{value:t.language,name:$c(t.language)}],uuid:t.uuid}:{language:null,uuid:t.uuid},fromFormData:t=>({uuid:t.uuid,type:"set_contact_language",language:t.language[0].value}),validate:t=>{const e={};return t.language||(e.language="Language is required"),{valid:0===Object.keys(e).length,errors:e}}},Cp={name:"Update Status",group:gp.contacts,flowTypes:[cp,dp,hp],render:(t,e)=>Pc(W`Set to <strong>${je(e.status)}</strong>`,`Set to ${je(e.status)}`),toFormData:t=>({uuid:t.uuid,status:[{name:je(t.status||"active"),value:t.status||"active"}]}),fromFormData:t=>({status:t.status[0].value,type:"set_contact_status",uuid:t.uuid}),form:{status:{type:"select",label:"Status",required:!0,searchable:!1,clearable:!1,options:[{value:"active",name:"Active"},{value:"archived",name:"Archived"},{value:"stopped",name:"Stopped"},{value:"blocked",name:"Blocked"}],helpText:"Select the status to set for the contact"}}},Sp={name:"Send Broadcast",group:gp.broadcast,flowTypes:[cp,dp,hp],render:(t,e)=>{const i=[...(e.groups||[]).map(t=>({name:t.name,icon:Do.group,uuid:t.uuid,eventType:Fo.GroupClicked})),...(e.contacts||[]).map(t=>({name:t.name,icon:Do.contacts,uuid:t.uuid,eventType:Fo.ContactClicked})),...(e.legacy_vars||[]).map(t=>({name:t,icon:Do.contacts,content:Lc(t,!0)}))];return W`<div>
|
|
8884
8881
|
<div>${Bc(i)}</div>
|
|
8885
8882
|
<div style="margin-top: 0.5em">
|
|
8886
8883
|
${e.template?W`<div
|
|
@@ -8894,8 +8891,8 @@ background: #ccc;
|
|
|
8894
8891
|
</div>`:null}
|
|
8895
8892
|
${Pc(Lc(e.text,!0),e.text)}
|
|
8896
8893
|
</div>
|
|
8897
|
-
</div>`},form:{recipients:{type:"select",label:"Recipients",helpText:"Select the contacts or groups to receive the broadcast",multi:!0,searchable:!0,endpoint:"/contact/omnibox/?types=gc",queryParam:"search",valueKey:"id",nameKey:"name",placeholder:"Search for contacts or groups...",required:!0,expressions:"session"},text:{type:"message-editor",label:"Message",helpText:"Enter the message to send with optional attachments. You can use expressions like @contact.name",required:!0,evaluated:!0,placeholder:"Type your message here...",maxLength:640,maxAttachments:10,accept:"",endpoint:"/api/v2/media.json",counter:"temba-charcount",gsm:!0,autogrow:!0},template:{type:"template-editor",endpoint:"/api/internal/templates.json"}},layout:["recipients","text",{type:"accordion",sections:[{label:"WhatsApp Template",collapsed:!0,localizable:!1,getValueCount:t=>!!t.template,items:["template"]}]}],toFormData:t=>({uuid:t.uuid,recipients:[...(t.contacts||[]).map(t=>({id:t.uuid,name:t.name,type:"contact"})),...(t.groups||[]).map(t=>({id:t.uuid,name:t.name,type:"group"})),...(t.legacy_vars||[]).map(t=>({id:t,name:t,type:"expression"}))],text:t.text||"",attachments:t.attachments||[],template:t.template||null,template_variables:t.template_variables||[]}),fromFormData:t=>{const e=t.recipients||[],i=e.filter(t=>"contact"===t.type||!t.type&&!t.expression&&t.id).map(t=>({uuid:t.id,name:t.name})),o=e.filter(t=>"group"===t.type).map(t=>({uuid:t.id,name:t.name})),n=e.filter(t=>"expression"===t.type||t.expression).map(t=>t.value||t.name||t.id),s={uuid:t.uuid,type:"send_broadcast",text:t.text||"",contacts:i,groups:o,attachments:t.attachments||[]};return n.length>0&&(s.legacy_vars=n),0===s.attachments.length&&delete s.attachments,t.template&&(s.template=t.template,s.template_variables=t.template_variables||[]),s},sanitize:t=>{t.text&&"string"==typeof t.text&&(t.text=t.text.trim())},localizable:["text","attachments"],toLocalizationFormData:(t,e)=>{const i={uuid:t.uuid};return e.text&&Array.isArray(e.text)?i.text=e.text[0]||"":i.text="",e.attachments&&Array.isArray(e.attachments)?i.attachments=e.attachments:i.attachments=[],i},fromLocalizationFormData:(t,e)=>{const i={};t.text&&""!==t.text.trim()&&t.text!==e.text&&(i.text=[t.text]);const o=(t.attachments||[]).filter(t=>t&&""!==t.trim());return o.length>0&&JSON.stringify(o)!==JSON.stringify(e.attachments||[])&&(i.attachments=o),i}}
|
|
8898
|
-
${Lc(e.value,!0)}`,`Set ${e.name} to ${e.value}`),form:{name:{type:"select",label:"Result Name",helpText:"Select an existing result name or type a new one",required:!0,placeholder:"Select or enter result name...",createArbitraryOption:(t,e)=>!e.some(e=>e.value.toLowerCase()===t.toLowerCase()||e.name.toLowerCase()===t.toLowerCase())&&t.trim().length>0?{value:t,name:t}:null,searchable:!0,clearable:!1,getDynamicOptions:()=>{const t=Qc();return t?t.getState().getFlowResults().map(t=>({value:t.name,name:t.name})):[]}},value:{type:"textarea",label:"Value",helpText:"The value to save for this result (can use expressions)",required:!1,evaluated:!0,placeholder:"Enter value..."},category:{type:"text",label:"Category",helpText:"Optional category for this result",required:!1,maxLength:36,placeholder:"Enter category..."}},layout:["name","value","category"],toFormData:t=>({uuid:t.uuid,name:t.name?[{name:t.name,value:t.name}]:null,value:t.value||"",category:t.category||""}),fromFormData:t=>{let e=t.name||"";return Array.isArray(e)&&e.length>0&&(e=e[0]),"object"==typeof e&&e.value&&(e=e.value),"object"==typeof e&&e.name&&(e=e.name),{uuid:t.uuid,type:"set_run_result",name:String(e),value:t.value||"",category:t.category||""}}}
|
|
8894
|
+
</div>`},form:{recipients:{type:"select",label:"Recipients",helpText:"Select the contacts or groups to receive the broadcast",multi:!0,searchable:!0,endpoint:"/contact/omnibox/?types=gc",queryParam:"search",valueKey:"id",nameKey:"name",placeholder:"Search for contacts or groups...",required:!0,expressions:"session"},text:{type:"message-editor",label:"Message",helpText:"Enter the message to send with optional attachments. You can use expressions like @contact.name",required:!0,evaluated:!0,placeholder:"Type your message here...",maxLength:640,maxAttachments:10,accept:"",endpoint:"/api/v2/media.json",counter:"temba-charcount",gsm:!0,autogrow:!0},template:{type:"template-editor",endpoint:"/api/internal/templates.json"}},layout:["recipients","text",{type:"accordion",sections:[{label:"WhatsApp Template",collapsed:!0,localizable:!1,getValueCount:t=>!!t.template,items:["template"]}]}],toFormData:t=>({uuid:t.uuid,recipients:[...(t.contacts||[]).map(t=>({id:t.uuid,name:t.name,type:"contact"})),...(t.groups||[]).map(t=>({id:t.uuid,name:t.name,type:"group"})),...(t.legacy_vars||[]).map(t=>({id:t,name:t,type:"expression"}))],text:t.text||"",attachments:t.attachments||[],template:t.template||null,template_variables:t.template_variables||[]}),fromFormData:t=>{const e=t.recipients||[],i=e.filter(t=>"contact"===t.type||!t.type&&!t.expression&&t.id).map(t=>({uuid:t.id,name:t.name})),o=e.filter(t=>"group"===t.type).map(t=>({uuid:t.id,name:t.name})),n=e.filter(t=>"expression"===t.type||t.expression).map(t=>t.value||t.name||t.id),s={uuid:t.uuid,type:"send_broadcast",text:t.text||"",contacts:i,groups:o,attachments:t.attachments||[]};return n.length>0&&(s.legacy_vars=n),0===s.attachments.length&&delete s.attachments,t.template&&(s.template=t.template,s.template_variables=t.template_variables||[]),s},sanitize:t=>{t.text&&"string"==typeof t.text&&(t.text=t.text.trim())},localizable:["text","attachments"],toLocalizationFormData:(t,e)=>{const i={uuid:t.uuid};return e.text&&Array.isArray(e.text)?i.text=e.text[0]||"":i.text="",e.attachments&&Array.isArray(e.attachments)?i.attachments=e.attachments:i.attachments=[],i},fromLocalizationFormData:(t,e)=>{const i={};t.text&&""!==t.text.trim()&&t.text!==e.text&&(i.text=[t.text]);const o=(t.attachments||[]).filter(t=>t&&""!==t.trim());return o.length>0&&JSON.stringify(o)!==JSON.stringify(e.attachments||[])&&(i.attachments=o),i}},Ap={name:"Save Flow Result",group:gp.save,flowTypes:[cp,dp,hp],render:(t,e)=>Pc(W`Set <strong>${e.name}</strong> to
|
|
8895
|
+
${Lc(e.value,!0)}`,`Set ${e.name} to ${e.value}`),form:{name:{type:"select",label:"Result Name",helpText:"Select an existing result name or type a new one",required:!0,placeholder:"Select or enter result name...",createArbitraryOption:(t,e)=>!e.some(e=>e.value.toLowerCase()===t.toLowerCase()||e.name.toLowerCase()===t.toLowerCase())&&t.trim().length>0?{value:t,name:t}:null,searchable:!0,clearable:!1,getDynamicOptions:()=>{const t=Qc();return t?t.getState().getFlowResults().map(t=>({value:t.name,name:t.name})):[]}},value:{type:"textarea",label:"Value",helpText:"The value to save for this result (can use expressions)",required:!1,evaluated:!0,placeholder:"Enter value..."},category:{type:"text",label:"Category",helpText:"Optional category for this result",required:!1,maxLength:36,placeholder:"Enter category..."}},layout:["name","value","category"],toFormData:t=>({uuid:t.uuid,name:t.name?[{name:t.name,value:t.name}]:null,value:t.value||"",category:t.category||""}),fromFormData:t=>{let e=t.name||"";return Array.isArray(e)&&e.length>0&&(e=e[0]),"object"==typeof e&&e.value&&(e=e.value),"object"==typeof e&&e.name&&(e=e.name),{uuid:t.uuid,type:"set_run_result",name:String(e),value:t.value||"",category:t.category||""}}},$p={image:"Image",audio:"Audio",video:"Video",application:"Document"},Ep={name:"Send Message",group:gp.send,flowTypes:[cp,dp,hp],hideFromActions:!0,render:(t,e)=>{var i;const o=Ah(e.text);return W`
|
|
8899
8896
|
${e.template?W`<div
|
|
8900
8897
|
style="border: 1px solid #7dc8bc;padding: 0.5em;margin-bottom: 0.5em;border-radius: 4px; display:flex;align-items: flex-start;background: #f0faf7;color: #128C7E;font-size: 0.85em;"
|
|
8901
8898
|
>
|
|
@@ -8915,26 +8912,26 @@ background: #ccc;
|
|
|
8915
8912
|
${(null===(i=e.quick_replies||[])||void 0===i?void 0:i.length)>0?W`<div class="quick-replies">
|
|
8916
8913
|
${(e.quick_replies||[]).map(t=>W`<div class="quick-reply">${t}</div>`)}
|
|
8917
8914
|
</div>`:null}
|
|
8918
|
-
`},form:{text:{type:"message-editor",label:"Message",helpText:"Enter the message to send with optional attachments. You can use expressions like @contact.name",required:!0,evaluated:!0,placeholder:"Type your message here...",maxLength:1e4,maxAttachments:10,accept:"",endpoint:"/api/v2/media.json",counter:"temba-charcount",gsm:!0,autogrow:!0},quick_replies:{type:"select",options:[],multi:!0,tags:!0,searchable:!0,placeholder:"Add quick replies...",maxItems:10,evaluated:!0},template:{type:"template-editor",endpoint:"/api/internal/templates.json"},runtime_attachments:{type:"array",itemLabel:"Attachment",sortable:!0,maxItems:10,isEmptyItem:t=>!t.expression||""===t.expression.trim(),itemConfig:{type:{type:"select",width:"140px",options:[{value:"image",name:"Image"},{value:"audio",name:"Audio"},{value:"video",name:"Video"},{value:"application",name:"Document"}],required:!0,searchable:!1},expression:{type:"text",placeholder:"Expression (e.g. @contact.photo)",required:!0,evaluated:!0}}}},layout:["text",{type:"accordion",sections:[{label:"Quick Replies",collapsed:!0,getValueCount:t=>{var e;return(null===(e=t.quick_replies)||void 0===e?void 0:e.length)||0},items:["quick_replies"]},{label:"WhatsApp Template",collapsed:!0,localizable:!1,getValueCount:t=>!!t.template,items:["template"]},{label:"Runtime Attachments",collapsed:!0,getValueCount:t=>{var e;return(null===(e=t.runtime_attachments)||void 0===e?void 0:e.filter(t=>t&&t.expression&&""!==t.expression.trim()).length)||0},items:["runtime_attachments"]}]}],toFormData:t=>{const e=[],i=[];return t.attachments&&Array.isArray(t.attachments)&&t.attachments.forEach(t=>{if("string"==typeof t&&t.includes(":")){const o=t.indexOf(":"),n=t.substring(0,o),s=t.substring(o+1);n.includes("/")?i.push(t):e.push({type:{name
|
|
8915
|
+
`},form:{text:{type:"message-editor",label:"Message",helpText:"Enter the message to send with optional attachments. You can use expressions like @contact.name",required:!0,evaluated:!0,placeholder:"Type your message here...",maxLength:1e4,maxAttachments:10,accept:"",endpoint:"/api/v2/media.json",counter:"temba-charcount",gsm:!0,autogrow:!0},quick_replies:{type:"select",options:[],multi:!0,tags:!0,searchable:!0,placeholder:"Add quick replies...",maxItems:10,evaluated:!0},template:{type:"template-editor",endpoint:"/api/internal/templates.json"},runtime_attachments:{type:"array",itemLabel:"Attachment",sortable:!0,maxItems:10,isEmptyItem:t=>!t.expression||""===t.expression.trim(),itemConfig:{type:{type:"select",width:"140px",options:[{value:"image",name:"Image"},{value:"audio",name:"Audio"},{value:"video",name:"Video"},{value:"application",name:"Document"}],required:!0,searchable:!1},expression:{type:"text",placeholder:"Expression (e.g. @contact.photo)",required:!0,evaluated:!0}}}},layout:["text",{type:"accordion",sections:[{label:"Quick Replies",collapsed:!0,getValueCount:t=>{var e;return(null===(e=t.quick_replies)||void 0===e?void 0:e.length)||0},items:["quick_replies"]},{label:"WhatsApp Template",collapsed:!0,localizable:!1,getValueCount:t=>!!t.template,items:["template"]},{label:"Runtime Attachments",collapsed:!0,getValueCount:t=>{var e;return(null===(e=t.runtime_attachments)||void 0===e?void 0:e.filter(t=>t&&t.expression&&""!==t.expression.trim()).length)||0},items:["runtime_attachments"]}]}],toFormData:t=>{const e=[],i=[];return t.attachments&&Array.isArray(t.attachments)&&t.attachments.forEach(t=>{if("string"==typeof t&&t.includes(":")){const o=t.indexOf(":"),n=t.substring(0,o),s=t.substring(o+1);n.includes("/")?i.push(t):e.push({type:{name:$p[n]||je(n),value:n},expression:s})}}),{uuid:t.uuid,text:t.text||"",attachments:i,runtime_attachments:e,quick_replies:(t.quick_replies||[]).map(t=>({name:t,value:t})),template:t.template||null,template_variables:t.template_variables||[]}},fromFormData:t=>{const e={uuid:t.uuid,type:"send_msg",text:t.text||"",attachments:[],quick_replies:(t.quick_replies||[]).map(t=>"string"==typeof t?t:t.value||t.name||t)},i=t.attachments||[],o=(t.runtime_attachments||[]).filter(t=>t&&t.type&&t.expression).map(t=>`${t.type[0].value}:${t.expression}`);return e.attachments=[...i,...o],0===e.quick_replies.length&&delete e.quick_replies,t.template&&(e.template=t.template,e.template_variables=t.template_variables||[]),e},sanitize:t=>{t.text&&"string"==typeof t.text&&(t.text=t.text.trim())},validate:t=>{const e={},i=t.attachments||[],o=(t.runtime_attachments||[]).filter(t=>t&&t.expression&&""!==t.expression.trim());return i.length+o.length>10&&(o.length>0&&(e.runtime_attachments="Each message can only have up to 10 attachments"),i.length>0&&(e.text="Each message can only have up to 10 total attachments")),{valid:0===Object.keys(e).length,errors:e}},localizable:["text","quick_replies","attachments"],toLocalizationFormData:(t,e)=>{const i={uuid:t.uuid};e.text&&Array.isArray(e.text)?i.text=e.text[0]||"":i.text="",e.attachments&&Array.isArray(e.attachments)&&(i.attachments=e.attachments),e.quick_replies&&Array.isArray(e.quick_replies)&&(i.quick_replies=e.quick_replies.map(t=>({name:t,value:t})));const o=[],n=[];return i.attachments&&Array.isArray(i.attachments)&&i.attachments.forEach(t=>{if("string"==typeof t&&t.includes(":")){const e=t.indexOf(":"),i=t.substring(0,e),s=t.substring(e+1);i.includes("/")?n.push(t):o.push({type:{name:$p[i]||je(i),value:i},expression:s})}}),i.attachments=n,i.runtime_attachments=o,i},fromLocalizationFormData:(t,e)=>{const i={};t.text&&""!==t.text.trim()&&t.text!==e.text&&(i.text=[t.text]);const o=(t.quick_replies||[]).map(t=>"string"==typeof t?t:t.value||t.name||t).filter(t=>t&&""!==t.trim());o.length>0&&JSON.stringify(o)!==JSON.stringify(e.quick_replies||[])&&(i.quick_replies=o);const n=[...(t.attachments||[]).filter(t=>t&&""!==t.trim()),...(t.runtime_attachments||[]).filter(t=>t&&t.type&&t.expression&&""!==t.expression.trim()).map(t=>`${t.type[0].value}:${t.expression}`)];return n.length>0&&JSON.stringify(n)!==JSON.stringify(e.attachments||[])&&(i.attachments=n),i}},Tp={name:"Send Email",group:gp.broadcast,flowTypes:[cp,dp,hp],render:(t,e)=>W`<div>
|
|
8919
8916
|
<div>${Nc(e.addresses,Do.email,!0)}</div>
|
|
8920
8917
|
<div style="margin-top: 0.5em">
|
|
8921
8918
|
${Pc(Lc(e.subject,!0),e.subject)}
|
|
8922
8919
|
</div>
|
|
8923
|
-
</div>`,form:{addresses:{type:"select",label:"Recipients",multi:!0,searchable:!0,placeholder:"Enter email addresses...",emails:!0,expressions:"session"},subject:{type:"text",label:"Subject",required:!0,evaluated:!0,placeholder:"Enter email subject",maxLength:1e3},body:{type:"textarea",required:!0,evaluated:!0,maxLength:1e4,minHeight:175}},fromFormData:t=>({uuid:t.uuid,type:"send_email",addresses:t.addresses.map(t=>t.value),subject:t.subject,body:t.body}),localizable:["subject","body"],validate:kc((t,e)=>{t.addresses&&0!==t.addresses.length||(e.addresses="At least one recipient email address is required")})},
|
|
8920
|
+
</div>`,form:{addresses:{type:"select",label:"Recipients",multi:!0,searchable:!0,placeholder:"Enter email addresses...",emails:!0,expressions:"session"},subject:{type:"text",label:"Subject",required:!0,evaluated:!0,placeholder:"Enter email subject",maxLength:1e3},body:{type:"textarea",required:!0,evaluated:!0,maxLength:1e4,minHeight:175}},fromFormData:t=>({uuid:t.uuid,type:"send_email",addresses:t.addresses.map(t=>t.value),subject:t.subject,body:t.body}),localizable:["subject","body"],validate:kc((t,e)=>{t.addresses&&0!==t.addresses.length||(e.addresses="At least one recipient email address is required")})},Dp={name:"Start Flow",group:gp.broadcast,flowTypes:[cp,dp,hp],render:(t,e)=>{let i=W``;if(e.create_contact)i=W`Create a new contact`;else if(e.contact_query)i=W`${Lc(e.contact_query,!0)}`;else{const t=[...(e.groups||[]).map(t=>({name:t.name,icon:Do.group,uuid:t.uuid,eventType:Fo.GroupClicked})),...(e.contacts||[]).map(t=>({name:t.name,icon:Do.contacts,uuid:t.uuid,eventType:Fo.ContactClicked})),...(e.legacy_vars||[]).map(t=>({name:t,icon:Do.contacts,content:Lc(t,!0)}))];i=W`${Bc(t)}`}return W`
|
|
8924
8921
|
<div>
|
|
8925
8922
|
<div>${i}</div>
|
|
8926
8923
|
<div style="margin-top: 0.5em">
|
|
8927
8924
|
${Uc([e.flow],"flow")}
|
|
8928
8925
|
</div>
|
|
8929
8926
|
</div>
|
|
8930
|
-
`},toFormData:t=>{var e;const i=t;let o="manual";t.create_contact?o="create":i.contact_query&&(o="query");const n=[{value:"manual",name:"Select recipients manually"},{value:"query",name:"Select a contact with a query"},{value:"create",name:"Create a new contact"}],s=n.find(t=>t.value===o)||n[0];return{flow:t.flow?[t.flow]:null,recipients:[...(t.contacts||[]).map(t=>({id:t.uuid,name:t.name,type:"contact"})),...(t.groups||[]).map(t=>({id:t.uuid,name:t.name,type:"group"})),...(t.legacy_vars||[]).map(t=>({id:t,name:t,type:"expression"}))],startType:[s],contactQuery:i.contact_query||"",skipContactsInFlow:(null===(e=i.exclusions)||void 0===e?void 0:e.in_a_flow)||!1,uuid:t.uuid}},form:{flow:{type:"select",label:"Flow",helpText:"Select the flow to start",required:!0,searchable:!0,endpoint:"/api/v2/flows.json",valueKey:"uuid",nameKey:"name",placeholder:"Select a flow..."},startType:{type:"select",label:"Start Type",helpText:"How should contacts be selected?",required:!0,options:[{value:"manual",name:"Select recipients manually"},{value:"query",name:"Select a contact with a query"},{value:"create",name:"Create a new contact"}]},recipients:{type:"select",label:"Recipients",helpText:"Select who should be started in the flow",multi:!0,searchable:!0,endpoint:"/contact/omnibox/?types=gc",queryParam:"search",valueKey:"id",nameKey:"name",placeholder:"Search for contacts or groups...",expressions:"session",conditions:{visible:t=>{var e,i;return"manual"===(null===(i=null===(e=t.startType)||void 0===e?void 0:e[0])||void 0===i?void 0:i.value)}}},contactQuery:{type:"text",evaluated:!0,label:"Contact Query",helpText:"Only one matching contact will be started",placeholder:"household_id = @fields.household_id",conditions:{visible:t=>{var e,i;return"query"===(null===(i=null===(e=t.startType)||void 0===e?void 0:e[0])||void 0===i?void 0:i.value)}}},skipContactsInFlow:{type:"checkbox",label:"Skip contacts currently in a flow",helpText:"Avoid interrupting a contact who is already in a flow"}},layout:["flow","startType","recipients","contactQuery","skipContactsInFlow"],validate:t=>{var e,i;const o={},n=null===(i=null===(e=t.startType)||void 0===e?void 0:e[0])||void 0===i?void 0:i.value;return"manual"!==n||t.recipients&&0!==t.recipients.length||(o.recipients="At least one contact or group must be selected"),"query"!==n||t.contactQuery&&t.contactQuery.trim()||(o.contactQuery="Contact query is required"),{valid:0===Object.keys(o).length,errors:o}},fromFormData:t=>{const e={uuid:t.uuid,type:"start_session",flow:{uuid:t.flow[0].uuid||t.flow[0].value,name:t.flow[0].name},groups:[],contacts:[]},i=t.startType[0].value;if("create"===i)e.create_contact=!0;else if("query"===i)e.contact_query=t.contactQuery||"";else{const i=t.recipients||[];e.contacts=i.filter(t=>"contact"===t.type||!t.type&&!t.expression&&t.id).map(t=>({uuid:t.id,name:t.name})),e.groups=i.filter(t=>"group"===t.type).map(t=>({uuid:t.id,name:t.name}));const o=i.filter(t=>"expression"===t.type||t.expression).map(t=>t.value||t.name||t.id);o.length>0&&(e.legacy_vars=o)}return t.skipContactsInFlow&&(e.exclusions={in_a_flow:!0}),e}},
|
|
8927
|
+
`},toFormData:t=>{var e;const i=t;let o="manual";t.create_contact?o="create":i.contact_query&&(o="query");const n=[{value:"manual",name:"Select recipients manually"},{value:"query",name:"Select a contact with a query"},{value:"create",name:"Create a new contact"}],s=n.find(t=>t.value===o)||n[0];return{flow:t.flow?[t.flow]:null,recipients:[...(t.contacts||[]).map(t=>({id:t.uuid,name:t.name,type:"contact"})),...(t.groups||[]).map(t=>({id:t.uuid,name:t.name,type:"group"})),...(t.legacy_vars||[]).map(t=>({id:t,name:t,type:"expression"}))],startType:[s],contactQuery:i.contact_query||"",skipContactsInFlow:(null===(e=i.exclusions)||void 0===e?void 0:e.in_a_flow)||!1,uuid:t.uuid}},form:{flow:{type:"select",label:"Flow",helpText:"Select the flow to start",required:!0,searchable:!0,endpoint:"/api/v2/flows.json",valueKey:"uuid",nameKey:"name",placeholder:"Select a flow..."},startType:{type:"select",label:"Start Type",helpText:"How should contacts be selected?",required:!0,options:[{value:"manual",name:"Select recipients manually"},{value:"query",name:"Select a contact with a query"},{value:"create",name:"Create a new contact"}]},recipients:{type:"select",label:"Recipients",helpText:"Select who should be started in the flow",multi:!0,searchable:!0,endpoint:"/contact/omnibox/?types=gc",queryParam:"search",valueKey:"id",nameKey:"name",placeholder:"Search for contacts or groups...",expressions:"session",conditions:{visible:t=>{var e,i;return"manual"===(null===(i=null===(e=t.startType)||void 0===e?void 0:e[0])||void 0===i?void 0:i.value)}}},contactQuery:{type:"text",evaluated:!0,label:"Contact Query",helpText:"Only one matching contact will be started",placeholder:"household_id = @fields.household_id",conditions:{visible:t=>{var e,i;return"query"===(null===(i=null===(e=t.startType)||void 0===e?void 0:e[0])||void 0===i?void 0:i.value)}}},skipContactsInFlow:{type:"checkbox",label:"Skip contacts currently in a flow",helpText:"Avoid interrupting a contact who is already in a flow"}},layout:["flow","startType","recipients","contactQuery","skipContactsInFlow"],validate:t=>{var e,i;const o={},n=null===(i=null===(e=t.startType)||void 0===e?void 0:e[0])||void 0===i?void 0:i.value;return"manual"!==n||t.recipients&&0!==t.recipients.length||(o.recipients="At least one contact or group must be selected"),"query"!==n||t.contactQuery&&t.contactQuery.trim()||(o.contactQuery="Contact query is required"),{valid:0===Object.keys(o).length,errors:o}},fromFormData:t=>{const e={uuid:t.uuid,type:"start_session",flow:{uuid:t.flow[0].uuid||t.flow[0].value,name:t.flow[0].name},groups:[],contacts:[]},i=t.startType[0].value;if("create"===i)e.create_contact=!0;else if("query"===i)e.contact_query=t.contactQuery||"";else{const i=t.recipients||[];e.contacts=i.filter(t=>"contact"===t.type||!t.type&&!t.expression&&t.id).map(t=>({uuid:t.id,name:t.name})),e.groups=i.filter(t=>"group"===t.type).map(t=>({uuid:t.id,name:t.name}));const o=i.filter(t=>"expression"===t.type||t.expression).map(t=>t.value||t.name||t.id);o.length>0&&(e.legacy_vars=o)}return t.skipContactsInFlow&&(e.exclusions={in_a_flow:!0}),e}},Mp={name:"Update Name",group:gp.contacts,flowTypes:[cp,dp,hp],render:(t,e)=>Pc(W`Set to ${Lc(e.name,!0)}`,`Set to ${e.name}`),form:{name:{type:"text",label:"Name",placeholder:"Enter contact name...",required:!0,evaluated:!0,helpText:"The new name for the contact. You can use expressions like @contact.name"}},sanitize:t=>{t.name&&"string"==typeof t.name&&(t.name=t.name.trim())}},zp={name:"Add to Group",group:gp.contacts,flowTypes:[cp,dp,hp],render:(t,e)=>W`<div>${jc(e.groups,"group")}</div>`,toFormData:t=>({groups:t.groups||null,uuid:t.uuid}),form:{groups:{type:"select",label:"Groups",helpText:"Select the groups to add the contact to",required:!0,options:[],multi:!0,searchable:!0,endpoint:"/api/v2/groups.json",valueKey:"uuid",nameKey:"name",placeholder:"Search for groups...",shouldExclude:t=>!!t.query,allowCreate:!0,createArbitraryOption:(t,e)=>!e.find(e=>e.name.toLowerCase().trim()===t.toLowerCase().trim())&&t.trim()?{name:t.trim(),arbitrary:!0}:null}},fromFormData:t=>({uuid:t.uuid,type:"add_contact_groups",groups:(t.groups||[]).map(t=>({uuid:t.uuid,name:t.name}))})},Ip={name:"Remove from Group",group:gp.contacts,flowTypes:[cp,dp,hp],render:(t,e)=>e.all_groups?W`<div>Remove from all groups</div>`:W`<div>${jc(e.groups,"group")}</div>`,toFormData:t=>({uuid:t.uuid,all_groups:t.all_groups||!1,groups:t.groups||null}),form:{groups:{type:"select",label:"Groups",helpText:"Select the groups to remove the contact from",options:[],multi:!0,searchable:!0,endpoint:"/api/v2/groups.json",valueKey:"uuid",nameKey:"name",placeholder:"Search for groups...",conditions:{visible:t=>!t.all_groups}},all_groups:{type:"checkbox",label:"Remove from All Groups",helpText:"Check this to remove the contact from all groups instead of specific ones"}},validate:t=>{const e={};return t.all_groups||t.groups&&0!==t.groups.length||(e.groups='At least one group must be selected or check "Remove from All Groups"'),{valid:0===Object.keys(e).length,errors:e}},fromFormData:t=>({uuid:t.uuid,type:"remove_contact_groups",groups:t.all_groups?[]:(t.groups||[]).map(t=>({uuid:t.uuid,name:t.name})),all_groups:t.all_groups||!1})},Op={name:"Request Opt-In",group:gp.send,flowTypes:[],render:(t,e)=>{var i;const o=(null===(i=e.optin)||void 0===i?void 0:i.name)||"Unknown opt-in";return Pc(W`Request <strong>${o}</strong>`,`Request ${o}`)},toFormData:t=>({uuid:t.uuid,optin:t.optin?[t.optin]:null}),form:{optin:{type:"select",label:"Opt-In",required:!0,searchable:!0,endpoint:"/api/v2/optins.json",valueKey:"uuid",nameKey:"name",placeholder:"Search for opt-ins or type to create one...",helpText:"Select an existing opt-in to request, or type a name to create a new one.",allowCreate:!0,createArbitraryOption:(t,e)=>!e.find(e=>e.name.toLowerCase().trim()===t.toLowerCase().trim())&&t.trim()?{name:t.trim(),arbitrary:!0}:null}},fromFormData:t=>{var e;const i=null===(e=t.optin)||void 0===e?void 0:e[0];return{uuid:t.uuid,type:"request_optin",optin:{uuid:i.uuid||i.value,name:i.name}}}},Lp=W`<svg
|
|
8931
8928
|
viewBox="0 0 24 24"
|
|
8932
8929
|
width="16"
|
|
8933
8930
|
height="16"
|
|
8934
8931
|
fill="currentColor"
|
|
8935
8932
|
>
|
|
8936
8933
|
<polygon points="6,3 20,12 6,21" />
|
|
8937
|
-
</svg>`;let
|
|
8934
|
+
</svg>`;let Pp=null,Rp=null;function Np(t){const e=t.querySelector(".audio-play-btn"),i=t.querySelector(".audio-progress");e&&(e.innerHTML='<svg viewBox="0 0 24 24" width="16" height="16" fill="currentColor"><polygon points="6,3 20,12 6,21"/></svg>'),i&&(i.style.width="0%")}function Bp(t){t.stopPropagation(),t.preventDefault();const e=t.currentTarget.closest(".audio-player");if(!e)return;const i=e.dataset.url;if(!i)return;const o=e.querySelector(".audio-play-btn"),n=e.querySelector(".audio-progress");if(Pp&&Rp===e&&!Pp.paused)return Pp.pause(),void(o.innerHTML='<svg viewBox="0 0 24 24" width="16" height="16" fill="currentColor"><polygon points="6,3 20,12 6,21"/></svg>');Pp&&(Pp.pause(),Pp.currentTime=0,Rp&&Np(Rp),Pp=null,Rp=null);const s=new Audio(i);Pp=s,Rp=e,o.innerHTML='<svg viewBox="0 0 24 24" width="16" height="16" fill="currentColor"><rect x="5" y="3" width="4" height="18"/><rect x="15" y="3" width="4" height="18"/></svg>',s.addEventListener("timeupdate",()=>{if(s.duration&&n){const t=s.currentTime/s.duration*100;n.style.width=`${t}%`}}),s.addEventListener("ended",()=>{Np(e),Pp=null,Rp=null}),s.addEventListener("error",()=>{Np(e),Pp=null,Rp=null}),s.play().catch(()=>{Np(e),Pp=null,Rp=null})}const Fp={name:"Say Message",group:gp.send,flowTypes:[cp],render:(t,e)=>{return W`
|
|
8938
8935
|
${Pc(Lc(e.text||"",!0),e.text||"")}
|
|
8939
8936
|
${e.audio_url?W`<div style="margin-top: 0.5em;">
|
|
8940
8937
|
${i=e.audio_url,W`
|
|
@@ -8947,10 +8944,10 @@ background: #ccc;
|
|
|
8947
8944
|
>
|
|
8948
8945
|
<div
|
|
8949
8946
|
class="audio-play-btn"
|
|
8950
|
-
@click=${
|
|
8947
|
+
@click=${Bp}
|
|
8951
8948
|
style="cursor: pointer; color: #666; display: flex; align-items: center; flex-shrink: 0;"
|
|
8952
8949
|
>
|
|
8953
|
-
${
|
|
8950
|
+
${Lp}
|
|
8954
8951
|
</div>
|
|
8955
8952
|
<div
|
|
8956
8953
|
style="flex: 1; height: 4px; background: #e0e0e0; border-radius: 2px; overflow: hidden; min-width: 40px;"
|
|
@@ -8963,7 +8960,7 @@ background: #ccc;
|
|
|
8963
8960
|
</div>
|
|
8964
8961
|
`}
|
|
8965
8962
|
</div>`:null}
|
|
8966
|
-
`;var i},form:{text:{type:"textarea",label:"Message",required:!0,evaluated:!0,placeholder:"Enter message to speak...",maxLength:1e4,minHeight:80},audio_url:{type:"media",label:"Recording",required:!1,accept:"audio/*",optionalLink:"Add a recording"}},layout:["text","audio_url"],toFormData:t=>({uuid:t.uuid,text:t.text||"",audio_url:t.audio_url||""}),fromFormData:t=>{const e={uuid:t.uuid,type:"say_msg",text:t.text||""};return t.audio_url&&""!==t.audio_url.trim()&&(e.audio_url=t.audio_url.trim()),e},sanitize:t=>{t.text&&"string"==typeof t.text&&(t.text=t.text.trim())},localizable:["text","audio_url"]},
|
|
8963
|
+
`;var i},form:{text:{type:"textarea",label:"Message",required:!0,evaluated:!0,placeholder:"Enter message to speak...",maxLength:1e4,minHeight:80},audio_url:{type:"media",label:"Recording",required:!1,accept:"audio/*",optionalLink:"Add a recording"}},layout:["text","audio_url"],toFormData:t=>({uuid:t.uuid,text:t.text||"",audio_url:t.audio_url||""}),fromFormData:t=>{const e={uuid:t.uuid,type:"say_msg",text:t.text||""};return t.audio_url&&""!==t.audio_url.trim()&&(e.audio_url=t.audio_url.trim()),e},sanitize:t=>{t.text&&"string"==typeof t.text&&(t.text=t.text.trim())},localizable:["text","audio_url"]},qp={name:"Play Recording",group:gp.send,flowTypes:[cp],render:(t,e)=>W`
|
|
8967
8964
|
<div style="display: flex; align-items: center; gap: 0.3em;">
|
|
8968
8965
|
<temba-icon name="recording" size="1"></temba-icon>
|
|
8969
8966
|
<div
|
|
@@ -8973,31 +8970,31 @@ background: #ccc;
|
|
|
8973
8970
|
${Lc(e.audio_url||"",!0)}
|
|
8974
8971
|
</div>
|
|
8975
8972
|
</div>
|
|
8976
|
-
`,form:{audio_url:{type:"text",label:"Recording URL",required:!0,evaluated:!0}},layout:["audio_url"],toFormData:t=>({uuid:t.uuid,audio_url:t.audio_url||""}),fromFormData:t=>({uuid:t.uuid,type:"play_audio",audio_url:(t.audio_url||"").trim()}),localizable:["audio_url"]};function
|
|
8973
|
+
`,form:{audio_url:{type:"text",label:"Recording URL",required:!0,evaluated:!0}},layout:["audio_url"],toFormData:t=>({uuid:t.uuid,audio_url:t.audio_url||""}),fromFormData:t=>({uuid:t.uuid,type:"play_audio",audio_url:(t.audio_url||"").trim()}),localizable:["audio_url"]};function Up(t){const e=zd.getState().flowDefinition;return!!e&&("messaging_background"===e.type&&"message"===t.type)}function jp(t,e){var i,o;return null!==(o=null===(i=null==t?void 0:t.roles)||void 0===i?void 0:i.includes(e))&&void 0!==o&&o}const Hp={name:"Enter a Flow",group:gp.trigger,hideFromActions:!0,flowTypes:[cp,dp,hp],render:(t,e)=>W`${Uc([e.flow],"flow")}`,toFormData:t=>({uuid:t.uuid,flow:t.flow?[t.flow]:[]}),form:{flow:{type:"select",required:!0,placeholder:"Select a flow...",helpText:"The contact will enter this flow and not return",endpoint:"/api/v2/flows.json",valueKey:"uuid",nameKey:"name",shouldExclude:Up}},layout:["flow"],fromFormData:t=>{const e=t.flow[0];return{uuid:t.uuid,type:"enter_flow",terminal:!0,flow:{uuid:e.uuid||e.value,name:e.name}}}},Wp={ARS:{code:"ARS",name:"Argentine Peso"},AUD:{code:"AUD",name:"Australian Dollar"},BIF:{code:"BIF",name:"Burundi Franc"},BRL:{code:"BRL",name:"Brazilian Real"},CAD:{code:"CAD",name:"Canadian Dollar"},CDF:{code:"CDF",name:"Congolese Franc"},CLP:{code:"CLP",name:"Chilean Peso"},COP:{code:"COP",name:"Colombian Peso"},DJF:{code:"DJF",name:"Djibouti Franc"},DOP:{code:"DOP",name:"Dominican Peso"},DZD:{code:"DZD",name:"Algerian Dinar"},EUR:{code:"EUR",name:"Euro"},GBP:{code:"GBP",name:"Pound Sterling"},GHS:{code:"GHS",name:"Ghana Cedi"},GNF:{code:"GNF",name:"Guinean Franc"},KES:{code:"KES",name:"Kenyan Shilling"},LBP:{code:"LBP",name:"Lebanese Pound"},LKR:{code:"LKR",name:"Sri Lanka Rupee"},LRD:{code:"LRD",name:"Liberian Dollar"},MWK:{code:"MWK",name:"Malawian Kwacha"},MXN:{code:"MXN",name:"Mexican Peso"},MZN:{code:"MZN",name:"Mozambican Metical"},NAD:{code:"NAD",name:"Namibian Dollar"},NGN:{code:"NGN",name:"Nigerian Naira"},PEN:{code:"PEN",name:"Peruvian Sol"},PHP:{code:"PHP",name:"Philippine Peso"},RWF:{code:"RWF",name:"Rwandan Franc"},SZL:{code:"SZL",name:"Swazi Lilangeni"},TZS:{code:"TZS",name:"Tanzanian Shilling"},UGX:{code:"UGX",name:"Ugandan Shilling"},USD:{code:"USD",name:"US Dollar"},XAF:{code:"XAF",name:"Central African CFA Franc"},XOF:{code:"XOF",name:"West African CFA Franc"},ZAR:{code:"ZAR",name:"South African Rand"},ZMW:{code:"ZMW",name:"Zambian Kwacha"}},Vp=Object.values(Wp).map(t=>({value:t.code,name:`${t.name} (${t.code})`})),Zp={type:"split_by_airtime",name:"Send Airtime",group:gp.services,flowTypes:[cp,dp,hp],features:[mp],showAsAction:!0,form:{amounts:{type:"array",label:"Airtime Amounts",helpText:"Define the currencies and amounts to transfer",required:!0,itemLabel:"Amount",sortable:!1,minItems:1,maxItems:10,isEmptyItem:t=>!t.currency||!t.amount||""===t.amount.trim(),itemConfig:{currency:{type:"select",placeholder:"Select a currency",required:!0,options:Vp,searchable:!0,multi:!1,width:"200px"},amount:{type:"text",placeholder:"Amount",required:!0}}},result_name:pc},layout:["amounts","result_name"],validate:kc((t,e)=>{if(!t.amounts||!Array.isArray(t.amounts))return void(e.amounts="At least one currency and amount is required");const i=t.amounts.filter(t=>(null==t?void 0:t.currency)&&(null==t?void 0:t.amount)&&""!==t.amount.trim());if(0===i.length)return void(e.amounts="At least one currency and amount is required");const o=new Set,n=[];i.forEach(t=>{var e;const i=Array.isArray(t.currency)&&t.currency.length>0?t.currency[0].value:"string"==typeof t.currency?t.currency:null===(e=t.currency)||void 0===e?void 0:e.value;o.has(i)?n.push(i):o.add(i)}),n.length>0&&(e.amounts=`Duplicate currencies found: ${n.join(", ")}`);for(const t of i){const i=t.amount.trim();if(isNaN(Number(i))||Number(i)<=0)return void(e.amounts="All amounts must be valid positive numbers")}}),render:t=>{var e;const i=null===(e=t.actions)||void 0===e?void 0:e.find(t=>"transfer_airtime"===t.type);if(!i||!i.amounts)return W`<div class="body">Configure airtime transfer</div>`;const o=i.amounts,n=Object.keys(o);if(0===n.length)return W`<div class="body">Configure airtime transfer</div>`;const s=n[0],r=o[s],a=n.length-1;return W`
|
|
8977
8974
|
<div class="body">
|
|
8978
8975
|
${s}
|
|
8979
8976
|
${r}${a>0?W` <span style="color: #999;">+${a} more</span>`:""}
|
|
8980
8977
|
</div>
|
|
8981
|
-
`},toFormData:t=>{var e,i;const o=null===(e=t.actions)||void 0===e?void 0:e.find(t=>"transfer_airtime"===t.type),n=[];return o&&o.amounts&&Object.entries(o.amounts).forEach(([t,e])=>{var i;n.push({currency:[{value:t,name:(null===(i=Vp[t])||void 0===i?void 0:i.name)?`${Vp[t].name} (${t})`:t}],amount:String(e)})}),{uuid:t.uuid,amounts:n,result_name:(null===(i=t.router)||void 0===i?void 0:i.result_name)||""}},fromFormData:(t,e)=>{var i,o,n;const s={};t.amounts&&Array.isArray(t.amounts)&&t.amounts.forEach(t=>{var e;if(!(null==t?void 0:t.currency)||!(null==t?void 0:t.amount)||""===t.amount.trim())return;let i;if(Array.isArray(t.currency)&&t.currency.length>0)i=t.currency[0].value;else if("string"==typeof t.currency)i=t.currency;else{if(!(null===(e=t.currency)||void 0===e?void 0:e.value))return;i=t.currency.value}const o=parseFloat(t.amount.trim());!isNaN(o)&&o>0&&(s[i]=o)});const r=null===(i=e.actions)||void 0===i?void 0:i.find(t=>"transfer_airtime"===t.type),a={type:"transfer_airtime",uuid:(null==r?void 0:r.uuid)||Kt(),amounts:s},l=(null===(o=e.router)||void 0===o?void 0:o.categories)||[],d=e.exits||[],c=(null===(n=e.router)||void 0===n?void 0:n.cases)||[],{router:h,exits:u}=Be("@locals._new_transfer",{type:"has_text",arguments:[]},l,d,c),p={...h};return t.result_name&&""!==t.result_name.trim()&&(p.result_name=t.result_name.trim()),{uuid:e.uuid,actions:[a],router:p,exits:u}},localizable:"categories",nonTranslatableCategories:"all"},Kp=t=>{if("string"==typeof t)return t.trim();if(Array.isArray(t)&&t.length>0){const e=t[0];if(e&&"object"==typeof e&&e.value)return e.value.trim()}else if(t&&"object"==typeof t&&t.value)return t.value.trim();return""},Gp=t=>{const e=Kp(t.operator);if(!e||!t.category||""===t.category.trim())return!0;const i=hc(e);return i&&1===i.operands?!t.value1||""===t.value1.trim():!(!i||2!==i.operands)&&(!t.value1||""===t.value1.trim()||!t.value2||""===t.value2.trim())},Xp=t=>{const e=Kp(t.operator),i=hc(e);return!i||i.operands>=1},Qp=t=>{const e=Kp(t.operator),i=hc(e);return!!i&&2===i.operands},Jp=t=>{const e=Kp(t.operator);return"has_district"===e||"has_ward"===e?"State":""},tm=t=>"has_ward"===Kp(t.operator)?"District":"",em=()=>({operator:{type:"select",required:!0,multi:!1,options:[],getDynamicOptions:()=>{const t=zd.getState().features;return uc(dc(t))},flavor:"xsmall",width:"220px"},value1:{type:"text",placeholder:Jp,evaluated:!0,flavor:"xsmall",conditions:{visible:Xp}},value2:{type:"text",placeholder:tm,evaluated:!0,flavor:"xsmall",conditions:{visible:Qp}},category:{type:"text",placeholder:"Category",required:!0,maxLength:36,maxWidth:"120px",flavor:"xsmall"}}),im=t=>(t.rules||[]).filter(t=>{const e=Kp(null==t?void 0:t.operator);if(!e||!(null==t?void 0:t.category)||""===e||""===t.category.trim())return!1;const i=hc(e);return i&&1===i.operands?(null==t?void 0:t.value1)&&""!==t.value1.trim():!i||2!==i.operands||(null==t?void 0:t.value1)&&""!==t.value1.trim()&&(null==t?void 0:t.value2)&&""!==t.value2.trim()}).map(t=>{const e=Kp(t.operator),i=hc(e),o=t.value1?t.value1.trim():"",n=t.value2?t.value2.trim():"";let s="";return s=i&&1===i.operands?o:(i&&i.operands,""),{operator:e,value:s,value1:o,value2:n,category:t.category.trim()}}),om=t=>{var e,i;const o=[];return(null===(e=t.router)||void 0===e?void 0:e.cases)&&(null===(i=t.router)||void 0===i?void 0:i.categories)&&t.router.cases.forEach(e=>{const i=t.router.categories.find(t=>t.uuid===e.category_uuid);if(i&&!oe(i.name)){const t=hc(e.type),n=t?t.name:e.type;let s="",r="";t&&0===t.operands?(s="",r=""):t&&1===t.operands?(s=e.arguments.join(" "),r=""):t&&2===t.operands?(s=e.arguments[0]||"",r=e.arguments[1]||""):(s=e.arguments.join(" "),r=""),o.push({operator:{value:e.type,name:n},value1:s,value2:r,category:i.name})}}),o},nm=(t,e="Define rules to categorize responses")=>({type:"array",helpText:e,itemLabel:"Rule",minItems:0,maxItems:100,sortable:!0,maintainEmptyItem:!0,isEmptyItem:Gp,onItemChange:(t,e,i,o)=>{const n=[...o],s={...n[t]};s[e]=i;const r=o[t]||{},a=Kp("operator"===e?r.operator:s.operator),l=Kp(s.operator),d=qe(a,hc,"value1"===e?r.value1:s.value1,"value2"===e?r.value2:s.value2),c=qe(l,hc,s.value1,s.value2);return(!s.category||""===s.category.trim()||s.category===d)&&c&&(s.category=c),n[t]=s,n},createEmptyItem:t=>{const e=zd.getState().features,i=uc(dc(e)),o=[...t].reverse().find(t=>{const e=Kp(t.operator),i=e?hc(e):void 0;return i&&i.operands>=1&&"locations"!==i.filter}),n=i.filter(t=>{const e=hc(t.value);return!e||"locations"!==e.filter}),s=o?Kp(o.operator):null,r=s?i.find(t=>t.value===s):n[0];return r?{operator:[{...r}]}:{}},itemConfig:{...em(),operator:{...em().operator,options:t}}}),sm={name:{id:"name",name:"Name",type:"property"},language:{id:"language",name:"Language",type:"property"},status:{id:"status",name:"Status",type:"property"},channel:{id:"channel",name:"Channel",type:"property"}},rm={type:"split_by_contact_field",name:"Split by Contact Field",group:vp.split,flowTypes:[cp,dp,hp],dialogSize:"large",form:{field:{type:"select",required:!0,searchable:!0,clearable:!1,endpoint:"/api/v2/fields.json",valueKey:"key",nameKey:"name",placeholder:"Select a field...",options:[...Object.values(sm).map(t=>({value:t.id,name:t.name,type:t.type})),...Hc.filter(t=>!t.excludeFromSplit).map(t=>({value:t.scheme,name:t.path,type:"scheme"}))]},rules:nm(uc(dc()),""),result_name:pc,localizeRules:mc,localizeCategories:gc},layout:["field","rules",vc],validate:kc((t,e)=>{t.field&&0!==t.field.length||(e.field="A field is required")}),toFormData:(t,e)=>{var i,o,n,s;const r={...(null===(i=null==e?void 0:e.config)||void 0===i?void 0:i.operand)||sm.name};"field"===r.type?r.key||(r.key=r.id):r.value||(r.value=r.id);const a=om(t);return{uuid:t.uuid,field:[r],rules:a,result_name:(null===(o=t.router)||void 0===o?void 0:o.result_name)||"",localizeRules:(null===(n=null==e?void 0:e.config)||void 0===n?void 0:n.localizeRules)||!1,localizeCategories:(null===(s=null==e?void 0:e.config)||void 0===s?void 0:s.localizeCategories)||!1}},fromFormData:(t,e)=>{var i,o,n;const s=null===(i=t.field)||void 0===i?void 0:i[0];if(!s)return e;const r=(t=>{if("scheme"===t.type)return`@(default(urn_parts(urns.${t.id||t.value}).path, ""))`;return"property"===t.type?`@contact.${t.id||t.value}`:`@fields.${t.key||t.id||t.value}`})(s),a=im(t),l=(null===(o=e.router)||void 0===o?void 0:o.categories)||[],d=e.exits||[],c=(null===(n=e.router)||void 0===n?void 0:n.cases)||[],{router:h,exits:u}=Ue(r,a,hc,l,d,c),p={...h};return t.result_name&&""!==t.result_name.trim()&&(p.result_name=t.result_name.trim()),{...e,router:p,exits:u}},toUIConfig:t=>{var e;const i=null===(e=t.field)||void 0===e?void 0:e[0];if(!i)return{};let o=i.id||i.value||i.key;"scheme"===i.type&&(o=i.value||i.id);let n=i.type;"property"!==n&&"scheme"!==n&&(n="field");const s={operand:{id:o,name:i.name||i.label,type:n}};return s.localizeRules=!!t.localizeRules,s.localizeCategories=!!t.result_name&&!!t.localizeCategories,s},renderTitle:(t,e)=>W`<div>Split by ${e.config.operand.name}</div>`,localizable:"categories"},am={type:"split_by_expression",name:"Split by Expression",group:vp.split,flowTypes:[cp,dp,hp],dialogSize:"large",form:{operand:{type:"text",label:"Expression",helpText:"The expression to evaluate and split on",required:!0,evaluated:!0,placeholder:"@fields.age"},rules:nm(uc(dc()),""),result_name:pc,localizeRules:mc,localizeCategories:gc},layout:["operand","rules",vc],validate:kc((t,e)=>{t.operand&&""!==t.operand.trim()||(e.operand="Expression is required")}),toFormData:(t,e)=>{var i,o,n,s;const r=om(t);return{uuid:t.uuid,operand:(null===(i=t.router)||void 0===i?void 0:i.operand)||"@input.text",rules:r,result_name:(null===(o=t.router)||void 0===o?void 0:o.result_name)||"",localizeRules:(null===(n=null==e?void 0:e.config)||void 0===n?void 0:n.localizeRules)||!1,localizeCategories:(null===(s=null==e?void 0:e.config)||void 0===s?void 0:s.localizeCategories)||!1}},toUIConfig:t=>{const e={};return e.localizeRules=!!t.localizeRules,e.localizeCategories=!!t.result_name&&!!t.localizeCategories,e},fromFormData:(t,e)=>{var i,o,n;const s=im(t),r=(null===(i=t.operand)||void 0===i?void 0:i.trim())||"@input.text",a=(null===(o=e.router)||void 0===o?void 0:o.categories)||[],l=e.exits||[],d=(null===(n=e.router)||void 0===n?void 0:n.cases)||[],{router:c,exits:h}=Ue(r,s,hc,a,l,d),u={...c};return t.result_name&&""!==t.result_name.trim()&&(u.result_name=t.result_name.trim()),{...e,router:u,exits:h}},localizable:"categories"},lm={type:"split_by_groups",name:"Split by Group",group:vp.split,flowTypes:[cp,dp,hp],form:{groups:{type:"select",label:"Groups",helpText:"Select the groups to split contacts by. Contacts will be routed based on their group membership.",required:!0,options:[],multi:!0,searchable:!0,endpoint:"/api/v2/groups.json",valueKey:"uuid",nameKey:"name",placeholder:"Search for groups...",allowCreate:!0,createArbitraryOption:(t,e)=>!e.find(e=>e.name.toLowerCase().trim()===t.toLowerCase().trim())&&t.trim()?{name:t.trim(),arbitrary:!0}:null},result_name:pc},layout:["groups",bc],validate:kc((t,e)=>{t.groups&&Array.isArray(t.groups)&&0!==t.groups.length||(e.groups="At least one group is required")}),toFormData:t=>{var e,i;const o=[];return(null===(e=t.router)||void 0===e?void 0:e.cases)&&t.router.cases.forEach(t=>{var e;"has_group"===t.type&&(null===(e=t.arguments)||void 0===e?void 0:e.length)>=2&&o.push({uuid:t.arguments[0],name:t.arguments[1]})}),{uuid:t.uuid,groups:o,result_name:(null===(i=t.router)||void 0===i?void 0:i.result_name)||""}},fromFormData:(t,e)=>{var i,o;const n=(t.groups||[]).filter(t=>(null==t?void 0:t.uuid)||(null==t?void 0:t.arbitrary)).map(t=>({uuid:t.uuid||Kt(),name:t.name})),s=(null===(i=e.router)||void 0===i?void 0:i.categories)||[],r=e.exits||[],a=(null===(o=e.router)||void 0===o?void 0:o.cases)||[],{categories:l,exits:d,cases:c}=wc(n.map(t=>({name:t.name,case:{type:"has_group",arguments:[t.uuid,t.name]}})),s,r,a),h=_c(l,d,s,r,n.map(t=>t.name));return{uuid:e.uuid,actions:e.actions||[],router:{type:"switch",cases:c,categories:l,default_category_uuid:h,operand:"@contact.groups",result_name:t.result_name||""},exits:d}},router:{type:"switch",operand:"@contact.groups"},localizable:"categories"},dm={type:"split_by_random",name:"Random Split",group:vp.split,flowTypes:[cp,dp,hp],form:{categories:{type:"array",helpText:"Define the buckets to randomly split contacts into",required:!0,itemLabel:"Bucket",sortable:!0,minItems:2,maxItems:10,isEmptyItem:t=>!t.name||""===t.name.trim(),itemConfig:{name:{type:"text",placeholder:"Bucket name",required:!0}}}},layout:["categories"],validate:kc((t,e)=>{if(!t.categories||!Array.isArray(t.categories))return;const i=t.categories.filter(t=>(null==t?void 0:t.name)&&""!==t.name.trim());i.length<2&&(e.categories="At least 2 buckets are required for random split");const o=[],n=new Map;if(i.forEach(t=>{const e=t.name.trim().toLowerCase();n.has(e)||n.set(e,[]),n.get(e).push(t.name.trim())}),n.forEach(t=>{t.length>1&&o.push(...t)}),o.length>0){const t=[...new Set(o)];e.categories=`Duplicate bucket names found: ${t.join(", ")}`}}),toFormData:t=>{var e,i;const o=(null===(i=null===(e=t.router)||void 0===e?void 0:e.categories)||void 0===i?void 0:i.map(t=>({name:t.name})))||[];return{uuid:t.uuid,categories:o}},fromFormData:(t,e)=>{var i;const o=(t.categories||[]).filter(t=>{var e;return null===(e=null==t?void 0:t.name)||void 0===e?void 0:e.trim()}).map(t=>t.name.trim()),n=(null===(i=e.router)||void 0===i?void 0:i.categories)||[],s=e.exits||[],{categories:r,exits:a}=wc(o.map(t=>({name:t})),n,s);return{uuid:e.uuid,actions:e.actions||[],router:{type:"random",categories:r},exits:a}},router:{type:"random"},localizable:"categories"},cm=[{value:"0",name:"first result"},{value:"1",name:"second result"},{value:"2",name:"third result"},{value:"3",name:"fourth result"},{value:"4",name:"fifth result"},{value:"5",name:"sixth result"},{value:"6",name:"seventh result"},{value:"7",name:"eighth result"},{value:"8",name:"ninth result"},{value:"9",name:"tenth result"},{value:"10",name:"11th result"},{value:"11",name:"12th result"},{value:"12",name:"13th result"},{value:"13",name:"14th result"},{value:"14",name:"15th result"},{value:"15",name:"16th result"},{value:"16",name:"17th result"},{value:"17",name:"18th result"},{value:"18",name:"19th result"},{value:"19",name:"20th result"}],hm=[{value:"",name:"Don't delimit result"},{value:" ",name:"Delimited by spaces"},{value:".",name:"Delimited by periods"},{value:"+",name:"Delimited by plusses"}],um={type:"split_by_run_result",name:"Split by Result",aliases:["split_by_run_result_delimited"],group:vp.split,flowTypes:[cp,dp,hp],dialogSize:"large",form:{result:{type:"select",required:!0,searchable:!1,clearable:!1,placeholder:"Select a result...",getDynamicOptions:()=>{const t=Qc();return t?t.getState().getFlowResults().map(t=>({value:t.key,name:t.name})):[]},valueKey:"value",nameKey:"name"},delimit_by:{type:"select",required:!1,searchable:!1,clearable:!1,options:hm,valueKey:"value",nameKey:"name",maxWidth:"180px"},delimit_index:{type:"select",required:!1,searchable:!1,clearable:!1,options:cm,valueKey:"value",nameKey:"name",maxWidth:"140px",conditions:{visible:t=>{var e,i;const o=null===(i=null===(e=t.delimit_by)||void 0===e?void 0:e[0])||void 0===i?void 0:i.value;return void 0!==o&&""!==o}}},rules:nm(uc(dc()),""),result_name:pc,localizeRules:mc,localizeCategories:gc},layout:[{type:"row",label:"Flow Result",helpText:"Select a flow result and optionally delimit it to split on a specific part",items:["result","delimit_by","delimit_index"]},"rules",vc],validate:kc((t,e)=>{t.result&&0!==t.result.length||(e.result="A flow result is required")}),toFormData:(t,e)=>{var i,o,n,s,r;const a=null===(i=null==e?void 0:e.config)||void 0===i?void 0:i.operand,l=a?{...a,value:a.value||a.id}:null,d=om(t),c=((null===(o=t.router)||void 0===o?void 0:o.operand)||"").match(/field\(results\.[\w]+,\s*(\d+),\s*"(.+?)"\)/),h=null!==c,u=h?parseInt(c[1],10):0,p=h?c[2]:"";return{uuid:t.uuid,result:l?[l]:[],delimit_by:h?[hm.find(t=>t.value===p)]:[hm[0]],delimit_index:h?[cm.find(t=>t.value===String(u))]:[cm[0]],rules:d,result_name:(null===(n=t.router)||void 0===n?void 0:n.result_name)||"",localizeRules:(null===(s=null==e?void 0:e.config)||void 0===s?void 0:s.localizeRules)||!1,localizeCategories:(null===(r=null==e?void 0:e.config)||void 0===r?void 0:r.localizeCategories)||!1}},fromFormData:(t,e)=>{var i,o,n,s,r,a,l,d;const c=null===(i=t.result)||void 0===i?void 0:i[0];if(!c)return e;let h;const u=c.value||c.id,p=null===(n=null===(o=t.delimit_by)||void 0===o?void 0:o[0])||void 0===n?void 0:n.value;if(void 0!==p&&""!==p){h=`@(field(results.${u}, ${null!==(a=null===(r=null===(s=t.delimit_index)||void 0===s?void 0:s[0])||void 0===r?void 0:r.value)&&void 0!==a?a:"0"}, "${p}"))`}else h=`@results.${u}`;const m=im(t),g=(null===(l=e.router)||void 0===l?void 0:l.categories)||[],f=e.exits||[],v=(null===(d=e.router)||void 0===d?void 0:d.cases)||[],{router:b,exits:y}=Ue(h,m,hc,g,f,v),x={...b};return t.result_name&&""!==t.result_name.trim()&&(x.result_name=t.result_name.trim()),{...e,router:x,exits:y}},toUIConfig:t=>{var e,i,o,n,s,r;const a=null===(e=t.result)||void 0===e?void 0:e[0];if(!a)return{};const l={operand:{id:a.value,name:a.name,type:"result"}},d=null===(o=null===(i=t.delimit_by)||void 0===i?void 0:i[0])||void 0===o?void 0:o.value,c=void 0!==d&&""!==d;return c&&(l.index=parseInt(null!==(r=null===(s=null===(n=t.delimit_index)||void 0===n?void 0:n[0])||void 0===s?void 0:s.value)&&void 0!==r?r:"0",10),l.delimiter=d),l.type=c?"split_by_run_result_delimited":"split_by_run_result",l.localizeRules=!!t.localizeRules,l.localizeCategories=!!t.result_name&&!!t.localizeCategories,l},localizable:"categories"},pm=t=>{var e;return(null===(e=Hc.find(e=>e.scheme===t))||void 0===e?void 0:e.name)||t},mm={type:"split_by_scheme",name:"Split by URN Type",group:vp.split,flowTypes:[cp,dp,hp],form:{schemes:{type:"select",label:"Channel Types",helpText:"The contact's URN is the address they used to reach you such as their phone number or a Facebook ID. Select which URN types to split by.",required:!0,options:Hc.map(t=>({value:t.scheme,name:t.name})),multi:!0,searchable:!0,placeholder:"Select the channels to split by..."},result_name:pc},layout:["schemes",bc],validate:kc((t,e)=>{t.schemes&&Array.isArray(t.schemes)&&0!==t.schemes.length||(e.schemes="At least one channel type is required")}),toFormData:t=>{var e,i;const o=[];return(null===(e=t.router)||void 0===e?void 0:e.cases)&&t.router.cases.forEach(t=>{var e;"has_only_phrase"===t.type&&(null===(e=t.arguments)||void 0===e?void 0:e.length)>0&&o.push(t.arguments[0])}),{uuid:t.uuid,schemes:o.map(t=>({value:t,name:pm(t)})),result_name:(null===(i=t.router)||void 0===i?void 0:i.result_name)||""}},fromFormData:(t,e)=>{var i,o;const n=(t.schemes||[]).filter(t=>t).map(t=>"string"==typeof t?t:t.value),s=(null===(i=e.router)||void 0===i?void 0:i.categories)||[],r=e.exits||[],a=(null===(o=e.router)||void 0===o?void 0:o.cases)||[],{categories:l,exits:d,cases:c}=wc(n.map(t=>({name:pm(t),case:{type:"has_only_phrase",arguments:[t]}})),s,r,a),h=_c(l,d,s,r,n.map(pm));return{uuid:e.uuid,actions:e.actions||[],router:{type:"switch",cases:c,categories:l,default_category_uuid:h,operand:"@(urn_parts(contact.urn).scheme)",result_name:t.result_name||""},exits:d}},router:{type:"switch",operand:"@(urn_parts(contact.urn).scheme)"},localizable:"categories"},gm={type:"split_by_subflow",name:"Enter a Flow",group:fp.trigger,flowTypes:[cp,dp,hp],showAsAction:!0,form:{flow:{type:"select",required:!0,searchable:!0,placeholder:"Select a flow...",helpText:"Once the subflow is complete or expires, the contact will return here",endpoint:"/api/v2/flows.json",valueKey:"uuid",nameKey:"name",shouldExclude:jp},params:{type:"key-value",keyPlaceholder:"Parameter name",valuePlaceholder:"Value",minRows:0,readOnlyKeys:!0,dependsOn:["flow"],conditions:{visible:t=>{const e=t.params;return Array.isArray(e)?e.length>0:!(!e||"object"!=typeof e)&&Object.keys(e).length>0}},computeValue:(t,e)=>{var i;const o=Array.isArray(t.flow)&&t.flow.length>0?t.flow[0]:null;if(!(null===(i=null==o?void 0:o.parent_refs)||void 0===i?void 0:i.length))return[];const n={};return Array.isArray(e)?e.forEach(t=>{t.key&&(n[t.key]=t.value||"")}):e&&"object"==typeof e&&Object.entries(e).forEach(([t,e])=>{n[t]="string"==typeof e?e:""}),o.parent_refs.map(t=>({key:t,value:n[t]||""}))}}},layout:["flow",{type:"accordion",sections:[{label:"Parameters",collapsed:!1,getValueCount:t=>{const e=t.params;return Array.isArray(e)?e.filter(t=>t.value&&""!==t.value.trim()).length:e&&"object"==typeof e?Object.values(e).filter(t=>"string"==typeof t&&""!==t.trim()).length:0},items:["params"]}]}],resolveFormData:async t=>{var e;const i=Array.isArray(t.flow)&&t.flow.length>0?t.flow[0]:null;if(!(null==i?void 0:i.uuid))return t;if(i.parent_refs)return t;try{const o=await fetch(`/api/v2/flows.json?uuid=${i.uuid}`),n=null===(e=(await o.json()).results)||void 0===e?void 0:e[0];if(null==n?void 0:n.parent_refs){const e={...i,parent_refs:n.parent_refs};return{...t,flow:[e]}}}catch(t){}return t},render:t=>{var e;const i=null===(e=t.actions)||void 0===e?void 0:e.find(t=>"enter_flow"===t.type);return W`
|
|
8978
|
+
`},toFormData:t=>{var e,i;const o=null===(e=t.actions)||void 0===e?void 0:e.find(t=>"transfer_airtime"===t.type),n=[];return o&&o.amounts&&Object.entries(o.amounts).forEach(([t,e])=>{var i;n.push({currency:[{value:t,name:(null===(i=Wp[t])||void 0===i?void 0:i.name)?`${Wp[t].name} (${t})`:t}],amount:String(e)})}),{uuid:t.uuid,amounts:n,result_name:(null===(i=t.router)||void 0===i?void 0:i.result_name)||""}},fromFormData:(t,e)=>{var i,o,n;const s={};t.amounts&&Array.isArray(t.amounts)&&t.amounts.forEach(t=>{var e;if(!(null==t?void 0:t.currency)||!(null==t?void 0:t.amount)||""===t.amount.trim())return;let i;if(Array.isArray(t.currency)&&t.currency.length>0)i=t.currency[0].value;else if("string"==typeof t.currency)i=t.currency;else{if(!(null===(e=t.currency)||void 0===e?void 0:e.value))return;i=t.currency.value}const o=parseFloat(t.amount.trim());!isNaN(o)&&o>0&&(s[i]=o)});const r=null===(i=e.actions)||void 0===i?void 0:i.find(t=>"transfer_airtime"===t.type),a={type:"transfer_airtime",uuid:(null==r?void 0:r.uuid)||Kt(),amounts:s},l=(null===(o=e.router)||void 0===o?void 0:o.categories)||[],d=e.exits||[],c=(null===(n=e.router)||void 0===n?void 0:n.cases)||[],{router:h,exits:u}=Be("@locals._new_transfer",{type:"has_text",arguments:[]},l,d,c),p={...h};return t.result_name&&""!==t.result_name.trim()&&(p.result_name=t.result_name.trim()),{uuid:e.uuid,actions:[a],router:p,exits:u}},localizable:"categories",nonTranslatableCategories:"all"},Yp=t=>{if("string"==typeof t)return t.trim();if(Array.isArray(t)&&t.length>0){const e=t[0];if(e&&"object"==typeof e&&e.value)return e.value.trim()}else if(t&&"object"==typeof t&&t.value)return t.value.trim();return""},Kp=t=>{const e=Yp(t.operator);if(!e||!t.category||""===t.category.trim())return!0;const i=hc(e);return i&&1===i.operands?!t.value1||""===t.value1.trim():!(!i||2!==i.operands)&&(!t.value1||""===t.value1.trim()||!t.value2||""===t.value2.trim())},Gp=t=>{const e=Yp(t.operator),i=hc(e);return!i||i.operands>=1},Xp=t=>{const e=Yp(t.operator),i=hc(e);return!!i&&2===i.operands},Qp=t=>{const e=Yp(t.operator);return"has_district"===e||"has_ward"===e?"State":""},Jp=t=>"has_ward"===Yp(t.operator)?"District":"",tm=()=>({operator:{type:"select",required:!0,multi:!1,options:[],getDynamicOptions:()=>{const t=zd.getState().features;return uc(dc(t))},flavor:"xsmall",width:"220px"},value1:{type:"text",placeholder:Qp,evaluated:!0,flavor:"xsmall",conditions:{visible:Gp}},value2:{type:"text",placeholder:Jp,evaluated:!0,flavor:"xsmall",conditions:{visible:Xp}},category:{type:"text",placeholder:"Category",required:!0,maxLength:36,maxWidth:"120px",flavor:"xsmall"}}),em=t=>(t.rules||[]).filter(t=>{const e=Yp(null==t?void 0:t.operator);if(!e||!(null==t?void 0:t.category)||""===e||""===t.category.trim())return!1;const i=hc(e);return i&&1===i.operands?(null==t?void 0:t.value1)&&""!==t.value1.trim():!i||2!==i.operands||(null==t?void 0:t.value1)&&""!==t.value1.trim()&&(null==t?void 0:t.value2)&&""!==t.value2.trim()}).map(t=>{const e=Yp(t.operator),i=hc(e),o=t.value1?t.value1.trim():"",n=t.value2?t.value2.trim():"";let s="";return s=i&&1===i.operands?o:(i&&i.operands,""),{operator:e,value:s,value1:o,value2:n,category:t.category.trim()}}),im=t=>{var e,i;const o=[];return(null===(e=t.router)||void 0===e?void 0:e.cases)&&(null===(i=t.router)||void 0===i?void 0:i.categories)&&t.router.cases.forEach(e=>{const i=t.router.categories.find(t=>t.uuid===e.category_uuid);if(i&&!oe(i.name)){const t=hc(e.type),n=t?t.name:e.type;let s="",r="";t&&0===t.operands?(s="",r=""):t&&1===t.operands?(s=e.arguments.join(" "),r=""):t&&2===t.operands?(s=e.arguments[0]||"",r=e.arguments[1]||""):(s=e.arguments.join(" "),r=""),o.push({operator:{value:e.type,name:n},value1:s,value2:r,category:i.name})}}),o},om=(t,e="Define rules to categorize responses")=>({type:"array",helpText:e,itemLabel:"Rule",minItems:0,maxItems:100,sortable:!0,maintainEmptyItem:!0,isEmptyItem:Kp,onItemChange:(t,e,i,o)=>{const n=[...o],s={...n[t]};s[e]=i;const r=o[t]||{},a=Yp("operator"===e?r.operator:s.operator),l=Yp(s.operator),d=qe(a,hc,"value1"===e?r.value1:s.value1,"value2"===e?r.value2:s.value2),c=qe(l,hc,s.value1,s.value2);return(!s.category||""===s.category.trim()||s.category===d)&&c&&(s.category=c),n[t]=s,n},createEmptyItem:t=>{const e=zd.getState().features,i=uc(dc(e)),o=[...t].reverse().find(t=>{const e=Yp(t.operator),i=e?hc(e):void 0;return i&&i.operands>=1&&"locations"!==i.filter}),n=i.filter(t=>{const e=hc(t.value);return!e||"locations"!==e.filter}),s=o?Yp(o.operator):null,r=s?i.find(t=>t.value===s):n[0];return r?{operator:[{...r}]}:{}},itemConfig:{...tm(),operator:{...tm().operator,options:t}}}),nm={name:{id:"name",name:"Name",type:"property"},language:{id:"language",name:"Language",type:"property"},status:{id:"status",name:"Status",type:"property"},channel:{id:"channel",name:"Channel",type:"property"}},sm={type:"split_by_contact_field",name:"Split by Contact Field",group:fp.split,flowTypes:[cp,dp,hp],dialogSize:"large",form:{field:{type:"select",required:!0,searchable:!0,clearable:!1,endpoint:"/api/v2/fields.json",valueKey:"key",nameKey:"name",placeholder:"Select a field...",options:[...Object.values(nm).map(t=>({value:t.id,name:t.name,type:t.type})),...Hc.filter(t=>!t.excludeFromSplit).map(t=>({value:t.scheme,name:t.path,type:"scheme"}))]},rules:om(uc(dc()),""),result_name:pc,localizeRules:mc,localizeCategories:gc},layout:["field","rules",vc],validate:kc((t,e)=>{t.field&&0!==t.field.length||(e.field="A field is required")}),toFormData:(t,e)=>{var i,o,n,s;const r={...(null===(i=null==e?void 0:e.config)||void 0===i?void 0:i.operand)||nm.name};"field"===r.type?r.key||(r.key=r.id):r.value||(r.value=r.id);const a=im(t);return{uuid:t.uuid,field:[r],rules:a,result_name:(null===(o=t.router)||void 0===o?void 0:o.result_name)||"",localizeRules:(null===(n=null==e?void 0:e.config)||void 0===n?void 0:n.localizeRules)||!1,localizeCategories:(null===(s=null==e?void 0:e.config)||void 0===s?void 0:s.localizeCategories)||!1}},fromFormData:(t,e)=>{var i,o,n;const s=null===(i=t.field)||void 0===i?void 0:i[0];if(!s)return e;const r=(t=>{if("scheme"===t.type)return`@(default(urn_parts(urns.${t.id||t.value}).path, ""))`;return"property"===t.type?`@contact.${t.id||t.value}`:`@fields.${t.key||t.id||t.value}`})(s),a=em(t),l=(null===(o=e.router)||void 0===o?void 0:o.categories)||[],d=e.exits||[],c=(null===(n=e.router)||void 0===n?void 0:n.cases)||[],{router:h,exits:u}=Ue(r,a,hc,l,d,c),p={...h};return t.result_name&&""!==t.result_name.trim()&&(p.result_name=t.result_name.trim()),{...e,router:p,exits:u}},toUIConfig:t=>{var e;const i=null===(e=t.field)||void 0===e?void 0:e[0];if(!i)return{};let o=i.id||i.value||i.key;"scheme"===i.type&&(o=i.value||i.id);let n=i.type;"property"!==n&&"scheme"!==n&&(n="field");const s={operand:{id:o,name:i.name||i.label,type:n}};return s.localizeRules=!!t.localizeRules,s.localizeCategories=!!t.result_name&&!!t.localizeCategories,s},renderTitle:(t,e)=>W`<div>Split by ${e.config.operand.name}</div>`,localizable:"categories"},rm={type:"split_by_expression",name:"Split by Expression",group:fp.split,flowTypes:[cp,dp,hp],dialogSize:"large",form:{operand:{type:"text",label:"Expression",helpText:"The expression to evaluate and split on",required:!0,evaluated:!0,placeholder:"@fields.age"},rules:om(uc(dc()),""),result_name:pc,localizeRules:mc,localizeCategories:gc},layout:["operand","rules",vc],validate:kc((t,e)=>{t.operand&&""!==t.operand.trim()||(e.operand="Expression is required")}),toFormData:(t,e)=>{var i,o,n,s;const r=im(t);return{uuid:t.uuid,operand:(null===(i=t.router)||void 0===i?void 0:i.operand)||"@input.text",rules:r,result_name:(null===(o=t.router)||void 0===o?void 0:o.result_name)||"",localizeRules:(null===(n=null==e?void 0:e.config)||void 0===n?void 0:n.localizeRules)||!1,localizeCategories:(null===(s=null==e?void 0:e.config)||void 0===s?void 0:s.localizeCategories)||!1}},toUIConfig:t=>{const e={};return e.localizeRules=!!t.localizeRules,e.localizeCategories=!!t.result_name&&!!t.localizeCategories,e},fromFormData:(t,e)=>{var i,o,n;const s=em(t),r=(null===(i=t.operand)||void 0===i?void 0:i.trim())||"@input.text",a=(null===(o=e.router)||void 0===o?void 0:o.categories)||[],l=e.exits||[],d=(null===(n=e.router)||void 0===n?void 0:n.cases)||[],{router:c,exits:h}=Ue(r,s,hc,a,l,d),u={...c};return t.result_name&&""!==t.result_name.trim()&&(u.result_name=t.result_name.trim()),{...e,router:u,exits:h}},localizable:"categories"},am={type:"split_by_groups",name:"Split by Group",group:fp.split,flowTypes:[cp,dp,hp],form:{groups:{type:"select",label:"Groups",helpText:"Select the groups to split contacts by. Contacts will be routed based on their group membership.",required:!0,options:[],multi:!0,searchable:!0,endpoint:"/api/v2/groups.json",valueKey:"uuid",nameKey:"name",placeholder:"Search for groups...",allowCreate:!0,createArbitraryOption:(t,e)=>!e.find(e=>e.name.toLowerCase().trim()===t.toLowerCase().trim())&&t.trim()?{name:t.trim(),arbitrary:!0}:null},result_name:pc},layout:["groups",bc],validate:kc((t,e)=>{t.groups&&Array.isArray(t.groups)&&0!==t.groups.length||(e.groups="At least one group is required")}),toFormData:t=>{var e,i;const o=[];return(null===(e=t.router)||void 0===e?void 0:e.cases)&&t.router.cases.forEach(t=>{var e;"has_group"===t.type&&(null===(e=t.arguments)||void 0===e?void 0:e.length)>=2&&o.push({uuid:t.arguments[0],name:t.arguments[1]})}),{uuid:t.uuid,groups:o,result_name:(null===(i=t.router)||void 0===i?void 0:i.result_name)||""}},fromFormData:(t,e)=>{var i,o;const n=(t.groups||[]).filter(t=>(null==t?void 0:t.uuid)||(null==t?void 0:t.arbitrary)).map(t=>({uuid:t.uuid||Kt(),name:t.name})),s=(null===(i=e.router)||void 0===i?void 0:i.categories)||[],r=e.exits||[],a=(null===(o=e.router)||void 0===o?void 0:o.cases)||[],{categories:l,exits:d,cases:c}=wc(n.map(t=>({name:t.name,case:{type:"has_group",arguments:[t.uuid,t.name]}})),s,r,a),h=_c(l,d,s,r,n.map(t=>t.name));return{uuid:e.uuid,actions:e.actions||[],router:{type:"switch",cases:c,categories:l,default_category_uuid:h,operand:"@contact.groups",result_name:t.result_name||""},exits:d}},router:{type:"switch",operand:"@contact.groups"},localizable:"categories"},lm={type:"split_by_random",name:"Random Split",group:fp.split,flowTypes:[cp,dp,hp],form:{categories:{type:"array",helpText:"Define the buckets to randomly split contacts into",required:!0,itemLabel:"Bucket",sortable:!0,minItems:2,maxItems:10,isEmptyItem:t=>!t.name||""===t.name.trim(),itemConfig:{name:{type:"text",placeholder:"Bucket name",required:!0}}}},layout:["categories"],validate:kc((t,e)=>{if(!t.categories||!Array.isArray(t.categories))return;const i=t.categories.filter(t=>(null==t?void 0:t.name)&&""!==t.name.trim());i.length<2&&(e.categories="At least 2 buckets are required for random split");const o=[],n=new Map;if(i.forEach(t=>{const e=t.name.trim().toLowerCase();n.has(e)||n.set(e,[]),n.get(e).push(t.name.trim())}),n.forEach(t=>{t.length>1&&o.push(...t)}),o.length>0){const t=[...new Set(o)];e.categories=`Duplicate bucket names found: ${t.join(", ")}`}}),toFormData:t=>{var e,i;const o=(null===(i=null===(e=t.router)||void 0===e?void 0:e.categories)||void 0===i?void 0:i.map(t=>({name:t.name})))||[];return{uuid:t.uuid,categories:o}},fromFormData:(t,e)=>{var i;const o=(t.categories||[]).filter(t=>{var e;return null===(e=null==t?void 0:t.name)||void 0===e?void 0:e.trim()}).map(t=>t.name.trim()),n=(null===(i=e.router)||void 0===i?void 0:i.categories)||[],s=e.exits||[],{categories:r,exits:a}=wc(o.map(t=>({name:t})),n,s);return{uuid:e.uuid,actions:e.actions||[],router:{type:"random",categories:r},exits:a}},router:{type:"random"},localizable:"categories"},dm=[{value:"0",name:"first result"},{value:"1",name:"second result"},{value:"2",name:"third result"},{value:"3",name:"fourth result"},{value:"4",name:"fifth result"},{value:"5",name:"sixth result"},{value:"6",name:"seventh result"},{value:"7",name:"eighth result"},{value:"8",name:"ninth result"},{value:"9",name:"tenth result"},{value:"10",name:"11th result"},{value:"11",name:"12th result"},{value:"12",name:"13th result"},{value:"13",name:"14th result"},{value:"14",name:"15th result"},{value:"15",name:"16th result"},{value:"16",name:"17th result"},{value:"17",name:"18th result"},{value:"18",name:"19th result"},{value:"19",name:"20th result"}],cm=[{value:"",name:"Don't delimit result"},{value:" ",name:"Delimited by spaces"},{value:".",name:"Delimited by periods"},{value:"+",name:"Delimited by plusses"}],hm={type:"split_by_run_result",name:"Split by Result",aliases:["split_by_run_result_delimited"],group:fp.split,flowTypes:[cp,dp,hp],dialogSize:"large",form:{result:{type:"select",required:!0,searchable:!1,clearable:!1,placeholder:"Select a result...",getDynamicOptions:()=>{const t=Qc();return t?t.getState().getFlowResults().map(t=>({value:t.key,name:t.name})):[]},valueKey:"value",nameKey:"name"},delimit_by:{type:"select",required:!1,searchable:!1,clearable:!1,options:cm,valueKey:"value",nameKey:"name",maxWidth:"180px"},delimit_index:{type:"select",required:!1,searchable:!1,clearable:!1,options:dm,valueKey:"value",nameKey:"name",maxWidth:"140px",conditions:{visible:t=>{var e,i;const o=null===(i=null===(e=t.delimit_by)||void 0===e?void 0:e[0])||void 0===i?void 0:i.value;return void 0!==o&&""!==o}}},rules:om(uc(dc()),""),result_name:pc,localizeRules:mc,localizeCategories:gc},layout:[{type:"row",label:"Flow Result",helpText:"Select a flow result and optionally delimit it to split on a specific part",items:["result","delimit_by","delimit_index"]},"rules",vc],validate:kc((t,e)=>{t.result&&0!==t.result.length||(e.result="A flow result is required")}),toFormData:(t,e)=>{var i,o,n,s,r;const a=null===(i=null==e?void 0:e.config)||void 0===i?void 0:i.operand,l=a?{...a,value:a.value||a.id}:null,d=im(t),c=((null===(o=t.router)||void 0===o?void 0:o.operand)||"").match(/field\(results\.[\w]+,\s*(\d+),\s*"(.+?)"\)/),h=null!==c,u=h?parseInt(c[1],10):0,p=h?c[2]:"";return{uuid:t.uuid,result:l?[l]:[],delimit_by:h?[cm.find(t=>t.value===p)]:[cm[0]],delimit_index:h?[dm.find(t=>t.value===String(u))]:[dm[0]],rules:d,result_name:(null===(n=t.router)||void 0===n?void 0:n.result_name)||"",localizeRules:(null===(s=null==e?void 0:e.config)||void 0===s?void 0:s.localizeRules)||!1,localizeCategories:(null===(r=null==e?void 0:e.config)||void 0===r?void 0:r.localizeCategories)||!1}},fromFormData:(t,e)=>{var i,o,n,s,r,a,l,d;const c=null===(i=t.result)||void 0===i?void 0:i[0];if(!c)return e;let h;const u=c.value||c.id,p=null===(n=null===(o=t.delimit_by)||void 0===o?void 0:o[0])||void 0===n?void 0:n.value;if(void 0!==p&&""!==p){h=`@(field(results.${u}, ${null!==(a=null===(r=null===(s=t.delimit_index)||void 0===s?void 0:s[0])||void 0===r?void 0:r.value)&&void 0!==a?a:"0"}, "${p}"))`}else h=`@results.${u}`;const m=em(t),g=(null===(l=e.router)||void 0===l?void 0:l.categories)||[],f=e.exits||[],v=(null===(d=e.router)||void 0===d?void 0:d.cases)||[],{router:b,exits:y}=Ue(h,m,hc,g,f,v),x={...b};return t.result_name&&""!==t.result_name.trim()&&(x.result_name=t.result_name.trim()),{...e,router:x,exits:y}},toUIConfig:t=>{var e,i,o,n,s,r;const a=null===(e=t.result)||void 0===e?void 0:e[0];if(!a)return{};const l={operand:{id:a.value,name:a.name,type:"result"}},d=null===(o=null===(i=t.delimit_by)||void 0===i?void 0:i[0])||void 0===o?void 0:o.value,c=void 0!==d&&""!==d;return c&&(l.index=parseInt(null!==(r=null===(s=null===(n=t.delimit_index)||void 0===n?void 0:n[0])||void 0===s?void 0:s.value)&&void 0!==r?r:"0",10),l.delimiter=d),l.type=c?"split_by_run_result_delimited":"split_by_run_result",l.localizeRules=!!t.localizeRules,l.localizeCategories=!!t.result_name&&!!t.localizeCategories,l},localizable:"categories"},um=t=>{var e;return(null===(e=Hc.find(e=>e.scheme===t))||void 0===e?void 0:e.name)||t},pm={type:"split_by_scheme",name:"Split by URN Type",group:fp.split,flowTypes:[cp,dp,hp],form:{schemes:{type:"select",label:"Channel Types",helpText:"The contact's URN is the address they used to reach you such as their phone number or a Facebook ID. Select which URN types to split by.",required:!0,options:Hc.map(t=>({value:t.scheme,name:t.name})),multi:!0,searchable:!0,placeholder:"Select the channels to split by..."},result_name:pc},layout:["schemes",bc],validate:kc((t,e)=>{t.schemes&&Array.isArray(t.schemes)&&0!==t.schemes.length||(e.schemes="At least one channel type is required")}),toFormData:t=>{var e,i;const o=[];return(null===(e=t.router)||void 0===e?void 0:e.cases)&&t.router.cases.forEach(t=>{var e;"has_only_phrase"===t.type&&(null===(e=t.arguments)||void 0===e?void 0:e.length)>0&&o.push(t.arguments[0])}),{uuid:t.uuid,schemes:o.map(t=>({value:t,name:um(t)})),result_name:(null===(i=t.router)||void 0===i?void 0:i.result_name)||""}},fromFormData:(t,e)=>{var i,o;const n=(t.schemes||[]).filter(t=>t).map(t=>"string"==typeof t?t:t.value),s=(null===(i=e.router)||void 0===i?void 0:i.categories)||[],r=e.exits||[],a=(null===(o=e.router)||void 0===o?void 0:o.cases)||[],{categories:l,exits:d,cases:c}=wc(n.map(t=>({name:um(t),case:{type:"has_only_phrase",arguments:[t]}})),s,r,a),h=_c(l,d,s,r,n.map(um));return{uuid:e.uuid,actions:e.actions||[],router:{type:"switch",cases:c,categories:l,default_category_uuid:h,operand:"@(urn_parts(contact.urn).scheme)",result_name:t.result_name||""},exits:d}},router:{type:"switch",operand:"@(urn_parts(contact.urn).scheme)"},localizable:"categories"},mm={type:"split_by_subflow",name:"Enter a Flow",group:gp.trigger,flowTypes:[cp,dp,hp],showAsAction:!0,form:{flow:{type:"select",required:!0,searchable:!0,placeholder:"Select a flow...",helpText:"Once the subflow is complete or expires, the contact will return here",endpoint:"/api/v2/flows.json",valueKey:"uuid",nameKey:"name",shouldExclude:Up},params:{type:"key-value",keyPlaceholder:"Parameter name",valuePlaceholder:"Value",minRows:0,readOnlyKeys:!0,dependsOn:["flow"],conditions:{visible:t=>{const e=t.params;return Array.isArray(e)?e.length>0:!(!e||"object"!=typeof e)&&Object.keys(e).length>0}},computeValue:(t,e)=>{var i;const o=Array.isArray(t.flow)&&t.flow.length>0?t.flow[0]:null;if(!(null===(i=null==o?void 0:o.parent_refs)||void 0===i?void 0:i.length))return[];const n={};return Array.isArray(e)?e.forEach(t=>{t.key&&(n[t.key]=t.value||"")}):e&&"object"==typeof e&&Object.entries(e).forEach(([t,e])=>{n[t]="string"==typeof e?e:""}),o.parent_refs.map(t=>({key:t,value:n[t]||""}))}}},layout:["flow",{type:"accordion",sections:[{label:"Parameters",collapsed:!1,getValueCount:t=>{const e=t.params;return Array.isArray(e)?e.filter(t=>t.value&&""!==t.value.trim()).length:e&&"object"==typeof e?Object.values(e).filter(t=>"string"==typeof t&&""!==t.trim()).length:0},items:["params"]}]}],resolveFormData:async t=>{var e;const i=Array.isArray(t.flow)&&t.flow.length>0?t.flow[0]:null;if(!(null==i?void 0:i.uuid))return t;if(i.parent_refs)return t;try{const o=await fetch(`/api/v2/flows.json?uuid=${i.uuid}`),n=null===(e=(await o.json()).results)||void 0===e?void 0:e[0];if(null==n?void 0:n.parent_refs){const e={...i,parent_refs:n.parent_refs};return{...t,flow:[e]}}}catch(t){}return t},render:t=>{var e;const i=null===(e=t.actions)||void 0===e?void 0:e.find(t=>"enter_flow"===t.type);return W`
|
|
8982
8979
|
<div class="body">
|
|
8983
8980
|
${(null==i?void 0:i.flow)?Uc([i.flow],"flow"):null}
|
|
8984
8981
|
</div>
|
|
8985
|
-
`},toFormData:t=>{var e,i;const o=null===(e=t.actions)||void 0===e?void 0:e.find(t=>"enter_flow"===t.type),n={};return null===(i=t.actions)||void 0===i||i.filter(t=>"set_run_result"===t.type).forEach(t=>{const e=t;n[e.name]=e.value}),{uuid:t.uuid,flow:(null==o?void 0:o.flow)?[{uuid:o.flow.uuid,name:o.flow.name}]:[],params:n}},fromFormData:(t,e)=>{var i,o,n;const s=Array.isArray(t.flow)&&t.flow.length>0?t.flow[0]:null,r=null===(i=e.actions)||void 0===i?void 0:i.find(t=>"enter_flow"===t.type),a={type:"enter_flow",uuid:(null==r?void 0:r.uuid)||Kt(),flow:s?{uuid:s.uuid||s.value,name:s.name}:{uuid:"",name:""}},l=[],d=t.params||{};Object.entries(d).forEach(([t,e])=>{"string"==typeof e&&""!==e.trim()&&l.push({type:"set_run_result",uuid:Kt(),name:t,value:e,category:""})}),l.push(a);const c=(null===(o=e.router)||void 0===o?void 0:o.categories)||[],h=e.exits||[],u=(null===(n=e.router)||void 0===n?void 0:n.cases)||[],p=c.find(t=>"Complete"===t.name),m=p?h.find(t=>t.uuid===p.exit_uuid):null,g=p?u.find(t=>t.category_uuid===p.uuid):null,f=(null==p?void 0:p.uuid)||Kt(),v=(null==m?void 0:m.uuid)||Kt(),b=(null==g?void 0:g.uuid)||Kt(),y=c.find(t=>"Expired"===t.name),x=y?h.find(t=>t.uuid===y.exit_uuid):null,w=(null==y?void 0:y.uuid)||Kt(),_=(null==x?void 0:x.uuid)||Kt(),k=[{uuid:f,name:"Complete",exit_uuid:v},{uuid:w,name:"Expired",exit_uuid:_}],C=[{uuid:v,destination_uuid:(null==m?void 0:m.destination_uuid)||null},{uuid:_,destination_uuid:(null==x?void 0:x.destination_uuid)||null}],S={type:"switch",categories:k,default_category_uuid:w,operand:"@child.status",cases:[{uuid:b,type:"has_only_text",arguments:["completed"],category_uuid:f}]};return{uuid:e.uuid,actions:l,router:S,exits:C}},localizable:"categories",nonTranslatableCategories:"all"},
|
|
8982
|
+
`},toFormData:t=>{var e,i;const o=null===(e=t.actions)||void 0===e?void 0:e.find(t=>"enter_flow"===t.type),n={};return null===(i=t.actions)||void 0===i||i.filter(t=>"set_run_result"===t.type).forEach(t=>{const e=t;n[e.name]=e.value}),{uuid:t.uuid,flow:(null==o?void 0:o.flow)?[{uuid:o.flow.uuid,name:o.flow.name}]:[],params:n}},fromFormData:(t,e)=>{var i,o,n;const s=Array.isArray(t.flow)&&t.flow.length>0?t.flow[0]:null,r=null===(i=e.actions)||void 0===i?void 0:i.find(t=>"enter_flow"===t.type),a={type:"enter_flow",uuid:(null==r?void 0:r.uuid)||Kt(),flow:s?{uuid:s.uuid||s.value,name:s.name}:{uuid:"",name:""}},l=[],d=t.params||{};Object.entries(d).forEach(([t,e])=>{"string"==typeof e&&""!==e.trim()&&l.push({type:"set_run_result",uuid:Kt(),name:t,value:e,category:""})}),l.push(a);const c=(null===(o=e.router)||void 0===o?void 0:o.categories)||[],h=e.exits||[],u=(null===(n=e.router)||void 0===n?void 0:n.cases)||[],p=c.find(t=>"Complete"===t.name),m=p?h.find(t=>t.uuid===p.exit_uuid):null,g=p?u.find(t=>t.category_uuid===p.uuid):null,f=(null==p?void 0:p.uuid)||Kt(),v=(null==m?void 0:m.uuid)||Kt(),b=(null==g?void 0:g.uuid)||Kt(),y=c.find(t=>"Expired"===t.name),x=y?h.find(t=>t.uuid===y.exit_uuid):null,w=(null==y?void 0:y.uuid)||Kt(),_=(null==x?void 0:x.uuid)||Kt(),k=[{uuid:f,name:"Complete",exit_uuid:v},{uuid:w,name:"Expired",exit_uuid:_}],C=[{uuid:v,destination_uuid:(null==m?void 0:m.destination_uuid)||null},{uuid:_,destination_uuid:(null==x?void 0:x.destination_uuid)||null}],S={type:"switch",categories:k,default_category_uuid:w,operand:"@child.status",cases:[{uuid:b,type:"has_only_text",arguments:["completed"],category_uuid:f}]};return{uuid:e.uuid,actions:l,router:S,exits:C}},localizable:"categories",nonTranslatableCategories:"all"},gm={type:"split_by_ticket",name:"Open Ticket",group:gp.trigger,flowTypes:[cp,dp,hp],showAsAction:!0,form:{topic:{type:"select",label:"Topic",required:!0,placeholder:"Select a topic",options:[],endpoint:"/api/v2/topics.json",valueKey:"uuid",nameKey:"name",maxWidth:"200px"},assignee:{type:"select",label:"Assignee",required:!1,placeholder:"Select an agent (optional)",endpoint:"/api/v2/users.json",valueKey:"uuid",getName:t=>t.name||[t.first_name,t.last_name].join(" "),clearable:!0},note:{type:"textarea",label:"Note",required:!1,placeholder:"Enter a note for the ticket (optional)",minHeight:100}},layout:[{type:"row",items:["topic","assignee"]},"note"],render:t=>{var e,i;const o=null===(e=t.actions)||void 0===e?void 0:e.find(t=>"open_ticket"===t.type);return W`
|
|
8986
8983
|
<div class="body">
|
|
8987
8984
|
${(null===(i=null==o?void 0:o.topic)||void 0===i?void 0:i.name)||"Configure ticket"}
|
|
8988
8985
|
</div>
|
|
8989
|
-
`},toFormData:t=>{var e;const i=null===(e=t.actions)||void 0===e?void 0:e.find(t=>"open_ticket"===t.type);return{uuid:t.uuid,topic:(null==i?void 0:i.topic)?[{uuid:i.topic.uuid,name:i.topic.name}]:[],assignee:(null==i?void 0:i.assignee)?[{uuid:i.assignee.uuid,name:i.assignee.name}]:[],note:(null==i?void 0:i.note)||""}},fromFormData:(t,e)=>{var i,o,n;const s=null===(i=e.actions)||void 0===i?void 0:i.find(t=>"open_ticket"===t.type),r={type:"open_ticket",uuid:(null==s?void 0:s.uuid)||Kt(),topic:t.topic&&t.topic.length>0?{uuid:t.topic[0].uuid,name:t.topic[0].name}:void 0,assignee:t.assignee&&t.assignee.length>0?{uuid:t.assignee[0].uuid,name:t.assignee[0].name||[t.assignee[0].first_name,t.assignee[0].last_name].join(" ")}:void 0,note:t.note||""},a=(null===(o=e.router)||void 0===o?void 0:o.categories)||[],l=e.exits||[],d=(null===(n=e.router)||void 0===n?void 0:n.cases)||[],{router:c,exits:h}=Be("@locals._new_ticket",{type:"has_text",arguments:[]},a,l,d);return{uuid:e.uuid,actions:[r],router:c,exits:h}},localizable:"categories",nonTranslatableCategories:"all"},
|
|
8986
|
+
`},toFormData:t=>{var e;const i=null===(e=t.actions)||void 0===e?void 0:e.find(t=>"open_ticket"===t.type);return{uuid:t.uuid,topic:(null==i?void 0:i.topic)?[{uuid:i.topic.uuid,name:i.topic.name}]:[],assignee:(null==i?void 0:i.assignee)?[{uuid:i.assignee.uuid,name:i.assignee.name}]:[],note:(null==i?void 0:i.note)||""}},fromFormData:(t,e)=>{var i,o,n;const s=null===(i=e.actions)||void 0===i?void 0:i.find(t=>"open_ticket"===t.type),r={type:"open_ticket",uuid:(null==s?void 0:s.uuid)||Kt(),topic:t.topic&&t.topic.length>0?{uuid:t.topic[0].uuid,name:t.topic[0].name}:void 0,assignee:t.assignee&&t.assignee.length>0?{uuid:t.assignee[0].uuid,name:t.assignee[0].name||[t.assignee[0].first_name,t.assignee[0].last_name].join(" ")}:void 0,note:t.note||""},a=(null===(o=e.router)||void 0===o?void 0:o.categories)||[],l=e.exits||[],d=(null===(n=e.router)||void 0===n?void 0:n.cases)||[],{router:c,exits:h}=Be("@locals._new_ticket",{type:"has_text",arguments:[]},a,l,d);return{uuid:e.uuid,actions:[r],router:c,exits:h}},localizable:"categories",nonTranslatableCategories:"all"},fm=[{key:"Accept",value:"application/json"}],vm=[{key:"Accept",value:"application/json"},{key:"Content-Type",value:"application/json"}];const bm='@(json(object(\n "contact", object(\n "uuid", contact.uuid, \n "name", contact.name, \n "urn", contact.urn\n ),\n "flow", object(\n "uuid", run.flow.uuid, \n "name", run.flow.name\n ),\n "results", foreach_value(results, extract_object, "value", "category")\n)))',ym={type:"split_by_webhook",name:"Call Webhook",group:gp.services,flowTypes:[cp,dp,hp],showAsAction:!0,form:{method:{type:"select",required:!0,options:["GET","POST","PUT","DELETE","HEAD","PATCH"],maxWidth:"120px",searchable:!1},url:{type:"text",required:!0,evaluated:!0,placeholder:"https://example.com/webhook"},headers:{type:"key-value",sortable:!0,keyPlaceholder:"Header name",valuePlaceholder:"Header value",minRows:0,dependsOn:["method"],computeValue:(t,e,i)=>{const o=Array.isArray(t.method)&&t.method.length>0?t.method[0].value||t.method[0].name:t.method;return function(t){if(!t||0===t.length)return!0;const e=t.filter(t=>""!==(t.key||t.name||"")||""!==(t.value||""));if(0===e.length)return!0;for(const t of[fm,vm])if(e.length===t.length&&e.every((e,i)=>(e.key||e.name)===t[i].key&&e.value===t[i].value))return!0;return!1}(e)?function(t){return"POST"===t||"PUT"===t||"PATCH"===t?vm.map(t=>({...t})):fm.map(t=>({...t}))}(o):e}},result_name:pc,body:{type:"textarea",evaluated:!0,placeholder:"Request body content (JSON, XML, etc.)",minHeight:200,dependsOn:["method"],computeValue:(t,e,i)=>{if("POST"===(Array.isArray(t.method)&&t.method.length>0?t.method[0].value||t.method[0].name:t.method)){if(!e||""===e.trim())return bm}else{const t=(null==i?void 0:i.body)||"";if(!t||""===t.trim()||!e||""===e.trim()||e.trim()===bm.trim())return""}return e}}},layout:[{type:"row",items:["method","url"]},{type:"accordion",sections:[{label:"Headers",collapsed:!0,getValueCount:t=>{var e;return(null===(e=t.headers)||void 0===e?void 0:e.length)||0},items:["headers"]},{label:"Body",collapsed:!0,getValueCount:t=>!(!t.body||""===t.body.trim()||t.body===bm),items:["body"]}]},"result_name"],render:t=>{var e;const i=null===(e=t.actions)||void 0===e?void 0:e.find(t=>"call_webhook"===t.type),o=(null==i?void 0:i.url)||"Configure webhook";return W` <div class="body">
|
|
8990
8987
|
${Pc(Lc(o,!0),o)}
|
|
8991
|
-
</div>`},toFormData:t=>{var e,i;const o=null===(e=t.actions)||void 0===e?void 0:e.find(t=>"call_webhook"===t.type);return{uuid:t.uuid,method:(null==o?void 0:o.method)||"GET",url:(null==o?void 0:o.url)||"",headers:(null==o?void 0:o.headers)||(n=(null==o?void 0:o.method)||"GET","POST"===n||"PUT"===n||"PATCH"===n?{Accept:"application/json","Content-Type":"application/json"}:{Accept:"application/json"}),body:(null==o?void 0:o.body)||"",result_name:(null===(i=t.router)||void 0===i?void 0:i.result_name)||""};var n},fromFormData:(t,e)=>{var i,o,n;const s=Array.isArray(t.method)&&t.method.length>0?t.method[0]:{value:"GET"},r=null===(i=e.actions)||void 0===i?void 0:i.find(t=>"call_webhook"===t.type),a={type:"call_webhook",uuid:(null==r?void 0:r.uuid)||Kt(),method:s.value,url:t.url||"",headers:t.headers||[],body:t.body||""},l=(null===(o=e.router)||void 0===o?void 0:o.categories)||[],d=e.exits||[],c=(null===(n=e.router)||void 0===n?void 0:n.cases)||[],{router:h,exits:u}=Be("@webhook.status",{type:"has_number_between",arguments:["200","299"]},l,d,c),p={...h};return t.result_name&&""!==t.result_name.trim()&&(p.result_name=t.result_name.trim()),{uuid:e.uuid,actions:[a],router:p,exits:u}},localizable:"categories",nonTranslatableCategories:"all"},
|
|
8988
|
+
</div>`},toFormData:t=>{var e,i;const o=null===(e=t.actions)||void 0===e?void 0:e.find(t=>"call_webhook"===t.type);return{uuid:t.uuid,method:(null==o?void 0:o.method)||"GET",url:(null==o?void 0:o.url)||"",headers:(null==o?void 0:o.headers)||(n=(null==o?void 0:o.method)||"GET","POST"===n||"PUT"===n||"PATCH"===n?{Accept:"application/json","Content-Type":"application/json"}:{Accept:"application/json"}),body:(null==o?void 0:o.body)||"",result_name:(null===(i=t.router)||void 0===i?void 0:i.result_name)||""};var n},fromFormData:(t,e)=>{var i,o,n;const s=Array.isArray(t.method)&&t.method.length>0?t.method[0]:{value:"GET"},r=null===(i=e.actions)||void 0===i?void 0:i.find(t=>"call_webhook"===t.type),a={type:"call_webhook",uuid:(null==r?void 0:r.uuid)||Kt(),method:s.value,url:t.url||"",headers:t.headers||[],body:t.body||""},l=(null===(o=e.router)||void 0===o?void 0:o.categories)||[],d=e.exits||[],c=(null===(n=e.router)||void 0===n?void 0:n.cases)||[],{router:h,exits:u}=Be("@webhook.status",{type:"has_number_between",arguments:["200","299"]},l,d,c),p={...h};return t.result_name&&""!==t.result_name.trim()&&(p.result_name=t.result_name.trim()),{uuid:e.uuid,actions:[a],router:p,exits:u}},localizable:"categories",nonTranslatableCategories:"all"},xm={type:"split_by_resthook",name:"Call Resthook",group:gp.services,flowTypes:[cp,dp,hp],showAsAction:!0,form:{resthook:{type:"select",label:"Resthook",required:!0,searchable:!0,clearable:!1,placeholder:"Select a resthook...",endpoint:"/api/v2/resthooks.json",valueKey:"resthook",nameKey:"resthook",helpText:"Select the resthook to call"},result_name:pc},layout:["resthook","result_name"],validate:kc((t,e)=>{t.resthook&&0!==t.resthook.length||(e.resthook="A resthook is required")}),render:t=>{var e;const i=null===(e=t.actions)||void 0===e?void 0:e.find(t=>"call_resthook"===t.type),o=(null==i?void 0:i.resthook)||"Configure resthook";return W` <div class="body">${Pc(o,o)}</div> `},toFormData:t=>{var e,i;const o=null===(e=t.actions)||void 0===e?void 0:e.find(t=>"call_resthook"===t.type);return{uuid:t.uuid,resthook:(null==o?void 0:o.resthook)?[{resthook:o.resthook}]:[],result_name:(null===(i=t.router)||void 0===i?void 0:i.result_name)||""}},fromFormData:(t,e)=>{var i,o,n;const s=Array.isArray(t.resthook)&&t.resthook.length>0?t.resthook[0]:null;if(!s)return e;const r=null===(i=e.actions)||void 0===i?void 0:i.find(t=>"call_resthook"===t.type),a={type:"call_resthook",uuid:(null==r?void 0:r.uuid)||Kt(),resthook:s.resthook},l=(null===(o=e.router)||void 0===o?void 0:o.categories)||[],d=e.exits||[],c=(null===(n=e.router)||void 0===n?void 0:n.cases)||[],{router:h,exits:u}=Be("@webhook.json.status",{type:"has_text",arguments:[]},l,d,c),p={...h};return t.result_name&&""!==t.result_name.trim()&&(p.result_name=t.result_name.trim()),{uuid:e.uuid,actions:[a],router:p,exits:u}},localizable:"categories",nonTranslatableCategories:"all"},wm={type:"split_by_llm",name:"Call AI",group:gp.services,flowTypes:[cp,dp,hp],showAsAction:!0,render:t=>{var e,i;const o=null===(e=t.actions)||void 0===e?void 0:e.find(t=>"call_llm"===t.type),n=(null==o?void 0:o.instructions)||"Configure AI instructions",s=null===(i=null==o?void 0:o.llm)||void 0===i?void 0:i.name;return W`
|
|
8992
8989
|
${s?W`<div class="body" style="padding-bottom:0;">
|
|
8993
8990
|
${Rc(s,(t=>{if(!t)return null;for(const[e,i]of Oc)if(e.test(t))return i;return null})(s))}
|
|
8994
8991
|
</div>`:null}
|
|
8995
8992
|
<div class="body" style="margin-bottom:10px;">
|
|
8996
8993
|
${Pc(Lc(n,!0),n)}
|
|
8997
8994
|
</div>
|
|
8998
|
-
`},form:{llm:{type:"select",label:"LLM",required:!0,options:[],endpoint:"/api/internal/llms.json",searchable:!0,valueKey:"uuid",nameKey:"name",placeholder:"Select an LLM...",shouldExclude:t=>!
|
|
8995
|
+
`},form:{llm:{type:"select",label:"LLM",required:!0,options:[],endpoint:"/api/internal/llms.json",searchable:!0,valueKey:"uuid",nameKey:"name",placeholder:"Select an LLM...",shouldExclude:t=>!jp(t,"engine")},input:{type:"text",label:"Input",helpText:"The input the AI will process",required:!0,evaluated:!0,placeholder:"@input"},instructions:{type:"textarea",label:"Instructions",helpText:"Tell the AI what to do with the input. The result can be referenced as **`@locals._llm_output`**",required:!0,evaluated:!0,placeholder:"Enter instructions for the AI model...",minHeight:130}},layout:["llm","input","instructions"],toFormData:t=>{var e;const i=null===(e=t.actions)||void 0===e?void 0:e.find(t=>"call_llm"===t.type);return{uuid:t.uuid,llm:(null==i?void 0:i.llm)?[i.llm]:[],input:(null==i?void 0:i.input)||"@input",instructions:(null==i?void 0:i.instructions)||""}},fromFormData:(t,e)=>{var i,o,n;const s=Array.isArray(t.llm)&&t.llm.length>0?t.llm[0]:null,r=null===(i=e.actions)||void 0===i?void 0:i.find(t=>"call_llm"===t.type),a={type:"call_llm",uuid:(null==r?void 0:r.uuid)||Kt(),llm:s?{uuid:s.uuid||s.value,name:s.name}:{uuid:"",name:""},input:t.input||"@input",instructions:t.instructions||"",output_local:"_llm_output"},l=(null===(o=e.router)||void 0===o?void 0:o.categories)||[],d=e.exits||[],c=(null===(n=e.router)||void 0===n?void 0:n.cases)||[],{router:h,exits:u}=Be("@locals._llm_output",{type:"has_text",arguments:[]},l,d,c);return{uuid:e.uuid,actions:[a],router:h,exits:u}},localizable:"categories",nonTranslatableCategories:"all"},_m={type:"split_by_llm_categorize",name:"Split by AI",group:gp.services,flowTypes:[],features:[pp],form:{llm:{type:"select",label:"LLM",helpText:"Select the LLM to use for categorization",required:!0,endpoint:"/api/internal/llms.json",valueKey:"uuid",nameKey:"name",placeholder:"Select an LLM...",shouldExclude:t=>!jp(t,"engine")},input:{type:"text",label:"Input",helpText:"The input to categorize (usually @input)",required:!0,evaluated:!0,placeholder:"@input"},categories:{type:"array",helpText:"Define the categories for classification",required:!0,sortable:!0,itemLabel:"Category",minItems:1,maxItems:10,isEmptyItem:t=>!t.name||""===t.name.trim(),itemConfig:{name:{type:"text",placeholder:"Category name",required:!0}}}},layout:["llm","input","categories"],validate:kc((t,e)=>{if(!t.categories||!Array.isArray(t.categories))return;const i=t.categories.filter(t=>(null==t?void 0:t.name)&&""!==t.name.trim()),o=[],n=new Map;if(i.forEach(t=>{const e=t.name.trim().toLowerCase();n.has(e)||n.set(e,[]),n.get(e).push(t.name.trim())}),n.forEach(t=>{t.length>1&&o.push(...t)}),o.length>0){const t=[...new Set(o)];e.categories=`Duplicate category names found: ${t.join(", ")}`}}),render:t=>{var e;const i=null===(e=t.actions)||void 0===e?void 0:e.find(t=>"call_llm"===t.type);return W`
|
|
8999
8996
|
<div class="body">Categorize with ${i.llm.name}</div>
|
|
9000
|
-
`},toFormData:t=>{var e,i,o;const n=null===(e=t.actions)||void 0===e?void 0:e.find(t=>"call_llm"===t.type),s=(null===(o=null===(i=t.router)||void 0===i?void 0:i.categories)||void 0===o?void 0:o.filter(t=>"Other"!==t.name&&"Failure"!==t.name).map(t=>({name:t.name})))||[];return{uuid:t.uuid,llm:(null==n?void 0:n.llm)?[n.llm]:[],input:(null==n?void 0:n.input)||"@input",categories:s}},fromFormData:(t,e)=>{var i,o,n;const s=Array.isArray(t.llm)&&t.llm.length>0?t.llm[0]:null,r=(t.categories||[]).filter(t=>{var e;return null===(e=null==t?void 0:t.name)||void 0===e?void 0:e.trim()}).map(t=>t.name.trim()),a=null===(i=e.actions)||void 0===i?void 0:i.find(t=>"call_llm"===t.type),l={type:"call_llm",uuid:(null==a?void 0:a.uuid)||Kt(),llm:s?{uuid:s.uuid||s.value,name:s.name}:{uuid:"",name:""},instructions:'@(prompt("categorize", slice(node.categories, 0, -2)))',input:t.input||"@input",output_local:"_llm_output"},d=(null===(o=e.router)||void 0===o?void 0:o.categories)||[],c=e.exits||[],h=(null===(n=e.router)||void 0===n?void 0:n.cases)||[],{router:u,exits:p}=((t,e,i,o=[],n=[],s=[])=>{const r=[],a=[],l=[];e.forEach(t=>{const e=Ne({name:t,existingCategories:o,existingExits:n,existingCases:s,caseConfig:i(t)});r.push(e.category),a.push(e.exit),e.case&&l.push(e.case)});const d=Ne({name:"Other",existingCategories:o,existingExits:n});r.push(d.category),a.push(d.exit);const c=Ne({name:"Failure",existingCategories:o,existingExits:n,existingCases:s,caseConfig:{type:"has_only_text",arguments:["<ERROR>"]}});return r.push(c.category),a.push(c.exit),c.case&&l.push(c.case),{router:{type:"switch",categories:r,default_category_uuid:d.category.uuid,operand:t,cases:l},exits:a}})("@locals._llm_output",r,t=>({type:"has_only_text",arguments:[t]}),d,c,h);return{uuid:e.uuid,actions:[l],router:u,exits:p}},localizable:"categories",nonTranslatableCategories:["Failure"]},Cm={type:"wait_for_audio",name:"Make Recording",group:vp.wait,flowTypes:[cp],form:{result_name:{type:"text",label:"Result Name",required:!1,maxLength:64,placeholder:"(optional)",helpText:"The name to use to reference this result in the flow"}},layout:["result_name"],toFormData:t=>{var e;return{uuid:t.uuid,result_name:(null===(e=t.router)||void 0===e?void 0:e.result_name)||""}},fromFormData:(t,e)=>{var i;const o=(null===(i=e.router)||void 0===i?void 0:i.categories)||[],n=e.exits||[];let s,r=o.find(t=>"All Responses"===t.name);if(r)s=n.find(t=>t.uuid===r.exit_uuid)||{uuid:r.exit_uuid,destination_uuid:null};else{const t=Kt();r={uuid:Kt(),name:"All Responses",exit_uuid:t},s={uuid:t,destination_uuid:null}}const a={type:"switch",operand:"@input",default_category_uuid:r.uuid,cases:[],categories:[r],wait:{type:"msg",hint:{type:"audio"}}};return t.result_name&&""!==t.result_name.trim()&&(a.result_name=t.result_name.trim()),{...e,router:a,exits:[s]}},localizable:"categories",nonTranslatableCategories:"all"},Sm=["Answered","No Answer","Busy","Failed"],Am=[{type:"has_only_text",arguments:["answered"],categoryName:"Answered"},{type:"has_only_text",arguments:["no_answer"],categoryName:"No Answer"},{type:"has_only_text",arguments:["busy"],categoryName:"Busy"}],$m={type:"wait_for_dial",name:"Redirect Call",group:vp.wait,flowTypes:[cp],router:{type:"switch",defaultCategory:"Failed",rules:Am.map(t=>({type:t.type,arguments:t.arguments,categoryName:t.categoryName}))},form:{phone:{type:"text",label:"Phone Number",required:!0,evaluated:!0,placeholder:"Phone number or expression"},dial_limit_seconds:{type:"text",label:"Dial Limit (seconds)",required:!1,placeholder:"60"},call_limit_seconds:{type:"text",label:"Call Limit (seconds)",required:!1,placeholder:"7200"},result_name:pc},layout:["phone",{type:"row",items:["dial_limit_seconds","call_limit_seconds"]},"result_name"],toFormData:t=>{var e,i;const o=null===(e=t.router)||void 0===e?void 0:e.wait;return{uuid:t.uuid,phone:(null==o?void 0:o.phone)||"",dial_limit_seconds:(null==o?void 0:o.dial_limit_seconds)?String(o.dial_limit_seconds):"",call_limit_seconds:(null==o?void 0:o.call_limit_seconds)?String(o.call_limit_seconds):"",result_name:(null===(i=t.router)||void 0===i?void 0:i.result_name)||""}},fromFormData:(t,e)=>{var i,o;const n=(null===(i=e.router)||void 0===i?void 0:i.categories)||[],s=e.exits||[],r=(null===(o=e.router)||void 0===o?void 0:o.cases)||[],a=[],l=[],d=[];for(const t of Sm){const e=n.find(e=>e.name===t);if(e){a.push(e);const t=s.find(t=>t.uuid===e.exit_uuid);l.push(t||{uuid:e.exit_uuid,destination_uuid:null})}else{const e=Kt();a.push({uuid:Kt(),name:t,exit_uuid:e}),l.push({uuid:e,destination_uuid:null})}}for(const t of Am){const e=a.find(e=>e.name===t.categoryName);if(!e)continue;const i=r.find(e=>{var i;return e.type===t.type&&(null===(i=e.arguments)||void 0===i?void 0:i[0])===t.arguments[0]});d.push({uuid:(null==i?void 0:i.uuid)||Kt(),type:t.type,arguments:t.arguments,category_uuid:e.uuid})}const c=a.find(t=>"Failed"===t.name),h=(t.phone||"").trim(),u=parseInt(t.dial_limit_seconds,10),p=parseInt(t.call_limit_seconds,10),m={type:"dial",phone:h};!isNaN(u)&&u>0&&(m.dial_limit_seconds=u),!isNaN(p)&&p>0&&(m.call_limit_seconds=p);const g={type:"switch",operand:'@(default(resume.dial.status, ""))',default_category_uuid:null==c?void 0:c.uuid,cases:d,categories:a,wait:m};return t.result_name&&""!==t.result_name.trim()&&(g.result_name=t.result_name.trim()),{...e,router:g,exits:l}},localizable:"categories",nonTranslatableCategories:"all"},Em={type:"wait_for_digits",name:"Wait for Digits",group:vp.wait,flowTypes:[cp],dialogSize:"large",form:{rules:nm(uc(lc.filter(t=>cc.has(t.type))),""),result_name:pc,localizeRules:mc,localizeCategories:gc},layout:[{type:"text",text:"Rules match against all digits pressed by the caller followed by the # sign."},"rules",vc],validate:t=>({valid:!0,errors:{}}),toFormData:(t,e)=>{var i,o,n;const s=om(t);return{uuid:t.uuid,rules:s,result_name:(null===(i=t.router)||void 0===i?void 0:i.result_name)||"",localizeRules:(null===(o=null==e?void 0:e.config)||void 0===o?void 0:o.localizeRules)||!1,localizeCategories:(null===(n=null==e?void 0:e.config)||void 0===n?void 0:n.localizeCategories)||!1}},toUIConfig:t=>{const e={};return e.localizeRules=!!t.localizeRules,e.localizeCategories=!!t.result_name&&!!t.localizeCategories,e},fromFormData:(t,e)=>{var i,o;const n=im(t),s=(null===(i=e.router)||void 0===i?void 0:i.categories)||[],r=e.exits||[],a=(null===(o=e.router)||void 0===o?void 0:o.cases)||[],{router:l,exits:d}=Ue("@input.text",n,hc,s,r,a),c={...l,wait:{type:"msg",hint:{type:"digits"}}};return t.result_name&&""!==t.result_name.trim()&&(c.result_name=t.result_name.trim()),{...e,router:c,exits:d}},localizable:"categories"},Tm=["1","2","3","4","5","6","7","8","9","0"];function Dm(t){return`digit_${t}`}const Mm={type:"wait_for_menu",name:"Wait for Menu",group:vp.wait,flowTypes:[cp],form:{...Object.fromEntries(Tm.map(t=>[Dm(t),{type:"text",required:!1,placeholder:"",flavor:"xsmall"}])),result_name:pc,localizeRules:mc,localizeCategories:gc},layout:[{type:"row",items:["digit_1","digit_2","digit_3"],gap:"2rem",marginBottom:"0.5rem",inlineLabels:{digit_1:"1",digit_2:"2",digit_3:"3"}},{type:"row",items:["digit_4","digit_5","digit_6"],gap:"2rem",marginBottom:"0.5rem",inlineLabels:{digit_4:"4",digit_5:"5",digit_6:"6"}},{type:"row",items:["digit_7","digit_8","digit_9"],gap:"2rem",marginBottom:"0.5rem",inlineLabels:{digit_7:"7",digit_8:"8",digit_9:"9"}},{type:"row",items:[{type:"spacer"},"digit_0",{type:"spacer"}],gap:"2rem",inlineLabels:{digit_0:"0"}},vc],toFormData:(t,e)=>{var i,o,n,s,r,a;const l={uuid:t.uuid,result_name:(null===(i=t.router)||void 0===i?void 0:i.result_name)||""};for(const t of Tm)l[Dm(t)]="";if((null===(o=t.router)||void 0===o?void 0:o.cases)&&(null===(n=t.router)||void 0===n?void 0:n.categories))for(const e of t.router.cases)if("has_number_eq"===e.type&&(null===(s=e.arguments)||void 0===s?void 0:s[0])){const i=e.arguments[0],o=t.router.categories.find(t=>t.uuid===e.category_uuid);o&&Tm.includes(i)&&(l[Dm(i)]=o.name)}return l.localizeRules=(null===(r=null==e?void 0:e.config)||void 0===r?void 0:r.localizeRules)||!1,l.localizeCategories=(null===(a=null==e?void 0:e.config)||void 0===a?void 0:a.localizeCategories)||!1,l},toUIConfig:t=>{const e={};return e.localizeRules=!!t.localizeRules,e.localizeCategories=!!t.result_name&&!!t.localizeCategories,e},fromFormData:(t,e)=>{var i,o;const n=(null===(i=e.router)||void 0===i?void 0:i.categories)||[],s=e.exits||[],r=(null===(o=e.router)||void 0===o?void 0:o.cases)||[],a=[],l=[],d=[];for(const e of Tm){const i=(t[Dm(e)]||"").trim();if(!i)continue;let o=a.find(t=>t.name===i);if(!o){const t=n.find(t=>t.name===i);if(t){o=t;const e=s.find(e=>e.uuid===t.exit_uuid);a.push(o),l.push(e||{uuid:t.exit_uuid,destination_uuid:null})}else{const t=Kt();o={uuid:Kt(),name:i,exit_uuid:t},a.push(o),l.push({uuid:t,destination_uuid:null})}}const c=r.find(t=>{var i;return"has_number_eq"===t.type&&(null===(i=t.arguments)||void 0===i?void 0:i[0])===e});d.push({uuid:(null==c?void 0:c.uuid)||Kt(),type:"has_number_eq",arguments:[e],category_uuid:o.uuid})}const c=n.find(t=>"Other"===t.name);let h;if(c){h=c;const t=s.find(t=>t.uuid===c.exit_uuid);l.push(t||{uuid:c.exit_uuid,destination_uuid:null})}else{const t=Kt();h={uuid:Kt(),name:"Other",exit_uuid:t},l.push({uuid:t,destination_uuid:null})}a.push(h);const u={type:"switch",operand:"@input.text",default_category_uuid:h.uuid,cases:d,categories:a,wait:{type:"msg",hint:{type:"digits",count:1}}};return t.result_name&&""!==t.result_name.trim()&&(u.result_name=t.result_name.trim()),{...e,router:u,exits:l}},localizable:"categories"},zm=[{value:"60",name:"1 minute"},{value:"120",name:"2 minutes"},{value:"180",name:"3 minutes"},{value:"240",name:"4 minutes"},{value:"300",name:"5 minutes"},{value:"600",name:"10 minutes"},{value:"900",name:"15 minutes"},{value:"1800",name:"30 minutes"},{value:"3600",name:"1 hour"},{value:"7200",name:"2 hours"},{value:"10800",name:"3 hours"},{value:"21600",name:"6 hours"},{value:"43200",name:"12 hours"},{value:"64800",name:"18 hours"},{value:"86400",name:"1 day"},{value:"172800",name:"2 days"},{value:"259200",name:"3 days"},{value:"604800",name:"1 week"}],Im=(t,e=[],i=[],o=[])=>{const{router:n,exits:s}=Ue("@input.text",t,hc,e,i,o),r=e.find(t=>"No Response"===t.name||"Timeout"===t.name);if(r){const t=i.find(t=>t.uuid===r.exit_uuid);t&&(n.categories.push(r),s.push({uuid:t.uuid,destination_uuid:t.destination_uuid||null}))}return{router:n,exits:s}},Om={type:"wait_for_response",name:"Wait for Response",group:vp.wait,flowTypes:[dp],hideFromSplits:!0,dialogSize:"large",form:{rules:nm(uc(dc()),"If the message from the contact..."),timeout_enabled:{type:"checkbox",label:t=>t.timeout_enabled?"Continue when there is no response for":"Continue when there is no response..",labelPadding:"4px 8px"},timeout_duration:{type:"select",placeholder:"5 minutes",multi:!1,maxWidth:"130px",flavor:"xsmall",options:zm,conditions:{visible:t=>!0===t.timeout_enabled}},result_name:pc,localizeRules:mc,localizeCategories:gc},layout:["rules",vc],gutter:[{type:"row",items:["timeout_enabled","timeout_duration"],gap:"0.5rem"}],validate:kc(()=>{}),toFormData:(t,e)=>{var i,o,n,s,r,a;const l=om(t),d=null===(n=null===(o=null===(i=t.router)||void 0===i?void 0:i.wait)||void 0===o?void 0:o.timeout)||void 0===n?void 0:n.seconds;let c=zm.find(t=>t.value===String(d));return c||(c={value:"300",name:"5 minutes"}),{uuid:t.uuid,rules:l,timeout_enabled:!!d,timeout_duration:c,result_name:(null===(s=t.router)||void 0===s?void 0:s.result_name)||"",localizeRules:(null===(r=null==e?void 0:e.config)||void 0===r?void 0:r.localizeRules)||!1,localizeCategories:(null===(a=null==e?void 0:e.config)||void 0===a?void 0:a.localizeCategories)||!1}},toUIConfig:t=>{const e={};return e.localizeRules=!!t.localizeRules,e.localizeCategories=!!t.result_name&&!!t.localizeCategories,e},fromFormData:(t,e)=>{var i,o,n,s,r,a,l,d;const c=im(t);if(0===c.length){let o=(null===(i=e.router)||void 0===i?void 0:i.categories)||[];const n=[...e.exits||[]];if(t.timeout_enabled){let t=o.find(t=>"No Response"===t.name);if(!t){const e=Kt();t={uuid:Kt(),name:"No Response",exit_uuid:e},o=[...o,t],n.find(t=>t.uuid===e)||n.push({uuid:e,destination_uuid:null})}}else o=o.filter(t=>"No Response"!==t.name);const{router:s,exits:r}=Im([],o,n,[]),a={...s,cases:[]};t.result_name&&""!==t.result_name.trim()&&(a.result_name=t.result_name.trim());const l={type:"msg"};if(t.timeout_enabled){let e;e=t.timeout_duration?Array.isArray(t.timeout_duration)&&t.timeout_duration.length>0?parseInt(t.timeout_duration[0].value,10):"string"==typeof t.timeout_duration?parseInt(t.timeout_duration,10):t.timeout_duration&&"object"==typeof t.timeout_duration&&t.timeout_duration.value?parseInt(t.timeout_duration.value,10):300:300,(isNaN(e)||e<=0)&&(e=300);const i=a.categories.find(t=>"No Response"===t.name);i&&(l.timeout={seconds:e,category_uuid:i.uuid})}return a.wait=l,{...e,router:a,exits:r}}const h=(null===(o=e.router)||void 0===o?void 0:o.categories)||[],u=e.exits||[],p=(null===(n=e.router)||void 0===n?void 0:n.cases)||[],{router:m,exits:g}=Im(c,h,u,p),f={...m};t.result_name&&""!==t.result_name.trim()&&(f.result_name=t.result_name.trim());const v={type:"msg"};try{if(t.timeout_enabled){let i;if(t.timeout_duration)try{i=parseInt(t.timeout_duration[0].value,10)}catch(t){i=300}const o=null===(r=null===(s=e.router)||void 0===s?void 0:s.categories)||void 0===r?void 0:r.find(t=>"No Response"===t.name),n=o||{uuid:Kt(),name:"No Response",exit_uuid:Kt()};if(v.timeout={seconds:i,category_uuid:n.uuid},!(null===(a=m.categories)||void 0===a?void 0:a.some(t=>"No Response"===t.name))&&(m.categories=m.categories||[],m.categories.push(n),!g.some(t=>t.uuid===n.exit_uuid))){const t={uuid:n.exit_uuid,destination_uuid:(null==o?void 0:o.exit_uuid)&&(null===(d=null===(l=e.exits)||void 0===l?void 0:l.find(t=>t.uuid===o.exit_uuid))||void 0===d?void 0:d.destination_uuid)||null};g.push(t)}}else if(m.categories){const t=m.categories.findIndex(t=>"No Response"===t.name);if(-1!==t){const e=m.categories[t];m.categories.splice(t,1);const i=g.findIndex(t=>t.uuid===e.exit_uuid);-1!==i&&g.splice(i,1)}}}catch(t){console.error("Error processing timeout configuration:",t)}return f.wait=v,{...e,router:f,exits:g}},localizable:"categories",nonTranslatableCategories:["Timeout"]},Lm=Pm({say_msg:qp,play_audio:Up,set_contact_field:_p,send_broadcast:Ap,set_run_result:$p,send_msg:Tp,send_email:Dp,start_session:Mp,set_contact_name:zp,add_contact_groups:Ip,remove_contact_groups:Op,set_contact_channel:kp,set_contact_language:Cp,set_contact_status:Sp,add_contact_urn:wp,add_input_labels:xp,request_optin:Lp,enter_flow:Wp});function Pm(t){const e={...t};return Object.values(t).forEach(t=>{t.aliases&&t.aliases.forEach(i=>{e[i]=t})}),e}const Rm=Pm({execute_actions:{type:"execute_actions"},split_by_contact_field:rm,split_by_expression:am,split_by_groups:lm,split_by_llm:_m,split_by_llm_categorize:km,split_by_random:dm,split_by_run_result:um,split_by_scheme:mm,split_by_subflow:gm,split_by_ticket:fm,split_by_webhook:xm,split_by_resthook:wm,wait_for_menu:Mm,wait_for_digits:Em,wait_for_audio:Cm,wait_for_dial:$m,wait_for_response:Om,split_by_airtime:Yp,terminal:{type:"terminal"}}),Nm="__primary_language__";class Bm extends Ve{constructor(){super(...arguments),this.messageView=!1,this.zoom=1,this.zoomInitialized=!1,this.zoomFitted=!1,this.revisionsActive=!1,this.isSaving=!1,this.searchDisabled=!1,this.languageOptions=[],this.currentLanguageName="",this.isBaseLanguage=!0,this.languagePercent=0,this.showLocalizationTools=!1,this.hasPendingTranslations=!1,this.autoTranslateDisabled=!1,this.autoTranslating=!1,this.showLanguageOptions=!1}static get styles(){return a`
|
|
8997
|
+
`},toFormData:t=>{var e,i,o;const n=null===(e=t.actions)||void 0===e?void 0:e.find(t=>"call_llm"===t.type),s=(null===(o=null===(i=t.router)||void 0===i?void 0:i.categories)||void 0===o?void 0:o.filter(t=>"Other"!==t.name&&"Failure"!==t.name).map(t=>({name:t.name})))||[];return{uuid:t.uuid,llm:(null==n?void 0:n.llm)?[n.llm]:[],input:(null==n?void 0:n.input)||"@input",categories:s}},fromFormData:(t,e)=>{var i,o,n;const s=Array.isArray(t.llm)&&t.llm.length>0?t.llm[0]:null,r=(t.categories||[]).filter(t=>{var e;return null===(e=null==t?void 0:t.name)||void 0===e?void 0:e.trim()}).map(t=>t.name.trim()),a=null===(i=e.actions)||void 0===i?void 0:i.find(t=>"call_llm"===t.type),l={type:"call_llm",uuid:(null==a?void 0:a.uuid)||Kt(),llm:s?{uuid:s.uuid||s.value,name:s.name}:{uuid:"",name:""},instructions:'@(prompt("categorize", slice(node.categories, 0, -2)))',input:t.input||"@input",output_local:"_llm_output"},d=(null===(o=e.router)||void 0===o?void 0:o.categories)||[],c=e.exits||[],h=(null===(n=e.router)||void 0===n?void 0:n.cases)||[],{router:u,exits:p}=((t,e,i,o=[],n=[],s=[])=>{const r=[],a=[],l=[];e.forEach(t=>{const e=Ne({name:t,existingCategories:o,existingExits:n,existingCases:s,caseConfig:i(t)});r.push(e.category),a.push(e.exit),e.case&&l.push(e.case)});const d=Ne({name:"Other",existingCategories:o,existingExits:n});r.push(d.category),a.push(d.exit);const c=Ne({name:"Failure",existingCategories:o,existingExits:n,existingCases:s,caseConfig:{type:"has_only_text",arguments:["<ERROR>"]}});return r.push(c.category),a.push(c.exit),c.case&&l.push(c.case),{router:{type:"switch",categories:r,default_category_uuid:d.category.uuid,operand:t,cases:l},exits:a}})("@locals._llm_output",r,t=>({type:"has_only_text",arguments:[t]}),d,c,h);return{uuid:e.uuid,actions:[l],router:u,exits:p}},localizable:"categories",nonTranslatableCategories:["Failure"]},km={type:"wait_for_audio",name:"Make Recording",group:fp.wait,flowTypes:[cp],form:{result_name:{type:"text",label:"Result Name",required:!1,maxLength:64,placeholder:"(optional)",helpText:"The name to use to reference this result in the flow"}},layout:["result_name"],toFormData:t=>{var e;return{uuid:t.uuid,result_name:(null===(e=t.router)||void 0===e?void 0:e.result_name)||""}},fromFormData:(t,e)=>{var i;const o=(null===(i=e.router)||void 0===i?void 0:i.categories)||[],n=e.exits||[];let s,r=o.find(t=>"All Responses"===t.name);if(r)s=n.find(t=>t.uuid===r.exit_uuid)||{uuid:r.exit_uuid,destination_uuid:null};else{const t=Kt();r={uuid:Kt(),name:"All Responses",exit_uuid:t},s={uuid:t,destination_uuid:null}}const a={type:"switch",operand:"@input",default_category_uuid:r.uuid,cases:[],categories:[r],wait:{type:"msg",hint:{type:"audio"}}};return t.result_name&&""!==t.result_name.trim()&&(a.result_name=t.result_name.trim()),{...e,router:a,exits:[s]}},localizable:"categories",nonTranslatableCategories:"all"},Cm=["Answered","No Answer","Busy","Failed"],Sm=[{type:"has_only_text",arguments:["answered"],categoryName:"Answered"},{type:"has_only_text",arguments:["no_answer"],categoryName:"No Answer"},{type:"has_only_text",arguments:["busy"],categoryName:"Busy"}],Am={type:"wait_for_dial",name:"Redirect Call",group:fp.wait,flowTypes:[cp],router:{type:"switch",defaultCategory:"Failed",rules:Sm.map(t=>({type:t.type,arguments:t.arguments,categoryName:t.categoryName}))},form:{phone:{type:"text",label:"Phone Number",required:!0,evaluated:!0,placeholder:"Phone number or expression"},dial_limit_seconds:{type:"text",label:"Dial Limit (seconds)",required:!1,placeholder:"60"},call_limit_seconds:{type:"text",label:"Call Limit (seconds)",required:!1,placeholder:"7200"},result_name:pc},layout:["phone",{type:"row",items:["dial_limit_seconds","call_limit_seconds"]},"result_name"],toFormData:t=>{var e,i;const o=null===(e=t.router)||void 0===e?void 0:e.wait;return{uuid:t.uuid,phone:(null==o?void 0:o.phone)||"",dial_limit_seconds:(null==o?void 0:o.dial_limit_seconds)?String(o.dial_limit_seconds):"",call_limit_seconds:(null==o?void 0:o.call_limit_seconds)?String(o.call_limit_seconds):"",result_name:(null===(i=t.router)||void 0===i?void 0:i.result_name)||""}},fromFormData:(t,e)=>{var i,o;const n=(null===(i=e.router)||void 0===i?void 0:i.categories)||[],s=e.exits||[],r=(null===(o=e.router)||void 0===o?void 0:o.cases)||[],a=[],l=[],d=[];for(const t of Cm){const e=n.find(e=>e.name===t);if(e){a.push(e);const t=s.find(t=>t.uuid===e.exit_uuid);l.push(t||{uuid:e.exit_uuid,destination_uuid:null})}else{const e=Kt();a.push({uuid:Kt(),name:t,exit_uuid:e}),l.push({uuid:e,destination_uuid:null})}}for(const t of Sm){const e=a.find(e=>e.name===t.categoryName);if(!e)continue;const i=r.find(e=>{var i;return e.type===t.type&&(null===(i=e.arguments)||void 0===i?void 0:i[0])===t.arguments[0]});d.push({uuid:(null==i?void 0:i.uuid)||Kt(),type:t.type,arguments:t.arguments,category_uuid:e.uuid})}const c=a.find(t=>"Failed"===t.name),h=(t.phone||"").trim(),u=parseInt(t.dial_limit_seconds,10),p=parseInt(t.call_limit_seconds,10),m={type:"dial",phone:h};!isNaN(u)&&u>0&&(m.dial_limit_seconds=u),!isNaN(p)&&p>0&&(m.call_limit_seconds=p);const g={type:"switch",operand:'@(default(resume.dial.status, ""))',default_category_uuid:null==c?void 0:c.uuid,cases:d,categories:a,wait:m};return t.result_name&&""!==t.result_name.trim()&&(g.result_name=t.result_name.trim()),{...e,router:g,exits:l}},localizable:"categories",nonTranslatableCategories:"all"},$m={type:"wait_for_digits",name:"Wait for Digits",group:fp.wait,flowTypes:[cp],dialogSize:"large",form:{rules:om(uc(lc.filter(t=>cc.has(t.type))),""),result_name:pc,localizeRules:mc,localizeCategories:gc},layout:[{type:"text",text:"Rules match against all digits pressed by the caller followed by the # sign."},"rules",vc],validate:t=>({valid:!0,errors:{}}),toFormData:(t,e)=>{var i,o,n;const s=im(t);return{uuid:t.uuid,rules:s,result_name:(null===(i=t.router)||void 0===i?void 0:i.result_name)||"",localizeRules:(null===(o=null==e?void 0:e.config)||void 0===o?void 0:o.localizeRules)||!1,localizeCategories:(null===(n=null==e?void 0:e.config)||void 0===n?void 0:n.localizeCategories)||!1}},toUIConfig:t=>{const e={};return e.localizeRules=!!t.localizeRules,e.localizeCategories=!!t.result_name&&!!t.localizeCategories,e},fromFormData:(t,e)=>{var i,o;const n=em(t),s=(null===(i=e.router)||void 0===i?void 0:i.categories)||[],r=e.exits||[],a=(null===(o=e.router)||void 0===o?void 0:o.cases)||[],{router:l,exits:d}=Ue("@input.text",n,hc,s,r,a),c={...l,wait:{type:"msg",hint:{type:"digits"}}};return t.result_name&&""!==t.result_name.trim()&&(c.result_name=t.result_name.trim()),{...e,router:c,exits:d}},localizable:"categories"},Em=["1","2","3","4","5","6","7","8","9","0"];function Tm(t){return`digit_${t}`}const Dm={type:"wait_for_menu",name:"Wait for Menu",group:fp.wait,flowTypes:[cp],form:{...Object.fromEntries(Em.map(t=>[Tm(t),{type:"text",required:!1,placeholder:"",flavor:"xsmall"}])),result_name:pc,localizeRules:mc,localizeCategories:gc},layout:[{type:"row",items:["digit_1","digit_2","digit_3"],gap:"2rem",marginBottom:"0.5rem",inlineLabels:{digit_1:"1",digit_2:"2",digit_3:"3"}},{type:"row",items:["digit_4","digit_5","digit_6"],gap:"2rem",marginBottom:"0.5rem",inlineLabels:{digit_4:"4",digit_5:"5",digit_6:"6"}},{type:"row",items:["digit_7","digit_8","digit_9"],gap:"2rem",marginBottom:"0.5rem",inlineLabels:{digit_7:"7",digit_8:"8",digit_9:"9"}},{type:"row",items:[{type:"spacer"},"digit_0",{type:"spacer"}],gap:"2rem",inlineLabels:{digit_0:"0"}},vc],toFormData:(t,e)=>{var i,o,n,s,r,a;const l={uuid:t.uuid,result_name:(null===(i=t.router)||void 0===i?void 0:i.result_name)||""};for(const t of Em)l[Tm(t)]="";if((null===(o=t.router)||void 0===o?void 0:o.cases)&&(null===(n=t.router)||void 0===n?void 0:n.categories))for(const e of t.router.cases)if("has_number_eq"===e.type&&(null===(s=e.arguments)||void 0===s?void 0:s[0])){const i=e.arguments[0],o=t.router.categories.find(t=>t.uuid===e.category_uuid);o&&Em.includes(i)&&(l[Tm(i)]=o.name)}return l.localizeRules=(null===(r=null==e?void 0:e.config)||void 0===r?void 0:r.localizeRules)||!1,l.localizeCategories=(null===(a=null==e?void 0:e.config)||void 0===a?void 0:a.localizeCategories)||!1,l},toUIConfig:t=>{const e={};return e.localizeRules=!!t.localizeRules,e.localizeCategories=!!t.result_name&&!!t.localizeCategories,e},fromFormData:(t,e)=>{var i,o;const n=(null===(i=e.router)||void 0===i?void 0:i.categories)||[],s=e.exits||[],r=(null===(o=e.router)||void 0===o?void 0:o.cases)||[],a=[],l=[],d=[];for(const e of Em){const i=(t[Tm(e)]||"").trim();if(!i)continue;let o=a.find(t=>t.name===i);if(!o){const t=n.find(t=>t.name===i);if(t){o=t;const e=s.find(e=>e.uuid===t.exit_uuid);a.push(o),l.push(e||{uuid:t.exit_uuid,destination_uuid:null})}else{const t=Kt();o={uuid:Kt(),name:i,exit_uuid:t},a.push(o),l.push({uuid:t,destination_uuid:null})}}const c=r.find(t=>{var i;return"has_number_eq"===t.type&&(null===(i=t.arguments)||void 0===i?void 0:i[0])===e});d.push({uuid:(null==c?void 0:c.uuid)||Kt(),type:"has_number_eq",arguments:[e],category_uuid:o.uuid})}const c=n.find(t=>"Other"===t.name);let h;if(c){h=c;const t=s.find(t=>t.uuid===c.exit_uuid);l.push(t||{uuid:c.exit_uuid,destination_uuid:null})}else{const t=Kt();h={uuid:Kt(),name:"Other",exit_uuid:t},l.push({uuid:t,destination_uuid:null})}a.push(h);const u={type:"switch",operand:"@input.text",default_category_uuid:h.uuid,cases:d,categories:a,wait:{type:"msg",hint:{type:"digits",count:1}}};return t.result_name&&""!==t.result_name.trim()&&(u.result_name=t.result_name.trim()),{...e,router:u,exits:l}},localizable:"categories"},Mm=[{value:"60",name:"1 minute"},{value:"120",name:"2 minutes"},{value:"180",name:"3 minutes"},{value:"240",name:"4 minutes"},{value:"300",name:"5 minutes"},{value:"600",name:"10 minutes"},{value:"900",name:"15 minutes"},{value:"1800",name:"30 minutes"},{value:"3600",name:"1 hour"},{value:"7200",name:"2 hours"},{value:"10800",name:"3 hours"},{value:"21600",name:"6 hours"},{value:"43200",name:"12 hours"},{value:"64800",name:"18 hours"},{value:"86400",name:"1 day"},{value:"172800",name:"2 days"},{value:"259200",name:"3 days"},{value:"604800",name:"1 week"}],zm=(t,e=[],i=[],o=[])=>{const{router:n,exits:s}=Ue("@input.text",t,hc,e,i,o),r=e.find(t=>"No Response"===t.name||"Timeout"===t.name);if(r){const t=i.find(t=>t.uuid===r.exit_uuid);t&&(n.categories.push(r),s.push({uuid:t.uuid,destination_uuid:t.destination_uuid||null}))}return{router:n,exits:s}},Im={type:"wait_for_response",name:"Wait for Response",group:fp.wait,flowTypes:[dp],hideFromSplits:!0,dialogSize:"large",form:{rules:om(uc(dc()),"If the message from the contact..."),timeout_enabled:{type:"checkbox",label:t=>t.timeout_enabled?"Continue when there is no response for":"Continue when there is no response..",labelPadding:"4px 8px"},timeout_duration:{type:"select",placeholder:"5 minutes",multi:!1,maxWidth:"130px",flavor:"xsmall",options:Mm,conditions:{visible:t=>!0===t.timeout_enabled}},result_name:pc,localizeRules:mc,localizeCategories:gc},layout:["rules",vc],gutter:[{type:"row",items:["timeout_enabled","timeout_duration"],gap:"0.5rem"}],validate:kc(()=>{}),toFormData:(t,e)=>{var i,o,n,s,r,a;const l=im(t),d=null===(n=null===(o=null===(i=t.router)||void 0===i?void 0:i.wait)||void 0===o?void 0:o.timeout)||void 0===n?void 0:n.seconds;let c=Mm.find(t=>t.value===String(d));return c||(c={value:"300",name:"5 minutes"}),{uuid:t.uuid,rules:l,timeout_enabled:!!d,timeout_duration:c,result_name:(null===(s=t.router)||void 0===s?void 0:s.result_name)||"",localizeRules:(null===(r=null==e?void 0:e.config)||void 0===r?void 0:r.localizeRules)||!1,localizeCategories:(null===(a=null==e?void 0:e.config)||void 0===a?void 0:a.localizeCategories)||!1}},toUIConfig:t=>{const e={};return e.localizeRules=!!t.localizeRules,e.localizeCategories=!!t.result_name&&!!t.localizeCategories,e},fromFormData:(t,e)=>{var i,o,n,s,r,a,l,d;const c=em(t);if(0===c.length){let o=(null===(i=e.router)||void 0===i?void 0:i.categories)||[];const n=[...e.exits||[]];if(t.timeout_enabled){let t=o.find(t=>"No Response"===t.name);if(!t){const e=Kt();t={uuid:Kt(),name:"No Response",exit_uuid:e},o=[...o,t],n.find(t=>t.uuid===e)||n.push({uuid:e,destination_uuid:null})}}else o=o.filter(t=>"No Response"!==t.name);const{router:s,exits:r}=zm([],o,n,[]),a={...s,cases:[]};t.result_name&&""!==t.result_name.trim()&&(a.result_name=t.result_name.trim());const l={type:"msg"};if(t.timeout_enabled){let e;e=t.timeout_duration?Array.isArray(t.timeout_duration)&&t.timeout_duration.length>0?parseInt(t.timeout_duration[0].value,10):"string"==typeof t.timeout_duration?parseInt(t.timeout_duration,10):t.timeout_duration&&"object"==typeof t.timeout_duration&&t.timeout_duration.value?parseInt(t.timeout_duration.value,10):300:300,(isNaN(e)||e<=0)&&(e=300);const i=a.categories.find(t=>"No Response"===t.name);i&&(l.timeout={seconds:e,category_uuid:i.uuid})}return a.wait=l,{...e,router:a,exits:r}}const h=(null===(o=e.router)||void 0===o?void 0:o.categories)||[],u=e.exits||[],p=(null===(n=e.router)||void 0===n?void 0:n.cases)||[],{router:m,exits:g}=zm(c,h,u,p),f={...m};t.result_name&&""!==t.result_name.trim()&&(f.result_name=t.result_name.trim());const v={type:"msg"};try{if(t.timeout_enabled){let i;if(t.timeout_duration)try{i=parseInt(t.timeout_duration[0].value,10)}catch(t){i=300}const o=null===(r=null===(s=e.router)||void 0===s?void 0:s.categories)||void 0===r?void 0:r.find(t=>"No Response"===t.name),n=o||{uuid:Kt(),name:"No Response",exit_uuid:Kt()};if(v.timeout={seconds:i,category_uuid:n.uuid},!(null===(a=m.categories)||void 0===a?void 0:a.some(t=>"No Response"===t.name))&&(m.categories=m.categories||[],m.categories.push(n),!g.some(t=>t.uuid===n.exit_uuid))){const t={uuid:n.exit_uuid,destination_uuid:(null==o?void 0:o.exit_uuid)&&(null===(d=null===(l=e.exits)||void 0===l?void 0:l.find(t=>t.uuid===o.exit_uuid))||void 0===d?void 0:d.destination_uuid)||null};g.push(t)}}else if(m.categories){const t=m.categories.findIndex(t=>"No Response"===t.name);if(-1!==t){const e=m.categories[t];m.categories.splice(t,1);const i=g.findIndex(t=>t.uuid===e.exit_uuid);-1!==i&&g.splice(i,1)}}}catch(t){console.error("Error processing timeout configuration:",t)}return f.wait=v,{...e,router:f,exits:g}},localizable:"categories",nonTranslatableCategories:["Timeout"]},Om=Lm({say_msg:Fp,play_audio:qp,set_contact_field:wp,send_broadcast:Sp,set_run_result:Ap,send_msg:Ep,send_email:Tp,start_session:Dp,set_contact_name:Mp,add_contact_groups:zp,remove_contact_groups:Ip,set_contact_channel:_p,set_contact_language:kp,set_contact_status:Cp,add_contact_urn:xp,add_input_labels:yp,request_optin:Op,enter_flow:Hp});function Lm(t){const e={...t};return Object.values(t).forEach(t=>{t.aliases&&t.aliases.forEach(i=>{e[i]=t})}),e}const Pm=Lm({execute_actions:{type:"execute_actions"},split_by_contact_field:sm,split_by_expression:rm,split_by_groups:am,split_by_llm:wm,split_by_llm_categorize:_m,split_by_random:lm,split_by_run_result:hm,split_by_scheme:pm,split_by_subflow:mm,split_by_ticket:gm,split_by_webhook:ym,split_by_resthook:xm,wait_for_menu:Dm,wait_for_digits:$m,wait_for_audio:km,wait_for_dial:Am,wait_for_response:Im,split_by_airtime:Zp,terminal:{type:"terminal"}}),Rm="__primary_language__";class Nm extends Ve{constructor(){super(...arguments),this.messageView=!1,this.zoom=1,this.zoomInitialized=!1,this.zoomFitted=!1,this.revisionsActive=!1,this.isSaving=!1,this.searchDisabled=!1,this.languageOptions=[],this.currentLanguageName="",this.isBaseLanguage=!0,this.languagePercent=0,this.showLocalizationTools=!1,this.hasPendingTranslations=!1,this.autoTranslateDisabled=!1,this.autoTranslating=!1,this.showLanguageOptions=!1}static get styles(){return a`
|
|
9001
8998
|
:host {
|
|
9002
8999
|
display: block;
|
|
9003
9000
|
}
|
|
@@ -9193,7 +9190,7 @@ background: #ccc;
|
|
|
9193
9190
|
width: var(--toolbar-translation-control-height);
|
|
9194
9191
|
height: var(--toolbar-translation-control-height);
|
|
9195
9192
|
}
|
|
9196
|
-
`}fireToolbarAction(t,e={}){this.fireCustomEvent(Fo.ButtonClicked,{action:t,...e})}handleLanguageIconClick(){this.showLanguageOptions?this.showLanguageOptions=!1:(this.showLanguageOptions=!0,requestAnimationFrame(()=>{const t=()=>{this.showLanguageOptions=!1,document.removeEventListener("click",t)};document.addEventListener("click",t,{once:!0})}))}handleLanguageOptionSelected(t){var e;if(!this.showLanguageOptions)return;const i=null===(e=t.detail)||void 0===e?void 0:e.selected;(null==i?void 0:i.value)===
|
|
9193
|
+
`}fireToolbarAction(t,e={}){this.fireCustomEvent(Fo.ButtonClicked,{action:t,...e})}handleLanguageIconClick(){this.showLanguageOptions?this.showLanguageOptions=!1:(this.showLanguageOptions=!0,requestAnimationFrame(()=>{const t=()=>{this.showLanguageOptions=!1,document.removeEventListener("click",t)};document.addEventListener("click",t,{once:!0})}))}handleLanguageOptionSelected(t){var e;if(!this.showLanguageOptions)return;const i=null===(e=t.detail)||void 0===e?void 0:e.selected;(null==i?void 0:i.value)===Rm?this.fireToolbarAction("language-change",{isPrimary:!0}):(null==i?void 0:i.value)&&this.fireToolbarAction("language-change",{languageCode:i.value}),this.showLanguageOptions=!1}isMacPlatform(){return"undefined"!=typeof navigator&&/Mac|iPod|iPhone|iPad/.test(navigator.platform)}getSearchShortcutLabel(){return this.isMacPlatform()?"⌘F":"Ctrl+F"}renderTip(t,e){return W`
|
|
9197
9194
|
<temba-tip
|
|
9198
9195
|
class="toolbar-tip"
|
|
9199
9196
|
.text=${"string"==typeof t?t:""}
|
|
@@ -9205,7 +9202,7 @@ background: #ccc;
|
|
|
9205
9202
|
`}renderShortcutLabel(t,e){return W`<span style="display:inline-flex; align-items:center; gap:8px;">
|
|
9206
9203
|
<span>${t}</span>
|
|
9207
9204
|
<kbd>${e}</kbd>
|
|
9208
|
-
</span>`}renderLanguageOption(t,e){var i;if(t.value===
|
|
9205
|
+
</span>`}renderLanguageOption(t,e){var i;if(t.value===Rm){return W`
|
|
9209
9206
|
<div
|
|
9210
9207
|
style="display:flex; align-items:center; justify-content:space-between; gap:8px; background:${e?"#e1e8ef":"#edf1f5"}; color:#2f3f52; border-radius:4px; padding:6px 10px;"
|
|
9211
9208
|
>
|
|
@@ -9377,7 +9374,7 @@ background: #ccc;
|
|
|
9377
9374
|
</button>
|
|
9378
9375
|
`)}
|
|
9379
9376
|
</div>
|
|
9380
|
-
`}}function Fm(t,e){if(!t||!(null==e?void 0:e.length))return[];const i=Rm[t],o=null==i?void 0:i.nonTranslatableCategories;if(!o)return[...e];if("all"===o)return e.filter(t=>Qt.has(t.name));const n=new Set(o);return e.filter(t=>!n.has(t.name)||Qt.has(t.name))}function qm(t){if(null==t)return null;if(Array.isArray(t)){const e=t.map(t=>qm(t)).filter(t=>!!t);return e.length>0?e.join(", "):null}if("object"==typeof t)return"name"in t&&t.name?String(t.name):"arguments"in t&&Array.isArray(t.arguments)?t.arguments.join(" "):null;if("number"==typeof t)return t.toString();if("string"==typeof t){const e=t.trim();return e.length>0?e:null}return null}function Um(t,e,i,o,n){const s=[];return i.forEach(i=>{if("quick_replies"===i)return;const r=i.split(".");let a=o,l=[];for(;r.length>0&&a;){a.uuid&&(l=n[a.uuid]);const t=r.shift();if(!t)break;l&&(l=l[t]),a=a[t]}if(!a)return;const d=qm(a);if(!d)return;const c=l?qm(l):null;s.push({uuid:e,type:t,attribute:i,from:d,to:c})}),s}function jm(t,e){var i;if(!t||!e||e===t.language)return[];const o=(null===(i=t.localization)||void 0===i?void 0:i[e])||{},n=[];return t.nodes.forEach(e=>{var i,s,r,a,l,d,c,h,u;null===(i=e.actions)||void 0===i||i.forEach(t=>{const i=Lm[t.type];if(!(null==i?void 0:i.localizable)||0===i.localizable.length)return;const s="send_msg"===t.type?i.localizable.filter(t=>"text"===t):i.localizable,r=Um("property",t.uuid,s,t,o);r.length>0&&n.push({nodeUuid:e.uuid,actionUuid:t.uuid,translations:r})});const p=null===(r=null===(s=t._ui)||void 0===s?void 0:s.nodes)||void 0===r?void 0:r[e.uuid],m=null==p?void 0:p.type;if(!m)return;if((null===(a=null==p?void 0:p.config)||void 0===a?void 0:a.localizeRules)&&(null===(d=null===(l=e.router)||void 0===l?void 0:l.cases)||void 0===d?void 0:d.length)){const t=e.router.cases.filter(t=>{var e;return(null===(e=t.arguments)||void 0===e?void 0:e.length)>0&&t.arguments.some(t=>t)}).flatMap(t=>Um("property",t.uuid,["arguments"],t,o));t.length>0&&n.push({nodeUuid:e.uuid,translations:t})}const g=Rm[m];if((null===(c=null==p?void 0:p.config)||void 0===c?void 0:c.localizeCategories)&&"categories"===(null==g?void 0:g.localizable)&&(null===(u=null===(h=e.router)||void 0===h?void 0:h.categories)||void 0===u?void 0:u.length)){const t=Fm(m,e.router.categories).flatMap(t=>Um("category",t.uuid,["name"],t,o));t.length>0&&n.push({nodeUuid:e.uuid,translations:t})}}),n}t([mt({type:Boolean,attribute:"message-view"})],Bm.prototype,"messageView",void 0),t([mt({type:Number})],Bm.prototype,"zoom",void 0),t([mt({type:Boolean,attribute:"zoom-initialized"})],Bm.prototype,"zoomInitialized",void 0),t([mt({type:Boolean,attribute:"zoom-fitted"})],Bm.prototype,"zoomFitted",void 0),t([mt({type:Boolean,attribute:"revisions-active"})],Bm.prototype,"revisionsActive",void 0),t([mt({type:Boolean,attribute:"is-saving"})],Bm.prototype,"isSaving",void 0),t([mt({type:Boolean,attribute:"search-disabled"})],Bm.prototype,"searchDisabled",void 0),t([mt({type:Array})],Bm.prototype,"languageOptions",void 0),t([mt({type:String,attribute:"current-language-name"})],Bm.prototype,"currentLanguageName",void 0),t([mt({type:Boolean,attribute:"is-base-language"})],Bm.prototype,"isBaseLanguage",void 0),t([mt({type:Number,attribute:"language-percent"})],Bm.prototype,"languagePercent",void 0),t([mt({type:Boolean,attribute:"show-localization-tools"})],Bm.prototype,"showLocalizationTools",void 0),t([mt({type:Boolean,attribute:"has-pending-translations"})],Bm.prototype,"hasPendingTranslations",void 0),t([mt({type:Boolean,attribute:"auto-translate-disabled"})],Bm.prototype,"autoTranslateDisabled",void 0),t([mt({type:Boolean,attribute:"auto-translating"})],Bm.prototype,"autoTranslating",void 0),t([gt()],Bm.prototype,"showLanguageOptions",void 0);const Hm=60,Wm=20;function Vm(t,e,i,o){if(0===t.length)return{};const n=new Set(t.map(t=>t.uuid)),s=new Map,r=new Map;for(const e of t){const t=new Set,i=[];for(const o of e.exits)if(o.destination_uuid&&n.has(o.destination_uuid)&&!t.has(o.destination_uuid)){t.add(o.destination_uuid),i.push(o.destination_uuid);const n=r.get(o.destination_uuid)||[];n.push(e.uuid),r.set(o.destination_uuid,n)}s.set(e.uuid,i)}const a=function(t,e){const i=new Set,o=new Set,n=new Set;function s(t){o.add(t),n.add(t);for(const r of e.get(t)||[])o.has(r)?i.add(`${t}->${r}`):n.has(r)||s(r);o.delete(t)}return s(t),i}(i,s),l=function(t,e,i,o,n){const s=new Map;s.set(t,0);const r=new Map;for(const t of e)r.set(t.uuid,0);for(const[t,e]of i)for(const i of e)n.has(`${t}->${i}`)||r.set(i,(r.get(i)||0)+1);const a=[];for(const[t,e]of r)0===e&&(a.push(t),s.has(t)||s.set(t,0));for(;a.length>0;){const t=a.shift(),e=s.get(t);for(const o of i.get(t)||[]){if(n.has(`${t}->${o}`))continue;const i=e+1;(!s.has(o)||i>s.get(o))&&s.set(o,i);const l=r.get(o)-1;r.set(o,l),0===l&&a.push(o)}}const l=e.filter(t=>!s.has(t.uuid));if(l.length>0){let t=Math.max(...Array.from(s.values()),-1)+2;for(const e of l)s.set(e.uuid,t),t++}return s}(i,t,s,0,a),d=new Map;for(const[t,e]of l){const i=d.get(e)||[];i.push(t),d.set(e,i)}const c=Array.from(d.keys()).sort((t,e)=>t-e);!function(t,e,i,o){const n=new Map;for(const s of t){const r=e.get(s);if(s===t[0]){r.forEach((t,e)=>n.set(t,e));continue}const a=r.map(t=>{const e=(i.get(t)||[]).filter(t=>{const e=o.get(t);return void 0!==e&&e<s});if(0===e.length)return{uuid:t,value:1/0};const r=e.reduce((t,e)=>{var i;return t+(null!==(i=n.get(e))&&void 0!==i?i:0)},0);return{uuid:t,value:r/e.length}});a.sort((t,e)=>t.value-e.value);const l=a.map(t=>t.uuid);e.set(s,l),l.forEach((t,e)=>n.set(t,e))}}(c,d,r,l);const h=new Map;for(const e of t)h.set(e.uuid,o(e.uuid));return function(t,e,i,o,n,s){var r,a,l,d;const c={};let h=0;for(const u of t){const p=Zm(e.get(u),i);for(const e of p){const p=Mc(h);if(u===t[0]){let t=0;for(const o of e){const e=o===s?p:p+40;c[o]={left:Mc(t),top:e},t+=((null===(r=i.get(o))||void 0===r?void 0:r.width)||200)+Hm}}else{let t=0;for(const o of e)t+=(null===(a=i.get(o))||void 0===a?void 0:a.width)||200;t+=Hm*(e.length-1);const s=[];for(const t of e){const e=(o.get(t)||[]).filter(t=>{const e=n.get(t);return void 0!==e&&e<u});for(const t of e){const e=c[t];if(e){const o=(null===(l=i.get(t))||void 0===l?void 0:l.width)||200;s.push(e.left+o/2)}}}let r;if(s.length>0){const e=(Math.min(...s)+Math.max(...s))/2;r=Math.max(0,e-t/2)}else r=0;let h=r;for(const t of e){const e=(null===(d=i.get(t))||void 0===d?void 0:d.width)||200;c[t]={left:Mc(h),top:p},h=Mc(h)+e+Hm}}const m=Math.max(...e.map(t=>{var e;return(null===(e=i.get(t))||void 0===e?void 0:e.height)||100}));h=p+m+80}}const u=c[s];if(u){const t=u.left,e=u.top;for(const i of Object.keys(c))c[i]={left:Mc(Math.max(0,c[i].left-t)),top:Mc(Math.max(0,c[i].top-e))}}return c}(c,d,h,r,l,i)}function Zm(t,e){var i;const o=[];let n=[],s=0;for(const r of t){const t=(null===(i=e.get(r))||void 0===i?void 0:i.width)||200,a=n.length>0?Hm+t:t;n.length>0&&s+a>1200?(o.push(n),n=[r],s=t):(n.push(r),s+=a)}return n.length>0&&o.push(n),o}function Ym(t,e,i,o,n){for(const s of n)if(t<s.left+s.width+Wm&&t+i+Wm>s.left&&e<s.top+s.height+Wm&&e+o+Wm>s.top)return!0;return!1}function Km(t){if("touches"in t){const e=t.touches[0]||t.changedTouches[0];return{clientX:e.clientX,clientY:e.clientY}}return{clientX:t.clientX,clientY:t.clientY}}function Gm(t,e,i,o,n=20,s=10,r=5,a="top",l=0){const d=r;if("top"===a){const r=e+n,a=o-s;let c=`M ${t} ${e}`;if(t===i)c+=` L ${i} ${a}`;else{const o=i>t?1:-1,n=Math.max(e+d,Math.min(r,a-d)),s=Math.max(e+d,Math.min(n+l,a-d-3)),h=Math.min(d,s-e);h>=1?(c+=` L ${t} ${s-h}`,c+=` Q ${t} ${s}, ${t+o*h} ${s}`):c+=` L ${t} ${s}`;const u=3,p=Math.min(d,Math.max(0,a-s-u));p>=1?(c+=` L ${i-o*p} ${s}`,c+=` Q ${i} ${s}, ${i} ${s+p}`):c+=` L ${i} ${s}`,c+=` L ${i} ${a}`}return c+=` L ${i} ${o}`,c}if("left"===a||"right"===a){const r=e+(o<e?0:n),l="left"===a?-1:1,c=i+l*s,h=c>t?1:-1,u=3,p=h===l?r+2*d:Math.max(r+2*d,o);let m=`M ${t} ${e} L ${t} ${r}`;p-r>d&&(m+=` L ${t} ${p-d}`,m+=` Q ${t} ${p}, ${t+h*d} ${p}`);const g=Math.abs(p-o);if(g<1)m+=` L ${c} ${o}`,m+=` L ${i} ${o}`;else{const t=o<p?-1:1,e=Math.min(d,Math.max(0,Math.floor((g-u)/2)),Math.max(0,s-u));e>=1?(m+=` L ${c-h*e} ${p}`,m+=` Q ${c} ${p}, ${c} ${p+t*e}`,m+=` L ${c} ${o-t*e}`,m+=` Q ${c} ${o}, ${c-l*e} ${o}`):(m+=` L ${c} ${p}`,m+=` L ${c} ${o}`),m+=` L ${i} ${o}`}return m}return`M ${t} ${e} L ${i} ${o}`}class Xm{constructor(t,e){this.connections=new Map,this.sources=new Map,this.pendingConnections=[],this.connectionWait=null,this.connectionListeners=new Map,this.dragState=null,this.retryCount=0,this.maxRetries=3,this.activityData=null,this.overlays=new Map,this.hoveredActivityKey=null,this.recentContactsPopup=null,this.recentContactsCache={},this.pendingFetches={},this.hideContactsTimeout=null,this.showContactsTimeout=null,this.connectionDragging=!1,this.zoom=1,this.canvas=t,this.editor=e}setContainer(t){this.canvas=t}notifyListeners(t,e){(this.connectionListeners.get(t)||[]).forEach(t=>t(e))}on(t,e){this.connectionListeners.has(t)||this.connectionListeners.set(t,[]),this.connectionListeners.get(t).push(e)}off(t,e){if(!this.connectionListeners.has(t))return;const i=this.connectionListeners.get(t),o=i.indexOf(e);-1!==o&&i.splice(o,1)}makeSource(t){const e=document.getElementById(t);if(!e)return;this.sources.has(t)&&this.sources.get(t)();let i=null;const o=o=>{if("button"in o&&Tc(o))return;if(this.connections.has(t))return;const n="touches"in o;n&&o.preventDefault();const{clientX:s,clientY:r}=Km(o),a=e.closest("temba-flow-node"),l=(null==a?void 0:a.getAttribute("uuid"))||"",d=e=>{const{clientX:i,clientY:o}=Km(e),n=i-s,a=o-r;Math.sqrt(n*n+a*a)>5&&(h(),this.startDrag(t,l,null,e))},c=()=>{h()},h=()=>{document.removeEventListener("mousemove",d),document.removeEventListener("mouseup",c),document.removeEventListener("touchmove",d),document.removeEventListener("touchend",c),document.removeEventListener("touchcancel",c),i=null};document.addEventListener("mousemove",d),document.addEventListener("mouseup",c),document.addEventListener("touchmove",d,{passive:!1}),document.addEventListener("touchend",c),document.addEventListener("touchcancel",c),i={startX:s,startY:r,onMove:d,onUp:c,isTouch:n}};e.addEventListener("mousedown",o),e.addEventListener("touchstart",o,{passive:!1}),this.sources.set(t,()=>{e.removeEventListener("mousedown",o),e.removeEventListener("touchstart",o),i&&(document.removeEventListener("mousemove",i.onMove),document.removeEventListener("mouseup",i.onUp),document.removeEventListener("touchmove",i.onMove),document.removeEventListener("touchend",i.onUp),document.removeEventListener("touchcancel",i.onUp),i=null)})}makeTarget(t){}connectIds(t,e,i){this.pendingConnections.push({scope:t,fromId:e,toId:i}),this.processPendingConnections()}processPendingConnections(){this.connectionWait&&(cancelAnimationFrame(this.connectionWait),this.connectionWait=null),this.connectionWait=requestAnimationFrame(()=>{const t=[],e=new Set;if(this.pendingConnections.forEach(i=>{const{scope:o,fromId:n,toId:s}=i;this.removeConnectionSVG(n),this.createConnectionSVG(n,o,s)?e.add(s):t.push(i)}),this.pendingConnections=[],e.size>0){const t=new Set;this.connections.forEach(i=>{e.has(i.toId)&&t.add(i.scope)}),this.connections.forEach((i,o)=>{(e.has(i.toId)||t.has(i.scope))&&this.updateConnectionSVG(o)})}t.length>0&&this.retryCount<this.maxRetries?(this.retryCount++,this.pendingConnections=t,this.processPendingConnections()):this.retryCount=0})}toCanvas(t){return t/this.zoom}determineTargetFace(t,e,i,o){return o-e>30?"top":t<i?"left":"right"}getConnectionEndpoints(t,e,i){const o=document.getElementById(t),n=document.getElementById(e);if(!o||!n)return null;const s=this.canvas.getBoundingClientRect(),r=o.getBoundingClientRect(),a=n.getBoundingClientRect();if(0===r.width||0===a.width)return null;const l=this.toCanvas(r.left+r.width/2-s.left),d=this.toCanvas(r.bottom-s.top),c=this.toCanvas(a.left+a.width/2-s.left),h=this.toCanvas(a.top-s.top),u=this.determineTargetFace(l,d,c,h),p=new Map;this.connections.forEach(t=>{if(t.toId===e){const e=document.getElementById(t.fromId);if(e){const i=e.getBoundingClientRect(),o=this.toCanvas(i.left+i.width/2-s.left),n=this.toCanvas(i.bottom-s.top),r=this.determineTargetFace(o,n,c,h);p.has(r)||p.set(r,[]);const a="top"===r?o:n;p.get(r).push({fromId:t.fromId,sortPos:a})}}}),p.has(u)||p.set(u,[]);const m=p.get(u);if(!m.find(e=>e.fromId===t)){const e="top"===u?l:d;m.push({fromId:t,sortPos:e})}m.sort((t,e)=>t.sortPos-e.sortPos);const g=m.findIndex(e=>e.fromId===t),f=m.length,v=this.toCanvas(a.left-s.left),b=h,y=this.toCanvas(a.width),x=this.toCanvas(a.height);let w,_;if("top"===u){w=1===f?v+y/2:v+.2*y+.6*y*(g+.5)/f,_=b}else if("left"===u){w=v;_=1===f?b+x/2:b+.2*x+.6*x*(g+.5)/f}else{w=v+y;_=1===f?b+x/2:b+.2*x+.6*x*(g+.5)/f}let k=0;if("top"===u&&i){const o=8,n=50,r=[];if(this.connections.forEach(t=>{if(t.scope===i&&t.toId!==e){const e=document.getElementById(t.fromId),i=document.getElementById(t.toId);if(e&&i){const o=e.getBoundingClientRect(),n=i.getBoundingClientRect(),a=this.toCanvas(o.left+o.width/2-s.left),l=this.toCanvas(o.bottom-s.top),d=this.toCanvas(n.left+n.width/2-s.left),c=this.toCanvas(n.top-s.top);if("top"===this.determineTargetFace(a,l,d,c)){const e=this.toCanvas(n.left-s.left),i=this.toCanvas(n.width);r.push({fromId:t.fromId,targetX:e+i/2})}}}}),r.length>0){r.push({fromId:t,targetX:w}),r.sort((t,e)=>t.targetX-e.targetX);const e=r.findIndex(e=>e.fromId===t),i=r.length;k=(e-(i-1)/2)*((i-1)*o>n?n/(i-1):o)}}return{sourceX:l,sourceY:d,targetX:w,targetY:_,targetFace:u,jogYOffset:k}}createSVGElement(){const t=document.createElementNS("http://www.w3.org/2000/svg","svg");t.classList.add("plumb-connector"),t.style.position="absolute",t.style.left="0",t.style.top="0",t.style.width="100%",t.style.height="100%",t.style.pointerEvents="none",t.style.overflow="visible";const e=document.createElementNS("http://www.w3.org/2000/svg","path");e.setAttribute("fill","none"),e.setAttribute("stroke","var(--color-connectors)"),e.setAttribute("stroke-width","3"),e.style.pointerEvents="stroke";const i=document.createElementNS("http://www.w3.org/2000/svg","polygon");i.setAttribute("fill","var(--color-connectors)"),i.classList.add("plumb-arrow"),i.style.pointerEvents="fill",i.style.cursor="pointer";const o=document.createElementNS("http://www.w3.org/2000/svg","circle");o.setAttribute("r","18"),o.setAttribute("fill","transparent"),o.style.pointerEvents="fill",o.style.cursor="pointer",t.appendChild(e),t.appendChild(o),t.appendChild(i);const n=()=>t.classList.add("hover"),s=()=>t.classList.remove("hover");return e.addEventListener("mouseenter",n),e.addEventListener("mouseleave",s),i.addEventListener("mouseenter",n),i.addEventListener("mouseleave",s),o.addEventListener("mouseenter",n),o.addEventListener("mouseleave",s),{svgEl:t,pathEl:e,arrowEl:i,hitAreaEl:o}}updateSVGPath(t,e,i,o,n,s,r="top",a=0,l){const d=6.5,c=13;let h=n,u=s;"top"===r?u=s-c:"left"===r?h=n-c:"right"===r&&(h=n+c);const p=Gm(i,o,h,u,30,8,5,r,a);if(t.setAttribute("d",p),"top"===r?e.setAttribute("points",`${n},${s} ${n-d},${s-c} ${n+d},${s-c}`):"left"===r?e.setAttribute("points",`${n},${s} ${n-c},${s-d} ${n-c},${s+d}`):e.setAttribute("points",`${n},${s} ${n+c},${s-d} ${n+c},${s+d}`),l){const t=6.5;let e=n,i=s;"top"===r?i=s-t:e="left"===r?n-t:n+t,l.setAttribute("cx",String(e)),l.setAttribute("cy",String(i))}}createConnectionSVG(t,e,i){const o=this.getConnectionEndpoints(t,i,e);if(!o)return!1;const{svgEl:n,pathEl:s,arrowEl:r,hitAreaEl:a}=this.createSVGElement();this.updateSVGPath(s,r,o.sourceX,o.sourceY,o.targetX,o.targetY,o.targetFace,o.jogYOffset,a),this.canvas.appendChild(n),this.connections.set(t,{scope:e,fromId:t,toId:i,svgEl:n,pathEl:s,arrowEl:r,hitAreaEl:a});const l=o=>{if("button"in o&&Tc(o))return;o.stopPropagation(),"touches"in o&&o.preventDefault();const{clientX:n,clientY:s}=Km(o),r=o=>{const{clientX:l,clientY:d}=Km(o),c=l-n,h=d-s;Math.sqrt(c*c+h*h)>5&&(document.removeEventListener("mousemove",r),document.removeEventListener("mouseup",a),document.removeEventListener("touchmove",r),document.removeEventListener("touchend",a),document.removeEventListener("touchcancel",a),this.startDrag(t,e,i,o))},a=()=>{document.removeEventListener("mousemove",r),document.removeEventListener("mouseup",a),document.removeEventListener("touchmove",r),document.removeEventListener("touchend",a),document.removeEventListener("touchcancel",a)};document.addEventListener("mousemove",r),document.addEventListener("mouseup",a),document.addEventListener("touchmove",r,{passive:!1}),document.addEventListener("touchend",a),document.addEventListener("touchcancel",a)};r.addEventListener("mousedown",l),r.addEventListener("touchstart",l,{passive:!1}),a.addEventListener("mousedown",l),a.addEventListener("touchstart",l,{passive:!1}),s.addEventListener("mousedown",l),s.addEventListener("touchstart",l,{passive:!1});const d=document.getElementById(t);if(d&&d.classList.add("connected"),this.activityData){const e=`${t}:${i}`,o=this.activityData.segments[e];if(o&&o>0){const i=this.createOverlayElement(o,e);this.canvas.appendChild(i),this.overlays.set(t,i),this.updateOverlayPosition(t)}}return!0}updateConnectionSVG(t){const e=this.connections.get(t);if(!e)return;const i=this.getConnectionEndpoints(e.fromId,e.toId,e.scope);i&&(this.updateSVGPath(e.pathEl,e.arrowEl,i.sourceX,i.sourceY,i.targetX,i.targetY,i.targetFace,i.jogYOffset,e.hitAreaEl),this.updateOverlayPosition(t))}removeConnectionSVG(t){const e=this.connections.get(t);if(!e)return;const i=this.overlays.get(t);i&&(i.remove(),this.overlays.delete(t)),e.svgEl.remove(),this.connections.delete(t)}repaintEverything(){this.connections.forEach((t,e)=>{this.updateConnectionSVG(e)})}revalidate(t){const e=[],i=new Set;this.connections.forEach((o,n)=>{(t.includes(o.fromId)||t.includes(o.toId)||t.includes(o.scope))&&(e.push(n),i.add(o.toId))});const o=new Set(e);this.connections.forEach((t,e)=>{i.has(t.toId)&&o.add(e)}),o.forEach(t=>{this.updateConnectionSVG(t)})}forgetNode(t){var e;const i=[];this.connections.forEach((e,o)=>{e.scope!==t&&e.toId!==t||i.push(o)}),i.forEach(t=>this.removeConnectionSVG(t));const o=null===(e=document.getElementById(t))||void 0===e?void 0:e.querySelectorAll(".exit");o&&o.forEach(t=>{const e=t.id;this.sources.has(e)&&(this.sources.get(e)(),this.sources.delete(e))})}removeNodeConnections(t,e){var i;(e||Array.from((null===(i=document.getElementById(t))||void 0===i?void 0:i.querySelectorAll(".exit"))||[]).map(t=>t.id)).forEach(t=>this.removeConnectionSVG(t))}removeExitConnection(t){return!!this.connections.has(t)&&(this.removeConnectionSVG(t),!0)}removeAllEndpoints(t){var e;const i=null===(e=document.getElementById(t))||void 0===e?void 0:e.querySelectorAll(".exit");i&&i.forEach(t=>{const e=t.id;this.sources.has(e)&&(this.sources.get(e)(),this.sources.delete(e))})}setConnectionRemovingState(t,e){const i=this.connections.get(t);return!!i&&(e?i.svgEl.classList.add("removing"):i.svgEl.classList.remove("removing"),!0)}setActivityData(t){this.activityData=t,this.clearRecentContactsCache(),this.updateActivityOverlays()}updateActivityOverlays(){if(!this.activityData)return this.overlays.forEach(t=>t.remove()),void this.overlays.clear();const t=new Set;this.connections.forEach((e,i)=>{const o=`${e.fromId}:${e.toId}`,n=this.activityData.segments[o];if(n&&n>0){t.add(i);let e=this.overlays.get(i);e?(e.textContent=n.toLocaleString(),e.setAttribute("data-activity-key",o)):(e=this.createOverlayElement(n,o),this.canvas.appendChild(e),this.overlays.set(i,e)),this.updateOverlayPosition(i)}}),this.overlays.forEach((e,i)=>{t.has(i)||(e.remove(),this.overlays.delete(i))})}createOverlayElement(t,e){const i=document.createElement("div");return i.className="activity-overlay",i.textContent=t.toLocaleString(),i.setAttribute("data-activity-key",e),i.addEventListener("mouseenter",()=>{const t=this.getFlowUuid();t&&(this.fetchRecentContacts(e,t),this.showContactsTimeout=window.setTimeout(()=>{this.showRecentContacts(e,t)},500))}),i.addEventListener("mouseleave",()=>{this.showContactsTimeout&&(clearTimeout(this.showContactsTimeout),this.showContactsTimeout=null),this.hoveredActivityKey=null,this.hideRecentContacts()}),i}updateOverlayPosition(t){const e=this.overlays.get(t),i=this.connections.get(t);if(!e||!i)return;const o=this.getConnectionEndpoints(i.fromId,i.toId,i.scope);o&&(e.style.position="absolute",e.style.left=`${o.sourceX}px`,e.style.top=`${o.sourceY+15}px`,e.style.transform="translate(-50%, -50%)")}getFlowUuid(){var t,e;return(null===(e=null===(t=this.editor)||void 0===t?void 0:t.definition)||void 0===e?void 0:e.uuid)||null}async fetchRecentContacts(t,e){if(this.recentContactsCache[t]||this.pendingFetches[t])return;const i=new AbortController;this.pendingFetches[t]=i;try{const[o,n]=t.split(":"),s=`/flow/recent_contacts/${e}/${o}/${n}/`,r=await fetch(s,{signal:i.signal});if(!r.ok)throw new Error(`HTTP error! status: ${r.status}`);const a=await r.json();this.recentContactsCache[t]=Array.isArray(a)?a:a.results||[]}catch(t){"AbortError"!==t.name&&console.error("Failed to fetch recent contacts:",t)}finally{delete this.pendingFetches[t]}}async showRecentContacts(t,e){const i=this.findOverlayForActivityKey(t);i&&(this.hideContactsTimeout&&(clearTimeout(this.hideContactsTimeout),this.hideContactsTimeout=null),this.hoveredActivityKey=t,this.recentContactsPopup||(this.recentContactsPopup=document.createElement("div"),this.recentContactsPopup.className="recent-contacts-popup",this.recentContactsPopup.style.position="absolute",this.recentContactsPopup.style.zIndex="1015",this.recentContactsPopup.style.display="none",document.body.appendChild(this.recentContactsPopup),this.recentContactsPopup.onmouseenter=()=>{this.hideContactsTimeout&&(clearTimeout(this.hideContactsTimeout),this.hideContactsTimeout=null)},this.recentContactsPopup.onmouseleave=()=>{this.hoveredActivityKey=null,this.hideRecentContacts()},this.recentContactsPopup.onclick=t=>{const e=t.target;if(e.classList.contains("contact-name")){this.hideRecentContacts(!1);const i=e.getAttribute("data-uuid");i&&this.editor.fireCustomEvent("temba-contact-clicked",{uuid:i,metaKey:t.metaKey,ctrlKey:t.ctrlKey})}}),this.recentContactsCache[t]?(this.renderRecentContactsPopup(this.recentContactsCache[t]),this.positionPopup(i)):(this.recentContactsPopup.innerHTML='<div class="no-contacts-message">Loading...</div>',this.positionPopup(i),await this.fetchRecentContacts(t,e),this.hoveredActivityKey===t&&(this.renderRecentContactsPopup(this.recentContactsCache[t]||[]),this.positionPopup(i))))}findOverlayForActivityKey(t){for(const[,e]of this.overlays)if(e.getAttribute("data-activity-key")===t)return e;return null}positionPopup(t){if(!this.recentContactsPopup)return;const e=t.getBoundingClientRect();this.recentContactsPopup.style.left=`${e.left+window.scrollX}px`,this.recentContactsPopup.style.top=`${e.bottom+window.scrollY+5}px`,this.recentContactsPopup.style.display="",this.recentContactsPopup.classList.remove("show"),this.recentContactsPopup.offsetWidth,this.recentContactsPopup.classList.add("show")}renderRecentContactsPopup(t){if(!this.recentContactsPopup)return;if(0===t.length)return void(this.recentContactsPopup.innerHTML='<div class="no-contacts-message">No Recent Contacts</div>');let e='<div class="popup-title">Recent Contacts</div>';t.forEach(t=>{if(e+='<div class="contact-row">',e+=`<div class="contact-name" data-uuid="${t.contact.uuid}">${t.contact.name}</div>`,t.operand&&(e+=`<div class="contact-operand">${t.operand}</div>`),t.time){const i=new Date(t.time),o=Date.now()-i.getTime(),n=Math.floor(o/6e4),s=Math.floor(o/36e5),r=Math.floor(o/864e5);let a="";a=n<1?"just now":n<60?`${n}m ago`:s<24?`${s}h ago`:`${r}d ago`,e+=`<div class="contact-time">${a}</div>`}e+="</div>"}),this.recentContactsPopup.innerHTML=e}hideRecentContacts(t=!0){t?this.hideContactsTimeout=window.setTimeout(()=>{!this.hoveredActivityKey&&this.recentContactsPopup&&(this.recentContactsPopup.classList.remove("show"),this.recentContactsPopup.style.display="none",this.hoveredActivityKey=null)},200):this.recentContactsPopup&&(this.recentContactsPopup.classList.remove("show"),this.recentContactsPopup.style.display="none",this.hoveredActivityKey=null)}clearRecentContactsCache(){this.recentContactsCache={},Object.values(this.pendingFetches).forEach(t=>t.abort()),this.pendingFetches={}}startDrag(t,e,i,o){const n=this.connections.get(t);if(n){n.svgEl.style.display="none";const e=this.overlays.get(t);e&&(e.style.display="none")}const{svgEl:s,pathEl:r,arrowEl:a,hitAreaEl:l}=this.createSVGElement();s.classList.add("dragging"),r.style.pointerEvents="none",a.style.pointerEvents="none",l.style.pointerEvents="none",this.canvas.appendChild(s);const d=document.getElementById(t);if(!d)return void s.remove();const c=this.canvas.getBoundingClientRect(),h=d.getBoundingClientRect(),u=this.toCanvas(h.left+h.width/2-c.left),p=this.toCanvas(h.bottom-c.top),m=6.5,g=(t,e)=>{const i=e<p;let o,n="top";i&&(n=t<u?"left":"right"),o=i?e+1+13:e-1;const s=Gm(u,p,t,o,30,i?0:8,5,n);if(r.setAttribute("d",s),i){const i=e+1;a.setAttribute("points",`${t},${i} ${t-m},${o} ${t+m},${o}`)}else{const e=o+13;a.setAttribute("points",`${t},${e} ${t-m},${o} ${t+m},${o}`)}},{clientX:f,clientY:v}=Km(o),b=this.toCanvas(f-c.left),y=this.toCanvas(v-c.top);g(b,y),this.connectionDragging=!0;const x=t=>{"touches"in t&&t.preventDefault();const e=this.canvas.getBoundingClientRect(),{clientX:i,clientY:o}=Km(t),n=this.toCanvas(i-e.left),s=this.toCanvas(o-e.top);g(n,s)},w=o=>{document.removeEventListener("mousemove",x),document.removeEventListener("mouseup",w),document.removeEventListener("touchmove",x),document.removeEventListener("touchend",w),document.removeEventListener("touchcancel",w),s.remove(),this.removeConnectionSVG(t),this.connectionDragging=!1,this.dragState=null,this.notifyListeners("connection:abort",{source:d,sourceId:t,target:{id:i},data:{nodeId:e}})};document.addEventListener("mousemove",x),document.addEventListener("mouseup",w),document.addEventListener("touchmove",x,{passive:!1}),document.addEventListener("touchend",w),document.addEventListener("touchcancel",w),this.dragState={sourceId:t,scope:e,originalTargetId:i,svgEl:s,pathEl:r,arrowEl:a,onMove:x,onUp:w},this.notifyListeners("connection:drag",{sourceId:t,sourceX:u,sourceY:p,data:{nodeId:e},target:{id:i}})}reset(){this.connectionWait&&(cancelAnimationFrame(this.connectionWait),this.connectionWait=null),this.pendingConnections=[],this.connections.forEach(t=>t.svgEl.remove()),this.connections.clear(),this.overlays.forEach(t=>t.remove()),this.overlays.clear(),this.hideRecentContacts(!1),this.recentContactsPopup&&(this.recentContactsPopup.remove(),this.recentContactsPopup=null),this.recentContactsCache={},Object.values(this.pendingFetches).forEach(t=>t.abort()),this.pendingFetches={},this.sources.forEach(t=>t()),this.sources.clear(),this.dragState&&(document.removeEventListener("mousemove",this.dragState.onMove),document.removeEventListener("mouseup",this.dragState.onUp),this.dragState.svgEl.remove(),this.dragState=null,this.connectionDragging=!1)}}class Qm extends Ve{createRenderRoot(){return this}static get styles(){return a`
|
|
9377
|
+
`}}function Bm(t,e){if(!t||!(null==e?void 0:e.length))return[];const i=Pm[t],o=null==i?void 0:i.nonTranslatableCategories;if(!o)return[...e];if("all"===o)return e.filter(t=>Qt.has(t.name));const n=new Set(o);return e.filter(t=>!n.has(t.name)||Qt.has(t.name))}function Fm(t){if(null==t)return null;if(Array.isArray(t)){const e=t.map(t=>Fm(t)).filter(t=>!!t);return e.length>0?e.join(", "):null}if("object"==typeof t)return"name"in t&&t.name?String(t.name):"arguments"in t&&Array.isArray(t.arguments)?t.arguments.join(" "):null;if("number"==typeof t)return t.toString();if("string"==typeof t){const e=t.trim();return e.length>0?e:null}return null}function qm(t,e,i,o,n){const s=[];return i.forEach(i=>{if("quick_replies"===i)return;const r=i.split(".");let a=o,l=[];for(;r.length>0&&a;){a.uuid&&(l=n[a.uuid]);const t=r.shift();if(!t)break;l&&(l=l[t]),a=a[t]}if(!a)return;const d=Fm(a);if(!d)return;const c=l?Fm(l):null,h=t=>Array.isArray(t)?t.map(t=>null==t?"":String(t)):null==t?[]:[String(t)],u=h(a),p=null!=l?h(l):null;s.push({uuid:e,type:t,attribute:i,from:d,to:c,fromValues:u,toValues:p})}),s}function Um(t,e){var i;if(!t||!e||e===t.language)return[];const o=(null===(i=t.localization)||void 0===i?void 0:i[e])||{},n=[];return t.nodes.forEach(e=>{var i,s,r,a,l,d,c,h,u;null===(i=e.actions)||void 0===i||i.forEach(t=>{const i=Om[t.type];if(!(null==i?void 0:i.localizable)||0===i.localizable.length)return;const s="send_msg"===t.type?i.localizable.filter(t=>"text"===t):i.localizable,r=qm("property",t.uuid,s,t,o);r.length>0&&n.push({nodeUuid:e.uuid,actionUuid:t.uuid,translations:r})});const p=null===(r=null===(s=t._ui)||void 0===s?void 0:s.nodes)||void 0===r?void 0:r[e.uuid],m=null==p?void 0:p.type;if(!m)return;if((null===(a=null==p?void 0:p.config)||void 0===a?void 0:a.localizeRules)&&(null===(d=null===(l=e.router)||void 0===l?void 0:l.cases)||void 0===d?void 0:d.length)){const t=e.router.cases.filter(t=>{var e;return(null===(e=t.arguments)||void 0===e?void 0:e.length)>0&&t.arguments.some(t=>t)}).flatMap(t=>qm("property",t.uuid,["arguments"],t,o));t.length>0&&n.push({nodeUuid:e.uuid,translations:t})}const g=Pm[m];if((null===(c=null==p?void 0:p.config)||void 0===c?void 0:c.localizeCategories)&&"categories"===(null==g?void 0:g.localizable)&&(null===(u=null===(h=e.router)||void 0===h?void 0:h.categories)||void 0===u?void 0:u.length)){const t=Bm(m,e.router.categories).flatMap(t=>qm("category",t.uuid,["name"],t,o));t.length>0&&n.push({nodeUuid:e.uuid,translations:t})}}),n}t([mt({type:Boolean,attribute:"message-view"})],Nm.prototype,"messageView",void 0),t([mt({type:Number})],Nm.prototype,"zoom",void 0),t([mt({type:Boolean,attribute:"zoom-initialized"})],Nm.prototype,"zoomInitialized",void 0),t([mt({type:Boolean,attribute:"zoom-fitted"})],Nm.prototype,"zoomFitted",void 0),t([mt({type:Boolean,attribute:"revisions-active"})],Nm.prototype,"revisionsActive",void 0),t([mt({type:Boolean,attribute:"is-saving"})],Nm.prototype,"isSaving",void 0),t([mt({type:Boolean,attribute:"search-disabled"})],Nm.prototype,"searchDisabled",void 0),t([mt({type:Array})],Nm.prototype,"languageOptions",void 0),t([mt({type:String,attribute:"current-language-name"})],Nm.prototype,"currentLanguageName",void 0),t([mt({type:Boolean,attribute:"is-base-language"})],Nm.prototype,"isBaseLanguage",void 0),t([mt({type:Number,attribute:"language-percent"})],Nm.prototype,"languagePercent",void 0),t([mt({type:Boolean,attribute:"show-localization-tools"})],Nm.prototype,"showLocalizationTools",void 0),t([mt({type:Boolean,attribute:"has-pending-translations"})],Nm.prototype,"hasPendingTranslations",void 0),t([mt({type:Boolean,attribute:"auto-translate-disabled"})],Nm.prototype,"autoTranslateDisabled",void 0),t([mt({type:Boolean,attribute:"auto-translating"})],Nm.prototype,"autoTranslating",void 0),t([gt()],Nm.prototype,"showLanguageOptions",void 0);const jm=60,Hm=20;function Wm(t,e,i,o){if(0===t.length)return{};const n=new Set(t.map(t=>t.uuid)),s=new Map,r=new Map;for(const e of t){const t=new Set,i=[];for(const o of e.exits)if(o.destination_uuid&&n.has(o.destination_uuid)&&!t.has(o.destination_uuid)){t.add(o.destination_uuid),i.push(o.destination_uuid);const n=r.get(o.destination_uuid)||[];n.push(e.uuid),r.set(o.destination_uuid,n)}s.set(e.uuid,i)}const a=function(t,e){const i=new Set,o=new Set,n=new Set;function s(t){o.add(t),n.add(t);for(const r of e.get(t)||[])o.has(r)?i.add(`${t}->${r}`):n.has(r)||s(r);o.delete(t)}return s(t),i}(i,s),l=function(t,e,i,o,n){const s=new Map;s.set(t,0);const r=new Map;for(const t of e)r.set(t.uuid,0);for(const[t,e]of i)for(const i of e)n.has(`${t}->${i}`)||r.set(i,(r.get(i)||0)+1);const a=[];for(const[t,e]of r)0===e&&(a.push(t),s.has(t)||s.set(t,0));for(;a.length>0;){const t=a.shift(),e=s.get(t);for(const o of i.get(t)||[]){if(n.has(`${t}->${o}`))continue;const i=e+1;(!s.has(o)||i>s.get(o))&&s.set(o,i);const l=r.get(o)-1;r.set(o,l),0===l&&a.push(o)}}const l=e.filter(t=>!s.has(t.uuid));if(l.length>0){let t=Math.max(...Array.from(s.values()),-1)+2;for(const e of l)s.set(e.uuid,t),t++}return s}(i,t,s,0,a),d=new Map;for(const[t,e]of l){const i=d.get(e)||[];i.push(t),d.set(e,i)}const c=Array.from(d.keys()).sort((t,e)=>t-e);!function(t,e,i,o){const n=new Map;for(const s of t){const r=e.get(s);if(s===t[0]){r.forEach((t,e)=>n.set(t,e));continue}const a=r.map(t=>{const e=(i.get(t)||[]).filter(t=>{const e=o.get(t);return void 0!==e&&e<s});if(0===e.length)return{uuid:t,value:1/0};const r=e.reduce((t,e)=>{var i;return t+(null!==(i=n.get(e))&&void 0!==i?i:0)},0);return{uuid:t,value:r/e.length}});a.sort((t,e)=>t.value-e.value);const l=a.map(t=>t.uuid);e.set(s,l),l.forEach((t,e)=>n.set(t,e))}}(c,d,r,l);const h=new Map;for(const e of t)h.set(e.uuid,o(e.uuid));return function(t,e,i,o,n,s){var r,a,l,d;const c={};let h=0;for(const u of t){const p=Vm(e.get(u),i);for(const e of p){const p=Mc(h);if(u===t[0]){let t=0;for(const o of e){const e=o===s?p:p+40;c[o]={left:Mc(t),top:e},t+=((null===(r=i.get(o))||void 0===r?void 0:r.width)||200)+jm}}else{let t=0;for(const o of e)t+=(null===(a=i.get(o))||void 0===a?void 0:a.width)||200;t+=jm*(e.length-1);const s=[];for(const t of e){const e=(o.get(t)||[]).filter(t=>{const e=n.get(t);return void 0!==e&&e<u});for(const t of e){const e=c[t];if(e){const o=(null===(l=i.get(t))||void 0===l?void 0:l.width)||200;s.push(e.left+o/2)}}}let r;if(s.length>0){const e=(Math.min(...s)+Math.max(...s))/2;r=Math.max(0,e-t/2)}else r=0;let h=r;for(const t of e){const e=(null===(d=i.get(t))||void 0===d?void 0:d.width)||200;c[t]={left:Mc(h),top:p},h=Mc(h)+e+jm}}const m=Math.max(...e.map(t=>{var e;return(null===(e=i.get(t))||void 0===e?void 0:e.height)||100}));h=p+m+80}}const u=c[s];if(u){const t=u.left,e=u.top;for(const i of Object.keys(c))c[i]={left:Mc(Math.max(0,c[i].left-t)),top:Mc(Math.max(0,c[i].top-e))}}return c}(c,d,h,r,l,i)}function Vm(t,e){var i;const o=[];let n=[],s=0;for(const r of t){const t=(null===(i=e.get(r))||void 0===i?void 0:i.width)||200,a=n.length>0?jm+t:t;n.length>0&&s+a>1200?(o.push(n),n=[r],s=t):(n.push(r),s+=a)}return n.length>0&&o.push(n),o}function Zm(t,e,i,o,n){for(const s of n)if(t<s.left+s.width+Hm&&t+i+Hm>s.left&&e<s.top+s.height+Hm&&e+o+Hm>s.top)return!0;return!1}function Ym(t){if("touches"in t){const e=t.touches[0]||t.changedTouches[0];return{clientX:e.clientX,clientY:e.clientY}}return{clientX:t.clientX,clientY:t.clientY}}function Km(t,e,i,o,n=20,s=10,r=5,a="top",l=0){const d=r;if("top"===a){const r=e+n,a=o-s;let c=`M ${t} ${e}`;if(t===i)c+=` L ${i} ${a}`;else{const o=i>t?1:-1,n=Math.max(e+d,Math.min(r,a-d)),s=Math.max(e+d,Math.min(n+l,a-d-3)),h=Math.min(d,s-e);h>=1?(c+=` L ${t} ${s-h}`,c+=` Q ${t} ${s}, ${t+o*h} ${s}`):c+=` L ${t} ${s}`;const u=3,p=Math.min(d,Math.max(0,a-s-u));p>=1?(c+=` L ${i-o*p} ${s}`,c+=` Q ${i} ${s}, ${i} ${s+p}`):c+=` L ${i} ${s}`,c+=` L ${i} ${a}`}return c+=` L ${i} ${o}`,c}if("left"===a||"right"===a){const r=e+(o<e?0:n),l="left"===a?-1:1,c=i+l*s,h=c>t?1:-1,u=3,p=h===l?r+2*d:Math.max(r+2*d,o);let m=`M ${t} ${e} L ${t} ${r}`;p-r>d&&(m+=` L ${t} ${p-d}`,m+=` Q ${t} ${p}, ${t+h*d} ${p}`);const g=Math.abs(p-o);if(g<1)m+=` L ${c} ${o}`,m+=` L ${i} ${o}`;else{const t=o<p?-1:1,e=Math.min(d,Math.max(0,Math.floor((g-u)/2)),Math.max(0,s-u));e>=1?(m+=` L ${c-h*e} ${p}`,m+=` Q ${c} ${p}, ${c} ${p+t*e}`,m+=` L ${c} ${o-t*e}`,m+=` Q ${c} ${o}, ${c-l*e} ${o}`):(m+=` L ${c} ${p}`,m+=` L ${c} ${o}`),m+=` L ${i} ${o}`}return m}return`M ${t} ${e} L ${i} ${o}`}class Gm{constructor(t,e){this.connections=new Map,this.sources=new Map,this.pendingConnections=[],this.connectionWait=null,this.connectionListeners=new Map,this.dragState=null,this.retryCount=0,this.maxRetries=3,this.activityData=null,this.overlays=new Map,this.hoveredActivityKey=null,this.recentContactsPopup=null,this.recentContactsCache={},this.pendingFetches={},this.hideContactsTimeout=null,this.showContactsTimeout=null,this.connectionDragging=!1,this.zoom=1,this.canvas=t,this.editor=e}setContainer(t){this.canvas=t}notifyListeners(t,e){(this.connectionListeners.get(t)||[]).forEach(t=>t(e))}on(t,e){this.connectionListeners.has(t)||this.connectionListeners.set(t,[]),this.connectionListeners.get(t).push(e)}off(t,e){if(!this.connectionListeners.has(t))return;const i=this.connectionListeners.get(t),o=i.indexOf(e);-1!==o&&i.splice(o,1)}makeSource(t){const e=document.getElementById(t);if(!e)return;this.sources.has(t)&&this.sources.get(t)();let i=null;const o=o=>{if("button"in o&&Tc(o))return;if(this.connections.has(t))return;const n="touches"in o;n&&o.preventDefault();const{clientX:s,clientY:r}=Ym(o),a=e.closest("temba-flow-node"),l=(null==a?void 0:a.getAttribute("uuid"))||"",d=e=>{const{clientX:i,clientY:o}=Ym(e),n=i-s,a=o-r;Math.sqrt(n*n+a*a)>5&&(h(),this.startDrag(t,l,null,e))},c=()=>{h()},h=()=>{document.removeEventListener("mousemove",d),document.removeEventListener("mouseup",c),document.removeEventListener("touchmove",d),document.removeEventListener("touchend",c),document.removeEventListener("touchcancel",c),i=null};document.addEventListener("mousemove",d),document.addEventListener("mouseup",c),document.addEventListener("touchmove",d,{passive:!1}),document.addEventListener("touchend",c),document.addEventListener("touchcancel",c),i={startX:s,startY:r,onMove:d,onUp:c,isTouch:n}};e.addEventListener("mousedown",o),e.addEventListener("touchstart",o,{passive:!1}),this.sources.set(t,()=>{e.removeEventListener("mousedown",o),e.removeEventListener("touchstart",o),i&&(document.removeEventListener("mousemove",i.onMove),document.removeEventListener("mouseup",i.onUp),document.removeEventListener("touchmove",i.onMove),document.removeEventListener("touchend",i.onUp),document.removeEventListener("touchcancel",i.onUp),i=null)})}makeTarget(t){}connectIds(t,e,i){this.pendingConnections.push({scope:t,fromId:e,toId:i}),this.processPendingConnections()}processPendingConnections(){this.connectionWait&&(cancelAnimationFrame(this.connectionWait),this.connectionWait=null),this.connectionWait=requestAnimationFrame(()=>{const t=[],e=new Set;if(this.pendingConnections.forEach(i=>{const{scope:o,fromId:n,toId:s}=i;this.removeConnectionSVG(n),this.createConnectionSVG(n,o,s)?e.add(s):t.push(i)}),this.pendingConnections=[],e.size>0){const t=new Set;this.connections.forEach(i=>{e.has(i.toId)&&t.add(i.scope)}),this.connections.forEach((i,o)=>{(e.has(i.toId)||t.has(i.scope))&&this.updateConnectionSVG(o)})}t.length>0&&this.retryCount<this.maxRetries?(this.retryCount++,this.pendingConnections=t,this.processPendingConnections()):this.retryCount=0})}toCanvas(t){return t/this.zoom}determineTargetFace(t,e,i,o){return o-e>30?"top":t<i?"left":"right"}getConnectionEndpoints(t,e,i){const o=document.getElementById(t),n=document.getElementById(e);if(!o||!n)return null;const s=this.canvas.getBoundingClientRect(),r=o.getBoundingClientRect(),a=n.getBoundingClientRect();if(0===r.width||0===a.width)return null;const l=this.toCanvas(r.left+r.width/2-s.left),d=this.toCanvas(r.bottom-s.top),c=this.toCanvas(a.left+a.width/2-s.left),h=this.toCanvas(a.top-s.top),u=this.determineTargetFace(l,d,c,h),p=new Map;this.connections.forEach(t=>{if(t.toId===e){const e=document.getElementById(t.fromId);if(e){const i=e.getBoundingClientRect(),o=this.toCanvas(i.left+i.width/2-s.left),n=this.toCanvas(i.bottom-s.top),r=this.determineTargetFace(o,n,c,h);p.has(r)||p.set(r,[]);const a="top"===r?o:n;p.get(r).push({fromId:t.fromId,sortPos:a})}}}),p.has(u)||p.set(u,[]);const m=p.get(u);if(!m.find(e=>e.fromId===t)){const e="top"===u?l:d;m.push({fromId:t,sortPos:e})}m.sort((t,e)=>t.sortPos-e.sortPos);const g=m.findIndex(e=>e.fromId===t),f=m.length,v=this.toCanvas(a.left-s.left),b=h,y=this.toCanvas(a.width),x=this.toCanvas(a.height);let w,_;if("top"===u){w=1===f?v+y/2:v+.2*y+.6*y*(g+.5)/f,_=b}else if("left"===u){w=v;_=1===f?b+x/2:b+.2*x+.6*x*(g+.5)/f}else{w=v+y;_=1===f?b+x/2:b+.2*x+.6*x*(g+.5)/f}let k=0;if("top"===u&&i){const o=8,n=50,r=[];if(this.connections.forEach(t=>{if(t.scope===i&&t.toId!==e){const e=document.getElementById(t.fromId),i=document.getElementById(t.toId);if(e&&i){const o=e.getBoundingClientRect(),n=i.getBoundingClientRect(),a=this.toCanvas(o.left+o.width/2-s.left),l=this.toCanvas(o.bottom-s.top),d=this.toCanvas(n.left+n.width/2-s.left),c=this.toCanvas(n.top-s.top);if("top"===this.determineTargetFace(a,l,d,c)){const e=this.toCanvas(n.left-s.left),i=this.toCanvas(n.width);r.push({fromId:t.fromId,targetX:e+i/2})}}}}),r.length>0){r.push({fromId:t,targetX:w}),r.sort((t,e)=>t.targetX-e.targetX);const e=r.findIndex(e=>e.fromId===t),i=r.length;k=(e-(i-1)/2)*((i-1)*o>n?n/(i-1):o)}}return{sourceX:l,sourceY:d,targetX:w,targetY:_,targetFace:u,jogYOffset:k}}createSVGElement(){const t=document.createElementNS("http://www.w3.org/2000/svg","svg");t.classList.add("plumb-connector"),t.style.position="absolute",t.style.left="0",t.style.top="0",t.style.width="100%",t.style.height="100%",t.style.pointerEvents="none",t.style.overflow="visible";const e=document.createElementNS("http://www.w3.org/2000/svg","path");e.setAttribute("fill","none"),e.setAttribute("stroke","var(--color-connectors)"),e.setAttribute("stroke-width","3"),e.style.pointerEvents="stroke";const i=document.createElementNS("http://www.w3.org/2000/svg","polygon");i.setAttribute("fill","var(--color-connectors)"),i.classList.add("plumb-arrow"),i.style.pointerEvents="fill",i.style.cursor="pointer";const o=document.createElementNS("http://www.w3.org/2000/svg","circle");o.setAttribute("r","18"),o.setAttribute("fill","transparent"),o.style.pointerEvents="fill",o.style.cursor="pointer",t.appendChild(e),t.appendChild(o),t.appendChild(i);const n=()=>t.classList.add("hover"),s=()=>t.classList.remove("hover");return e.addEventListener("mouseenter",n),e.addEventListener("mouseleave",s),i.addEventListener("mouseenter",n),i.addEventListener("mouseleave",s),o.addEventListener("mouseenter",n),o.addEventListener("mouseleave",s),{svgEl:t,pathEl:e,arrowEl:i,hitAreaEl:o}}updateSVGPath(t,e,i,o,n,s,r="top",a=0,l){const d=6.5,c=13;let h=n,u=s;"top"===r?u=s-c:"left"===r?h=n-c:"right"===r&&(h=n+c);const p=Km(i,o,h,u,30,8,5,r,a);if(t.setAttribute("d",p),"top"===r?e.setAttribute("points",`${n},${s} ${n-d},${s-c} ${n+d},${s-c}`):"left"===r?e.setAttribute("points",`${n},${s} ${n-c},${s-d} ${n-c},${s+d}`):e.setAttribute("points",`${n},${s} ${n+c},${s-d} ${n+c},${s+d}`),l){const t=6.5;let e=n,i=s;"top"===r?i=s-t:e="left"===r?n-t:n+t,l.setAttribute("cx",String(e)),l.setAttribute("cy",String(i))}}createConnectionSVG(t,e,i){const o=this.getConnectionEndpoints(t,i,e);if(!o)return!1;const{svgEl:n,pathEl:s,arrowEl:r,hitAreaEl:a}=this.createSVGElement();this.updateSVGPath(s,r,o.sourceX,o.sourceY,o.targetX,o.targetY,o.targetFace,o.jogYOffset,a),this.canvas.appendChild(n),this.connections.set(t,{scope:e,fromId:t,toId:i,svgEl:n,pathEl:s,arrowEl:r,hitAreaEl:a});const l=o=>{if("button"in o&&Tc(o))return;o.stopPropagation(),"touches"in o&&o.preventDefault();const{clientX:n,clientY:s}=Ym(o),r=o=>{const{clientX:l,clientY:d}=Ym(o),c=l-n,h=d-s;Math.sqrt(c*c+h*h)>5&&(document.removeEventListener("mousemove",r),document.removeEventListener("mouseup",a),document.removeEventListener("touchmove",r),document.removeEventListener("touchend",a),document.removeEventListener("touchcancel",a),this.startDrag(t,e,i,o))},a=()=>{document.removeEventListener("mousemove",r),document.removeEventListener("mouseup",a),document.removeEventListener("touchmove",r),document.removeEventListener("touchend",a),document.removeEventListener("touchcancel",a)};document.addEventListener("mousemove",r),document.addEventListener("mouseup",a),document.addEventListener("touchmove",r,{passive:!1}),document.addEventListener("touchend",a),document.addEventListener("touchcancel",a)};r.addEventListener("mousedown",l),r.addEventListener("touchstart",l,{passive:!1}),a.addEventListener("mousedown",l),a.addEventListener("touchstart",l,{passive:!1}),s.addEventListener("mousedown",l),s.addEventListener("touchstart",l,{passive:!1});const d=document.getElementById(t);if(d&&d.classList.add("connected"),this.activityData){const e=`${t}:${i}`,o=this.activityData.segments[e];if(o&&o>0){const i=this.createOverlayElement(o,e);this.canvas.appendChild(i),this.overlays.set(t,i),this.updateOverlayPosition(t)}}return!0}updateConnectionSVG(t){const e=this.connections.get(t);if(!e)return;const i=this.getConnectionEndpoints(e.fromId,e.toId,e.scope);i&&(this.updateSVGPath(e.pathEl,e.arrowEl,i.sourceX,i.sourceY,i.targetX,i.targetY,i.targetFace,i.jogYOffset,e.hitAreaEl),this.updateOverlayPosition(t))}removeConnectionSVG(t){const e=this.connections.get(t);if(!e)return;const i=this.overlays.get(t);i&&(i.remove(),this.overlays.delete(t)),e.svgEl.remove(),this.connections.delete(t)}repaintEverything(){this.connections.forEach((t,e)=>{this.updateConnectionSVG(e)})}revalidate(t){const e=[],i=new Set;this.connections.forEach((o,n)=>{(t.includes(o.fromId)||t.includes(o.toId)||t.includes(o.scope))&&(e.push(n),i.add(o.toId))});const o=new Set(e);this.connections.forEach((t,e)=>{i.has(t.toId)&&o.add(e)}),o.forEach(t=>{this.updateConnectionSVG(t)})}forgetNode(t){var e;const i=[];this.connections.forEach((e,o)=>{e.scope!==t&&e.toId!==t||i.push(o)}),i.forEach(t=>this.removeConnectionSVG(t));const o=null===(e=document.getElementById(t))||void 0===e?void 0:e.querySelectorAll(".exit");o&&o.forEach(t=>{const e=t.id;this.sources.has(e)&&(this.sources.get(e)(),this.sources.delete(e))})}removeNodeConnections(t,e){var i;(e||Array.from((null===(i=document.getElementById(t))||void 0===i?void 0:i.querySelectorAll(".exit"))||[]).map(t=>t.id)).forEach(t=>this.removeConnectionSVG(t))}removeExitConnection(t){return!!this.connections.has(t)&&(this.removeConnectionSVG(t),!0)}removeAllEndpoints(t){var e;const i=null===(e=document.getElementById(t))||void 0===e?void 0:e.querySelectorAll(".exit");i&&i.forEach(t=>{const e=t.id;this.sources.has(e)&&(this.sources.get(e)(),this.sources.delete(e))})}setConnectionRemovingState(t,e){const i=this.connections.get(t);return!!i&&(e?i.svgEl.classList.add("removing"):i.svgEl.classList.remove("removing"),!0)}setActivityData(t){this.activityData=t,this.clearRecentContactsCache(),this.updateActivityOverlays()}updateActivityOverlays(){if(!this.activityData)return this.overlays.forEach(t=>t.remove()),void this.overlays.clear();const t=new Set;this.connections.forEach((e,i)=>{const o=`${e.fromId}:${e.toId}`,n=this.activityData.segments[o];if(n&&n>0){t.add(i);let e=this.overlays.get(i);e?(e.textContent=n.toLocaleString(),e.setAttribute("data-activity-key",o)):(e=this.createOverlayElement(n,o),this.canvas.appendChild(e),this.overlays.set(i,e)),this.updateOverlayPosition(i)}}),this.overlays.forEach((e,i)=>{t.has(i)||(e.remove(),this.overlays.delete(i))})}createOverlayElement(t,e){const i=document.createElement("div");return i.className="activity-overlay",i.textContent=t.toLocaleString(),i.setAttribute("data-activity-key",e),i.addEventListener("mouseenter",()=>{const t=this.getFlowUuid();t&&(this.fetchRecentContacts(e,t),this.showContactsTimeout=window.setTimeout(()=>{this.showRecentContacts(e,t)},500))}),i.addEventListener("mouseleave",()=>{this.showContactsTimeout&&(clearTimeout(this.showContactsTimeout),this.showContactsTimeout=null),this.hoveredActivityKey=null,this.hideRecentContacts()}),i}updateOverlayPosition(t){const e=this.overlays.get(t),i=this.connections.get(t);if(!e||!i)return;const o=this.getConnectionEndpoints(i.fromId,i.toId,i.scope);o&&(e.style.position="absolute",e.style.left=`${o.sourceX}px`,e.style.top=`${o.sourceY+15}px`,e.style.transform="translate(-50%, -50%)")}getFlowUuid(){var t,e;return(null===(e=null===(t=this.editor)||void 0===t?void 0:t.definition)||void 0===e?void 0:e.uuid)||null}async fetchRecentContacts(t,e){if(this.recentContactsCache[t]||this.pendingFetches[t])return;const i=new AbortController;this.pendingFetches[t]=i;try{const[o,n]=t.split(":"),s=`/flow/recent_contacts/${e}/${o}/${n}/`,r=await fetch(s,{signal:i.signal});if(!r.ok)throw new Error(`HTTP error! status: ${r.status}`);const a=await r.json();this.recentContactsCache[t]=Array.isArray(a)?a:a.results||[]}catch(t){"AbortError"!==t.name&&console.error("Failed to fetch recent contacts:",t)}finally{delete this.pendingFetches[t]}}async showRecentContacts(t,e){const i=this.findOverlayForActivityKey(t);i&&(this.hideContactsTimeout&&(clearTimeout(this.hideContactsTimeout),this.hideContactsTimeout=null),this.hoveredActivityKey=t,this.recentContactsPopup||(this.recentContactsPopup=document.createElement("div"),this.recentContactsPopup.className="recent-contacts-popup",this.recentContactsPopup.style.position="absolute",this.recentContactsPopup.style.zIndex="1015",this.recentContactsPopup.style.display="none",document.body.appendChild(this.recentContactsPopup),this.recentContactsPopup.onmouseenter=()=>{this.hideContactsTimeout&&(clearTimeout(this.hideContactsTimeout),this.hideContactsTimeout=null)},this.recentContactsPopup.onmouseleave=()=>{this.hoveredActivityKey=null,this.hideRecentContacts()},this.recentContactsPopup.onclick=t=>{const e=t.target;if(e.classList.contains("contact-name")){this.hideRecentContacts(!1);const i=e.getAttribute("data-uuid");i&&this.editor.fireCustomEvent("temba-contact-clicked",{uuid:i,metaKey:t.metaKey,ctrlKey:t.ctrlKey})}}),this.recentContactsCache[t]?(this.renderRecentContactsPopup(this.recentContactsCache[t]),this.positionPopup(i)):(this.recentContactsPopup.innerHTML='<div class="no-contacts-message">Loading...</div>',this.positionPopup(i),await this.fetchRecentContacts(t,e),this.hoveredActivityKey===t&&(this.renderRecentContactsPopup(this.recentContactsCache[t]||[]),this.positionPopup(i))))}findOverlayForActivityKey(t){for(const[,e]of this.overlays)if(e.getAttribute("data-activity-key")===t)return e;return null}positionPopup(t){if(!this.recentContactsPopup)return;const e=t.getBoundingClientRect();this.recentContactsPopup.style.left=`${e.left+window.scrollX}px`,this.recentContactsPopup.style.top=`${e.bottom+window.scrollY+5}px`,this.recentContactsPopup.style.display="",this.recentContactsPopup.classList.remove("show"),this.recentContactsPopup.offsetWidth,this.recentContactsPopup.classList.add("show")}renderRecentContactsPopup(t){if(!this.recentContactsPopup)return;if(0===t.length)return void(this.recentContactsPopup.innerHTML='<div class="no-contacts-message">No Recent Contacts</div>');let e='<div class="popup-title">Recent Contacts</div>';t.forEach(t=>{if(e+='<div class="contact-row">',e+=`<div class="contact-name" data-uuid="${t.contact.uuid}">${t.contact.name}</div>`,t.operand&&(e+=`<div class="contact-operand">${t.operand}</div>`),t.time){const i=new Date(t.time),o=Date.now()-i.getTime(),n=Math.floor(o/6e4),s=Math.floor(o/36e5),r=Math.floor(o/864e5);let a="";a=n<1?"just now":n<60?`${n}m ago`:s<24?`${s}h ago`:`${r}d ago`,e+=`<div class="contact-time">${a}</div>`}e+="</div>"}),this.recentContactsPopup.innerHTML=e}hideRecentContacts(t=!0){t?this.hideContactsTimeout=window.setTimeout(()=>{!this.hoveredActivityKey&&this.recentContactsPopup&&(this.recentContactsPopup.classList.remove("show"),this.recentContactsPopup.style.display="none",this.hoveredActivityKey=null)},200):this.recentContactsPopup&&(this.recentContactsPopup.classList.remove("show"),this.recentContactsPopup.style.display="none",this.hoveredActivityKey=null)}clearRecentContactsCache(){this.recentContactsCache={},Object.values(this.pendingFetches).forEach(t=>t.abort()),this.pendingFetches={}}startDrag(t,e,i,o){const n=this.connections.get(t);if(n){n.svgEl.style.display="none";const e=this.overlays.get(t);e&&(e.style.display="none")}const{svgEl:s,pathEl:r,arrowEl:a,hitAreaEl:l}=this.createSVGElement();s.classList.add("dragging"),r.style.pointerEvents="none",a.style.pointerEvents="none",l.style.pointerEvents="none",this.canvas.appendChild(s);const d=document.getElementById(t);if(!d)return void s.remove();const c=this.canvas.getBoundingClientRect(),h=d.getBoundingClientRect(),u=this.toCanvas(h.left+h.width/2-c.left),p=this.toCanvas(h.bottom-c.top),m=6.5,g=(t,e)=>{const i=e<p;let o,n="top";i&&(n=t<u?"left":"right"),o=i?e+1+13:e-1;const s=Km(u,p,t,o,30,i?0:8,5,n);if(r.setAttribute("d",s),i){const i=e+1;a.setAttribute("points",`${t},${i} ${t-m},${o} ${t+m},${o}`)}else{const e=o+13;a.setAttribute("points",`${t},${e} ${t-m},${o} ${t+m},${o}`)}},{clientX:f,clientY:v}=Ym(o),b=this.toCanvas(f-c.left),y=this.toCanvas(v-c.top);g(b,y),this.connectionDragging=!0;const x=t=>{"touches"in t&&t.preventDefault();const e=this.canvas.getBoundingClientRect(),{clientX:i,clientY:o}=Ym(t),n=this.toCanvas(i-e.left),s=this.toCanvas(o-e.top);g(n,s)},w=o=>{document.removeEventListener("mousemove",x),document.removeEventListener("mouseup",w),document.removeEventListener("touchmove",x),document.removeEventListener("touchend",w),document.removeEventListener("touchcancel",w),s.remove(),this.removeConnectionSVG(t),this.connectionDragging=!1,this.dragState=null,this.notifyListeners("connection:abort",{source:d,sourceId:t,target:{id:i},data:{nodeId:e}})};document.addEventListener("mousemove",x),document.addEventListener("mouseup",w),document.addEventListener("touchmove",x,{passive:!1}),document.addEventListener("touchend",w),document.addEventListener("touchcancel",w),this.dragState={sourceId:t,scope:e,originalTargetId:i,svgEl:s,pathEl:r,arrowEl:a,onMove:x,onUp:w},this.notifyListeners("connection:drag",{sourceId:t,sourceX:u,sourceY:p,data:{nodeId:e},target:{id:i}})}reset(){this.connectionWait&&(cancelAnimationFrame(this.connectionWait),this.connectionWait=null),this.pendingConnections=[],this.connections.forEach(t=>t.svgEl.remove()),this.connections.clear(),this.overlays.forEach(t=>t.remove()),this.overlays.clear(),this.hideRecentContacts(!1),this.recentContactsPopup&&(this.recentContactsPopup.remove(),this.recentContactsPopup=null),this.recentContactsCache={},Object.values(this.pendingFetches).forEach(t=>t.abort()),this.pendingFetches={},this.sources.forEach(t=>t()),this.sources.clear(),this.dragState&&(document.removeEventListener("mousemove",this.dragState.onMove),document.removeEventListener("mouseup",this.dragState.onUp),this.dragState.svgEl.remove(),this.dragState=null,this.connectionDragging=!1)}}class Xm extends Ve{createRenderRoot(){return this}static get styles(){return a`
|
|
9381
9378
|
|
|
9382
9379
|
.node {
|
|
9383
9380
|
background-color: #fff;
|
|
@@ -9859,7 +9856,7 @@ background: #ccc;
|
|
|
9859
9856
|
.touch-device .add-action-button {
|
|
9860
9857
|
opacity: 0.8 !important;
|
|
9861
9858
|
}
|
|
9862
|
-
}`}constructor(){super(),this.exitRemovalTimeouts=new Map,this.connectionTimeout=null,this.exitRemovingState=new Set,this.actionRemovalTimeouts=new Map,this.actionRemovingState=new Set,this.actionClickStartPos=null,this.pendingActionClick=null,this.nodeClickStartPos=null,this.pendingNodeClick=null,this.draggedActionHeight=0,this.resizeObserver=null,this.externalDragInfo=null,this.showLastActionPlaceholder=!1,this.lastActionPlaceholderHeight=60,this.handleActionOrderChanged=this.handleActionOrderChanged.bind(this),this.handleActionDragStart=this.handleActionDragStart.bind(this),this.handleActionDragExternal=this.handleActionDragExternal.bind(this),this.handleActionDragInternal=this.handleActionDragInternal.bind(this),this.handleActionDragStop=this.handleActionDragStop.bind(this),this.handleExternalActionDragOver=this.handleExternalActionDragOver.bind(this),this.handleExternalActionDrop=this.handleExternalActionDrop.bind(this),this.handleExternalActionDragLeave=this.handleExternalActionDragLeave.bind(this),this.handleActionShowGhost=this.handleActionShowGhost.bind(this),this.handleActionHideGhost=this.handleActionHideGhost.bind(this),this.handleActionShowOriginal=this.handleActionShowOriginal.bind(this),this.handleActionHideOriginal=this.handleActionHideOriginal.bind(this)}connectedCallback(){super.connectedCallback(),this.addEventListener("action-drag-over",this.handleExternalActionDragOver),this.addEventListener("action-drop",this.handleExternalActionDrop),this.addEventListener("action-drag-leave",this.handleExternalActionDragLeave),this.addEventListener("action-show-ghost",this.handleActionShowGhost),this.addEventListener("action-hide-ghost",this.handleActionHideGhost),this.addEventListener("action-show-original",this.handleActionShowOriginal),this.addEventListener("action-hide-original",this.handleActionHideOriginal),this.resizeObserver=new ResizeObserver(()=>{this.plumber&&this.node&&this.plumber.revalidate([this.node.uuid])}),this.resizeObserver.observe(this)}updated(t){var e;if(super.updated(t),t.get("ui")&&t.has("ui"))for(let t=25;t<=350;t+=25)setTimeout(()=>{this.plumber.revalidate([this.node.uuid])},t);if(t.has("node")){if(this.plumber){this.connectionTimeout&&clearTimeout(this.connectionTimeout);const t=this.node.exits.map(t=>t.uuid);this.plumber.removeNodeConnections(this.node.uuid,t),this.connectionTimeout=window.setTimeout(()=>{var t;if("terminal"!==(null===(t=this.ui)||void 0===t?void 0:t.type))for(const t of this.node.exits)this.plumber.makeSource(t.uuid),t.destination_uuid&&this.plumber.connectIds(this.node.uuid,t.uuid,t.destination_uuid);this.connectionTimeout=null,this.plumber.revalidate([this.node.uuid])},0)}const t=this.parentElement;if(t&&this.ui){const i=t.getBoundingClientRect();null===(e=Qc())||void 0===e||e.getState().expandCanvas(this.ui.position.left+i.width,this.ui.position.top+i.height)}}}disconnectedCallback(){this.plumber&&this.node&&(this.connectionTimeout&&(clearTimeout(this.connectionTimeout),this.connectionTimeout=null),this.plumber.forgetNode(this.node.uuid)),this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null),super.disconnectedCallback(),this.removeEventListener("action-drag-over",this.handleExternalActionDragOver),this.removeEventListener("action-drop",this.handleExternalActionDrop),this.removeEventListener("action-drag-leave",this.handleExternalActionDragLeave),this.removeEventListener("action-show-ghost",this.handleActionShowGhost),this.removeEventListener("action-hide-ghost",this.handleActionHideGhost),this.removeEventListener("action-show-original",this.handleActionShowOriginal),this.removeEventListener("action-hide-original",this.handleActionHideOriginal),this.exitRemovalTimeouts.forEach(t=>{clearTimeout(t)}),this.exitRemovalTimeouts.clear(),this.actionRemovalTimeouts.forEach(t=>{clearTimeout(t)}),this.actionRemovalTimeouts.clear(),this.exitRemovingState.clear(),this.actionRemovingState.clear(),this.plumber&&this.plumber.removeNodeConnections(this.node.uuid,this.node.exits.map(t=>t.uuid))}handleExitClick(t,e){t.preventDefault(),t.stopPropagation();const i=e.uuid;if(!e.destination_uuid)return;if(this.exitRemovingState.has(i))return void this.disconnectExit(e);this.exitRemovingState.add(i),this.requestUpdate(),this.plumber.setConnectionRemovingState(i,!0),this.exitRemovalTimeouts.has(i)&&clearTimeout(this.exitRemovalTimeouts.get(i));const o=window.setTimeout(()=>{this.exitRemovingState.delete(i),this.exitRemovalTimeouts.delete(i),this.plumber.setConnectionRemovingState(i,!1),this.requestUpdate()},1500);this.exitRemovalTimeouts.set(i,o)}disconnectExit(t){var e;const i=t.uuid;this.exitRemovingState.delete(i),this.plumber.setConnectionRemovingState(i,!1),this.exitRemovalTimeouts.has(i)&&(clearTimeout(this.exitRemovalTimeouts.get(i)),this.exitRemovalTimeouts.delete(i)),this.plumber.removeExitConnection(i);const o={...t,destination_uuid:null},n=this.node.exits.map(t=>t.uuid===i?o:t),s={...this.node,exits:n};null===(e=Qc())||void 0===e||e.getState().updateNode(this.node.uuid,s),this.requestUpdate()}handleActionRemoveClick(t,e,i){t.preventDefault(),t.stopPropagation();const o=e.uuid;if(this.actionRemovingState.has(o))return void this.removeAction(e,i);this.actionRemovingState.add(o),this.requestUpdate(),this.actionRemovalTimeouts.has(o)&&clearTimeout(this.actionRemovalTimeouts.get(o));const n=window.setTimeout(()=>{this.actionRemovingState.delete(o),this.actionRemovalTimeouts.delete(o),this.requestUpdate()},1e3);this.actionRemovalTimeouts.set(o,n)}removeAction(t,e){var i;const o=t.uuid;this.actionRemovingState.delete(o),this.actionRemovalTimeouts.has(o)&&(clearTimeout(this.actionRemovalTimeouts.get(o)),this.actionRemovalTimeouts.delete(o));const n=this.node.actions.filter(t=>t.uuid!==o);if(0===n.length)this.fireCustomEvent(Fo.NodeDeleted,{uuid:this.node.uuid});else{const t={...this.node,actions:n};null===(i=Qc())||void 0===i||i.getState().updateNode(this.node.uuid,t),this.requestUpdate()}}handleNodeRemoveClick(t){t.preventDefault(),t.stopPropagation();const e=this.node.uuid;if(this.actionRemovingState.has(e))return void this.removeNode();this.actionRemovingState.add(e),this.requestUpdate(),this.actionRemovalTimeouts.has(e)&&clearTimeout(this.actionRemovalTimeouts.get(e));const i=window.setTimeout(()=>{this.actionRemovingState.delete(e),this.actionRemovalTimeouts.delete(e),this.requestUpdate()},1e3);this.actionRemovalTimeouts.set(e,i)}removeNode(){const t=this.node.uuid;this.actionRemovingState.delete(t),this.actionRemovalTimeouts.has(t)&&(clearTimeout(this.actionRemovalTimeouts.get(t)),this.actionRemovalTimeouts.delete(t)),this.fireCustomEvent(Fo.NodeDeleted,{uuid:this.node.uuid})}handleActionOrderChanged(t){var e;const[i,o]=t.detail.swap;if(this.externalDragInfo)return;const n=[...this.node.actions],s=n.splice(i,1)[0];n.splice(o,0,s),this.node={...this.node,actions:n},null===(e=Qc())||void 0===e||e.getState().updateNode(this.node.uuid,{...this.node,actions:n})}handleActionDragStart(t){const e=t.detail.id,i=this.querySelector(`#${e}`);this.draggedActionHeight=i?i.offsetHeight:60,1===this.node.actions.length&&(this.showLastActionPlaceholder=!0,this.lastActionPlaceholderHeight=this.draggedActionHeight,this.requestUpdate())}handleActionDragExternal(t){t.stopPropagation();const e=t.detail.id.split("-");if(e.length<2||isNaN(parseInt(e[1],10)))return;const i=parseInt(e[1],10),o=this.node.actions[i],n=1===this.node.actions.length;this.fireCustomEvent(Fo.DragExternal,{action:o,nodeUuid:this.node.uuid,actionIndex:i,mouseX:t.detail.mouseX,mouseY:t.detail.mouseY,actionHeight:this.draggedActionHeight,isLastAction:n})}handleActionDragInternal(t){t.stopPropagation(),this.fireCustomEvent(Fo.DragInternal,{})}handleActionDragStop(t){const e=t.detail.isExternal;if(this.showLastActionPlaceholder=!1,e){t.stopPropagation();const e=t.detail.id.split("-");if(e.length<2||isNaN(Number(e[1])))return;const i=parseInt(e[1],10),o=this.node.actions[i],n=1===this.node.actions.length;this.fireCustomEvent(Fo.DragStop,{action:o,nodeUuid:this.node.uuid,actionIndex:i,isExternal:!0,isLastAction:n,mouseX:t.detail.mouseX,mouseY:t.detail.mouseY})}this.requestUpdate()}getTopCenter(t){const e=t.getBoundingClientRect();return{x:e.left+e.width/2,y:e.top}}isActiveLink(t,e){var i,o,n;return!!t.closest(".linked-name")&&(e?!(null===(i=this.issuesByAction)||void 0===i?void 0:i.has(e.uuid)):!((null===(o=this.issuesByNode)||void 0===o?void 0:o.has(this.node.uuid))||(null===(n=this.node.actions)||void 0===n?void 0:n.some(t=>{var e;return null===(e=this.issuesByAction)||void 0===e?void 0:e.has(t.uuid)}))))}handleActionMouseDown(t,e){if(Tc(t))return;const i=t.target;i.closest(".remove-button")||i.closest(".drag-handle")||this.isActiveLink(i,e)||this.actionRemovingState.has(e.uuid)||(this.actionClickStartPos={x:t.clientX,y:t.clientY},this.pendingActionClick={action:e,event:t})}handleActionMouseUp(t,e){if(!this.pendingActionClick||this.pendingActionClick.action.uuid!==e.uuid)return this.actionClickStartPos=null,void(this.pendingActionClick=null);const i=t.target;if(i.closest(".remove-button")||i.closest(".drag-handle")||this.isActiveLink(i,e)||this.actionRemovingState.has(e.uuid))return this.actionClickStartPos=null,void(this.pendingActionClick=null);if(this.actionClickStartPos){const i=t.clientX-this.actionClickStartPos.x,o=t.clientY-this.actionClickStartPos.y,n=Math.sqrt(i*i+o*o),s=this.closest("temba-flow-editor"),r=null==s?void 0:s.dragging;if(n<=5&&(!s||!r)){const i=t.currentTarget,o=i?this.getTopCenter(i):{x:t.clientX,y:t.clientY};this.fireCustomEvent(Fo.ActionEditRequested,{action:e,nodeUuid:this.node.uuid,originX:o.x,originY:o.y})}}this.actionClickStartPos=null,this.pendingActionClick=null}handleActionTouchStart(t,e){const i=t.target;if(i.closest(".remove-button")||i.closest(".drag-handle")||this.isActiveLink(i,e)||this.actionRemovingState.has(e.uuid))return;const o=t.touches[0];o&&(this.actionClickStartPos={x:o.clientX,y:o.clientY},this.pendingActionClick={action:e,event:t})}handleActionTouchEnd(t,e){if(!this.pendingActionClick||this.pendingActionClick.action.uuid!==e.uuid)return this.actionClickStartPos=null,void(this.pendingActionClick=null);const i=t.target;if(i.closest(".remove-button")||i.closest(".drag-handle")||this.isActiveLink(i,e)||this.actionRemovingState.has(e.uuid))return this.actionClickStartPos=null,void(this.pendingActionClick=null);const o=t.changedTouches[0];if(this.actionClickStartPos&&o){const i=o.clientX-this.actionClickStartPos.x,n=o.clientY-this.actionClickStartPos.y,s=Math.sqrt(i*i+n*n),r=this.closest("temba-flow-editor"),a=null==r?void 0:r.dragging;if(s<=5&&(!r||!a)){const i=t.currentTarget,n=i?this.getTopCenter(i):{x:o.clientX,y:o.clientY};this.fireCustomEvent(Fo.ActionEditRequested,{action:e,nodeUuid:this.node.uuid,originX:n.x,originY:n.y})}}this.actionClickStartPos=null,this.pendingActionClick=null}handleActionClick(t,e){t.preventDefault(),t.stopPropagation();t.target.closest(".remove-button")||this.actionRemovingState.has(e.uuid)||this.fireCustomEvent(Fo.ActionEditRequested,{action:e,nodeUuid:this.node.uuid})}handleNodeEditClick(t){t.preventDefault(),t.stopPropagation();t.target.closest(".remove-button")||this.actionRemovingState.has(this.node.uuid)||this.node.router&&(this.node.actions&&1===this.node.actions.length?this.fireCustomEvent(Fo.ActionEditRequested,{action:this.node.actions[0],nodeUuid:this.node.uuid}):this.fireCustomEvent(Fo.NodeEditRequested,{node:this.node,nodeUI:this.ui}))}handleNodeMouseDown(t){if(Tc(t))return;const e=t.target;e.closest(".remove-button")||e.closest(".exit")||e.closest(".exit-wrapper")||e.closest(".drag-handle")||this.isActiveLink(e)||this.actionRemovingState.has(this.node.uuid)||(this.nodeClickStartPos={x:t.clientX,y:t.clientY},this.pendingNodeClick={event:t})}handleNodeMouseUp(t){if(!this.pendingNodeClick)return this.nodeClickStartPos=null,void(this.pendingNodeClick=null);const e=t.target;if(e.closest(".remove-button")||e.closest(".exit")||e.closest(".exit-wrapper")||e.closest(".drag-handle")||this.isActiveLink(e)||this.actionRemovingState.has(this.node.uuid))return this.nodeClickStartPos=null,void(this.pendingNodeClick=null);if(this.nodeClickStartPos){const e=t.clientX-this.nodeClickStartPos.x,i=t.clientY-this.nodeClickStartPos.y,o=Math.sqrt(e*e+i*i),n=this.closest("temba-flow-editor"),s=null==n?void 0:n.dragging;if(o<=5&&(!n||!s)&&this.node.router){const t=this.getTopCenter(this);this.node.actions&&1===this.node.actions.length?this.fireCustomEvent(Fo.ActionEditRequested,{action:this.node.actions[0],nodeUuid:this.node.uuid,originX:t.x,originY:t.y}):this.fireCustomEvent(Fo.NodeEditRequested,{node:this.node,nodeUI:this.ui,originX:t.x,originY:t.y})}}this.nodeClickStartPos=null,this.pendingNodeClick=null}handleNodeTouchStart(t){const e=t.target;if(e.closest(".remove-button")||e.closest(".exit")||e.closest(".exit-wrapper")||e.closest(".drag-handle")||this.isActiveLink(e)||this.actionRemovingState.has(this.node.uuid))return;const i=t.touches[0];i&&(this.nodeClickStartPos={x:i.clientX,y:i.clientY},this.pendingNodeClick={event:t})}handleNodeTouchEnd(t){if(!this.pendingNodeClick)return this.nodeClickStartPos=null,void(this.pendingNodeClick=null);const e=t.target;if(e.closest(".remove-button")||e.closest(".exit")||e.closest(".exit-wrapper")||e.closest(".drag-handle")||this.isActiveLink(e)||this.actionRemovingState.has(this.node.uuid))return this.nodeClickStartPos=null,void(this.pendingNodeClick=null);const i=t.changedTouches[0];if(this.nodeClickStartPos&&i){const t=i.clientX-this.nodeClickStartPos.x,e=i.clientY-this.nodeClickStartPos.y,o=Math.sqrt(t*t+e*e),n=this.closest("temba-flow-editor"),s=null==n?void 0:n.dragging;if(o<=5&&(!n||!s)&&this.node.router){const t=this.getTopCenter(this);this.node.actions&&1===this.node.actions.length?this.fireCustomEvent(Fo.ActionEditRequested,{action:this.node.actions[0],nodeUuid:this.node.uuid,originX:t.x,originY:t.y}):this.fireCustomEvent(Fo.NodeEditRequested,{node:this.node,nodeUI:this.ui,originX:t.x,originY:t.y})}}this.nodeClickStartPos=null,this.pendingNodeClick=null}handleAddActionClick(t){t.preventDefault(),t.stopPropagation(),this.fireCustomEvent(Fo.AddActionRequested,{nodeUuid:this.node.uuid})}calculateDropIndex(t){var e,i;const o=this.querySelector("temba-sortable-list");if(!o||!this.node.actions)return null!==(i=null===(e=this.node.actions)||void 0===e?void 0:e.length)&&void 0!==i?i:0;const n=Array.from(o.querySelectorAll(".action.sortable:not(.drop-placeholder)"));if(0===n.length)return 0;for(let e=0;e<n.length;e++){const i=n[e].getBoundingClientRect();if(t<i.top+i.height/2)return e}return n.length}handleExternalActionDragOver(t){if("execute_actions"!==this.ui.type)return;const{action:e,sourceNodeUuid:i,actionIndex:o,mouseY:n,actionHeight:s}=t.detail;if(i===this.node.uuid)return;const r=this.calculateDropIndex(n);this.externalDragInfo={action:e,sourceNodeUuid:i,actionIndex:o,dropIndex:r,actionHeight:s||60},this.requestUpdate()}handleExternalActionDragLeave(t){this.externalDragInfo=null,this.requestUpdate()}handleActionShowGhost(t){if(this.querySelector("temba-sortable-list")){const t=document.querySelector(".ghost");t&&(t.style.display="block")}}handleActionHideGhost(t){if(this.querySelector("temba-sortable-list")){const t=document.querySelector(".ghost");t&&(t.style.display="none")}}handleActionShowOriginal(t){const e=this.querySelector("temba-sortable-list");null==e||e.setOriginalVisible(!0),this.showLastActionPlaceholder=!1,this.requestUpdate()}handleActionHideOriginal(t){const e=this.querySelector("temba-sortable-list");null==e||e.setOriginalVisible(!1),1===this.node.actions.length&&(this.showLastActionPlaceholder=!0),this.requestUpdate()}handleExternalActionDrop(t){var e,i,o,n,s,r,a;if("execute_actions"!==this.ui.type)return;const{action:l,sourceNodeUuid:d,actionIndex:c,isCopy:h}=t.detail;if(d===this.node.uuid)return;const u=null!==(n=null!==(i=null===(e=this.externalDragInfo)||void 0===e?void 0:e.dropIndex)&&void 0!==i?i:null===(o=this.node.actions)||void 0===o?void 0:o.length)&&void 0!==n?n:0;this.externalDragInfo=null;const p=Qc();if(!p)return;const m=p.getState().flowDefinition;if(!m)return;const g=m.nodes.find(t=>t.uuid===d);if(!g)return;const f=h?{...l,uuid:Kt()}:l,v=[...this.node.actions];v.splice(u,0,f);const b={...this.node,actions:v};if(null===(s=Qc())||void 0===s||s.getState().updateNode(this.node.uuid,b),h){const t=m.localization;if(t)for(const e of Object.keys(t)){const i=null===(r=t[e])||void 0===r?void 0:r[l.uuid];i&&p.getState().updateLocalization(e,f.uuid,JSON.parse(JSON.stringify(i)))}}if(!h){const t=g.actions.filter((t,e)=>e!==c);if(0===t.length)this.fireCustomEvent(Fo.NodeDeleted,{uuid:d});else{const e={...g,actions:t};null===(a=Qc())||void 0===a||a.getState().updateNode(d,e)}}this.requestUpdate(),this.fireCustomEvent(Fo.SizeChanged,{uuid:this.node.uuid})}renderTitle(t,e,i,o=!1){var n,s,r,a,l;const d=t.group?null===(n=bp[t.group])||void 0===n?void 0:n.color:"#aaaaaa",c="terminal"===(null===(s=this.ui)||void 0===s?void 0:s.type);return W`<div class="cn-title" style="background:${d}">
|
|
9859
|
+
}`}constructor(){super(),this.exitRemovalTimeouts=new Map,this.connectionTimeout=null,this.exitRemovingState=new Set,this.actionRemovalTimeouts=new Map,this.actionRemovingState=new Set,this.actionClickStartPos=null,this.pendingActionClick=null,this.nodeClickStartPos=null,this.pendingNodeClick=null,this.draggedActionHeight=0,this.resizeObserver=null,this.externalDragInfo=null,this.showLastActionPlaceholder=!1,this.lastActionPlaceholderHeight=60,this.handleActionOrderChanged=this.handleActionOrderChanged.bind(this),this.handleActionDragStart=this.handleActionDragStart.bind(this),this.handleActionDragExternal=this.handleActionDragExternal.bind(this),this.handleActionDragInternal=this.handleActionDragInternal.bind(this),this.handleActionDragStop=this.handleActionDragStop.bind(this),this.handleExternalActionDragOver=this.handleExternalActionDragOver.bind(this),this.handleExternalActionDrop=this.handleExternalActionDrop.bind(this),this.handleExternalActionDragLeave=this.handleExternalActionDragLeave.bind(this),this.handleActionShowGhost=this.handleActionShowGhost.bind(this),this.handleActionHideGhost=this.handleActionHideGhost.bind(this),this.handleActionShowOriginal=this.handleActionShowOriginal.bind(this),this.handleActionHideOriginal=this.handleActionHideOriginal.bind(this)}connectedCallback(){super.connectedCallback(),this.addEventListener("action-drag-over",this.handleExternalActionDragOver),this.addEventListener("action-drop",this.handleExternalActionDrop),this.addEventListener("action-drag-leave",this.handleExternalActionDragLeave),this.addEventListener("action-show-ghost",this.handleActionShowGhost),this.addEventListener("action-hide-ghost",this.handleActionHideGhost),this.addEventListener("action-show-original",this.handleActionShowOriginal),this.addEventListener("action-hide-original",this.handleActionHideOriginal),this.resizeObserver=new ResizeObserver(()=>{this.plumber&&this.node&&this.plumber.revalidate([this.node.uuid])}),this.resizeObserver.observe(this)}updated(t){var e;if(super.updated(t),t.get("ui")&&t.has("ui"))for(let t=25;t<=350;t+=25)setTimeout(()=>{this.plumber.revalidate([this.node.uuid])},t);if(t.has("node")){if(this.plumber){this.connectionTimeout&&clearTimeout(this.connectionTimeout);const t=this.node.exits.map(t=>t.uuid);this.plumber.removeNodeConnections(this.node.uuid,t),this.connectionTimeout=window.setTimeout(()=>{var t;if("terminal"!==(null===(t=this.ui)||void 0===t?void 0:t.type))for(const t of this.node.exits)this.plumber.makeSource(t.uuid),t.destination_uuid&&this.plumber.connectIds(this.node.uuid,t.uuid,t.destination_uuid);this.connectionTimeout=null,this.plumber.revalidate([this.node.uuid])},0)}const t=this.parentElement;if(t&&this.ui){const i=t.getBoundingClientRect();null===(e=Qc())||void 0===e||e.getState().expandCanvas(this.ui.position.left+i.width,this.ui.position.top+i.height)}}}disconnectedCallback(){this.plumber&&this.node&&(this.connectionTimeout&&(clearTimeout(this.connectionTimeout),this.connectionTimeout=null),this.plumber.forgetNode(this.node.uuid)),this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null),super.disconnectedCallback(),this.removeEventListener("action-drag-over",this.handleExternalActionDragOver),this.removeEventListener("action-drop",this.handleExternalActionDrop),this.removeEventListener("action-drag-leave",this.handleExternalActionDragLeave),this.removeEventListener("action-show-ghost",this.handleActionShowGhost),this.removeEventListener("action-hide-ghost",this.handleActionHideGhost),this.removeEventListener("action-show-original",this.handleActionShowOriginal),this.removeEventListener("action-hide-original",this.handleActionHideOriginal),this.exitRemovalTimeouts.forEach(t=>{clearTimeout(t)}),this.exitRemovalTimeouts.clear(),this.actionRemovalTimeouts.forEach(t=>{clearTimeout(t)}),this.actionRemovalTimeouts.clear(),this.exitRemovingState.clear(),this.actionRemovingState.clear(),this.plumber&&this.plumber.removeNodeConnections(this.node.uuid,this.node.exits.map(t=>t.uuid))}handleExitClick(t,e){t.preventDefault(),t.stopPropagation();const i=e.uuid;if(!e.destination_uuid)return;if(this.exitRemovingState.has(i))return void this.disconnectExit(e);this.exitRemovingState.add(i),this.requestUpdate(),this.plumber.setConnectionRemovingState(i,!0),this.exitRemovalTimeouts.has(i)&&clearTimeout(this.exitRemovalTimeouts.get(i));const o=window.setTimeout(()=>{this.exitRemovingState.delete(i),this.exitRemovalTimeouts.delete(i),this.plumber.setConnectionRemovingState(i,!1),this.requestUpdate()},1500);this.exitRemovalTimeouts.set(i,o)}disconnectExit(t){var e;const i=t.uuid;this.exitRemovingState.delete(i),this.plumber.setConnectionRemovingState(i,!1),this.exitRemovalTimeouts.has(i)&&(clearTimeout(this.exitRemovalTimeouts.get(i)),this.exitRemovalTimeouts.delete(i)),this.plumber.removeExitConnection(i);const o={...t,destination_uuid:null},n=this.node.exits.map(t=>t.uuid===i?o:t),s={...this.node,exits:n};null===(e=Qc())||void 0===e||e.getState().updateNode(this.node.uuid,s),this.requestUpdate()}handleActionRemoveClick(t,e,i){t.preventDefault(),t.stopPropagation();const o=e.uuid;if(this.actionRemovingState.has(o))return void this.removeAction(e,i);this.actionRemovingState.add(o),this.requestUpdate(),this.actionRemovalTimeouts.has(o)&&clearTimeout(this.actionRemovalTimeouts.get(o));const n=window.setTimeout(()=>{this.actionRemovingState.delete(o),this.actionRemovalTimeouts.delete(o),this.requestUpdate()},1e3);this.actionRemovalTimeouts.set(o,n)}removeAction(t,e){var i;const o=t.uuid;this.actionRemovingState.delete(o),this.actionRemovalTimeouts.has(o)&&(clearTimeout(this.actionRemovalTimeouts.get(o)),this.actionRemovalTimeouts.delete(o));const n=this.node.actions.filter(t=>t.uuid!==o);if(0===n.length)this.fireCustomEvent(Fo.NodeDeleted,{uuid:this.node.uuid});else{const t={...this.node,actions:n};null===(i=Qc())||void 0===i||i.getState().updateNode(this.node.uuid,t),this.requestUpdate()}}handleNodeRemoveClick(t){t.preventDefault(),t.stopPropagation();const e=this.node.uuid;if(this.actionRemovingState.has(e))return void this.removeNode();this.actionRemovingState.add(e),this.requestUpdate(),this.actionRemovalTimeouts.has(e)&&clearTimeout(this.actionRemovalTimeouts.get(e));const i=window.setTimeout(()=>{this.actionRemovingState.delete(e),this.actionRemovalTimeouts.delete(e),this.requestUpdate()},1e3);this.actionRemovalTimeouts.set(e,i)}removeNode(){const t=this.node.uuid;this.actionRemovingState.delete(t),this.actionRemovalTimeouts.has(t)&&(clearTimeout(this.actionRemovalTimeouts.get(t)),this.actionRemovalTimeouts.delete(t)),this.fireCustomEvent(Fo.NodeDeleted,{uuid:this.node.uuid})}handleActionOrderChanged(t){var e;const[i,o]=t.detail.swap;if(this.externalDragInfo)return;const n=[...this.node.actions],s=n.splice(i,1)[0];n.splice(o,0,s),this.node={...this.node,actions:n},null===(e=Qc())||void 0===e||e.getState().updateNode(this.node.uuid,{...this.node,actions:n})}handleActionDragStart(t){const e=t.detail.id,i=this.querySelector(`#${e}`);this.draggedActionHeight=i?i.offsetHeight:60,1===this.node.actions.length&&(this.showLastActionPlaceholder=!0,this.lastActionPlaceholderHeight=this.draggedActionHeight,this.requestUpdate())}handleActionDragExternal(t){t.stopPropagation();const e=t.detail.id.split("-");if(e.length<2||isNaN(parseInt(e[1],10)))return;const i=parseInt(e[1],10),o=this.node.actions[i],n=1===this.node.actions.length;this.fireCustomEvent(Fo.DragExternal,{action:o,nodeUuid:this.node.uuid,actionIndex:i,mouseX:t.detail.mouseX,mouseY:t.detail.mouseY,actionHeight:this.draggedActionHeight,isLastAction:n})}handleActionDragInternal(t){t.stopPropagation(),this.fireCustomEvent(Fo.DragInternal,{})}handleActionDragStop(t){const e=t.detail.isExternal;if(this.showLastActionPlaceholder=!1,e){t.stopPropagation();const e=t.detail.id.split("-");if(e.length<2||isNaN(Number(e[1])))return;const i=parseInt(e[1],10),o=this.node.actions[i],n=1===this.node.actions.length;this.fireCustomEvent(Fo.DragStop,{action:o,nodeUuid:this.node.uuid,actionIndex:i,isExternal:!0,isLastAction:n,mouseX:t.detail.mouseX,mouseY:t.detail.mouseY})}this.requestUpdate()}getTopCenter(t){const e=t.getBoundingClientRect();return{x:e.left+e.width/2,y:e.top}}isActiveLink(t,e){var i,o,n;return!!t.closest(".linked-name")&&(e?!(null===(i=this.issuesByAction)||void 0===i?void 0:i.has(e.uuid)):!((null===(o=this.issuesByNode)||void 0===o?void 0:o.has(this.node.uuid))||(null===(n=this.node.actions)||void 0===n?void 0:n.some(t=>{var e;return null===(e=this.issuesByAction)||void 0===e?void 0:e.has(t.uuid)}))))}handleActionMouseDown(t,e){if(Tc(t))return;const i=t.target;i.closest(".remove-button")||i.closest(".drag-handle")||this.isActiveLink(i,e)||this.actionRemovingState.has(e.uuid)||(this.actionClickStartPos={x:t.clientX,y:t.clientY},this.pendingActionClick={action:e,event:t})}handleActionMouseUp(t,e){if(!this.pendingActionClick||this.pendingActionClick.action.uuid!==e.uuid)return this.actionClickStartPos=null,void(this.pendingActionClick=null);const i=t.target;if(i.closest(".remove-button")||i.closest(".drag-handle")||this.isActiveLink(i,e)||this.actionRemovingState.has(e.uuid))return this.actionClickStartPos=null,void(this.pendingActionClick=null);if(this.actionClickStartPos){const i=t.clientX-this.actionClickStartPos.x,o=t.clientY-this.actionClickStartPos.y,n=Math.sqrt(i*i+o*o),s=this.closest("temba-flow-editor"),r=null==s?void 0:s.dragging;if(n<=5&&(!s||!r)){const i=t.currentTarget,o=i?this.getTopCenter(i):{x:t.clientX,y:t.clientY};this.fireCustomEvent(Fo.ActionEditRequested,{action:e,nodeUuid:this.node.uuid,originX:o.x,originY:o.y})}}this.actionClickStartPos=null,this.pendingActionClick=null}handleActionTouchStart(t,e){const i=t.target;if(i.closest(".remove-button")||i.closest(".drag-handle")||this.isActiveLink(i,e)||this.actionRemovingState.has(e.uuid))return;const o=t.touches[0];o&&(this.actionClickStartPos={x:o.clientX,y:o.clientY},this.pendingActionClick={action:e,event:t})}handleActionTouchEnd(t,e){if(!this.pendingActionClick||this.pendingActionClick.action.uuid!==e.uuid)return this.actionClickStartPos=null,void(this.pendingActionClick=null);const i=t.target;if(i.closest(".remove-button")||i.closest(".drag-handle")||this.isActiveLink(i,e)||this.actionRemovingState.has(e.uuid))return this.actionClickStartPos=null,void(this.pendingActionClick=null);const o=t.changedTouches[0];if(this.actionClickStartPos&&o){const i=o.clientX-this.actionClickStartPos.x,n=o.clientY-this.actionClickStartPos.y,s=Math.sqrt(i*i+n*n),r=this.closest("temba-flow-editor"),a=null==r?void 0:r.dragging;if(s<=5&&(!r||!a)){const i=t.currentTarget,n=i?this.getTopCenter(i):{x:o.clientX,y:o.clientY};this.fireCustomEvent(Fo.ActionEditRequested,{action:e,nodeUuid:this.node.uuid,originX:n.x,originY:n.y})}}this.actionClickStartPos=null,this.pendingActionClick=null}handleActionClick(t,e){t.preventDefault(),t.stopPropagation();t.target.closest(".remove-button")||this.actionRemovingState.has(e.uuid)||this.fireCustomEvent(Fo.ActionEditRequested,{action:e,nodeUuid:this.node.uuid})}handleNodeEditClick(t){t.preventDefault(),t.stopPropagation();t.target.closest(".remove-button")||this.actionRemovingState.has(this.node.uuid)||this.node.router&&(this.node.actions&&1===this.node.actions.length?this.fireCustomEvent(Fo.ActionEditRequested,{action:this.node.actions[0],nodeUuid:this.node.uuid}):this.fireCustomEvent(Fo.NodeEditRequested,{node:this.node,nodeUI:this.ui}))}handleNodeMouseDown(t){if(Tc(t))return;const e=t.target;e.closest(".remove-button")||e.closest(".exit")||e.closest(".exit-wrapper")||e.closest(".drag-handle")||this.isActiveLink(e)||this.actionRemovingState.has(this.node.uuid)||(this.nodeClickStartPos={x:t.clientX,y:t.clientY},this.pendingNodeClick={event:t})}handleNodeMouseUp(t){if(!this.pendingNodeClick)return this.nodeClickStartPos=null,void(this.pendingNodeClick=null);const e=t.target;if(e.closest(".remove-button")||e.closest(".exit")||e.closest(".exit-wrapper")||e.closest(".drag-handle")||this.isActiveLink(e)||this.actionRemovingState.has(this.node.uuid))return this.nodeClickStartPos=null,void(this.pendingNodeClick=null);if(this.nodeClickStartPos){const e=t.clientX-this.nodeClickStartPos.x,i=t.clientY-this.nodeClickStartPos.y,o=Math.sqrt(e*e+i*i),n=this.closest("temba-flow-editor"),s=null==n?void 0:n.dragging;if(o<=5&&(!n||!s)&&this.node.router){const t=this.getTopCenter(this);this.node.actions&&1===this.node.actions.length?this.fireCustomEvent(Fo.ActionEditRequested,{action:this.node.actions[0],nodeUuid:this.node.uuid,originX:t.x,originY:t.y}):this.fireCustomEvent(Fo.NodeEditRequested,{node:this.node,nodeUI:this.ui,originX:t.x,originY:t.y})}}this.nodeClickStartPos=null,this.pendingNodeClick=null}handleNodeTouchStart(t){const e=t.target;if(e.closest(".remove-button")||e.closest(".exit")||e.closest(".exit-wrapper")||e.closest(".drag-handle")||this.isActiveLink(e)||this.actionRemovingState.has(this.node.uuid))return;const i=t.touches[0];i&&(this.nodeClickStartPos={x:i.clientX,y:i.clientY},this.pendingNodeClick={event:t})}handleNodeTouchEnd(t){if(!this.pendingNodeClick)return this.nodeClickStartPos=null,void(this.pendingNodeClick=null);const e=t.target;if(e.closest(".remove-button")||e.closest(".exit")||e.closest(".exit-wrapper")||e.closest(".drag-handle")||this.isActiveLink(e)||this.actionRemovingState.has(this.node.uuid))return this.nodeClickStartPos=null,void(this.pendingNodeClick=null);const i=t.changedTouches[0];if(this.nodeClickStartPos&&i){const t=i.clientX-this.nodeClickStartPos.x,e=i.clientY-this.nodeClickStartPos.y,o=Math.sqrt(t*t+e*e),n=this.closest("temba-flow-editor"),s=null==n?void 0:n.dragging;if(o<=5&&(!n||!s)&&this.node.router){const t=this.getTopCenter(this);this.node.actions&&1===this.node.actions.length?this.fireCustomEvent(Fo.ActionEditRequested,{action:this.node.actions[0],nodeUuid:this.node.uuid,originX:t.x,originY:t.y}):this.fireCustomEvent(Fo.NodeEditRequested,{node:this.node,nodeUI:this.ui,originX:t.x,originY:t.y})}}this.nodeClickStartPos=null,this.pendingNodeClick=null}handleAddActionClick(t){t.preventDefault(),t.stopPropagation(),this.fireCustomEvent(Fo.AddActionRequested,{nodeUuid:this.node.uuid})}calculateDropIndex(t){var e,i;const o=this.querySelector("temba-sortable-list");if(!o||!this.node.actions)return null!==(i=null===(e=this.node.actions)||void 0===e?void 0:e.length)&&void 0!==i?i:0;const n=Array.from(o.querySelectorAll(".action.sortable:not(.drop-placeholder)"));if(0===n.length)return 0;for(let e=0;e<n.length;e++){const i=n[e].getBoundingClientRect();if(t<i.top+i.height/2)return e}return n.length}handleExternalActionDragOver(t){if("execute_actions"!==this.ui.type)return;const{action:e,sourceNodeUuid:i,actionIndex:o,mouseY:n,actionHeight:s}=t.detail;if(i===this.node.uuid)return;const r=this.calculateDropIndex(n);this.externalDragInfo={action:e,sourceNodeUuid:i,actionIndex:o,dropIndex:r,actionHeight:s||60},this.requestUpdate()}handleExternalActionDragLeave(t){this.externalDragInfo=null,this.requestUpdate()}handleActionShowGhost(t){if(this.querySelector("temba-sortable-list")){const t=document.querySelector(".ghost");t&&(t.style.display="block")}}handleActionHideGhost(t){if(this.querySelector("temba-sortable-list")){const t=document.querySelector(".ghost");t&&(t.style.display="none")}}handleActionShowOriginal(t){const e=this.querySelector("temba-sortable-list");null==e||e.setOriginalVisible(!0),this.showLastActionPlaceholder=!1,this.requestUpdate()}handleActionHideOriginal(t){const e=this.querySelector("temba-sortable-list");null==e||e.setOriginalVisible(!1),1===this.node.actions.length&&(this.showLastActionPlaceholder=!0),this.requestUpdate()}handleExternalActionDrop(t){var e,i,o,n,s,r,a;if("execute_actions"!==this.ui.type)return;const{action:l,sourceNodeUuid:d,actionIndex:c,isCopy:h}=t.detail;if(d===this.node.uuid)return;const u=null!==(n=null!==(i=null===(e=this.externalDragInfo)||void 0===e?void 0:e.dropIndex)&&void 0!==i?i:null===(o=this.node.actions)||void 0===o?void 0:o.length)&&void 0!==n?n:0;this.externalDragInfo=null;const p=Qc();if(!p)return;const m=p.getState().flowDefinition;if(!m)return;const g=m.nodes.find(t=>t.uuid===d);if(!g)return;const f=h?{...l,uuid:Kt()}:l,v=[...this.node.actions];v.splice(u,0,f);const b={...this.node,actions:v};if(null===(s=Qc())||void 0===s||s.getState().updateNode(this.node.uuid,b),h){const t=m.localization;if(t)for(const e of Object.keys(t)){const i=null===(r=t[e])||void 0===r?void 0:r[l.uuid];i&&p.getState().updateLocalization(e,f.uuid,JSON.parse(JSON.stringify(i)))}}if(!h){const t=g.actions.filter((t,e)=>e!==c);if(0===t.length)this.fireCustomEvent(Fo.NodeDeleted,{uuid:d});else{const e={...g,actions:t};null===(a=Qc())||void 0===a||a.getState().updateNode(d,e)}}this.requestUpdate(),this.fireCustomEvent(Fo.SizeChanged,{uuid:this.node.uuid})}renderTitle(t,e,i,o=!1){var n,s,r,a,l;const d=t.group?null===(n=vp[t.group])||void 0===n?void 0:n.color:"#aaaaaa",c="terminal"===(null===(s=this.ui)||void 0===s?void 0:s.type);return W`<div class="cn-title" style="background:${d}">
|
|
9863
9860
|
${c?W`<div class="title-spacer"></div>`:"execute_actions"===(null===(r=this.ui)||void 0===r?void 0:r.type)||(null===(l=null===(a=this.node)||void 0===a?void 0:a.actions)||void 0===l?void 0:l.length)>1?W`<temba-icon
|
|
9864
9861
|
class="drag-handle ${this.isReadOnly()?"read-only-hidden":""}"
|
|
9865
9862
|
name="sort"
|
|
@@ -9873,7 +9870,7 @@ background: #ccc;
|
|
|
9873
9870
|
>
|
|
9874
9871
|
✕
|
|
9875
9872
|
</div>
|
|
9876
|
-
</div>`}renderNodeTitle(t,e,i,o=!1){var n,s;const r=t.group?(null===(n=
|
|
9873
|
+
</div>`}renderNodeTitle(t,e,i,o=!1){var n,s;const r=t.group?(null===(n=vp[t.group])||void 0===n?void 0:n.color)||(null===(s=bp[t.group])||void 0===s?void 0:s.color):"#aaaaaa",a=this.getUntranslatedRulesCount();return W`<div
|
|
9877
9874
|
class="cn-title ${o?"removing":""}"
|
|
9878
9875
|
style="background:${r}; position: relative;"
|
|
9879
9876
|
>
|
|
@@ -9892,7 +9889,7 @@ background: #ccc;
|
|
|
9892
9889
|
</div>`}renderDropPlaceholder(){var t;const e=(null===(t=this.externalDragInfo)||void 0===t?void 0:t.actionHeight)||60;return W`<div
|
|
9893
9890
|
class="action sortable drop-placeholder"
|
|
9894
9891
|
style="height: ${e}px; background: #f3f4f6; border: 2px dashed #d1d5db; border-radius: var(--curvature);"
|
|
9895
|
-
></div>`}getLocalizedAction(t){var e,i,o;return this.isTranslating&&this.flowDefinition&&this.languageCode&&this.languageCode!==this.flowDefinition.language?Gc(t,null===(o=null===(i=null===(e=this.flowDefinition)||void 0===e?void 0:e.localization)||void 0===i?void 0:i[this.languageCode])||void 0===o?void 0:o[t.uuid]):t}renderAction(t,e,i){var o,n,s,r;const a=
|
|
9892
|
+
></div>`}getLocalizedAction(t){var e,i,o;return this.isTranslating&&this.flowDefinition&&this.languageCode&&this.languageCode!==this.flowDefinition.language?Gc(t,null===(o=null===(i=null===(e=this.flowDefinition)||void 0===e?void 0:e.localization)||void 0===i?void 0:i[this.languageCode])||void 0===o?void 0:o[t.uuid]):t}renderAction(t,e,i){var o,n,s,r;const a=Om[e.type],l=this.actionRemovingState.has(e.uuid),d=(null==a?void 0:a.localizable)&&a.localizable.length>0,c=this.isTranslating&&!d,h=this.isTranslating&&(null===(s=null===(n=null===(o=this.flowDefinition)||void 0===o?void 0:o.localization)||void 0===n?void 0:n[this.languageCode])||void 0===s?void 0:s[e.uuid]),u=this.getLocalizedAction(e);if(a){const o=null===(r=this.issuesByAction)||void 0===r?void 0:r.has(e.uuid),n=["action","sortable",e.type,l?"removing":"",d&&this.isTranslating?"localizable":"",h?"has-localization":"",c?"non-localizable":""].filter(Boolean).join(" ");return W`<div class="${n}" id="action-${i}">
|
|
9896
9893
|
<div
|
|
9897
9894
|
class="action-content ${o?"has-issues":""}"
|
|
9898
9895
|
@mousedown=${t=>!c&&this.handleActionMouseDown(t,e)}
|
|
@@ -9918,7 +9915,7 @@ background: #ccc;
|
|
|
9918
9915
|
✕
|
|
9919
9916
|
</div>
|
|
9920
9917
|
${e.type}
|
|
9921
|
-
</div>`}renderActionsWithPlaceholder(){if(!this.externalDragInfo)return this.node.actions.map((t,e)=>this.renderAction(this.node,t,e));const t=[];for(let e=0;e<this.node.actions.length;e++)e===this.externalDragInfo.dropIndex&&t.push(this.renderDropPlaceholder()),t.push(this.renderAction(this.node,this.node.actions[e],e));return this.externalDragInfo.dropIndex>=this.node.actions.length&&t.push(this.renderDropPlaceholder()),t}getUntranslatedRulesCount(){var t,e,i,o,n,s;if(!this.isTranslating||!(null===(e=null===(t=this.ui)||void 0===t?void 0:t.config)||void 0===e?void 0:e.localizeRules))return 0;const r=null===(o=null===(i=this.node)||void 0===i?void 0:i.router)||void 0===o?void 0:o.cases;if(!(null==r?void 0:r.length))return 0;const a=(null===(s=null===(n=this.flowDefinition)||void 0===n?void 0:n.localization)||void 0===s?void 0:s[this.languageCode])||{};return r.filter(t=>{var e,i;if(!(null===(e=t.arguments)||void 0===e?void 0:e.length)||!t.arguments.some(t=>t))return!1;const o=null===(i=a[t.uuid])||void 0===i?void 0:i.arguments;return!Array.isArray(o)||!o.some(t=>t)}).length}renderRouter(t,e){if(
|
|
9918
|
+
</div>`}renderActionsWithPlaceholder(){if(!this.externalDragInfo)return this.node.actions.map((t,e)=>this.renderAction(this.node,t,e));const t=[];for(let e=0;e<this.node.actions.length;e++)e===this.externalDragInfo.dropIndex&&t.push(this.renderDropPlaceholder()),t.push(this.renderAction(this.node,this.node.actions[e],e));return this.externalDragInfo.dropIndex>=this.node.actions.length&&t.push(this.renderDropPlaceholder()),t}getUntranslatedRulesCount(){var t,e,i,o,n,s;if(!this.isTranslating||!(null===(e=null===(t=this.ui)||void 0===t?void 0:t.config)||void 0===e?void 0:e.localizeRules))return 0;const r=null===(o=null===(i=this.node)||void 0===i?void 0:i.router)||void 0===o?void 0:o.cases;if(!(null==r?void 0:r.length))return 0;const a=(null===(s=null===(n=this.flowDefinition)||void 0===n?void 0:n.localization)||void 0===s?void 0:s[this.languageCode])||{};return r.filter(t=>{var e,i;if(!(null===(e=t.arguments)||void 0===e?void 0:e.length)||!t.arguments.some(t=>t))return!1;const o=null===(i=a[t.uuid])||void 0===i?void 0:i.arguments;return!Array.isArray(o)||!o.some(t=>t)}).length}renderRouter(t,e){if(Pm[e.type])return W`<div class="router" style="position: relative;">
|
|
9922
9919
|
${t.result_name?W`<div
|
|
9923
9920
|
class="body"
|
|
9924
9921
|
@mousedown=${t=>this.handleNodeMouseDown(t)}
|
|
@@ -9930,7 +9927,7 @@ background: #ccc;
|
|
|
9930
9927
|
${Pc(W`Save as
|
|
9931
9928
|
<span class="result-name">${t.result_name}</span>`,`Save as ${t.result_name}`)}
|
|
9932
9929
|
</div>`:null}
|
|
9933
|
-
</div>`}renderCategories(t){var e,i;if(!t.router||!t.router.categories)return null;const o=
|
|
9930
|
+
</div>`}renderCategories(t){var e,i;if(!t.router||!t.router.categories)return null;const o=Pm[null===(e=this.ui)||void 0===e?void 0:e.type],n="categories"===(null==o?void 0:o.localizable),s=new Set(Bm(null===(i=this.ui)||void 0===i?void 0:i.type,t.router.categories).map(t=>t.uuid));return W`<div class="categories">
|
|
9934
9931
|
${Uh(t.router.categories,t=>t.uuid,e=>{var i,o,r,a;const l=t.exits.find(t=>t.uuid==e.exit_uuid);let d=e.name,c=!1;if(this.isTranslating&&"eng"!==this.languageCode&&n&&s.has(e.uuid)){const t=null===(o=null===(i=this.flowDefinition)||void 0===i?void 0:i.localization)||void 0===o?void 0:o[this.languageCode];if(t&&t[e.uuid]){const i=t[e.uuid];i.name&&i.name[0]&&(d=i.name[0],c=!0)}}const h=!!(null===(a=null===(r=this.ui)||void 0===r?void 0:r.config)||void 0===a?void 0:a.localizeCategories),u=this.isTranslating&&"eng"!==this.languageCode&&n&&s.has(e.uuid)&&h&&!c;return W`<div
|
|
9935
9932
|
class=${me({category:!0,localizable:u})}
|
|
9936
9933
|
@mousedown=${t=>this.handleNodeMouseDown(t)}
|
|
@@ -9948,7 +9945,7 @@ background: #ccc;
|
|
|
9948
9945
|
class=${me({exit:!0,connected:!!t.destination_uuid,removing:this.exitRemovingState.has(t.uuid),"read-only":this.isReadOnly()})}
|
|
9949
9946
|
@click=${e=>this.handleExitClick(e,t)}
|
|
9950
9947
|
></div>
|
|
9951
|
-
</div>`}isReadOnly(){return this.viewingRevision||this.isTranslating}render(){var t,e,i,o,n,s,r,a,l;if(!this.node||!this.ui)return W`<div class="node">Loading...</div>`;const d=
|
|
9948
|
+
</div>`}isReadOnly(){return this.viewingRevision||this.isTranslating}render(){var t,e,i,o,n,s,r,a,l;if(!this.node||!this.ui)return W`<div class="node">Loading...</div>`;const d=Pm[this.ui.type],c="categories"===(null==d?void 0:d.localizable)&&(h=this.ui.type,u=null===(t=this.node.router)||void 0===t?void 0:t.categories,Bm(h,u).length>0);var h,u;const p=(this.node.actions||[]).some(t=>{var e;const i=Om[t.type];return!!(null===(e=null==i?void 0:i.localizable)||void 0===e?void 0:e.length)}),m=!!(null===(i=null===(e=this.ui)||void 0===e?void 0:e.config)||void 0===i?void 0:i.localizeCategories),g=!!(null===(n=null===(o=this.ui)||void 0===o?void 0:o.config)||void 0===n?void 0:n.localizeRules),f=p||c&&m||g,v=this.isTranslating&&!f,b=(null===(s=this.activity)||void 0===s?void 0:s.nodes)&&this.activity.nodes[this.node.uuid]||0,y=(null===(r=this.issuesByNode)||void 0===r?void 0:r.has(this.node.uuid))||(null===(a=this.node.actions)||void 0===a?void 0:a.some(t=>{var e;return null===(e=this.issuesByAction)||void 0===e?void 0:e.has(t.uuid)}));return W`
|
|
9952
9949
|
<div
|
|
9953
9950
|
id="${this.node.uuid}"
|
|
9954
9951
|
class=${me({node:!0,"execute-actions":"execute_actions"===this.ui.type,"non-localizable":v,"has-issues":y})}
|
|
@@ -9997,10 +9994,10 @@ background: #ccc;
|
|
|
9997
9994
|
<temba-icon name="add"></temba-icon>
|
|
9998
9995
|
</div>`}
|
|
9999
9996
|
</div>
|
|
10000
|
-
`}}t([mt({type:Object})],
|
|
9997
|
+
`}}t([mt({type:Object})],Xm.prototype,"plumber",void 0),t([mt({type:Object})],Xm.prototype,"node",void 0),t([mt({type:Object})],Xm.prototype,"ui",void 0),t([Id(zd,t=>t.isTranslating)],Xm.prototype,"isTranslating",void 0),t([Id(zd,t=>t.languageCode)],Xm.prototype,"languageCode",void 0),t([Id(zd,t=>t.viewingRevision)],Xm.prototype,"viewingRevision",void 0),t([Id(zd,t=>t.flowDefinition)],Xm.prototype,"flowDefinition",void 0),t([Id(zd,t=>t.getCurrentActivity())],Xm.prototype,"activity",void 0),t([Id(zd,t=>t.issuesByNode)],Xm.prototype,"issuesByNode",void 0),t([Id(zd,t=>t.issuesByAction)],Xm.prototype,"issuesByAction",void 0);class Qm{constructor(t){this.editor=t,this.isMouseDown=!1,this.shiftDragCopy=!1,this.currentDragIsCopy=!1,this.dragStartPos={x:0,y:0},this.originalDragItem=null,this.originalSelectedItems=null,this.dragHintTimer=null,this.autoScrollAnimationId=null,this.autoScrollDeltaX=0,this.autoScrollDeltaY=0,this.lastPointerPos=null,this.activeDragIsTouch=!1,this.isTouchDevice=!1,this.isTwoFingerPanning=!1,this.twoFingerDidPan=!1,this.twoFingerStartMidX=0,this.twoFingerStartMidY=0,this.twoFingerOnCanvas=!1,this.lastPanX=0,this.lastPanY=0,this.canvasMouseDown=!1,this.boundMouseMove=this.handleMouseMove.bind(this),this.boundMouseUp=this.handleMouseUp.bind(this),this.boundGlobalMouseDown=this.handleGlobalMouseDown.bind(this),this.boundKeyDown=this.handleKeyDown.bind(this),this.boundKeyUp=this.handleKeyUp.bind(this),this.boundWindowBlur=this.handleWindowBlur.bind(this),this.boundTouchMove=this.handleTouchMove.bind(this),this.boundTouchEnd=this.handleTouchEnd.bind(this),this.boundTouchCancel=this.handleTouchCancel.bind(this),this.boundCanvasTouchStart=this.handleCanvasTouchStart.bind(this)}setupListeners(){document.addEventListener("mousemove",this.boundMouseMove),document.addEventListener("mouseup",this.boundMouseUp),document.addEventListener("mousedown",this.boundGlobalMouseDown),document.addEventListener("keydown",this.boundKeyDown),document.addEventListener("keyup",this.boundKeyUp),window.addEventListener("blur",this.boundWindowBlur),document.addEventListener("touchmove",this.boundTouchMove,{passive:!1}),document.addEventListener("touchend",this.boundTouchEnd),document.addEventListener("touchcancel",this.boundTouchCancel);const t=this.editor.querySelector("#canvas");null==t||t.addEventListener("touchstart",this.boundCanvasTouchStart,{passive:!1})}teardownListeners(){document.removeEventListener("mousemove",this.boundMouseMove),document.removeEventListener("mouseup",this.boundMouseUp),document.removeEventListener("mousedown",this.boundGlobalMouseDown),document.removeEventListener("keydown",this.boundKeyDown),document.removeEventListener("keyup",this.boundKeyUp),window.removeEventListener("blur",this.boundWindowBlur),document.removeEventListener("touchmove",this.boundTouchMove),document.removeEventListener("touchend",this.boundTouchEnd),document.removeEventListener("touchcancel",this.boundTouchCancel);const t=this.editor.querySelector("#canvas");null==t||t.removeEventListener("touchstart",this.boundCanvasTouchStart),this.stopAutoScroll(),this.hideDragHint()}getPosition(t,e){var i,o,n;return"node"===e?null===(i=this.editor.definition._ui.nodes[t])||void 0===i?void 0:i.position:null===(n=null===(o=this.editor.definition._ui.stickies)||void 0===o?void 0:o[t])||void 0===n?void 0:n.position}handleMouseDown(t){if(Tc(t))return;if(this.editor.isReadOnly())return;this.blurActiveContentEditable();const e=t.currentTarget,i=t.target;if(i.classList.contains("exit")||i.closest(".exit")||i.closest(".linked-name"))return;const o=e.getAttribute("uuid"),n="TEMBA-FLOW-NODE"===e.tagName?"node":"sticky",s=this.getPosition(o,n);s&&(this.editor.selectedItems.has(o)||t.ctrlKey||t.metaKey?this.editor.selectedItems.has(o)||this.editor.selectedItems.add(o):this.editor.selectedItems.clear(),this.isMouseDown=!0,this.activeDragIsTouch=!1,this.shiftDragCopy=t.shiftKey,this.dragStartPos={x:t.clientX,y:t.clientY},this.editor.currentDragItem={uuid:o,position:s,element:e,type:n},t.preventDefault(),t.stopPropagation())}markTouchDevice(){var t,e;this.isTouchDevice||(this.isTouchDevice=!0,null===(t=this.editor.querySelector("#canvas"))||void 0===t||t.classList.add("touch-device"),null===(e=this.editor.querySelector("#editor"))||void 0===e||e.classList.add("touch-device"))}handleItemTouchStart(t){if(this.markTouchDevice(),this.editor.isReadOnly())return;this.blurActiveContentEditable();const e=t.touches[0];if(!e)return;const i=t.currentTarget,o=t.target;if(o.classList.contains("exit")||o.closest(".exit")||o.closest(".linked-name"))return;const n=i.getAttribute("uuid"),s="TEMBA-FLOW-NODE"===i.tagName?"node":"sticky",r=this.getPosition(n,s);r&&(this.editor.selectedItems.has(n)||this.editor.selectedItems.clear(),this.isMouseDown=!0,this.activeDragIsTouch=!0,this.dragStartPos={x:e.clientX,y:e.clientY},this.editor.currentDragItem={uuid:n,position:r,element:i,type:s},t.stopPropagation())}handleGlobalMouseDown(t){var e;if(Tc(t))return;const i=null===(e=this.editor.querySelector("#grid"))||void 0===e?void 0:e.getBoundingClientRect();if(!i)return;if(!(t.clientX>=i.left&&t.clientX<=i.right&&t.clientY>=i.top&&t.clientY<=i.bottom))return;t.target.closest(".draggable")||this.handleCanvasMouseDown(t)}blurActiveContentEditable(){var t;let e=document.activeElement;for(;null===(t=null==e?void 0:e.shadowRoot)||void 0===t?void 0:t.activeElement;)e=e.shadowRoot.activeElement;e instanceof HTMLElement&&"true"===e.getAttribute("contenteditable")&&e.blur()}handleCanvasMouseDown(t){var e;if(this.editor.isReadOnly())return;this.blurActiveContentEditable();const i=t.target;if("canvas"===i.id||"grid"===i.id){this.canvasMouseDown=!0,this.dragStartPos={x:t.clientX,y:t.clientY};const i=null===(e=this.editor.querySelector("#canvas"))||void 0===e?void 0:e.getBoundingClientRect();if(i){this.editor.selectedItems.clear();const e=(t.clientX-i.left)/this.editor.zoom,o=(t.clientY-i.top)/this.editor.zoom;this.editor.selectionBox={startX:e,startY:o,endX:e,endY:o}}t.preventDefault()}}showDragHint(){if(this.editor.isReadOnly())return;const t=this.editor.querySelector("#drag-hint");t&&(this.dragHintTimer=setTimeout(()=>{t.classList.add("visible"),this.dragHintTimer=null},600))}hideDragHint(){this.dragHintTimer&&(clearTimeout(this.dragHintTimer),this.dragHintTimer=null);const t=this.editor.querySelector("#drag-hint");t&&t.classList.remove("visible")}handleKeyDown(t){var e;"Shift"===t.key&&(null===(e=this.editor.querySelector("#canvas"))||void 0===e||e.classList.add("shift-held"),this.editor.isDragging&&!this.currentDragIsCopy&&(this.hideDragHint(),this.performShiftDragCopy(),requestAnimationFrame(()=>{this.markCopyElements(),this.updateDragPositions()}))),this.editor.handleKeyDown(t)}handleKeyUp(t){var e;"Shift"===t.key&&(null===(e=this.editor.querySelector("#canvas"))||void 0===e||e.classList.remove("shift-held"),this.editor.isDragging&&this.currentDragIsCopy&&(this.revertShiftDragCopy(),requestAnimationFrame(()=>this.updateDragPositions()))),this.editor.handleKeyUp(t)}handleWindowBlur(){var t;null===(t=this.editor.querySelector("#canvas"))||void 0===t||t.classList.remove("shift-held"),this.editor.isDragging&&this.currentDragIsCopy&&(this.revertShiftDragCopy(),requestAnimationFrame(()=>this.updateDragPositions())),this.editor.handleWindowBlur()}updateSelectionBox(t){var e;if(!this.editor.selectionBox||!this.canvasMouseDown)return;const i=null===(e=this.editor.querySelector("#canvas"))||void 0===e?void 0:e.getBoundingClientRect();if(!i)return;const o=(t.clientX-i.left)/this.editor.zoom,n=(t.clientY-i.top)/this.editor.zoom;this.editor.selectionBox={...this.editor.selectionBox,endX:o,endY:n},this.updateSelectedItemsFromBox()}updateSelectedItemsFromBox(){var t,e,i;if(!this.editor.selectionBox)return;const o=new Set,n=Math.min(this.editor.selectionBox.startX,this.editor.selectionBox.endX),s=Math.min(this.editor.selectionBox.startY,this.editor.selectionBox.endY),r=Math.max(this.editor.selectionBox.startX,this.editor.selectionBox.endX),a=Math.max(this.editor.selectionBox.startY,this.editor.selectionBox.endY);null===(t=this.editor.definition)||void 0===t||t.nodes.forEach(t=>{var e,i,l;const d=this.editor.querySelector(`[id="${t.uuid}"]`);if(d){const c=null===(i=null===(e=this.editor.definition._ui)||void 0===e?void 0:e.nodes[t.uuid])||void 0===i?void 0:i.position;if(c){if(null===(l=this.editor.querySelector("#canvas"))||void 0===l?void 0:l.getBoundingClientRect()){const e=c.left,i=c.top,l=e+d.offsetWidth,h=i+d.offsetHeight;n<l&&r>e&&s<h&&a>i&&o.add(t.uuid)}}}});const l=(null===(i=null===(e=this.editor.definition)||void 0===e?void 0:e._ui)||void 0===i?void 0:i.stickies)||{};Object.entries(l).forEach(([t,e])=>{if(e.position){const i=this.editor.querySelector(`temba-sticky-note[uuid="${t}"]`);if(i){const l=i.clientWidth,d=i.clientHeight,c=e.position.left,h=e.position.top;n<c+l&&r>c&&s<h+d&&a>h&&o.add(t)}}}),this.editor.selectedItems=o}renderSelectionBox(){if(!this.editor.selectionBox||!this.editor.isSelecting)return"";const t=Math.min(this.editor.selectionBox.startX,this.editor.selectionBox.endX),e=Math.min(this.editor.selectionBox.startY,this.editor.selectionBox.endY),i=Math.abs(this.editor.selectionBox.endX-this.editor.selectionBox.startX),o=Math.abs(this.editor.selectionBox.endY-this.editor.selectionBox.startY);return W`<div
|
|
10001
9998
|
class="selection-box"
|
|
10002
9999
|
style="left: ${t}px; top: ${e}px; width: ${i}px; height: ${o}px;"
|
|
10003
|
-
></div>`}handleCanvasTouchStart(t){var e;this.markTouchDevice();const i=t.touches[0];if(!i)return;const o=t.target;if(o.closest(".draggable"))return;if("canvas"!==o.id&&"grid"!==o.id)return;if(t.touches.length>=2)return this.canvasMouseDown=!1,this.editor.isSelecting=!1,this.editor.selectionBox=null,this.isTwoFingerPanning=!0,this.twoFingerOnCanvas=!0,this.twoFingerDidPan=!1,this.twoFingerStartMidX=(t.touches[0].clientX+t.touches[1].clientX)/2,this.twoFingerStartMidY=(t.touches[0].clientY+t.touches[1].clientY)/2,this.lastPanX=this.twoFingerStartMidX,void(this.lastPanY=this.twoFingerStartMidY);if(this.editor.isReadOnly())return;this.canvasMouseDown=!0,this.dragStartPos={x:i.clientX,y:i.clientY};const n=null===(e=this.editor.querySelector("#canvas"))||void 0===e?void 0:e.getBoundingClientRect();if(n){this.editor.selectedItems.clear();const t=(i.clientX-n.left)/this.editor.zoom,e=(i.clientY-n.top)/this.editor.zoom;this.editor.selectionBox={startX:t,startY:e,endX:t,endY:e}}t.preventDefault()}handleMouseMove(t){if(this.canvasMouseDown&&!this.isMouseDown)return this.editor.isSelecting=!0,this.updateSelectionBox(t),void this.editor.requestUpdate();if(this.editor.plumber.connectionDragging){this.activeDragIsTouch=!1,this.lastPointerPos={clientX:t.clientX,clientY:t.clientY},this.startAutoScroll();const e=document.querySelector("temba-flow-node:hover");if(document.querySelectorAll("temba-flow-node").forEach(t=>{t.classList.remove("connection-target-valid","connection-target-invalid")}),e)this.editor.targetId=e.getAttribute("uuid"),this.editor.isValidTarget=this.editor.targetId!==this.editor.dragFromNodeId,this.editor.isValidTarget?e.classList.add("connection-target-valid"):e.classList.add("connection-target-invalid"),this.editor.connectionPlaceholder=null;else{this.editor.targetId=null,this.editor.isValidTarget=!0;const e=this.editor.querySelector("#canvas");if(e){const i=e.getBoundingClientRect(),o=(t.clientX-i.left)/this.editor.zoom,n=(t.clientY-i.top)/this.editor.zoom,s=200,r=64,a=13,l=1,d=null!=this.editor.connectionSourceY&&n<this.editor.connectionSourceY;let c;c=d?n+l-r:n-l+a,this.editor.connectionPlaceholder={position:{left:o-s/2,top:c},visible:!0,dragUp:d}}}this.editor.requestUpdate()}if(!this.isMouseDown||!this.editor.currentDragItem)return;this.lastPointerPos={clientX:t.clientX,clientY:t.clientY};const e=t.clientX-this.dragStartPos.x+this.autoScrollDeltaX,i=t.clientY-this.dragStartPos.y+this.autoScrollDeltaY,o=Math.sqrt(e*e+i*i);!this.editor.isDragging&&o>5&&(this.editor.isDragging=!0,this.startAutoScroll(),this.originalDragItem={...this.editor.currentDragItem},this.originalSelectedItems=new Set(this.editor.selectedItems),this.shiftDragCopy||t.shiftKey?(this.performShiftDragCopy(),this.shiftDragCopy=!1):this.showDragHint()),this.editor.isDragging&&this.updateDragPositions()}performShiftDragCopy(){var t,e,i,o,n;if(!this.originalDragItem)return;const s=(null===(t=this.originalSelectedItems)||void 0===t?void 0:t.has(this.originalDragItem.uuid))&&(null!==(i=null===(e=this.originalSelectedItems)||void 0===e?void 0:e.size)&&void 0!==i?i:0)>1?Array.from(this.originalSelectedItems):[this.originalDragItem.uuid];if(0===s.length)return;const r=Qc().getState().duplicateNodes(s);for(const t of s){const e=r[t];e&&!this.editor.copiedItemUuids.includes(e)&&this.editor.copiedItemUuids.push(e)}this.currentDragIsCopy=!0;for(const t of s){const e=this.editor.querySelector(`[uuid="${t}"]`),i="TEMBA-FLOW-NODE"===(null==e?void 0:e.tagName)?"node":"sticky",o=this.getPosition(t,i);e&&o&&(e.style.left=`${o.left}px`,e.style.top=`${o.top}px`)}this.editor.plumber.revalidate(s);for(const t of s){const e=this.editor.querySelector(`[uuid="${t}"]`);e&&(e.offsetHeight,e.classList.remove("dragging"))}const a=r[this.originalDragItem.uuid];if(a&&(this.editor.currentDragItem={...this.originalDragItem,uuid:a}),(null!==(n=null===(o=this.originalSelectedItems)||void 0===o?void 0:o.size)&&void 0!==n?n:0)>1){const t=new Set;for(const e of this.originalSelectedItems){const i=r[e];t.add(i||e)}this.editor.selectedItems=t}}markCopyElements(){for(const t of this.editor.copiedItemUuids){const e=this.editor.querySelector(`[uuid="${t}"]`);null==e||e.classList.add("drag-copy")}}revertShiftDragCopy(){if(this.originalDragItem){if(this.editor.copiedItemUuids.length>0){const t=this.editor.copiedItemUuids.filter(t=>this.editor.definition.nodes.some(e=>e.uuid===t)),e=this.editor.copiedItemUuids.filter(t=>{var e,i;return null===(i=null===(e=this.editor.definition._ui)||void 0===e?void 0:e.stickies)||void 0===i?void 0:i[t]});t.length>0&&Qc().getState().removeNodes(t),e.length>0&&Qc().getState().removeStickyNotes(e),this.editor.copiedItemUuids=[]}this.currentDragIsCopy=!1,Qc().getState().setDirtyDate(null),this.editor.currentDragItem={...this.originalDragItem},this.originalSelectedItems&&(this.editor.selectedItems=new Set(this.originalSelectedItems))}}updateDragPositions(){if(!this.editor.currentDragItem||!this.lastPointerPos)return;const t=(this.lastPointerPos.clientX-this.dragStartPos.x+this.autoScrollDeltaX)/this.editor.zoom,e=(this.lastPointerPos.clientY-this.dragStartPos.y+this.autoScrollDeltaY)/this.editor.zoom,i=this.editor.selectedItems.has(this.editor.currentDragItem.uuid)&&this.editor.selectedItems.size>1?Array.from(this.editor.selectedItems):[this.editor.currentDragItem.uuid];i.forEach(i=>{const o=this.editor.querySelector(`[uuid="${i}"]`);if(o){const n="TEMBA-FLOW-NODE"===o.tagName?"node":"sticky",s=this.getPosition(i,n);s&&(o.style.left=`${s.left+t}px`,o.style.top=`${s.top+e}px`,o.classList.add("dragging"),this.currentDragIsCopy&&o.classList.add("drag-copy"))}}),this.editor.plumber.revalidate(i)}startAutoScroll(){if(null!==this.autoScrollAnimationId)return;const t=this.editor.querySelector("#editor");if(!t)return;const e=()=>{var i,o,n;if(!this.editor.isDragging&&!(null===(i=this.editor.plumber)||void 0===i?void 0:i.connectionDragging)||!this.lastPointerPos)return void(this.autoScrollAnimationId=null);const s=t.getBoundingClientRect(),r=this.lastPointerPos.clientX,a=this.lastPointerPos.clientY,l=this.activeDragIsTouch?40:150;let d=0,c=0;const h=r-s.left;if(h<l){const t=h<0;d=-Math.min(1,1-h/l)*(15*(t?5:1))}const u=s.right-r;if(u<l){const t=u<0;d=Math.min(1,1-u/l)*(15*(t?5:1))}const p=a-s.top;if(p<l){const t=p<0;c=-Math.min(1,1-p/l)*(15*(t?5:1))}const m=s.bottom-a;if(m<l){const t=m<0;c=Math.min(1,1-m/l)*(15*(t?5:1))}if(0!==d||0!==c){const e=t.scrollLeft,i=t.scrollTop;if(d>0||c>0){const e=(t.scrollLeft+t.clientWidth+d)/this.editor.zoom,i=(t.scrollTop+t.clientHeight+c)/this.editor.zoom;null===(n=null===(o=Qc())||void 0===o?void 0:o.getState())||void 0===n||n.expandCanvas(e,i)}t.scrollLeft+=d,t.scrollTop+=c;const s=t.scrollLeft-e,r=t.scrollTop-i;this.autoScrollDeltaX+=s,this.autoScrollDeltaY+=r,0===s&&0===r||this.updateDragPositions()}this.autoScrollAnimationId=requestAnimationFrame(e)};this.autoScrollAnimationId=requestAnimationFrame(e)}stopAutoScroll(){null!==this.autoScrollAnimationId&&(cancelAnimationFrame(this.autoScrollAnimationId),this.autoScrollAnimationId=null)}handleMouseUp(t){if(this.canvasMouseDown&&this.editor.isSelecting)return this.editor.isSelecting=!1,this.editor.selectionBox=null,this.canvasMouseDown=!1,void this.editor.requestUpdate();if(!this.canvasMouseDown||this.editor.isSelecting){if(this.isMouseDown&&this.editor.currentDragItem){if(this.stopAutoScroll(),this.editor.isDragging){const e=(t.clientX-this.dragStartPos.x+this.autoScrollDeltaX)/this.editor.zoom,i=(t.clientY-this.dragStartPos.y+this.autoScrollDeltaY)/this.editor.zoom,o=this.editor.selectedItems.has(this.editor.currentDragItem.uuid)&&this.editor.selectedItems.size>1?Array.from(this.editor.selectedItems):[this.editor.currentDragItem.uuid],n={};o.forEach(t=>{const o=this.editor.definition.nodes.find(e=>e.uuid===t)?"node":"sticky",s=this.getPosition(t,o);if(s){const o=s.left+e,r=s.top+i,a=Mc(o),l=Mc(r),d={left:a,top:l};n[t]=d;const c=this.editor.querySelector(`[uuid="${t}"]`);c&&(c.classList.remove("dragging","drag-copy"),c.style.left=`${a}px`,c.style.top=`${l}px`)}}),Object.keys(n).length>0&&(this.currentDragIsCopy&&(this.editor.pendingTimer.pending=!0,this.editor.capturePositionsOnce()),Qc().getState().updateCanvasPositions(n),setTimeout(()=>{this.editor.checkCollisionsAndReflow(o),this.editor.plumber.repaintEverything()},0)),this.currentDragIsCopy&&this.editor.pendingTimer.start(),this.editor.selectedItems.clear()}this.hideDragHint(),this.editor.isDragging=!1,this.isMouseDown=!1,this.shiftDragCopy=!1,this.currentDragIsCopy=!1,this.editor.currentDragItem=null,this.originalDragItem=null,this.originalSelectedItems=null,this.canvasMouseDown=!1,this.autoScrollDeltaX=0,this.autoScrollDeltaY=0,this.lastPointerPos=null}}else this.canvasMouseDown=!1}handleTouchMove(t){var e;if(t.touches.length>=2){t.preventDefault();const e=(t.touches[0].clientX+t.touches[1].clientX)/2,i=(t.touches[0].clientY+t.touches[1].clientY)/2;if(this.isTwoFingerPanning){const t=this.lastPanX-e,o=this.lastPanY-i;(Math.abs(t)>2||Math.abs(o)>2)&&(this.twoFingerDidPan=!0);const n=this.editor.querySelector("#editor");n&&n.scrollBy(t,o)}return this.canvasMouseDown=!1,this.editor.isSelecting=!1,this.editor.selectionBox=null,this.isTwoFingerPanning=!0,this.lastPanX=e,void(this.lastPanY=i)}const i=t.touches[0];if(!i)return;if(this.canvasMouseDown&&!this.isMouseDown){t.preventDefault(),this.editor.isSelecting=!0;const o=null===(e=this.editor.querySelector("#canvas"))||void 0===e?void 0:e.getBoundingClientRect();return o&&this.editor.selectionBox&&(this.editor.selectionBox={...this.editor.selectionBox,endX:(i.clientX-o.left)/this.editor.zoom,endY:(i.clientY-o.top)/this.editor.zoom},this.updateSelectedItemsFromBox()),void this.editor.requestUpdate()}if(this.editor.plumber.connectionDragging){t.preventDefault();const e=this.editor.findTargetNodeAt(i.clientX,i.clientY);if(document.querySelectorAll("temba-flow-node").forEach(t=>{t.classList.remove("connection-target-valid","connection-target-invalid")}),e)this.editor.targetId=e.getAttribute("uuid"),this.editor.isValidTarget=this.editor.targetId!==this.editor.dragFromNodeId,this.editor.isValidTarget?e.classList.add("connection-target-valid"):e.classList.add("connection-target-invalid"),this.editor.connectionPlaceholder=null;else{this.editor.targetId=null,this.editor.isValidTarget=!0;const t=this.editor.querySelector("#canvas");if(t){const e=t.getBoundingClientRect(),o=(i.clientX-e.left)/this.editor.zoom,n=(i.clientY-e.top)/this.editor.zoom,s=200,r=64,a=13,l=1,d=null!=this.editor.connectionSourceY&&n<this.editor.connectionSourceY;let c;c=d?n+l-r:n-l+a,this.editor.connectionPlaceholder={position:{left:o-s/2,top:c},visible:!0,dragUp:d}}}return void this.editor.requestUpdate()}if(!this.isMouseDown||!this.editor.currentDragItem)return;this.lastPointerPos={clientX:i.clientX,clientY:i.clientY};const o=i.clientX-this.dragStartPos.x+this.autoScrollDeltaX,n=i.clientY-this.dragStartPos.y+this.autoScrollDeltaY,s=Math.sqrt(o*o+n*n);!this.editor.isDragging&&s>5&&(this.editor.isDragging=!0,this.startAutoScroll()),this.editor.isDragging&&(t.preventDefault(),this.updateDragPositions())}handleTouchEnd(t){if(this.isTwoFingerPanning){if(0===t.touches.length){const t=this.twoFingerDidPan,e=this.twoFingerOnCanvas,i=this.twoFingerStartMidX,o=this.twoFingerStartMidY;this.isTwoFingerPanning=!1,this.twoFingerOnCanvas=!1,this.twoFingerDidPan=!1,!t&&e&&this.editor.showContextMenuAt(i,o)}return}const e=t.changedTouches[0];if(this.canvasMouseDown&&this.editor.isSelecting)return this.editor.isSelecting=!1,this.editor.selectionBox=null,this.canvasMouseDown=!1,void this.editor.requestUpdate();if(!this.canvasMouseDown||this.editor.isSelecting){if(this.editor.plumber.connectionDragging){if(e){const t=this.editor.findTargetNodeAt(e.clientX,e.clientY);t&&(this.editor.targetId=t.getAttribute("uuid"),this.editor.isValidTarget=this.editor.targetId!==this.editor.dragFromNodeId)}}else if(this.isMouseDown&&this.editor.currentDragItem){if(this.stopAutoScroll(),this.editor.isDragging&&e){const t=(e.clientX-this.dragStartPos.x+this.autoScrollDeltaX)/this.editor.zoom,i=(e.clientY-this.dragStartPos.y+this.autoScrollDeltaY)/this.editor.zoom,o=this.editor.selectedItems.has(this.editor.currentDragItem.uuid)&&this.editor.selectedItems.size>1?Array.from(this.editor.selectedItems):[this.editor.currentDragItem.uuid],n={};o.forEach(e=>{const o=this.editor.definition.nodes.find(t=>t.uuid===e)?"node":"sticky",s=this.getPosition(e,o);if(s){const o=s.left+t,r=s.top+i,a=Mc(o),l=Mc(r);n[e]={left:a,top:l};const d=this.editor.querySelector(`[uuid="${e}"]`);d&&(d.classList.remove("dragging"),d.style.left=`${a}px`,d.style.top=`${l}px`)}}),Object.keys(n).length>0&&(Qc().getState().updateCanvasPositions(n),setTimeout(()=>{this.editor.checkCollisionsAndReflow(o),this.editor.plumber.repaintEverything()},0)),this.editor.selectedItems.clear()}this.editor.isDragging=!1,this.isMouseDown=!1,this.editor.currentDragItem=null,this.canvasMouseDown=!1,this.autoScrollDeltaX=0,this.autoScrollDeltaY=0,this.lastPointerPos=null}}else this.canvasMouseDown=!1}handleTouchCancel(){if(this.isTwoFingerPanning=!1,this.editor.isSelecting=!1,this.editor.selectionBox=null,this.canvasMouseDown=!1,this.editor.isDragging&&this.editor.currentDragItem){(this.editor.selectedItems.has(this.editor.currentDragItem.uuid)&&this.editor.selectedItems.size>1?Array.from(this.editor.selectedItems):[this.editor.currentDragItem.uuid]).forEach(t=>{const e=this.editor.querySelector(`[uuid="${t}"]`);e&&e.classList.remove("dragging")})}this.stopAutoScroll(),this.editor.isDragging=!1,this.isMouseDown=!1,this.editor.currentDragItem=null,this.autoScrollDeltaX=0,this.autoScrollDeltaY=0,this.lastPointerPos=null,document.querySelectorAll("temba-flow-node").forEach(t=>{t.classList.remove("connection-target-valid","connection-target-invalid")}),this.editor.connectionPlaceholder=null,this.editor.requestUpdate()}}class tg extends Ve{constructor(){super(...arguments),this.color="#6B7280",this.order=0,this.top=100,this.hidden=!1,this.saving=!1,this.active=!1}static get styles(){return a`
|
|
10000
|
+
></div>`}handleCanvasTouchStart(t){var e;this.markTouchDevice();const i=t.touches[0];if(!i)return;const o=t.target;if(o.closest(".draggable"))return;if("canvas"!==o.id&&"grid"!==o.id)return;if(t.touches.length>=2)return this.canvasMouseDown=!1,this.editor.isSelecting=!1,this.editor.selectionBox=null,this.isTwoFingerPanning=!0,this.twoFingerOnCanvas=!0,this.twoFingerDidPan=!1,this.twoFingerStartMidX=(t.touches[0].clientX+t.touches[1].clientX)/2,this.twoFingerStartMidY=(t.touches[0].clientY+t.touches[1].clientY)/2,this.lastPanX=this.twoFingerStartMidX,void(this.lastPanY=this.twoFingerStartMidY);if(this.editor.isReadOnly())return;this.canvasMouseDown=!0,this.dragStartPos={x:i.clientX,y:i.clientY};const n=null===(e=this.editor.querySelector("#canvas"))||void 0===e?void 0:e.getBoundingClientRect();if(n){this.editor.selectedItems.clear();const t=(i.clientX-n.left)/this.editor.zoom,e=(i.clientY-n.top)/this.editor.zoom;this.editor.selectionBox={startX:t,startY:e,endX:t,endY:e}}t.preventDefault()}handleMouseMove(t){if(this.canvasMouseDown&&!this.isMouseDown)return this.editor.isSelecting=!0,this.updateSelectionBox(t),void this.editor.requestUpdate();if(this.editor.plumber.connectionDragging){this.activeDragIsTouch=!1,this.lastPointerPos={clientX:t.clientX,clientY:t.clientY},this.startAutoScroll();const e=document.querySelector("temba-flow-node:hover");if(document.querySelectorAll("temba-flow-node").forEach(t=>{t.classList.remove("connection-target-valid","connection-target-invalid")}),e)this.editor.targetId=e.getAttribute("uuid"),this.editor.isValidTarget=this.editor.targetId!==this.editor.dragFromNodeId,this.editor.isValidTarget?e.classList.add("connection-target-valid"):e.classList.add("connection-target-invalid"),this.editor.connectionPlaceholder=null;else{this.editor.targetId=null,this.editor.isValidTarget=!0;const e=this.editor.querySelector("#canvas");if(e){const i=e.getBoundingClientRect(),o=(t.clientX-i.left)/this.editor.zoom,n=(t.clientY-i.top)/this.editor.zoom,s=200,r=64,a=13,l=1,d=null!=this.editor.connectionSourceY&&n<this.editor.connectionSourceY;let c;c=d?n+l-r:n-l+a,this.editor.connectionPlaceholder={position:{left:o-s/2,top:c},visible:!0,dragUp:d}}}this.editor.requestUpdate()}if(!this.isMouseDown||!this.editor.currentDragItem)return;this.lastPointerPos={clientX:t.clientX,clientY:t.clientY};const e=t.clientX-this.dragStartPos.x+this.autoScrollDeltaX,i=t.clientY-this.dragStartPos.y+this.autoScrollDeltaY,o=Math.sqrt(e*e+i*i);!this.editor.isDragging&&o>5&&(this.editor.isDragging=!0,this.startAutoScroll(),this.originalDragItem={...this.editor.currentDragItem},this.originalSelectedItems=new Set(this.editor.selectedItems),this.shiftDragCopy||t.shiftKey?(this.performShiftDragCopy(),this.shiftDragCopy=!1):this.showDragHint()),this.editor.isDragging&&this.updateDragPositions()}performShiftDragCopy(){var t,e,i,o,n;if(!this.originalDragItem)return;const s=(null===(t=this.originalSelectedItems)||void 0===t?void 0:t.has(this.originalDragItem.uuid))&&(null!==(i=null===(e=this.originalSelectedItems)||void 0===e?void 0:e.size)&&void 0!==i?i:0)>1?Array.from(this.originalSelectedItems):[this.originalDragItem.uuid];if(0===s.length)return;const r=Qc().getState().duplicateNodes(s);for(const t of s){const e=r[t];e&&!this.editor.copiedItemUuids.includes(e)&&this.editor.copiedItemUuids.push(e)}this.currentDragIsCopy=!0;for(const t of s){const e=this.editor.querySelector(`[uuid="${t}"]`),i="TEMBA-FLOW-NODE"===(null==e?void 0:e.tagName)?"node":"sticky",o=this.getPosition(t,i);e&&o&&(e.style.left=`${o.left}px`,e.style.top=`${o.top}px`)}this.editor.plumber.revalidate(s);for(const t of s){const e=this.editor.querySelector(`[uuid="${t}"]`);e&&(e.offsetHeight,e.classList.remove("dragging"))}const a=r[this.originalDragItem.uuid];if(a&&(this.editor.currentDragItem={...this.originalDragItem,uuid:a}),(null!==(n=null===(o=this.originalSelectedItems)||void 0===o?void 0:o.size)&&void 0!==n?n:0)>1){const t=new Set;for(const e of this.originalSelectedItems){const i=r[e];t.add(i||e)}this.editor.selectedItems=t}}markCopyElements(){for(const t of this.editor.copiedItemUuids){const e=this.editor.querySelector(`[uuid="${t}"]`);null==e||e.classList.add("drag-copy")}}revertShiftDragCopy(){if(this.originalDragItem){if(this.editor.copiedItemUuids.length>0){const t=this.editor.copiedItemUuids.filter(t=>this.editor.definition.nodes.some(e=>e.uuid===t)),e=this.editor.copiedItemUuids.filter(t=>{var e,i;return null===(i=null===(e=this.editor.definition._ui)||void 0===e?void 0:e.stickies)||void 0===i?void 0:i[t]});t.length>0&&Qc().getState().removeNodes(t),e.length>0&&Qc().getState().removeStickyNotes(e),this.editor.copiedItemUuids=[]}this.currentDragIsCopy=!1,Qc().getState().setDirtyDate(null),this.editor.currentDragItem={...this.originalDragItem},this.originalSelectedItems&&(this.editor.selectedItems=new Set(this.originalSelectedItems))}}updateDragPositions(){if(!this.editor.currentDragItem||!this.lastPointerPos)return;const t=(this.lastPointerPos.clientX-this.dragStartPos.x+this.autoScrollDeltaX)/this.editor.zoom,e=(this.lastPointerPos.clientY-this.dragStartPos.y+this.autoScrollDeltaY)/this.editor.zoom,i=this.editor.selectedItems.has(this.editor.currentDragItem.uuid)&&this.editor.selectedItems.size>1?Array.from(this.editor.selectedItems):[this.editor.currentDragItem.uuid];i.forEach(i=>{const o=this.editor.querySelector(`[uuid="${i}"]`);if(o){const n="TEMBA-FLOW-NODE"===o.tagName?"node":"sticky",s=this.getPosition(i,n);s&&(o.style.left=`${s.left+t}px`,o.style.top=`${s.top+e}px`,o.classList.add("dragging"),this.currentDragIsCopy&&o.classList.add("drag-copy"))}}),this.editor.plumber.revalidate(i)}startAutoScroll(){if(null!==this.autoScrollAnimationId)return;const t=this.editor.querySelector("#editor");if(!t)return;const e=()=>{var i,o,n;if(!this.editor.isDragging&&!(null===(i=this.editor.plumber)||void 0===i?void 0:i.connectionDragging)||!this.lastPointerPos)return void(this.autoScrollAnimationId=null);const s=t.getBoundingClientRect(),r=this.lastPointerPos.clientX,a=this.lastPointerPos.clientY,l=this.activeDragIsTouch?40:150;let d=0,c=0;const h=r-s.left;if(h<l){const t=h<0;d=-Math.min(1,1-h/l)*(15*(t?5:1))}const u=s.right-r;if(u<l){const t=u<0;d=Math.min(1,1-u/l)*(15*(t?5:1))}const p=a-s.top;if(p<l){const t=p<0;c=-Math.min(1,1-p/l)*(15*(t?5:1))}const m=s.bottom-a;if(m<l){const t=m<0;c=Math.min(1,1-m/l)*(15*(t?5:1))}if(0!==d||0!==c){const e=t.scrollLeft,i=t.scrollTop;if(d>0||c>0){const e=(t.scrollLeft+t.clientWidth+d)/this.editor.zoom,i=(t.scrollTop+t.clientHeight+c)/this.editor.zoom;null===(n=null===(o=Qc())||void 0===o?void 0:o.getState())||void 0===n||n.expandCanvas(e,i)}t.scrollLeft+=d,t.scrollTop+=c;const s=t.scrollLeft-e,r=t.scrollTop-i;this.autoScrollDeltaX+=s,this.autoScrollDeltaY+=r,0===s&&0===r||this.updateDragPositions()}this.autoScrollAnimationId=requestAnimationFrame(e)};this.autoScrollAnimationId=requestAnimationFrame(e)}stopAutoScroll(){null!==this.autoScrollAnimationId&&(cancelAnimationFrame(this.autoScrollAnimationId),this.autoScrollAnimationId=null)}handleMouseUp(t){if(this.canvasMouseDown&&this.editor.isSelecting)return this.editor.isSelecting=!1,this.editor.selectionBox=null,this.canvasMouseDown=!1,void this.editor.requestUpdate();if(!this.canvasMouseDown||this.editor.isSelecting){if(this.isMouseDown&&this.editor.currentDragItem){if(this.stopAutoScroll(),this.editor.isDragging){const e=(t.clientX-this.dragStartPos.x+this.autoScrollDeltaX)/this.editor.zoom,i=(t.clientY-this.dragStartPos.y+this.autoScrollDeltaY)/this.editor.zoom,o=this.editor.selectedItems.has(this.editor.currentDragItem.uuid)&&this.editor.selectedItems.size>1?Array.from(this.editor.selectedItems):[this.editor.currentDragItem.uuid],n={};o.forEach(t=>{const o=this.editor.definition.nodes.find(e=>e.uuid===t)?"node":"sticky",s=this.getPosition(t,o);if(s){const o=s.left+e,r=s.top+i,a=Mc(o),l=Mc(r),d={left:a,top:l};n[t]=d;const c=this.editor.querySelector(`[uuid="${t}"]`);c&&(c.classList.remove("dragging","drag-copy"),c.style.left=`${a}px`,c.style.top=`${l}px`)}}),Object.keys(n).length>0&&(this.currentDragIsCopy&&(this.editor.pendingTimer.pending=!0,this.editor.capturePositionsOnce()),Qc().getState().updateCanvasPositions(n),setTimeout(()=>{this.editor.checkCollisionsAndReflow(o),this.editor.plumber.repaintEverything()},0)),this.currentDragIsCopy&&this.editor.pendingTimer.start(),this.editor.selectedItems.clear()}this.hideDragHint(),this.editor.isDragging=!1,this.isMouseDown=!1,this.shiftDragCopy=!1,this.currentDragIsCopy=!1,this.editor.currentDragItem=null,this.originalDragItem=null,this.originalSelectedItems=null,this.canvasMouseDown=!1,this.autoScrollDeltaX=0,this.autoScrollDeltaY=0,this.lastPointerPos=null}}else this.canvasMouseDown=!1}handleTouchMove(t){var e;if(t.touches.length>=2){t.preventDefault();const e=(t.touches[0].clientX+t.touches[1].clientX)/2,i=(t.touches[0].clientY+t.touches[1].clientY)/2;if(this.isTwoFingerPanning){const t=this.lastPanX-e,o=this.lastPanY-i;(Math.abs(t)>2||Math.abs(o)>2)&&(this.twoFingerDidPan=!0);const n=this.editor.querySelector("#editor");n&&n.scrollBy(t,o)}return this.canvasMouseDown=!1,this.editor.isSelecting=!1,this.editor.selectionBox=null,this.isTwoFingerPanning=!0,this.lastPanX=e,void(this.lastPanY=i)}const i=t.touches[0];if(!i)return;if(this.canvasMouseDown&&!this.isMouseDown){t.preventDefault(),this.editor.isSelecting=!0;const o=null===(e=this.editor.querySelector("#canvas"))||void 0===e?void 0:e.getBoundingClientRect();return o&&this.editor.selectionBox&&(this.editor.selectionBox={...this.editor.selectionBox,endX:(i.clientX-o.left)/this.editor.zoom,endY:(i.clientY-o.top)/this.editor.zoom},this.updateSelectedItemsFromBox()),void this.editor.requestUpdate()}if(this.editor.plumber.connectionDragging){t.preventDefault();const e=this.editor.findTargetNodeAt(i.clientX,i.clientY);if(document.querySelectorAll("temba-flow-node").forEach(t=>{t.classList.remove("connection-target-valid","connection-target-invalid")}),e)this.editor.targetId=e.getAttribute("uuid"),this.editor.isValidTarget=this.editor.targetId!==this.editor.dragFromNodeId,this.editor.isValidTarget?e.classList.add("connection-target-valid"):e.classList.add("connection-target-invalid"),this.editor.connectionPlaceholder=null;else{this.editor.targetId=null,this.editor.isValidTarget=!0;const t=this.editor.querySelector("#canvas");if(t){const e=t.getBoundingClientRect(),o=(i.clientX-e.left)/this.editor.zoom,n=(i.clientY-e.top)/this.editor.zoom,s=200,r=64,a=13,l=1,d=null!=this.editor.connectionSourceY&&n<this.editor.connectionSourceY;let c;c=d?n+l-r:n-l+a,this.editor.connectionPlaceholder={position:{left:o-s/2,top:c},visible:!0,dragUp:d}}}return void this.editor.requestUpdate()}if(!this.isMouseDown||!this.editor.currentDragItem)return;this.lastPointerPos={clientX:i.clientX,clientY:i.clientY};const o=i.clientX-this.dragStartPos.x+this.autoScrollDeltaX,n=i.clientY-this.dragStartPos.y+this.autoScrollDeltaY,s=Math.sqrt(o*o+n*n);!this.editor.isDragging&&s>5&&(this.editor.isDragging=!0,this.startAutoScroll()),this.editor.isDragging&&(t.preventDefault(),this.updateDragPositions())}handleTouchEnd(t){if(this.isTwoFingerPanning){if(0===t.touches.length){const t=this.twoFingerDidPan,e=this.twoFingerOnCanvas,i=this.twoFingerStartMidX,o=this.twoFingerStartMidY;this.isTwoFingerPanning=!1,this.twoFingerOnCanvas=!1,this.twoFingerDidPan=!1,!t&&e&&this.editor.showContextMenuAt(i,o)}return}const e=t.changedTouches[0];if(this.canvasMouseDown&&this.editor.isSelecting)return this.editor.isSelecting=!1,this.editor.selectionBox=null,this.canvasMouseDown=!1,void this.editor.requestUpdate();if(!this.canvasMouseDown||this.editor.isSelecting){if(this.editor.plumber.connectionDragging){if(e){const t=this.editor.findTargetNodeAt(e.clientX,e.clientY);t&&(this.editor.targetId=t.getAttribute("uuid"),this.editor.isValidTarget=this.editor.targetId!==this.editor.dragFromNodeId)}}else if(this.isMouseDown&&this.editor.currentDragItem){if(this.stopAutoScroll(),this.editor.isDragging&&e){const t=(e.clientX-this.dragStartPos.x+this.autoScrollDeltaX)/this.editor.zoom,i=(e.clientY-this.dragStartPos.y+this.autoScrollDeltaY)/this.editor.zoom,o=this.editor.selectedItems.has(this.editor.currentDragItem.uuid)&&this.editor.selectedItems.size>1?Array.from(this.editor.selectedItems):[this.editor.currentDragItem.uuid],n={};o.forEach(e=>{const o=this.editor.definition.nodes.find(t=>t.uuid===e)?"node":"sticky",s=this.getPosition(e,o);if(s){const o=s.left+t,r=s.top+i,a=Mc(o),l=Mc(r);n[e]={left:a,top:l};const d=this.editor.querySelector(`[uuid="${e}"]`);d&&(d.classList.remove("dragging"),d.style.left=`${a}px`,d.style.top=`${l}px`)}}),Object.keys(n).length>0&&(Qc().getState().updateCanvasPositions(n),setTimeout(()=>{this.editor.checkCollisionsAndReflow(o),this.editor.plumber.repaintEverything()},0)),this.editor.selectedItems.clear()}this.editor.isDragging=!1,this.isMouseDown=!1,this.editor.currentDragItem=null,this.canvasMouseDown=!1,this.autoScrollDeltaX=0,this.autoScrollDeltaY=0,this.lastPointerPos=null}}else this.canvasMouseDown=!1}handleTouchCancel(){if(this.isTwoFingerPanning=!1,this.editor.isSelecting=!1,this.editor.selectionBox=null,this.canvasMouseDown=!1,this.editor.isDragging&&this.editor.currentDragItem){(this.editor.selectedItems.has(this.editor.currentDragItem.uuid)&&this.editor.selectedItems.size>1?Array.from(this.editor.selectedItems):[this.editor.currentDragItem.uuid]).forEach(t=>{const e=this.editor.querySelector(`[uuid="${t}"]`);e&&e.classList.remove("dragging")})}this.stopAutoScroll(),this.editor.isDragging=!1,this.isMouseDown=!1,this.editor.currentDragItem=null,this.autoScrollDeltaX=0,this.autoScrollDeltaY=0,this.lastPointerPos=null,document.querySelectorAll("temba-flow-node").forEach(t=>{t.classList.remove("connection-target-valid","connection-target-invalid")}),this.editor.connectionPlaceholder=null,this.editor.requestUpdate()}}class Jm extends Ve{constructor(){super(...arguments),this.color="#6B7280",this.order=0,this.top=100,this.hidden=!1,this.saving=!1,this.active=!1}static get styles(){return a`
|
|
10004
10001
|
.tab.hidden {
|
|
10005
10002
|
transform: translateX(calc(100% + var(--floating-tab-clip, 0px)));
|
|
10006
10003
|
}
|
|
@@ -10088,14 +10085,14 @@ background: #ccc;
|
|
|
10088
10085
|
margin-left: 12px;
|
|
10089
10086
|
opacity: 1;
|
|
10090
10087
|
}
|
|
10091
|
-
`}connectedCallback(){super.connectedCallback(),
|
|
10088
|
+
`}connectedCallback(){super.connectedCallback(),Jm.allTabs.push(this),Jm.updateAllPositions()}disconnectedCallback(){super.disconnectedCallback();const t=Jm.allTabs.indexOf(this);t>-1&&Jm.allTabs.splice(t,1),Jm.updateAllPositions()}static updateAllPositions(){const t=[...Jm.allTabs].sort((t,e)=>t.order-e.order);t.forEach((t,e)=>{t.top=Jm.START_TOP+e*(Jm.TAB_HEIGHT+Jm.TAB_GAP)})}updated(t){super.updated(t),t.has("hidden")&&this.classList.toggle("hidden",this.hidden),t.has("active")&&Jm.allTabs.forEach(t=>{t!==this&&t.requestUpdate()})}handleClick(){this.fireCustomEvent(Fo.ButtonClicked,{action:"toggle"})}static showAllTabs(){Jm.allTabs.forEach(t=>{t.hidden=!1})}static hideAllTabs(){Jm.allTabs.forEach(t=>{t.hidden=!0})}render(){const t=`\n background-color: ${this.color};\n top: ${this.top}px;\n `,e=Jm.allTabs.some(t=>t.active),i=me({tab:!0,hidden:this.hidden,saving:this.saving,active:this.active,subdued:e}),o=this.saving?"progress_spinner":this.icon;return W`
|
|
10092
10089
|
<div class="${i}" style="${t}" @click=${this.handleClick}>
|
|
10093
10090
|
<div class="icon-container">
|
|
10094
10091
|
${o?W`<temba-icon size="1.5" name="${o}"></temba-icon>`:""}
|
|
10095
10092
|
</div>
|
|
10096
10093
|
<div class="label">${this.label}</div>
|
|
10097
10094
|
</div>
|
|
10098
|
-
`}}tg.TAB_HEIGHT=50,tg.TAB_GAP=4,tg.START_TOP=165,tg.allTabs=[],t([mt({type:String})],tg.prototype,"icon",void 0),t([mt({type:String})],tg.prototype,"label",void 0),t([mt({type:String})],tg.prototype,"color",void 0),t([mt({type:Number})],tg.prototype,"order",void 0),t([gt()],tg.prototype,"top",void 0),t([mt({type:Boolean})],tg.prototype,"hidden",void 0),t([mt({type:Boolean})],tg.prototype,"saving",void 0),t([mt({type:Boolean})],tg.prototype,"active",void 0);class eg{constructor(t){this.editor=t,this.zoomInitialized=!1,this.zoomFitted=!1,this.loupeEl=null,this.loupeContentEl=null,this.loupeRAF=null,this.hiddenTitles=[],this.loupeKeyHeld=!1,this.loupeMouseIsDown=!1,this.loupeLastMouse=null,this.loupeCloneTime=0,this.loupeClone=null,this.loupeCursorCanvas={x:0,y:0},this.boundLoupeMouseMove=this.handleLoupeMouseMove.bind(this),this.boundLoupeMouseDown=this.handleLoupeMouseDown.bind(this),this.boundLoupeMouseUp=this.handleLoupeMouseUp.bind(this),this.boundLoupeKeyDown=this.handleLoupeKeyDown.bind(this),this.boundLoupeKeyUp=this.handleLoupeKeyUp.bind(this)}setZoom(t,e){const i=Math.max(.3,Math.min(1,Math.round(100*t)/100));if(i===this.editor.zoom)return;const o=this.editor.querySelector("#editor"),n=this.editor.zoom;if(this.editor.zoom=i,this.editor.plumber.zoom=i,this.zoomFitted=!1,this.editor.requestUpdate(),this.editor.saveFlowSetting("zoom",i),o&&e){const t=o.getBoundingClientRect(),s=e.clientX-t.left,r=e.clientY-t.top,a=(o.scrollLeft+s)/n,l=(o.scrollTop+r)/n;requestAnimationFrame(()=>{o.scrollLeft=a*i-s,o.scrollTop=l*i-r,this.editor.plumber.repaintEverything()})}else requestAnimationFrame(()=>this.editor.plumber.repaintEverything())}zoomIn(){this.setZoom(this.editor.zoom+.05)}zoomOut(){this.setZoom(this.editor.zoom-.05)}zoomToFit(){var t;if(!this.editor.definition||0===this.editor.definition.nodes.length)return;const e=this.editor.querySelector("#editor");if(!e)return;let i=1/0,o=1/0,n=-1/0,s=-1/0;this.editor.definition.nodes.forEach(t=>{var e;const r=null===(e=this.editor.definition._ui)||void 0===e?void 0:e.nodes[t.uuid];if(!(null==r?void 0:r.position))return;const a=this.editor.querySelector(`[id="${t.uuid}"]`);if(!a)return;const l=a.offsetWidth,d=a.offsetHeight;i=Math.min(i,r.position.left),o=Math.min(o,r.position.top),n=Math.max(n,r.position.left+l),s=Math.max(s,r.position.top+d)});const r=(null===(t=this.editor.definition._ui)||void 0===t?void 0:t.stickies)||{};if(Object.entries(r).forEach(([t,e])=>{if(!e.position)return;const r=this.editor.querySelector(`temba-sticky-note[uuid="${t}"]`);if(!r)return;const a=r.offsetWidth,l=r.offsetHeight;i=Math.min(i,e.position.left),o=Math.min(o,e.position.top),n=Math.max(n,e.position.left+a),s=Math.max(s,e.position.top+l)}),i===1/0)return;const a=n-i,l=s-o,d=(e.clientWidth-80)/a,c=(e.clientHeight-80)/l;let h=Math.min(d,c,1);h=Math.max(h,.3),h=Math.round(20*h)/20,this.editor.zoom=h,this.editor.plumber.zoom=h,this.zoomFitted=!0,this.editor.requestUpdate(),this.editor.saveFlowSetting("zoom",h);const u=(i+n)/2+40,p=(o+s)/2+40;requestAnimationFrame(()=>{e.scrollLeft=u*h-e.clientWidth/2,e.scrollTop=p*h-e.clientHeight/2,this.editor.plumber.repaintEverything()})}zoomToFull(){this.setZoom(1)}handleWheel(t){if(!t.ctrlKey&&!t.metaKey)return;t.preventDefault();const e=t.deltaY>0?-.05:.05;this.setZoom(this.editor.zoom+e,{clientX:t.clientX,clientY:t.clientY})}restoreInitialZoomFromSettings(){if(this.zoomInitialized||!this.editor.definition)return;const t=this.editor.getFlowSetting("zoom");if("number"==typeof t&&Number.isFinite(t)){const e=Math.max(.3,Math.min(1,Math.round(100*t)/100));this.editor.zoom=e,this.editor.plumber&&(this.editor.plumber.zoom=e)}this.zoomInitialized=!0,this.editor.requestUpdate()}updateZoomControlPositioning(){requestAnimationFrame(()=>{const t=this.editor.querySelector("#editor");if(t){const e=Math.max(t.offsetWidth-t.clientWidth,0);document.documentElement.style.setProperty("--floating-tab-clip",`${e}px`)}const e=this.editor.querySelector(".editor-toolbar");if(e){const t=e.getBoundingClientRect();tg.START_TOP=t.bottom+20,tg.updateAllPositions()}})}initLoupe(){document.addEventListener("mousemove",this.boundLoupeMouseMove),document.addEventListener("keydown",this.boundLoupeKeyDown),document.addEventListener("keyup",this.boundLoupeKeyUp),document.addEventListener("mouseup",this.boundLoupeMouseUp);const t=this.editor.querySelector("#editor");t&&t.addEventListener("mousedown",this.boundLoupeMouseDown,!0)}teardownLoupe(){document.removeEventListener("mousemove",this.boundLoupeMouseMove),document.removeEventListener("keydown",this.boundLoupeKeyDown),document.removeEventListener("keyup",this.boundLoupeKeyUp),document.removeEventListener("mouseup",this.boundLoupeMouseUp);const t=this.editor.querySelector("#editor");t&&t.removeEventListener("mousedown",this.boundLoupeMouseDown,!0),this.hideLoupe()}setLoupeElements(t,e){this.loupeEl=t,this.loupeContentEl=e}isDialogOrMenuOpen(){var t;if(this.editor.editingNode||this.editor.editingAction)return!0;if(null===(t=this.editor.deleteDialog)||void 0===t?void 0:t.open)return!0;const e=this.editor.querySelector("temba-canvas-menu");return!!(null==e?void 0:e.open)}get isZoomFitted(){return this.zoomFitted}get isZoomInitialized(){return this.zoomInitialized}handleLoupeKeyDown(t){"a"===t.key.toLowerCase()&&t.metaKey&&t.ctrlKey&&(t.preventDefault(),this.loupeKeyHeld=!0,this.loupeLastMouse&&this.handleLoupeMouseMove(this.loupeLastMouse))}handleLoupeKeyUp(t){this.loupeKeyHeld&&("a"!==t.key&&"Meta"!==t.key&&"Control"!==t.key||(this.loupeKeyHeld=!1,this.hideLoupe()))}handleLoupeMouseDown(){this.loupeMouseIsDown=!0,this.hideLoupe()}handleLoupeMouseUp(){this.loupeMouseIsDown=!1}handleLoupeMouseMove(t){var e;if(this.loupeLastMouse={clientX:t.clientX,clientY:t.clientY},!this.loupeKeyHeld||this.loupeMouseIsDown||this.editor.isDragging||this.editor.isSelecting||(null===(e=this.editor.plumber)||void 0===e?void 0:e.connectionDragging)||this.isDialogOrMenuOpen())return void this.hideLoupe();const i=this.editor.querySelector("#editor");if(!i)return;const o=i.getBoundingClientRect();t.clientX<o.left||t.clientX>o.right||t.clientY<o.top||t.clientY>o.bottom?this.hideLoupe():(this.loupeRAF&&cancelAnimationFrame(this.loupeRAF),this.loupeRAF=requestAnimationFrame(()=>{this.updateLoupe(t.clientX,t.clientY)}))}hideLoupe(){this.loupeEl&&this.loupeEl.classList.remove("visible"),this.restoreTitles(),this.loupeClone&&(this.loupeClone.remove(),this.loupeClone=null),this.loupeRAF&&(cancelAnimationFrame(this.loupeRAF),this.loupeRAF=null)}suppressTitles(){this.hiddenTitles=[];const t=this.editor.querySelector("#canvas");if(t){for(const e of t.querySelectorAll("[title]"))this.hiddenTitles.push({el:e,title:e.getAttribute("title")}),e.removeAttribute("title");for(const e of t.querySelectorAll("temba-canvas-node, temba-sticky-note"))if(e.shadowRoot)for(const t of e.shadowRoot.querySelectorAll("[title]"))this.hiddenTitles.push({el:t,title:t.getAttribute("title")}),t.removeAttribute("title")}}restoreTitles(){for(const{el:t,title:e}of this.hiddenTitles)t.setAttribute("title",e);this.hiddenTitles=[]}rebuildLoupeClone(t,e,i,o){const n=this.loupeContentEl;if(!n)return;this.loupeClone&&this.loupeClone.remove();const s=document.createElement("div");s.className="loupe-clone",s.style.width=`${t.scrollWidth}px`,s.style.height=`${t.scrollHeight}px`;const r=50,a=t.querySelectorAll("[data-node-uuid]");for(const t of a){const n=t,a=parseFloat(n.style.left)||0,l=parseFloat(n.style.top)||0,d=n.offsetWidth,c=n.offsetHeight;if(a+d<e-o-r||a>e+o+r||l+c<i-o-r||l>i+o+r)continue;const h=document.createElement("div");h.className=n.className,h.style.cssText=n.style.cssText,h.innerHTML=n.innerHTML,s.appendChild(h)}const l=t.querySelectorAll("svg.plumb-connector");for(const t of l)s.appendChild(t.cloneNode(!0));const d=t.querySelectorAll(".activity-overlay");for(const t of d)s.appendChild(t.cloneNode(!0));const c=t.querySelectorAll("temba-sticky-note");for(const t of c){const n=t,a=n.offsetWidth,l=n.offsetHeight,d=parseFloat(n.style.left)||0,c=parseFloat(n.style.top)||0;if(d+a<e-o-r||d>e+o+r||c+l<i-o-r||c>i+o+r)continue;if(!n.shadowRoot)continue;const h=document.createElement("div");h.className=n.className,h.style.cssText=n.style.cssText,h.classList.add("loupe-sticky");const u=n.shadowRoot.adoptedStyleSheets;let p="";for(const t of u)for(const e of t.cssRules){const t=e.cssText;if(t.startsWith(":host"))p+=t.replace(/:host/g,".loupe-sticky")+"\n";else{const e=t.indexOf("{");if(-1!==e){p+=`.loupe-sticky ${t.substring(0,e).trim()} ${t.substring(e)}\n`}}}h.innerHTML=`<style>${p}</style>`+n.shadowRoot.innerHTML,s.appendChild(h)}n.appendChild(s),this.loupeClone=s}updateLoupe(t,e){const i=this.loupeEl,o=this.loupeContentEl;if(!i||!o||!this.editor.definition)return;const n=this.editor.querySelector("#canvas");if(!n)return;const s=n.getBoundingClientRect(),r=(t-s.left)/this.editor.zoom,a=(e-s.top)/this.editor.zoom,l=eg.LOUPE_DIAMETER/2,d=Math.min(1.5,2.5*this.editor.zoom),c=l/d;i.style.left=`${t}px`,i.style.top=`${e}px`,i.classList.add("visible"),0===this.hiddenTitles.length&&this.suppressTitles();const h=20*d;o.style.backgroundSize=`${h}px ${h}px`,o.style.backgroundPosition=`${l-r*d}px ${l-a*d}px`;const u=performance.now(),p=r-this.loupeCursorCanvas.x,m=a-this.loupeCursorCanvas.y,g=Math.abs(p)>.5*c||Math.abs(m)>.5*c;(!this.loupeClone||u-this.loupeCloneTime>eg.LOUPE_CLONE_INTERVAL&&g)&&(this.rebuildLoupeClone(n,r,a,c),this.loupeCloneTime=u,this.loupeCursorCanvas={x:r,y:a}),this.loupeClone&&(this.loupeClone.style.transform=`translate(${l-r*d}px, ${l-a*d}px) scale(${d})`)}}eg.LOUPE_DIAMETER=280,eg.LOUPE_CLONE_INTERVAL=200;const ig=[];class og{constructor(t,e,i,o){this.label=t,this.delay=e,this.host=i,this.onExpire=o,this.unsaved=!1,this.pending=!1,this.resetCount=0,this.timer=null}start(t=!0){this.clearTimer(),this.resetCount++,this.unsaved=!0,this.timer=setTimeout(()=>{this.timer=null,this.unsaved&&(this.unsaved=!1,this.host.requestUpdate(),this.onExpire())},this.delay),t&&this.host.requestUpdate()}dismiss(){this.unsaved=!1,this.clearTimer(),this.host.requestUpdate()}clearTimer(){null!==this.timer&&(clearTimeout(this.timer),this.timer=null)}}class ng extends Ve{createRenderRoot(){return this}get autoTranslateEnabled(){var t,e;return null!==(e=null===(t=this.features)||void 0===t?void 0:t.includes(gp))&&void 0!==e&&e}get dragging(){return this.isDragging}capturePositionsOnce(){var t,e;if(this.pendingPositions)return;const i={};for(const e of this.definition.nodes){const o=null===(t=this.definition._ui)||void 0===t?void 0:t.nodes[e.uuid];(null==o?void 0:o.position)&&(i[e.uuid]={...o.position})}const o=(null===(e=this.definition._ui)||void 0===e?void 0:e.stickies)||{};for(const[t,e]of Object.entries(o))e.position&&(i[t]={...e.position});this.pendingPositions=i}static get styles(){return a`
|
|
10095
|
+
`}}Jm.TAB_HEIGHT=50,Jm.TAB_GAP=4,Jm.START_TOP=165,Jm.allTabs=[],t([mt({type:String})],Jm.prototype,"icon",void 0),t([mt({type:String})],Jm.prototype,"label",void 0),t([mt({type:String})],Jm.prototype,"color",void 0),t([mt({type:Number})],Jm.prototype,"order",void 0),t([gt()],Jm.prototype,"top",void 0),t([mt({type:Boolean})],Jm.prototype,"hidden",void 0),t([mt({type:Boolean})],Jm.prototype,"saving",void 0),t([mt({type:Boolean})],Jm.prototype,"active",void 0);class tg{constructor(t){this.editor=t,this.zoomInitialized=!1,this.zoomFitted=!1,this.loupeEl=null,this.loupeContentEl=null,this.loupeRAF=null,this.hiddenTitles=[],this.loupeKeyHeld=!1,this.loupeMouseIsDown=!1,this.loupeLastMouse=null,this.loupeCloneTime=0,this.loupeClone=null,this.loupeCursorCanvas={x:0,y:0},this.boundLoupeMouseMove=this.handleLoupeMouseMove.bind(this),this.boundLoupeMouseDown=this.handleLoupeMouseDown.bind(this),this.boundLoupeMouseUp=this.handleLoupeMouseUp.bind(this),this.boundLoupeKeyDown=this.handleLoupeKeyDown.bind(this),this.boundLoupeKeyUp=this.handleLoupeKeyUp.bind(this)}setZoom(t,e){const i=Math.max(.3,Math.min(1,Math.round(100*t)/100));if(i===this.editor.zoom)return;const o=this.editor.querySelector("#editor"),n=this.editor.zoom;if(this.editor.zoom=i,this.editor.plumber.zoom=i,this.zoomFitted=!1,this.editor.requestUpdate(),this.editor.saveFlowSetting("zoom",i),o&&e){const t=o.getBoundingClientRect(),s=e.clientX-t.left,r=e.clientY-t.top,a=(o.scrollLeft+s)/n,l=(o.scrollTop+r)/n;requestAnimationFrame(()=>{o.scrollLeft=a*i-s,o.scrollTop=l*i-r,this.editor.plumber.repaintEverything()})}else requestAnimationFrame(()=>this.editor.plumber.repaintEverything())}zoomIn(){this.setZoom(this.editor.zoom+.05)}zoomOut(){this.setZoom(this.editor.zoom-.05)}zoomToFit(){var t;if(!this.editor.definition||0===this.editor.definition.nodes.length)return;const e=this.editor.querySelector("#editor");if(!e)return;let i=1/0,o=1/0,n=-1/0,s=-1/0;this.editor.definition.nodes.forEach(t=>{var e;const r=null===(e=this.editor.definition._ui)||void 0===e?void 0:e.nodes[t.uuid];if(!(null==r?void 0:r.position))return;const a=this.editor.querySelector(`[id="${t.uuid}"]`);if(!a)return;const l=a.offsetWidth,d=a.offsetHeight;i=Math.min(i,r.position.left),o=Math.min(o,r.position.top),n=Math.max(n,r.position.left+l),s=Math.max(s,r.position.top+d)});const r=(null===(t=this.editor.definition._ui)||void 0===t?void 0:t.stickies)||{};if(Object.entries(r).forEach(([t,e])=>{if(!e.position)return;const r=this.editor.querySelector(`temba-sticky-note[uuid="${t}"]`);if(!r)return;const a=r.offsetWidth,l=r.offsetHeight;i=Math.min(i,e.position.left),o=Math.min(o,e.position.top),n=Math.max(n,e.position.left+a),s=Math.max(s,e.position.top+l)}),i===1/0)return;const a=n-i,l=s-o,d=(e.clientWidth-80)/a,c=(e.clientHeight-80)/l;let h=Math.min(d,c,1);h=Math.max(h,.3),h=Math.round(20*h)/20,this.editor.zoom=h,this.editor.plumber.zoom=h,this.zoomFitted=!0,this.editor.requestUpdate(),this.editor.saveFlowSetting("zoom",h);const u=(i+n)/2+40,p=(o+s)/2+40;requestAnimationFrame(()=>{e.scrollLeft=u*h-e.clientWidth/2,e.scrollTop=p*h-e.clientHeight/2,this.editor.plumber.repaintEverything()})}zoomToFull(){this.setZoom(1)}handleWheel(t){if(!t.ctrlKey&&!t.metaKey)return;t.preventDefault();const e=t.deltaY>0?-.05:.05;this.setZoom(this.editor.zoom+e,{clientX:t.clientX,clientY:t.clientY})}restoreInitialZoomFromSettings(){if(this.zoomInitialized||!this.editor.definition)return;const t=this.editor.getFlowSetting("zoom");if("number"==typeof t&&Number.isFinite(t)){const e=Math.max(.3,Math.min(1,Math.round(100*t)/100));this.editor.zoom=e,this.editor.plumber&&(this.editor.plumber.zoom=e)}this.zoomInitialized=!0,this.editor.requestUpdate()}updateZoomControlPositioning(){requestAnimationFrame(()=>{const t=this.editor.querySelector("#editor");if(t){const e=Math.max(t.offsetWidth-t.clientWidth,0);document.documentElement.style.setProperty("--floating-tab-clip",`${e}px`)}const e=this.editor.querySelector(".editor-toolbar");if(e){const t=e.getBoundingClientRect();Jm.START_TOP=t.bottom+20,Jm.updateAllPositions()}})}initLoupe(){document.addEventListener("mousemove",this.boundLoupeMouseMove),document.addEventListener("keydown",this.boundLoupeKeyDown),document.addEventListener("keyup",this.boundLoupeKeyUp),document.addEventListener("mouseup",this.boundLoupeMouseUp);const t=this.editor.querySelector("#editor");t&&t.addEventListener("mousedown",this.boundLoupeMouseDown,!0)}teardownLoupe(){document.removeEventListener("mousemove",this.boundLoupeMouseMove),document.removeEventListener("keydown",this.boundLoupeKeyDown),document.removeEventListener("keyup",this.boundLoupeKeyUp),document.removeEventListener("mouseup",this.boundLoupeMouseUp);const t=this.editor.querySelector("#editor");t&&t.removeEventListener("mousedown",this.boundLoupeMouseDown,!0),this.hideLoupe()}setLoupeElements(t,e){this.loupeEl=t,this.loupeContentEl=e}isDialogOrMenuOpen(){var t;if(this.editor.editingNode||this.editor.editingAction)return!0;if(null===(t=this.editor.deleteDialog)||void 0===t?void 0:t.open)return!0;const e=this.editor.querySelector("temba-canvas-menu");return!!(null==e?void 0:e.open)}get isZoomFitted(){return this.zoomFitted}get isZoomInitialized(){return this.zoomInitialized}handleLoupeKeyDown(t){"a"===t.key.toLowerCase()&&t.metaKey&&t.ctrlKey&&(t.preventDefault(),this.loupeKeyHeld=!0,this.loupeLastMouse&&this.handleLoupeMouseMove(this.loupeLastMouse))}handleLoupeKeyUp(t){this.loupeKeyHeld&&("a"!==t.key&&"Meta"!==t.key&&"Control"!==t.key||(this.loupeKeyHeld=!1,this.hideLoupe()))}handleLoupeMouseDown(){this.loupeMouseIsDown=!0,this.hideLoupe()}handleLoupeMouseUp(){this.loupeMouseIsDown=!1}handleLoupeMouseMove(t){var e;if(this.loupeLastMouse={clientX:t.clientX,clientY:t.clientY},!this.loupeKeyHeld||this.loupeMouseIsDown||this.editor.isDragging||this.editor.isSelecting||(null===(e=this.editor.plumber)||void 0===e?void 0:e.connectionDragging)||this.isDialogOrMenuOpen())return void this.hideLoupe();const i=this.editor.querySelector("#editor");if(!i)return;const o=i.getBoundingClientRect();t.clientX<o.left||t.clientX>o.right||t.clientY<o.top||t.clientY>o.bottom?this.hideLoupe():(this.loupeRAF&&cancelAnimationFrame(this.loupeRAF),this.loupeRAF=requestAnimationFrame(()=>{this.updateLoupe(t.clientX,t.clientY)}))}hideLoupe(){this.loupeEl&&this.loupeEl.classList.remove("visible"),this.restoreTitles(),this.loupeClone&&(this.loupeClone.remove(),this.loupeClone=null),this.loupeRAF&&(cancelAnimationFrame(this.loupeRAF),this.loupeRAF=null)}suppressTitles(){this.hiddenTitles=[];const t=this.editor.querySelector("#canvas");if(t){for(const e of t.querySelectorAll("[title]"))this.hiddenTitles.push({el:e,title:e.getAttribute("title")}),e.removeAttribute("title");for(const e of t.querySelectorAll("temba-canvas-node, temba-sticky-note"))if(e.shadowRoot)for(const t of e.shadowRoot.querySelectorAll("[title]"))this.hiddenTitles.push({el:t,title:t.getAttribute("title")}),t.removeAttribute("title")}}restoreTitles(){for(const{el:t,title:e}of this.hiddenTitles)t.setAttribute("title",e);this.hiddenTitles=[]}rebuildLoupeClone(t,e,i,o){const n=this.loupeContentEl;if(!n)return;this.loupeClone&&this.loupeClone.remove();const s=document.createElement("div");s.className="loupe-clone",s.style.width=`${t.scrollWidth}px`,s.style.height=`${t.scrollHeight}px`;const r=50,a=t.querySelectorAll("[data-node-uuid]");for(const t of a){const n=t,a=parseFloat(n.style.left)||0,l=parseFloat(n.style.top)||0,d=n.offsetWidth,c=n.offsetHeight;if(a+d<e-o-r||a>e+o+r||l+c<i-o-r||l>i+o+r)continue;const h=document.createElement("div");h.className=n.className,h.style.cssText=n.style.cssText,h.innerHTML=n.innerHTML,s.appendChild(h)}const l=t.querySelectorAll("svg.plumb-connector");for(const t of l)s.appendChild(t.cloneNode(!0));const d=t.querySelectorAll(".activity-overlay");for(const t of d)s.appendChild(t.cloneNode(!0));const c=t.querySelectorAll("temba-sticky-note");for(const t of c){const n=t,a=n.offsetWidth,l=n.offsetHeight,d=parseFloat(n.style.left)||0,c=parseFloat(n.style.top)||0;if(d+a<e-o-r||d>e+o+r||c+l<i-o-r||c>i+o+r)continue;if(!n.shadowRoot)continue;const h=document.createElement("div");h.className=n.className,h.style.cssText=n.style.cssText,h.classList.add("loupe-sticky");const u=n.shadowRoot.adoptedStyleSheets;let p="";for(const t of u)for(const e of t.cssRules){const t=e.cssText;if(t.startsWith(":host"))p+=t.replace(/:host/g,".loupe-sticky")+"\n";else{const e=t.indexOf("{");if(-1!==e){p+=`.loupe-sticky ${t.substring(0,e).trim()} ${t.substring(e)}\n`}}}h.innerHTML=`<style>${p}</style>`+n.shadowRoot.innerHTML,s.appendChild(h)}n.appendChild(s),this.loupeClone=s}updateLoupe(t,e){const i=this.loupeEl,o=this.loupeContentEl;if(!i||!o||!this.editor.definition)return;const n=this.editor.querySelector("#canvas");if(!n)return;const s=n.getBoundingClientRect(),r=(t-s.left)/this.editor.zoom,a=(e-s.top)/this.editor.zoom,l=tg.LOUPE_DIAMETER/2,d=Math.min(1.5,2.5*this.editor.zoom),c=l/d;i.style.left=`${t}px`,i.style.top=`${e}px`,i.classList.add("visible"),0===this.hiddenTitles.length&&this.suppressTitles();const h=20*d;o.style.backgroundSize=`${h}px ${h}px`,o.style.backgroundPosition=`${l-r*d}px ${l-a*d}px`;const u=performance.now(),p=r-this.loupeCursorCanvas.x,m=a-this.loupeCursorCanvas.y,g=Math.abs(p)>.5*c||Math.abs(m)>.5*c;(!this.loupeClone||u-this.loupeCloneTime>tg.LOUPE_CLONE_INTERVAL&&g)&&(this.rebuildLoupeClone(n,r,a,c),this.loupeCloneTime=u,this.loupeCursorCanvas={x:r,y:a}),this.loupeClone&&(this.loupeClone.style.transform=`translate(${l-r*d}px, ${l-a*d}px) scale(${d})`)}}tg.LOUPE_DIAMETER=280,tg.LOUPE_CLONE_INTERVAL=200;const eg=[];class ig{constructor(t,e,i,o){this.label=t,this.delay=e,this.host=i,this.onExpire=o,this.unsaved=!1,this.pending=!1,this.resetCount=0,this.timer=null}start(t=!0){this.clearTimer(),this.resetCount++,this.unsaved=!0,this.timer=setTimeout(()=>{this.timer=null,this.unsaved&&(this.unsaved=!1,this.host.requestUpdate(),this.onExpire())},this.delay),t&&this.host.requestUpdate()}dismiss(){this.unsaved=!1,this.clearTimer(),this.host.requestUpdate()}clearTimer(){null!==this.timer&&(clearTimeout(this.timer),this.timer=null)}}class og extends Ve{createRenderRoot(){return this}get dragging(){return this.isDragging}capturePositionsOnce(){var t,e;if(this.pendingPositions)return;const i={};for(const e of this.definition.nodes){const o=null===(t=this.definition._ui)||void 0===t?void 0:t.nodes[e.uuid];(null==o?void 0:o.position)&&(i[e.uuid]={...o.position})}const o=(null===(e=this.definition._ui)||void 0===e?void 0:e.stickies)||{};for(const[t,e]of Object.entries(o))e.position&&(i[t]={...e.position});this.pendingPositions=i}static get styles(){return a`
|
|
10099
10096
|
#editor-container {
|
|
10100
10097
|
position: relative;
|
|
10101
10098
|
flex: 1;
|
|
@@ -10854,7 +10851,7 @@ background: #ccc;
|
|
|
10854
10851
|
animation-timing-function: linear;
|
|
10855
10852
|
animation-fill-mode: forwards;
|
|
10856
10853
|
}
|
|
10857
|
-
`}constructor(){super(),this.saveTimer=null,this.flowType=dp,this.features=[],this.activityTimer=null,this.activityInterval=100,this.isDragging=!1,this.currentDragItem=null,this.selectedItems=new Set,this.isSelecting=!1,this.selectionBox=null,this.targetId=null,this.sourceId=null,this.dragFromNodeId=null,this.originalConnectionTargetId=null,this.isValidTarget=!0,this.connectionSourceX=null,this.connectionSourceY=null,this.issuesWindowHidden=!0,this.revisionsWindowHidden=!0,this.viewingRevision=!1,this.isSaving=!1,this.saveError=null,this.zoom=1,this.autoTranslating=!1,this._suppressDirtySave=!1,this.savePromise=null,this.pendingTimer=new og("Unsaved Changes",5e3,this,()=>{this.pendingPositions=null,this.copiedItemUuids=[],this.saveChanges()}),this.pendingPositions=null,this.copiedItemUuids=[],this.deleteDialog=null,this.dirtyAdapter={dirtyMessage:"Your flow is still saving. If you leave now, your latest changes may be lost.",markClean:()=>{}},this.boundBeforeUnload=t=>{t.preventDefault()},this.editingNode=null,this.editingNodeUI=null,this.editingAction=null,this.dialogOrigin=null,this.showMessageTable=!1,this.isCreatingNewNode=!1,this.pendingNodePosition=null,this.canvasDropPreview=null,this.addActionToNodeUuid=null,this.actionDragTargetNodeUuid=null,this.previousActionDragTargetNodeUuid=null,this.isActionExternalDrag=!1,this.actionDragIsCopy=!1,this.actionDragLastDetail=null,this.connectionPlaceholder=null,this.pendingCanvasConnection=null,this.boundCanvasContextMenu=this.handleCanvasContextMenu.bind(this),this.boundWheel=t=>this.zoomManager.handleWheel(t),this.boundWindowResize=()=>this.zoomManager.updateZoomControlPositioning(),this.flushSave=async()=>{const t=this.definition?{...this.definition}:null;this.pendingTimer.unsaved&&(this.pendingPositions=null,this.copiedItemUuids=[],this.pendingTimer.dismiss()),null!==this.saveTimer&&(clearTimeout(this.saveTimer),this.saveTimer=null),this.savePromise&&await this.savePromise,t&&this.dirtyDate&&await this.saveChanges(t)},this.editForceBase=!1,this.dragManager=new Jm(this),this.zoomManager=new eg(this)}firstUpdated(t){var e,i,o;super.firstUpdated(t),this.plumber=new Xm(this.querySelector("#canvas"),this),this.plumber.zoom=this.zoom,this.setupGlobalEventListeners(),null===(e=Qc())||void 0===e||e.getState().setFlushSave(this.flushSave),zd.getState().setFeatures(this.features),navigator.maxTouchPoints>0&&(null===(i=this.querySelector("#canvas"))||void 0===i||i.classList.add("touch-device"),null===(o=this.querySelector("#editor"))||void 0===o||o.classList.add("touch-device")),this.zoomManager.updateZoomControlPositioning(),this.zoomManager.setLoupeElements(this.querySelector("#loupe"),this.querySelector("#loupe-content")),this.zoomManager.initLoupe(),t.has("flow")&&this.flow&&setTimeout(()=>{this.isConnected&&this.flow&&Qc().getState().fetchRevision(`/flow/revisions/${this.flow}`)},0),this.plumber.on("connection:drag",t=>{this.dragFromNodeId=t.data.nodeId,this.sourceId=t.sourceId,this.connectionSourceX=t.sourceX,this.connectionSourceY=t.sourceY,this.originalConnectionTargetId=t.target.id}),this.plumber.on("connection:abort",t=>{this.makeConnection(t)}),this.plumber.on("connection:detach",t=>{this.makeConnection(t)})}makeConnection(t){if(this.sourceId&&this.targetId&&this.isValidTarget)t.target.id===this.targetId?this.plumber.connectIds(this.dragFromNodeId,this.sourceId,this.targetId):Qc().getState().updateConnection(this.dragFromNodeId,this.sourceId,this.targetId);else if(this.connectionPlaceholder&&this.connectionPlaceholder.visible&&this.sourceId){const t={left:Mc(this.connectionPlaceholder.position.left),top:Mc(this.connectionPlaceholder.position.top)},e=!!this.connectionPlaceholder.dragUp;this.connectionPlaceholder.position=t,this.pendingCanvasConnection={fromNodeId:this.dragFromNodeId,exitId:this.sourceId,position:t};const i=this.querySelector("#canvas");if(i){const o=i.getBoundingClientRect(),n=o.left+t.left*this.zoom-40,s=e?o.top+t.top*this.zoom+74:o.top+t.top*this.zoom+80,r=this.querySelector("temba-canvas-menu");r&&r.show(n,s,{x:t.left,y:t.top},!1,!1,up[this.flowType])}return void this.requestUpdate()}document.querySelectorAll("temba-flow-node").forEach(t=>{t.classList.remove("connection-target-valid","connection-target-invalid")}),this.pendingCanvasConnection||(this.sourceId=null,this.connectionSourceX=null,this.connectionSourceY=null,this.dragFromNodeId=null),this.targetId=null,this.isValidTarget=!0}willUpdate(t){var e;super.willUpdate(t),t.has("definition")&&((null===(e=this.definition)||void 0===e?void 0:e.type)&&(this.flowType=this.getFlowTypeFromDefinition(this.definition.type)),this.zoomManager.restoreInitialZoomFromSettings()),t.has("dirtyDate")&&this.dirtyDate&&(this.pendingTimer.pending?(this.pendingTimer.pending=!1,this._suppressDirtySave=!0):this.pendingTimer.unsaved?(this.pendingTimer.start(!1),this._suppressDirtySave=!0):this.isSaving=!0)}setSimulatorTabHidden(t){var e;const i=document.querySelector("temba-simulator"),o=null===(e=null==i?void 0:i.shadowRoot)||void 0===e?void 0:e.querySelector("#phone-tab");o&&(o.hidden=t)}updated(t){var e;if(super.updated(t),t.has("features")&&zd.getState().setFeatures(this.features),t.has("revisionsWindowHidden")&&this.setSimulatorTabHidden(!this.revisionsWindowHidden),t.has("canvasSize")&&this.zoomManager.updateZoomControlPositioning(),t.has("showMessageTable")&&!this.showMessageTable&&this.plumber&&requestAnimationFrame(()=>{const t=this.querySelector("#canvas");t&&(this.plumber.setContainer(t),this.plumber.repaintEverything(),t.addEventListener("contextmenu",this.boundCanvasContextMenu))}),t.has("showMessageTable")&&this.zoomManager.updateZoomControlPositioning(),t.has("definition")&&(setTimeout(()=>this.updateCanvasSize(),0),(null===(e=this.definition)||void 0===e?void 0:e.uuid)&&this.startActivityFetching()),t.has("simulatorActive")&&(this.simulatorActive?(this.closeFloatingWindows(),this.stopActivityFetching()):(this.activityInterval=100,this.startActivityFetching())),t.has("activityData")&&this.plumber&&this.plumber.setActivityData(this.activityData),t.has("dirtyDate")&&this.dirtyDate&&(this._suppressDirtySave?this._suppressDirtySave=!1:this.debouncedSave()),t.has("isSaving")){const t=document.querySelector("temba-store");this.isSaving?(window.addEventListener("beforeunload",this.boundBeforeUnload),(null==t?void 0:t.markDirty)&&t.markDirty(this.dirtyAdapter)):(window.removeEventListener("beforeunload",this.boundBeforeUnload),(null==t?void 0:t.markClean)&&t.markClean(this.dirtyAdapter))}t.has("saveError")&&this.saveError&&(this.showSaveErrorDialog(this.saveError),setTimeout(()=>{this.saveError=null},0))}getFlowTypeFromDefinition(t){return"voice"===t?cp:"messaging_background"===t||"messaging_offline"===t?hp:dp}debouncedSave(){null!==this.saveTimer&&clearTimeout(this.saveTimer),this.saveTimer=window.setTimeout(()=>{if(this.pendingTimer.unsaved)return void(this.saveTimer=null);(new Date).getTime()-this.dirtyDate.getTime()>=2e3?(this.saveChanges(),this.saveTimer=null):this.debouncedSave()},2e3)}definitionForSave(t){return{...t,_ui:{...t._ui,editor:lp}}}saveChanges(t){const e=this.definitionForSave(t||this.definition);this.isSaving=!0;const i=Qc().postJSON(`/flow/revisions/${this.flow}/`,e).then(t=>{var e;if(t.status<200||t.status>=300)this.saveError=this.extractErrorMessage(t);else{if(t.json){const i=Qc().getState();t.json.info&&i.setFlowInfo(t.json.info),void 0!==(null===(e=t.json.revision)||void 0===e?void 0:e.revision)&&i.setRevision(t.json.revision.revision)}Qc().getState().setDirtyDate(null)}}).catch(t=>{console.error("Failed to save flow:",t),t instanceof Response?this.saveError=`Server error (${t.status}). Your changes have not been saved.`:this.saveError="Unable to reach the server. Please check your connection and try again."}).finally(()=>{this.isSaving=!1,this.savePromise=null});return this.savePromise=i,i}extractErrorMessage(t){if(t.json){if("string"==typeof t.json.detail)return t.json.detail;if("string"==typeof t.json.error)return t.json.error;if("string"==typeof t.json.description)return t.json.description}return`Save failed with status ${t.status}.`}showSaveErrorDialog(t){const e=document.createElement("temba-dialog");e.header="Save Failed",e.primaryButtonName="",e.cancelButtonName="Dismiss";const i=document.createElement("div");i.style.cssText="padding: 20px; font-size: 14px; line-height: 1.5;",i.textContent=t,e.appendChild(i),document.body.appendChild(e),e.open=!0,e.addEventListener("temba-dialog-hidden",()=>{document.body.removeChild(e)})}startActivityFetching(){this.simulatorActive||this.fetchActivityData()}stopActivityFetching(){null!==this.activityTimer&&(clearTimeout(this.activityTimer),this.activityTimer=null)}fetchActivityData(){var t;if(!(null===(t=this.definition)||void 0===t?void 0:t.uuid))return;if(this.simulatorActive)return;const e=`/flow/activity/${this.definition.uuid}/`,i=Qc();if(!i)return;i.getState().fetchActivity(e).then(()=>{this.isConnected&&(this.activityInterval=Math.min(3e5,this.activityInterval+100),null!==this.activityTimer&&clearTimeout(this.activityTimer),this.activityTimer=window.setTimeout(()=>{this.fetchActivityData()},this.activityInterval))})}handleLanguageChange(t){zd.getState().setLanguageCode(t)}getAvailableLanguages(){var t,e,i;return(null===(t=this.workspace)||void 0===t?void 0:t.languages)&&this.workspace.languages.length>0?this.workspace.languages.map(t=>({code:t,name:$c(t)})).filter(t=>t.code&&t.name):(null===(i=null===(e=this.definition)||void 0===e?void 0:e._ui)||void 0===i?void 0:i.languages)&&this.definition._ui.languages.length>0?this.definition._ui.languages.map(t=>{const e="string"==typeof t?t:t.iso||t.code;return{code:e,name:$c(e)}}):[]}getLocalizationLanguages(){if(!this.definition)return[];const t=this.definition.language;return this.getAvailableLanguages().filter(e=>e.code!==t)}getLocalizationProgress(t){return jm(this.definition,t).reduce((t,e)=>(e.translations.forEach(e=>{t.total+=1,e.to&&e.to.trim().length>0&&(t.localized+=1)}),t),{total:0,localized:0})}hasAnyNodeWithLocalizeCategories(){var t,e;return!!(null===(e=null===(t=this.definition)||void 0===t?void 0:t._ui)||void 0===e?void 0:e.nodes)&&Object.values(this.definition._ui.nodes).some(t=>{var e;return null===(e=null==t?void 0:t.config)||void 0===e?void 0:e.localizeCategories})}handleAutoTranslateClick(){if(!this.autoTranslateEnabled||this.viewingRevision)return;const t=this.querySelector("temba-auto-translate");null==t||t.start()}handleAutoTranslateChanged(t){var e;this.autoTranslating=!!(null===(e=t.detail)||void 0===e?void 0:e.running)}disconnectedCallback(){var t;super.disconnectedCallback(),this.zoomManager.teardownLoupe(),null===(t=Qc())||void 0===t||t.getState().setFlushSave(null),this.dragManager.teardownListeners(),window.removeEventListener("beforeunload",this.boundBeforeUnload);const e=document.querySelector("temba-store");(null==e?void 0:e.markClean)&&e.markClean(this.dirtyAdapter),null!==this.saveTimer&&(clearTimeout(this.saveTimer),this.saveTimer=null),null!==this.activityTimer&&(clearTimeout(this.activityTimer),this.activityTimer=null),this.pendingTimer.clearTimer(),window.removeEventListener("resize",this.boundWindowResize);const i=this.querySelector("#canvas");i&&i.removeEventListener("contextmenu",this.boundCanvasContextMenu);const o=this.querySelector("#editor");o&&o.removeEventListener("wheel",this.boundWheel),this.savePromise?this.savePromise.then(()=>zd.getState().clearFlowData()):zd.getState().clearFlowData()}setupGlobalEventListeners(){this.dragManager.setupListeners(),window.addEventListener("resize",this.boundWindowResize);const t=this.querySelector("#canvas");t&&t.addEventListener("contextmenu",this.boundCanvasContextMenu);const e=this.querySelector("#editor");e&&e.addEventListener("wheel",this.boundWheel,{passive:!1}),this.addEventListener(Fo.ActionEditRequested,this.handleActionEditRequested.bind(this)),this.addEventListener(Fo.AddActionRequested,this.handleAddActionRequested.bind(this)),this.addEventListener(Fo.NodeEditRequested,this.handleNodeEditRequested.bind(this)),this.addEventListener(Fo.NodeDeleted,this.handleNodeDeleted.bind(this)),this.addEventListener(Fo.StickyNoteDeleted,t=>{var e;const i=null===(e=t.detail)||void 0===e?void 0:e.uuid;i&&Qc().getState().removeStickyNotes([i])}),this.addEventListener(Fo.Selection,t=>{const e=t.target;"TEMBA-CANVAS-MENU"===e.tagName?this.handleCanvasMenuSelection(t):"TEMBA-NODE-TYPE-SELECTOR"===e.tagName&&this.handleNodeTypeSelection(t)}),this.addEventListener(Fo.Canceled,t=>{const e=t.target;"TEMBA-CANVAS-MENU"===e.tagName?this.handleCanvasMenuClosed():"TEMBA-NODE-TYPE-SELECTOR"===e.tagName&&this.handleNodeTypeSelectorClosed()}),this.addEventListener(Fo.DragExternal,this.handleActionDragExternal.bind(this)),this.addEventListener(Fo.DragInternal,this.handleActionDragInternal.bind(this)),this.addEventListener(Fo.DragStop,t=>{t.detail.isExternal&&this.handleActionDropExternal(t)}),this.addEventListener(Fo.SizeChanged,t=>{const{uuid:e}=t.detail;e&&requestAnimationFrame(()=>{this.checkCollisionsAndReflow([e])})})}openFlowSearch(){if(this.viewingRevision)return;if(this.zoomManager.isDialogOrMenuOpen())return;const t=this.querySelector("temba-flow-search");t&&(t.definition=this.definition,t.languageCode=this.languageCode||"",t.scope=this.showMessageTable?"table":"flow",t.includeCategories=this.isTranslating&&this.hasAnyNodeWithLocalizeCategories(),t.show())}closeFlowSearch(){const t=this.querySelector("temba-flow-search");(null==t?void 0:t.open)&&t.hide()}handleKeyDown(t){var e,i;if("Shift"===t.key&&this.isActionExternalDrag&&!this.actionDragIsCopy&&(this.actionDragIsCopy=!0,this.showActionOriginal(!0),(null===(e=this.actionDragLastDetail)||void 0===e?void 0:e.isLastAction)&&this.reprocessActionDrag(),this.requestUpdate()),(t.metaKey||t.ctrlKey)&&"f"===t.key)return t.preventDefault(),void this.openFlowSearch();const o=this.querySelector("temba-flow-search");if(!(null==o?void 0:o.open)){if("Delete"===t.key||"Backspace"===t.key){if(null===(i=this.deleteDialog)||void 0===i?void 0:i.open)return this.deleteSelectedItems(),void(this.deleteDialog.open=!1);this.selectedItems.size>0&&this.showDeleteConfirmation()}"Escape"===t.key&&(this.selectedItems.clear(),this.requestUpdate())}}handleKeyUp(t){var e;"Shift"===t.key&&this.isActionExternalDrag&&this.actionDragIsCopy&&(this.actionDragIsCopy=!1,this.showActionOriginal(!1),(null===(e=this.actionDragLastDetail)||void 0===e?void 0:e.isLastAction)&&this.reprocessActionDrag(),this.requestUpdate())}handleWindowBlur(){var t;this.isActionExternalDrag&&this.actionDragIsCopy&&(this.actionDragIsCopy=!1,this.showActionOriginal(!1),(null===(t=this.actionDragLastDetail)||void 0===t?void 0:t.isLastAction)&&this.reprocessActionDrag(),this.requestUpdate())}getFlowSettings(){try{return JSON.parse($e("flow-settings")||"{}")}catch(t){return{}}}saveFlowSetting(t,e){if(!this.flow)return;const i=this.getFlowSettings();delete i[this.flow],i[this.flow]={...i[this.flow]||{},[t]:e};const o=Object.keys(i);if(o.length>ng.MAX_FLOW_SETTINGS)for(const t of o.slice(0,o.length-ng.MAX_FLOW_SETTINGS))delete i[t];Ae("flow-settings",JSON.stringify(i))}getFlowSetting(t){var e;if(this.flow)return null===(e=this.getFlowSettings()[this.flow])||void 0===e?void 0:e[t]}showDeleteConfirmation(){var t;const e=this.selectedItems.size,i=1===e?"item":"items";if(null===(t=this.deleteDialog)||void 0===t?void 0:t.open)return;const o=document.createElement("temba-dialog");o.header="Delete Items",o.primaryButtonName="Delete",o.cancelButtonName="Cancel",o.destructive=!0,o.innerHTML=`<div style="padding: 20px;">Are you sure you want to delete ${e} ${i}?</div>`,o.addEventListener("temba-button-clicked",t=>{"Delete"===t.detail.button.name&&(this.deleteSelectedItems(),o.open=!1)}),document.body.appendChild(o),o.open=!0,this.deleteDialog=o,o.addEventListener("temba-dialog-hidden",()=>{document.body.removeChild(o),this.deleteDialog=null})}performReflow(){var t,e;if(!this.definition||0===this.definition.nodes.length)return;this.capturePositionsOnce();const i=(null===(t=this.definition._ui)||void 0===t?void 0:t.stickies)||{},o={};for(const t of this.definition.nodes){const i=null===(e=this.definition._ui)||void 0===e?void 0:e.nodes[t.uuid];(null==i?void 0:i.position)&&(o[t.uuid]={...i.position})}const n=this.definition.nodes[0].uuid,s=new Map,r=Vm(this.definition.nodes,this.definition._ui.nodes,n,t=>{const e=this.querySelector(`[id="${t}"]`);if(e){const i={width:e.offsetWidth,height:e.offsetHeight};return s.set(t,i),i}const i={width:200,height:100};return s.set(t,i),i});if(Object.keys(i).length>0){const t=new Map;for(const e of Object.keys(i)){const o=this.querySelector(`temba-sticky-note[uuid="${e}"]`);if(o)t.set(e,{width:o.offsetWidth,height:o.offsetHeight});else{const o=i[e];t.set(e,{width:o.width||200,height:o.height||100})}}const e=function(t,e,i,o,n,s){const r={},a=Object.keys(i);if(0===a.length)return r;const l=new Map,d=new Map;for(const[i,o]of Object.entries(t)){if(!o.position)continue;const t=o.position.left,n=o.position.top;let s=a[0],r=1/0;for(const i of a){const o=e[i];if(!o)continue;const a=t-o.left,l=n-o.top,d=a*a+l*l;d<r&&(r=d,s=i)}l.set(i,s);const c=e[s],h=!!c&&t<c.left,u=d.get(s)||[];u.push({uuid:i,wasLeft:h}),d.set(s,u)}const c=[];for(const t of a){const e=i[t],n=o.get(t)||{width:200,height:100};c.push({left:e.left,top:e.top,width:n.width,height:n.height})}for(const[t,e]of d){const a=i[t];if(!a)continue;const l=o.get(t)||{width:200};for(const{uuid:i,wasLeft:o}of e){const e=n.get(i)||{width:182,height:100};let d;d=t===s&&o||!o?a.left+l.width+Wm:a.left-e.width-Wm;let h=a.top;d=Mc(Math.max(0,d)),h=Mc(Math.max(0,h));let u=50;for(;u-- >0&&Ym(d,h,e.width,e.height,c);)h=Mc(h+Wm);r[i]={left:d,top:h},c.push({left:d,top:h,width:e.width,height:e.height})}}return r}(i,o,r,s,t,n);Object.assign(r,e)}null!==this.saveTimer&&(clearTimeout(this.saveTimer),this.saveTimer=null),this.pendingTimer.pending=!0,Qc().getState().updateCanvasPositions(r),this.updateCanvasSize(),requestAnimationFrame(()=>{this.plumber.repaintEverything()});const a=this.querySelector("#editor");a&&a.scrollTo({left:0,top:0,behavior:"smooth"}),this.pendingTimer.start()}handlePendingDiscard(){this.pendingTimer.dismiss();if(this.copiedItemUuids.length>0||this.pendingPositions){if(null!==this.saveTimer&&(clearTimeout(this.saveTimer),this.saveTimer=null),this.copiedItemUuids.length>0){const t=this.copiedItemUuids.filter(t=>this.definition.nodes.some(e=>e.uuid===t)),e=this.copiedItemUuids.filter(t=>{var e,i;return null===(i=null===(e=this.definition._ui)||void 0===e?void 0:e.stickies)||void 0===i?void 0:i[t]});this.pendingTimer.pending=!0,t.length>0&&Qc().getState().removeNodes(t),e.length>0&&(this.pendingTimer.pending=!0,Qc().getState().removeStickyNotes(e)),this.copiedItemUuids=[]}this.pendingPositions&&(this.pendingTimer.pending=!0,Qc().getState().updateCanvasPositions(this.pendingPositions),this.pendingPositions=null),setTimeout(()=>{Qc().getState().setDirtyDate(null),this.isSaving=!1},0),requestAnimationFrame(()=>{this.plumber.repaintEverything()})}}renderPendingCard(){if(!this.pendingTimer.unsaved)return"";const t=`pc-${this.pendingTimer.resetCount}`;return W`<div class="reflow-card">
|
|
10854
|
+
`}constructor(){super(),this.saveTimer=null,this.flowType=dp,this.features=[],this.activityTimer=null,this.activityInterval=100,this.isDragging=!1,this.currentDragItem=null,this.selectedItems=new Set,this.isSelecting=!1,this.selectionBox=null,this.targetId=null,this.sourceId=null,this.dragFromNodeId=null,this.originalConnectionTargetId=null,this.isValidTarget=!0,this.connectionSourceX=null,this.connectionSourceY=null,this.issuesWindowHidden=!0,this.revisionsWindowHidden=!0,this.viewingRevision=!1,this.isSaving=!1,this.saveError=null,this.zoom=1,this.autoTranslating=!1,this._suppressDirtySave=!1,this.savePromise=null,this.pendingTimer=new ig("Unsaved Changes",5e3,this,()=>{this.pendingPositions=null,this.copiedItemUuids=[],this.saveChanges()}),this.pendingPositions=null,this.copiedItemUuids=[],this.deleteDialog=null,this.dirtyAdapter={dirtyMessage:"Your flow is still saving. If you leave now, your latest changes may be lost.",markClean:()=>{}},this.boundBeforeUnload=t=>{t.preventDefault()},this.editingNode=null,this.editingNodeUI=null,this.editingAction=null,this.dialogOrigin=null,this.showMessageTable=!1,this.isCreatingNewNode=!1,this.pendingNodePosition=null,this.canvasDropPreview=null,this.addActionToNodeUuid=null,this.actionDragTargetNodeUuid=null,this.previousActionDragTargetNodeUuid=null,this.isActionExternalDrag=!1,this.actionDragIsCopy=!1,this.actionDragLastDetail=null,this.connectionPlaceholder=null,this.pendingCanvasConnection=null,this.boundCanvasContextMenu=this.handleCanvasContextMenu.bind(this),this.boundWheel=t=>this.zoomManager.handleWheel(t),this.boundWindowResize=()=>this.zoomManager.updateZoomControlPositioning(),this.flushSave=async()=>{const t=this.definition?{...this.definition}:null;this.pendingTimer.unsaved&&(this.pendingPositions=null,this.copiedItemUuids=[],this.pendingTimer.dismiss()),null!==this.saveTimer&&(clearTimeout(this.saveTimer),this.saveTimer=null),this.savePromise&&await this.savePromise,t&&this.dirtyDate&&await this.saveChanges(t)},this.editForceBase=!1,this.dragManager=new Qm(this),this.zoomManager=new tg(this)}firstUpdated(t){var e,i,o;super.firstUpdated(t),this.plumber=new Gm(this.querySelector("#canvas"),this),this.plumber.zoom=this.zoom,this.setupGlobalEventListeners(),null===(e=Qc())||void 0===e||e.getState().setFlushSave(this.flushSave),zd.getState().setFeatures(this.features),navigator.maxTouchPoints>0&&(null===(i=this.querySelector("#canvas"))||void 0===i||i.classList.add("touch-device"),null===(o=this.querySelector("#editor"))||void 0===o||o.classList.add("touch-device")),this.zoomManager.updateZoomControlPositioning(),this.zoomManager.setLoupeElements(this.querySelector("#loupe"),this.querySelector("#loupe-content")),this.zoomManager.initLoupe(),t.has("flow")&&this.flow&&setTimeout(()=>{this.isConnected&&this.flow&&Qc().getState().fetchRevision(`/flow/revisions/${this.flow}`)},0),this.plumber.on("connection:drag",t=>{this.dragFromNodeId=t.data.nodeId,this.sourceId=t.sourceId,this.connectionSourceX=t.sourceX,this.connectionSourceY=t.sourceY,this.originalConnectionTargetId=t.target.id}),this.plumber.on("connection:abort",t=>{this.makeConnection(t)}),this.plumber.on("connection:detach",t=>{this.makeConnection(t)})}makeConnection(t){if(this.sourceId&&this.targetId&&this.isValidTarget)t.target.id===this.targetId?this.plumber.connectIds(this.dragFromNodeId,this.sourceId,this.targetId):Qc().getState().updateConnection(this.dragFromNodeId,this.sourceId,this.targetId);else if(this.connectionPlaceholder&&this.connectionPlaceholder.visible&&this.sourceId){const t={left:Mc(this.connectionPlaceholder.position.left),top:Mc(this.connectionPlaceholder.position.top)},e=!!this.connectionPlaceholder.dragUp;this.connectionPlaceholder.position=t,this.pendingCanvasConnection={fromNodeId:this.dragFromNodeId,exitId:this.sourceId,position:t};const i=this.querySelector("#canvas");if(i){const o=i.getBoundingClientRect(),n=o.left+t.left*this.zoom-40,s=e?o.top+t.top*this.zoom+74:o.top+t.top*this.zoom+80,r=this.querySelector("temba-canvas-menu");r&&r.show(n,s,{x:t.left,y:t.top},!1,!1,up[this.flowType])}return void this.requestUpdate()}document.querySelectorAll("temba-flow-node").forEach(t=>{t.classList.remove("connection-target-valid","connection-target-invalid")}),this.pendingCanvasConnection||(this.sourceId=null,this.connectionSourceX=null,this.connectionSourceY=null,this.dragFromNodeId=null),this.targetId=null,this.isValidTarget=!0}willUpdate(t){var e;super.willUpdate(t),t.has("definition")&&((null===(e=this.definition)||void 0===e?void 0:e.type)&&(this.flowType=this.getFlowTypeFromDefinition(this.definition.type)),this.zoomManager.restoreInitialZoomFromSettings()),t.has("dirtyDate")&&this.dirtyDate&&(this.pendingTimer.pending?(this.pendingTimer.pending=!1,this._suppressDirtySave=!0):this.pendingTimer.unsaved?(this.pendingTimer.start(!1),this._suppressDirtySave=!0):this.isSaving=!0)}setSimulatorTabHidden(t){var e;const i=document.querySelector("temba-simulator"),o=null===(e=null==i?void 0:i.shadowRoot)||void 0===e?void 0:e.querySelector("#phone-tab");o&&(o.hidden=t)}updated(t){var e;if(super.updated(t),t.has("features")&&zd.getState().setFeatures(this.features),t.has("revisionsWindowHidden")&&this.setSimulatorTabHidden(!this.revisionsWindowHidden),t.has("canvasSize")&&this.zoomManager.updateZoomControlPositioning(),t.has("showMessageTable")&&!this.showMessageTable&&this.plumber&&requestAnimationFrame(()=>{const t=this.querySelector("#canvas");t&&(this.plumber.setContainer(t),this.plumber.repaintEverything(),t.addEventListener("contextmenu",this.boundCanvasContextMenu))}),t.has("showMessageTable")&&this.zoomManager.updateZoomControlPositioning(),t.has("definition")&&(setTimeout(()=>this.updateCanvasSize(),0),(null===(e=this.definition)||void 0===e?void 0:e.uuid)&&this.startActivityFetching()),t.has("simulatorActive")&&(this.simulatorActive?(this.closeFloatingWindows(),this.stopActivityFetching()):(this.activityInterval=100,this.startActivityFetching())),t.has("activityData")&&this.plumber&&this.plumber.setActivityData(this.activityData),t.has("dirtyDate")&&this.dirtyDate&&(this._suppressDirtySave?this._suppressDirtySave=!1:this.debouncedSave()),t.has("isSaving")){const t=document.querySelector("temba-store");this.isSaving?(window.addEventListener("beforeunload",this.boundBeforeUnload),(null==t?void 0:t.markDirty)&&t.markDirty(this.dirtyAdapter)):(window.removeEventListener("beforeunload",this.boundBeforeUnload),(null==t?void 0:t.markClean)&&t.markClean(this.dirtyAdapter))}t.has("saveError")&&this.saveError&&(this.showSaveErrorDialog(this.saveError),setTimeout(()=>{this.saveError=null},0))}getFlowTypeFromDefinition(t){return"voice"===t?cp:"messaging_background"===t||"messaging_offline"===t?hp:dp}debouncedSave(){null!==this.saveTimer&&clearTimeout(this.saveTimer),this.saveTimer=window.setTimeout(()=>{if(this.pendingTimer.unsaved)return void(this.saveTimer=null);(new Date).getTime()-this.dirtyDate.getTime()>=2e3?(this.saveChanges(),this.saveTimer=null):this.debouncedSave()},2e3)}definitionForSave(t){return{...t,_ui:{...t._ui,editor:lp}}}saveChanges(t){const e=this.definitionForSave(t||this.definition);this.isSaving=!0;const i=Qc().postJSON(`/flow/revisions/${this.flow}/`,e).then(t=>{var e,i;if(t.status<200||t.status>=300)this.saveError=this.extractErrorMessage(t);else{if(t.json){const i=Qc().getState();t.json.info&&i.setFlowInfo(t.json.info),void 0!==(null===(e=t.json.revision)||void 0===e?void 0:e.revision)&&i.setRevision(t.json.revision.revision)}Qc().getState().setDirtyDate(null),null===(i=this.getRevisionsWindow())||void 0===i||i.refresh()}}).catch(t=>{console.error("Failed to save flow:",t),t instanceof Response?this.saveError=`Server error (${t.status}). Your changes have not been saved.`:this.saveError="Unable to reach the server. Please check your connection and try again."}).finally(()=>{this.isSaving=!1,this.savePromise=null});return this.savePromise=i,i}extractErrorMessage(t){if(t.json){if("string"==typeof t.json.detail)return t.json.detail;if("string"==typeof t.json.error)return t.json.error;if("string"==typeof t.json.description)return t.json.description}return`Save failed with status ${t.status}.`}showSaveErrorDialog(t){const e=document.createElement("temba-dialog");e.header="Save Failed",e.primaryButtonName="",e.cancelButtonName="Dismiss";const i=document.createElement("div");i.style.cssText="padding: 20px; font-size: 14px; line-height: 1.5;",i.textContent=t,e.appendChild(i),document.body.appendChild(e),e.open=!0,e.addEventListener("temba-dialog-hidden",()=>{document.body.removeChild(e)})}startActivityFetching(){this.simulatorActive||this.fetchActivityData()}stopActivityFetching(){null!==this.activityTimer&&(clearTimeout(this.activityTimer),this.activityTimer=null)}fetchActivityData(){var t;if(!(null===(t=this.definition)||void 0===t?void 0:t.uuid))return;if(this.simulatorActive)return;const e=`/flow/activity/${this.definition.uuid}/`,i=Qc();if(!i)return;i.getState().fetchActivity(e).then(()=>{this.isConnected&&(this.activityInterval=Math.min(3e5,this.activityInterval+100),null!==this.activityTimer&&clearTimeout(this.activityTimer),this.activityTimer=window.setTimeout(()=>{this.fetchActivityData()},this.activityInterval))})}handleLanguageChange(t){zd.getState().setLanguageCode(t)}getAvailableLanguages(){var t,e,i;return(null===(t=this.workspace)||void 0===t?void 0:t.languages)&&this.workspace.languages.length>0?this.workspace.languages.map(t=>({code:t,name:$c(t)})).filter(t=>t.code&&t.name):(null===(i=null===(e=this.definition)||void 0===e?void 0:e._ui)||void 0===i?void 0:i.languages)&&this.definition._ui.languages.length>0?this.definition._ui.languages.map(t=>{const e="string"==typeof t?t:t.iso||t.code;return{code:e,name:$c(e)}}):[]}getLocalizationLanguages(){if(!this.definition)return[];const t=this.definition.language;return this.getAvailableLanguages().filter(e=>e.code!==t)}getLocalizationProgress(t){return Um(this.definition,t).reduce((t,e)=>(e.translations.forEach(e=>{t.total+=1,e.to&&e.to.trim().length>0&&(t.localized+=1)}),t),{total:0,localized:0})}hasAnyNodeWithLocalizeCategories(){var t,e;return!!(null===(e=null===(t=this.definition)||void 0===t?void 0:t._ui)||void 0===e?void 0:e.nodes)&&Object.values(this.definition._ui.nodes).some(t=>{var e;return null===(e=null==t?void 0:t.config)||void 0===e?void 0:e.localizeCategories})}handleAutoTranslateClick(){if(this.viewingRevision)return;const t=this.querySelector("temba-auto-translate");null==t||t.start()}handleAutoTranslateChanged(t){var e;this.autoTranslating=!!(null===(e=t.detail)||void 0===e?void 0:e.running)}disconnectedCallback(){var t;super.disconnectedCallback(),this.zoomManager.teardownLoupe(),null===(t=Qc())||void 0===t||t.getState().setFlushSave(null),this.dragManager.teardownListeners(),window.removeEventListener("beforeunload",this.boundBeforeUnload);const e=document.querySelector("temba-store");(null==e?void 0:e.markClean)&&e.markClean(this.dirtyAdapter),null!==this.saveTimer&&(clearTimeout(this.saveTimer),this.saveTimer=null),null!==this.activityTimer&&(clearTimeout(this.activityTimer),this.activityTimer=null),this.pendingTimer.clearTimer(),window.removeEventListener("resize",this.boundWindowResize);const i=this.querySelector("#canvas");i&&i.removeEventListener("contextmenu",this.boundCanvasContextMenu);const o=this.querySelector("#editor");o&&o.removeEventListener("wheel",this.boundWheel),this.savePromise?this.savePromise.then(()=>zd.getState().clearFlowData()):zd.getState().clearFlowData()}setupGlobalEventListeners(){this.dragManager.setupListeners(),window.addEventListener("resize",this.boundWindowResize);const t=this.querySelector("#canvas");t&&t.addEventListener("contextmenu",this.boundCanvasContextMenu);const e=this.querySelector("#editor");e&&e.addEventListener("wheel",this.boundWheel,{passive:!1}),this.addEventListener(Fo.ActionEditRequested,this.handleActionEditRequested.bind(this)),this.addEventListener(Fo.AddActionRequested,this.handleAddActionRequested.bind(this)),this.addEventListener(Fo.NodeEditRequested,this.handleNodeEditRequested.bind(this)),this.addEventListener(Fo.NodeDeleted,this.handleNodeDeleted.bind(this)),this.addEventListener(Fo.StickyNoteDeleted,t=>{var e;const i=null===(e=t.detail)||void 0===e?void 0:e.uuid;i&&Qc().getState().removeStickyNotes([i])}),this.addEventListener(Fo.Selection,t=>{const e=t.target;"TEMBA-CANVAS-MENU"===e.tagName?this.handleCanvasMenuSelection(t):"TEMBA-NODE-TYPE-SELECTOR"===e.tagName&&this.handleNodeTypeSelection(t)}),this.addEventListener(Fo.Canceled,t=>{const e=t.target;"TEMBA-CANVAS-MENU"===e.tagName?this.handleCanvasMenuClosed():"TEMBA-NODE-TYPE-SELECTOR"===e.tagName&&this.handleNodeTypeSelectorClosed()}),this.addEventListener(Fo.DragExternal,this.handleActionDragExternal.bind(this)),this.addEventListener(Fo.DragInternal,this.handleActionDragInternal.bind(this)),this.addEventListener(Fo.DragStop,t=>{t.detail.isExternal&&this.handleActionDropExternal(t)}),this.addEventListener(Fo.SizeChanged,t=>{const{uuid:e}=t.detail;e&&requestAnimationFrame(()=>{this.checkCollisionsAndReflow([e])})})}openFlowSearch(){if(this.viewingRevision)return;if(this.zoomManager.isDialogOrMenuOpen())return;const t=this.querySelector("temba-flow-search");t&&(t.definition=this.definition,t.languageCode=this.languageCode||"",t.scope=this.showMessageTable?"table":"flow",t.includeCategories=this.isTranslating&&this.hasAnyNodeWithLocalizeCategories(),t.show())}closeFlowSearch(){const t=this.querySelector("temba-flow-search");(null==t?void 0:t.open)&&t.hide()}handleKeyDown(t){var e,i;if("Shift"===t.key&&this.isActionExternalDrag&&!this.actionDragIsCopy&&(this.actionDragIsCopy=!0,this.showActionOriginal(!0),(null===(e=this.actionDragLastDetail)||void 0===e?void 0:e.isLastAction)&&this.reprocessActionDrag(),this.requestUpdate()),(t.metaKey||t.ctrlKey)&&"f"===t.key)return t.preventDefault(),void this.openFlowSearch();const o=this.querySelector("temba-flow-search");if(!(null==o?void 0:o.open)){if("Delete"===t.key||"Backspace"===t.key){if(null===(i=this.deleteDialog)||void 0===i?void 0:i.open)return this.deleteSelectedItems(),void(this.deleteDialog.open=!1);this.selectedItems.size>0&&this.showDeleteConfirmation()}"Escape"===t.key&&(this.selectedItems.clear(),this.requestUpdate())}}handleKeyUp(t){var e;"Shift"===t.key&&this.isActionExternalDrag&&this.actionDragIsCopy&&(this.actionDragIsCopy=!1,this.showActionOriginal(!1),(null===(e=this.actionDragLastDetail)||void 0===e?void 0:e.isLastAction)&&this.reprocessActionDrag(),this.requestUpdate())}handleWindowBlur(){var t;this.isActionExternalDrag&&this.actionDragIsCopy&&(this.actionDragIsCopy=!1,this.showActionOriginal(!1),(null===(t=this.actionDragLastDetail)||void 0===t?void 0:t.isLastAction)&&this.reprocessActionDrag(),this.requestUpdate())}getFlowSettings(){try{return JSON.parse($e("flow-settings")||"{}")}catch(t){return{}}}saveFlowSetting(t,e){if(!this.flow)return;const i=this.getFlowSettings();delete i[this.flow],i[this.flow]={...i[this.flow]||{},[t]:e};const o=Object.keys(i);if(o.length>og.MAX_FLOW_SETTINGS)for(const t of o.slice(0,o.length-og.MAX_FLOW_SETTINGS))delete i[t];Ae("flow-settings",JSON.stringify(i))}getFlowSetting(t){var e;if(this.flow)return null===(e=this.getFlowSettings()[this.flow])||void 0===e?void 0:e[t]}showDeleteConfirmation(){var t;const e=this.selectedItems.size,i=1===e?"item":"items";if(null===(t=this.deleteDialog)||void 0===t?void 0:t.open)return;const o=document.createElement("temba-dialog");o.header="Delete Items",o.primaryButtonName="Delete",o.cancelButtonName="Cancel",o.destructive=!0,o.innerHTML=`<div style="padding: 20px;">Are you sure you want to delete ${e} ${i}?</div>`,o.addEventListener("temba-button-clicked",t=>{"Delete"===t.detail.button.name&&(this.deleteSelectedItems(),o.open=!1)}),document.body.appendChild(o),o.open=!0,this.deleteDialog=o,o.addEventListener("temba-dialog-hidden",()=>{document.body.removeChild(o),this.deleteDialog=null})}performReflow(){var t,e;if(!this.definition||0===this.definition.nodes.length)return;this.capturePositionsOnce();const i=(null===(t=this.definition._ui)||void 0===t?void 0:t.stickies)||{},o={};for(const t of this.definition.nodes){const i=null===(e=this.definition._ui)||void 0===e?void 0:e.nodes[t.uuid];(null==i?void 0:i.position)&&(o[t.uuid]={...i.position})}const n=this.definition.nodes[0].uuid,s=new Map,r=Wm(this.definition.nodes,this.definition._ui.nodes,n,t=>{const e=this.querySelector(`[id="${t}"]`);if(e){const i={width:e.offsetWidth,height:e.offsetHeight};return s.set(t,i),i}const i={width:200,height:100};return s.set(t,i),i});if(Object.keys(i).length>0){const t=new Map;for(const e of Object.keys(i)){const o=this.querySelector(`temba-sticky-note[uuid="${e}"]`);if(o)t.set(e,{width:o.offsetWidth,height:o.offsetHeight});else{const o=i[e];t.set(e,{width:o.width||200,height:o.height||100})}}const e=function(t,e,i,o,n,s){const r={},a=Object.keys(i);if(0===a.length)return r;const l=new Map,d=new Map;for(const[i,o]of Object.entries(t)){if(!o.position)continue;const t=o.position.left,n=o.position.top;let s=a[0],r=1/0;for(const i of a){const o=e[i];if(!o)continue;const a=t-o.left,l=n-o.top,d=a*a+l*l;d<r&&(r=d,s=i)}l.set(i,s);const c=e[s],h=!!c&&t<c.left,u=d.get(s)||[];u.push({uuid:i,wasLeft:h}),d.set(s,u)}const c=[];for(const t of a){const e=i[t],n=o.get(t)||{width:200,height:100};c.push({left:e.left,top:e.top,width:n.width,height:n.height})}for(const[t,e]of d){const a=i[t];if(!a)continue;const l=o.get(t)||{width:200};for(const{uuid:i,wasLeft:o}of e){const e=n.get(i)||{width:182,height:100};let d;d=t===s&&o||!o?a.left+l.width+Hm:a.left-e.width-Hm;let h=a.top;d=Mc(Math.max(0,d)),h=Mc(Math.max(0,h));let u=50;for(;u-- >0&&Zm(d,h,e.width,e.height,c);)h=Mc(h+Hm);r[i]={left:d,top:h},c.push({left:d,top:h,width:e.width,height:e.height})}}return r}(i,o,r,s,t,n);Object.assign(r,e)}null!==this.saveTimer&&(clearTimeout(this.saveTimer),this.saveTimer=null),this.pendingTimer.pending=!0,Qc().getState().updateCanvasPositions(r),this.updateCanvasSize(),requestAnimationFrame(()=>{this.plumber.repaintEverything()});const a=this.querySelector("#editor");a&&a.scrollTo({left:0,top:0,behavior:"smooth"}),this.pendingTimer.start()}handlePendingDiscard(){this.pendingTimer.dismiss();if(this.copiedItemUuids.length>0||this.pendingPositions){if(null!==this.saveTimer&&(clearTimeout(this.saveTimer),this.saveTimer=null),this.copiedItemUuids.length>0){const t=this.copiedItemUuids.filter(t=>this.definition.nodes.some(e=>e.uuid===t)),e=this.copiedItemUuids.filter(t=>{var e,i;return null===(i=null===(e=this.definition._ui)||void 0===e?void 0:e.stickies)||void 0===i?void 0:i[t]});this.pendingTimer.pending=!0,t.length>0&&Qc().getState().removeNodes(t),e.length>0&&(this.pendingTimer.pending=!0,Qc().getState().removeStickyNotes(e)),this.copiedItemUuids=[]}this.pendingPositions&&(this.pendingTimer.pending=!0,Qc().getState().updateCanvasPositions(this.pendingPositions),this.pendingPositions=null),setTimeout(()=>{Qc().getState().setDirtyDate(null),this.isSaving=!1},0),requestAnimationFrame(()=>{this.plumber.repaintEverything()})}}renderPendingCard(){if(!this.pendingTimer.unsaved)return"";const t=`pc-${this.pendingTimer.resetCount}`;return W`<div class="reflow-card">
|
|
10858
10855
|
<div class="reflow-top">
|
|
10859
10856
|
<span class="reflow-label">${this.pendingTimer.label}</span>
|
|
10860
10857
|
<button class="reflow-discard" @click=${this.handlePendingDiscard}>
|
|
@@ -10874,7 +10871,7 @@ background: #ccc;
|
|
|
10874
10871
|
}
|
|
10875
10872
|
}
|
|
10876
10873
|
</style>
|
|
10877
|
-
</div>`}deleteNodes(t){t.length>0&&Qc().getState().removeNodes(t)}deleteSelectedItems(){const t=Array.from(this.selectedItems).filter(t=>this.definition.nodes.some(e=>e.uuid===t));this.deleteNodes(Array.from(t));const e=Array.from(this.selectedItems).filter(t=>{var e,i;return null===(i=null===(e=this.definition._ui)||void 0===e?void 0:e.stickies)||void 0===i?void 0:i[t]});Qc().getState().removeStickyNotes(e),this.selectedItems.clear()}renderCanvasDropPreview(){var t;if(!this.canvasDropPreview)return"";const{action:e,position:i}=this.canvasDropPreview,o=
|
|
10874
|
+
</div>`}deleteNodes(t){t.length>0&&Qc().getState().removeNodes(t)}deleteSelectedItems(){const t=Array.from(this.selectedItems).filter(t=>this.definition.nodes.some(e=>e.uuid===t));this.deleteNodes(Array.from(t));const e=Array.from(this.selectedItems).filter(t=>{var e,i;return null===(i=null===(e=this.definition._ui)||void 0===e?void 0:e.stickies)||void 0===i?void 0:i[t]});Qc().getState().removeStickyNotes(e),this.selectedItems.clear()}renderCanvasDropPreview(){var t;if(!this.canvasDropPreview)return"";const{action:e,position:i}=this.canvasDropPreview,o=Om[e.type];return o?W`<div
|
|
10878
10875
|
class="canvas-drop-preview"
|
|
10879
10876
|
style="position: absolute; left: ${i.left}px; top: ${i.top}px; opacity: 0.6; pointer-events: none; z-index: 10000;"
|
|
10880
10877
|
>
|
|
@@ -10886,7 +10883,7 @@ background: #ccc;
|
|
|
10886
10883
|
<div class="action-content">
|
|
10887
10884
|
<div
|
|
10888
10885
|
class="cn-title"
|
|
10889
|
-
style="background: ${o.group?null===(t=
|
|
10886
|
+
style="background: ${o.group?null===(t=vp[o.group])||void 0===t?void 0:t.color:"#aaaaaa"}"
|
|
10890
10887
|
>
|
|
10891
10888
|
<div class="title-spacer"></div>
|
|
10892
10889
|
<div class="name">${o.name}</div>
|
|
@@ -10903,7 +10900,7 @@ background: #ccc;
|
|
|
10903
10900
|
</div>
|
|
10904
10901
|
</div>
|
|
10905
10902
|
</div>
|
|
10906
|
-
</div>`:""}renderConnectionPlaceholder(){if(!this.connectionPlaceholder||!this.connectionPlaceholder.visible)return"";const{position:t,dragUp:e}=this.connectionPlaceholder;let i=null;if(this.sourceId&&this.dragFromNodeId&&this.pendingCanvasConnection&&null!=this.connectionSourceX&&null!=this.connectionSourceY){const o=this.connectionSourceX,n=this.connectionSourceY,s=t.left+100,r=e?t.top+64:t.top,a=
|
|
10903
|
+
</div>`:""}renderConnectionPlaceholder(){if(!this.connectionPlaceholder||!this.connectionPlaceholder.visible)return"";const{position:t,dragUp:e}=this.connectionPlaceholder;let i=null;if(this.sourceId&&this.dragFromNodeId&&this.pendingCanvasConnection&&null!=this.connectionSourceX&&null!=this.connectionSourceY){const o=this.connectionSourceX,n=this.connectionSourceY,s=t.left+100,r=e?t.top+64:t.top,a=Km(o,n,s,r,20,e?0:10,5,e?s<o?"left":"right":"top"),l=6.5,d=13;let c;c=e?`${s},${r-d} ${s-l},${r} ${s+l},${r}`:`${s},${r} ${s-l},${r-d} ${s+l},${r-d}`,i=W`
|
|
10907
10904
|
<svg
|
|
10908
10905
|
style="position: absolute; left: 0; top: 0; width: 100%; height: 100%; pointer-events: none; z-index: 9999;"
|
|
10909
10906
|
>
|
|
@@ -10934,7 +10931,7 @@ background: #ccc;
|
|
|
10934
10931
|
</div>
|
|
10935
10932
|
</div>
|
|
10936
10933
|
</div>
|
|
10937
|
-
</div>`}checkCollisionsAndReflow(t=[]){var e,i;if(!this.definition)return;const o=[];for(const t of this.definition.nodes){const i=null===(e=this.definition._ui)||void 0===e?void 0:e.nodes[t.uuid];if(!(null==i?void 0:i.position))continue;const n=Wc(t.uuid,i.position);n&&o.push(n)}const n=(null===(i=this.definition._ui)||void 0===i?void 0:i.stickies)||{};for(const[t,e]of Object.entries(n)){if(!e.position)continue;const i=this.querySelector(`temba-sticky-note[uuid="${t}"]`);if(!i)continue;const n=Wc(t,e.position,i);n&&o.push(n)}const s=((t,e)=>{const i=new Map,o=new Set(t),n=new Map;for(const t of e)n.set(t.uuid,{...t});for(const t of[...o]){const e=n.get(t);if(e)for(const[i,s]of n)if(i!==t&&!o.has(i)&&Vc(e,s)&&e.top>s.top&&s.top<30){o.delete(t),o.add(i);break}}const s=[],r=new Set;for(const t of o){const e=n.get(t);if(e)for(const[t,i]of n)o.has(t)||r.has(t)||Vc(e,i)&&(s.push(t),r.add(t))}const a=new Set;let l=0;for(;s.length>0&&l<200;){l++;const t=s.shift();if(a.has(t))continue;const e=n.get(t),d=[];for(const[i,s]of n)i!==t&&(o.has(i)||a.has(i))&&Vc(e,s)&&d.push(s);if(0===d.length)continue;const c=d.filter(t=>o.has(t.uuid)),h=[...Zc];let u=null;if(c.length>0){for(const t of c){if(e.top>t.top){const t=h.indexOf("up");-1!==t&&h.splice(t,1)}if(e.left>t.left){const t=h.indexOf("left");-1!==t&&h.splice(t,1)}}let t=0,i=0;for(const o of c)t+=Math.min(e.right,o.right)-Math.max(e.left,o.left),i+=Math.min(e.bottom,o.bottom)-Math.max(e.top,o.top);t>i?u="vertical":i>t&&(u="horizontal")}let p=null,m=1/0;for(const i of h){const s=Kc(e,d,i);if(!s)continue;const r=Yc(e,s.left,s.top);let l=!1,h=0;for(const[e,i]of n)if(e!==t&&Vc(r,i)){if(o.has(e)||a.has(e)){l=!0;break}h++}if(l)continue;const g=Math.abs(s.left-e.left)+Math.abs(s.top-e.top);let f;if(c.length>0){const t="up"===i||"down"===i;f=2e3*h+(null===u||"vertical"===u&&t||"horizontal"===u&&!t?0:5e3)+g}else f=1e4*h+g;f<m&&(m=f,p=s)}if(p){i.set(t,{left:p.left,top:p.top});const l=Yc(e,p.left,p.top);n.set(t,l),a.add(t);for(const[e,i]of n)e!==t&&(o.has(e)||a.has(e)||r.has(e)||Vc(l,i)&&(s.push(e),r.add(e)))}}return i})(t,o);if(s.size>0){const t={};for(const[e,i]of s.entries())t[e]=i;Qc().getState().updateCanvasPositions(t)}}findTargetNodeAt(t,e){var i;const o=document.elementFromPoint(t,e);return null!==(i=null==o?void 0:o.closest("temba-flow-node"))&&void 0!==i?i:null}updateCanvasSize(){var t;if(!this.definition)return;const e=Qc();if(!e)return;let i=0,o=0;this.definition.nodes.forEach(t=>{const e=this.definition._ui.nodes[t.uuid];if(e&&e.position){const n=this.querySelector(`[id="${t.uuid}"]`);n&&(i=Math.max(i,e.position.left+n.offsetWidth),o=Math.max(o,e.position.top+n.offsetHeight))}});const n=(null===(t=this.definition._ui)||void 0===t?void 0:t.stickies)||{};Object.entries(n).forEach(([t,e])=>{if(e.position){const n=this.querySelector(`temba-sticky-note[uuid="${t}"]`);if(n){const t=n.clientWidth,s=n.clientHeight;i=Math.max(i,e.position.left+t),o=Math.max(o,e.position.top+s)}else i=Math.max(i,e.position.left+(e.width||200)),o=Math.max(o,e.position.top+(e.height||100))}}),e.getState().expandCanvas(i,o)}handleCanvasContextMenu(t){if(this.isReadOnly())return void t.preventDefault();"canvas"===t.target.id&&(t.preventDefault(),t.stopPropagation(),this.dragManager.blurActiveContentEditable(),this.showContextMenuAt(t.clientX,t.clientY))}showContextMenuAt(t,e){if(this.isReadOnly())return;const i=this.querySelector("#canvas");if(!i)return;const o=i.getBoundingClientRect(),n=(t-o.left)/this.zoom-10,s=(e-o.top)/this.zoom-10,r=Mc(n),a=Mc(s),l=this.querySelector("temba-canvas-menu");if(l){const i=this.definition&&this.definition.nodes.length>0;l.show(t,e,{x:r,y:a},!0,i,up[this.flowType])}}handleEmptyFlowClick(t){const e=this.querySelector("#editor");if(!e)return;e.scrollTo({left:0,top:0,behavior:"smooth"});const i=this.querySelector("temba-canvas-menu");if(i){const e=t.currentTarget.getBoundingClientRect(),o=265,n=e.left+e.width/2-o/2,s=e.bottom+8;i.show(n,s,{x:0,y:0},!1,!1,up[this.flowType])}}handleCanvasMenuSelection(t){const e=t.detail,i=Qc();if("reflow"!==e.action)if("sticky"===e.action){const t=i.getState().createStickyNote({left:e.position.x,top:e.position.y});requestAnimationFrame(()=>{this.checkCollisionsAndReflow([t])}),this.pendingCanvasConnection=null,this.connectionPlaceholder=null,this.sourceId=null,this.connectionSourceX=null,this.connectionSourceY=null,this.dragFromNodeId=null}else if("other"===e.action){const t=this.querySelector("temba-node-type-selector");t&&t.show("all",e.position)}else this.handleNodeTypeSelection(new CustomEvent(Fo.Selection,{detail:{nodeType:e.action,position:e.position}}));else this.performReflow()}cleanUpConnection(){this.isCreatingNewNode&&(this.isCreatingNewNode=!1,this.pendingNodePosition=null),this.originalConnectionTargetId&&(this.plumber.connectIds(this.dragFromNodeId,this.sourceId,this.originalConnectionTargetId),this.originalConnectionTargetId=null),this.pendingCanvasConnection&&(this.pendingCanvasConnection=null,this.connectionPlaceholder=null,this.sourceId=null,this.connectionSourceX=null,this.connectionSourceY=null,this.dragFromNodeId=null,this.originalConnectionTargetId=null)}handleCanvasMenuClosed(){this.cleanUpConnection()}handleNodeTypeSelectorClosed(){this.addActionToNodeUuid=null,this.cleanUpConnection()}handleNodeTypeSelection(t){const e=t.detail;if(this.pendingCanvasConnection,this.addActionToNodeUuid){const t=this.definition.nodes.find(t=>t.uuid===this.addActionToNodeUuid),i=this.definition._ui.nodes[this.addActionToNodeUuid];if(t&&i){const o=Kt();return this.editingAction={uuid:o,type:e.nodeType},this.editingNode=t,this.editingNodeUI=i,this.isCreatingNewNode=!1,void(this.addActionToNodeUuid=null)}this.addActionToNodeUuid=null}const i=Kt(),o=e.nodeType in Lm,n=o?"execute_actions":e.nodeType,s=Rm[n],r=(null==s?void 0:s.form)&&Object.keys(s.form).some(t=>{var e;return["rules","categories","cases"].includes(t)||"array"===(null===(e=s.form[t])||void 0===e?void 0:e.type)}),a={uuid:i,actions:[],exits:r?[]:[{uuid:Kt(),destination_uuid:null}]};r&&(a.router={type:"switch",categories:[],cases:[],operand:"@input.text",default_category_uuid:void 0});const l={position:this.pendingCanvasConnection?this.pendingCanvasConnection.position:{left:e.position.x,top:e.position.y},type:n,config:{}};if(this.isCreatingNewNode=!0,this.pendingNodePosition=this.pendingCanvasConnection?this.pendingCanvasConnection.position:{left:e.position.x,top:e.position.y},this.editingNode=a,this.editingNodeUI=l,o){const t=Kt();this.editingAction={uuid:t,type:e.nodeType}}}handleActionEditRequested(t){this.editingAction=t.detail.action,this.editForceBase=!!t.detail.forceBase,this.dialogOrigin=null!=t.detail.originX?{x:t.detail.originX,y:t.detail.originY}:null;const e=t.detail.nodeUuid,i=this.definition.nodes.find(t=>t.uuid===e);i&&(this.editingNode=i,this.editingNodeUI=this.definition._ui.nodes[e])}handleAddActionRequested(t){const e=t.detail.nodeUuid,i=this.definition.nodes.find(t=>t.uuid===e);if(!i)return;const o=this.definition._ui.nodes[e];if(!o)return;const n=this.querySelector("temba-node-type-selector");n&&(n.show("action-no-branching",{x:o.position.left,y:o.position.top}),this.addActionToNodeUuid=e)}handleNodeEditRequested(t){this.editForceBase=!!t.detail.forceBase,this.editingAction=null,this.editingNode=t.detail.node,this.editingNodeUI=t.detail.nodeUI,this.dialogOrigin=null!=t.detail.originX?{x:t.detail.originX,y:t.detail.originY}:null}handleNodeDeleted(t){const e=t.detail.uuid;e&&this.deleteNodes([e])}handleActionSaved(t){var e,i;if(this.editingNode&&this.editingAction){let o;o=this.editingNode.actions.findIndex(t=>t.uuid===this.editingAction.uuid)>=0?this.editingNode.actions.map(e=>e.uuid===this.editingAction.uuid?t:e):[...this.editingNode.actions,t];const n={...this.editingNode,actions:o};if(this.isCreatingNewNode){const t=Qc(),i={position:this.pendingNodePosition||{left:0,top:0},type:null===(e=this.editingNodeUI)||void 0===e?void 0:e.type,config:{}};t.getState().addNode(n,i),this.pendingCanvasConnection&&(t.getState().updateConnection(this.pendingCanvasConnection.fromNodeId,this.pendingCanvasConnection.exitId,n.uuid),this.pendingCanvasConnection=null,this.connectionPlaceholder=null,this.sourceId=null,this.connectionSourceX=null,this.connectionSourceY=null,this.dragFromNodeId=null),this.isCreatingNewNode=!1,this.pendingNodePosition=null,requestAnimationFrame(()=>{this.checkCollisionsAndReflow([n.uuid])})}else{const t=this.editingNode.uuid;null===(i=Qc())||void 0===i||i.getState().updateNode(t,n),requestAnimationFrame(()=>{this.checkCollisionsAndReflow([t])})}}this.closeNodeEditor()}closeNodeEditor(){this.editingNode=null,this.editingNodeUI=null,this.editingAction=null,this.dialogOrigin=null,this.editForceBase=!1}handleActionEditCanceled(){this.cleanUpConnection(),this.closeNodeEditor()}handleNodeSaved(t,e){var i,o,n;if(this.editingNode)if(this.isCreatingNewNode){const o=Qc(),n={position:this.pendingNodePosition||{left:0,top:0},type:null===(i=this.editingNodeUI)||void 0===i?void 0:i.type,config:e||{}};o.getState().addNode(t,n),this.pendingCanvasConnection&&(o.getState().updateConnection(this.pendingCanvasConnection.fromNodeId,this.pendingCanvasConnection.exitId,t.uuid),this.pendingCanvasConnection=null,this.connectionPlaceholder=null,this.sourceId=null,this.connectionSourceX=null,this.connectionSourceY=null,this.dragFromNodeId=null),this.isCreatingNewNode=!1,this.pendingNodePosition=null,requestAnimationFrame(()=>{this.checkCollisionsAndReflow([t.uuid])})}else{if(this.plumber){const e=this.editingNode.exits||[],i=t.exits||[];e.filter(t=>!i.find(e=>e.uuid===t.uuid)).forEach(t=>{this.plumber.removeExitConnection(t.uuid)})}this.plumber.revalidate([t.uuid]),null===(o=Qc())||void 0===o||o.getState().updateNode(this.editingNode.uuid,t),e&&(null===(n=Qc())||void 0===n||n.getState().updateNodeUIConfig(t.uuid,e));const i=t.uuid;requestAnimationFrame(()=>{this.checkCollisionsAndReflow([i])})}this.closeNodeEditor()}handleNodeEditCanceled(){this.cleanUpConnection(),this.closeNodeEditor()}getNodeAtPosition(t,e){const i=this.querySelectorAll("temba-flow-node");for(const o of Array.from(i)){const i=o.getBoundingClientRect();if(t>=i.left&&t<=i.right&&e>=i.top&&e<=i.bottom)return o.getAttribute("data-node-uuid")}return null}calculateCanvasDropPosition(t,e,i=!0){const o=this.querySelector("#canvas");if(!o)return{left:0,top:0};const n=o.getBoundingClientRect(),s=(t-n.left)/this.zoom-20,r=(e-n.top)/this.zoom-20;return i?{left:Mc(s),top:Mc(r)}:{left:s,top:r}}handleActionDragExternal(t){var e,i,o;const{action:n,nodeUuid:s,actionIndex:r,mouseX:a,mouseY:l,actionHeight:d=60,isLastAction:c=!1}=t.detail,h=!this.isActionExternalDrag;if(this.isActionExternalDrag=!0,this.actionDragLastDetail={action:n,nodeUuid:s,actionIndex:r,mouseX:a,mouseY:l,actionHeight:d,isLastAction:c},h){null!==(i=null===(e=this.querySelector("#canvas"))||void 0===e?void 0:e.classList.contains("shift-held"))&&void 0!==i&&i?(this.actionDragIsCopy=!0,this.showActionOriginal(!0)):null===(o=this.querySelector("#drag-hint"))||void 0===o||o.classList.add("visible")}const u=this.getNodeAtPosition(a,l);if(u&&u!==s){const t=this.definition._ui.nodes[u],e=this.definition.nodes.find(t=>t.uuid===u);if("execute_actions"===(null==t?void 0:t.type)&&e){if(this.previousActionDragTargetNodeUuid&&this.previousActionDragTargetNodeUuid!==u){const t=this.querySelector(`temba-flow-node[data-node-uuid="${this.previousActionDragTargetNodeUuid}"]`);t&&t.dispatchEvent(new CustomEvent("action-drag-leave",{detail:{},bubbles:!1}))}this.actionDragTargetNodeUuid=u,this.previousActionDragTargetNodeUuid=u,this.canvasDropPreview=null;const t=this.querySelector(`temba-flow-node[data-node-uuid="${s}"]`);t&&t.dispatchEvent(new CustomEvent("action-show-ghost",{detail:{},bubbles:!1}));const e=this.querySelector(`temba-flow-node[data-node-uuid="${u}"]`);return e&&e.dispatchEvent(new CustomEvent("action-drag-over",{detail:{action:n,sourceNodeUuid:s,actionIndex:r,mouseX:a,mouseY:l,actionHeight:d},bubbles:!1})),void this.requestUpdate()}}if(this.previousActionDragTargetNodeUuid){const t=this.querySelector(`temba-flow-node[data-node-uuid="${this.previousActionDragTargetNodeUuid}"]`);t&&t.dispatchEvent(new CustomEvent("action-drag-leave",{detail:{},bubbles:!1})),this.previousActionDragTargetNodeUuid=null}this.actionDragTargetNodeUuid=null;const p=this.querySelector(`temba-flow-node[data-node-uuid="${s}"]`);if(!c||this.actionDragIsCopy){p&&p.dispatchEvent(new CustomEvent("action-hide-ghost",{detail:{},bubbles:!1}));const t=this.calculateCanvasDropPosition(a,l,!1);this.canvasDropPreview={action:n,nodeUuid:s,actionIndex:r,position:t,actionHeight:d}}else p&&p.dispatchEvent(new CustomEvent("action-show-ghost",{detail:{},bubbles:!1})),this.canvasDropPreview=null;this.requestUpdate()}handleActionDragInternal(t){var e;if(this.previousActionDragTargetNodeUuid){const t=this.querySelector(`temba-flow-node[data-node-uuid="${this.previousActionDragTargetNodeUuid}"]`);t&&t.dispatchEvent(new CustomEvent("action-drag-leave",{detail:{},bubbles:!1})),this.previousActionDragTargetNodeUuid=null}this.canvasDropPreview=null,this.actionDragTargetNodeUuid=null,this.isActionExternalDrag=!1,this.actionDragIsCopy=!1,null===(e=this.querySelector("#drag-hint"))||void 0===e||e.classList.remove("visible"),this.actionDragLastDetail=null}showActionOriginal(t){if(!this.actionDragLastDetail)return;const e=this.querySelector(`temba-flow-node[data-node-uuid="${this.actionDragLastDetail.nodeUuid}"]`);e&&e.dispatchEvent(new CustomEvent(t?"action-show-original":"action-hide-original",{detail:{},bubbles:!1}))}reprocessActionDrag(){if(!this.actionDragLastDetail)return;const{action:t,nodeUuid:e,actionIndex:i,mouseX:o,mouseY:n,actionHeight:s}=this.actionDragLastDetail,r=this.querySelector(`temba-flow-node[data-node-uuid="${e}"]`);if(!this.actionDragTargetNodeUuid)if(this.actionDragIsCopy){r&&r.dispatchEvent(new CustomEvent("action-hide-ghost",{detail:{},bubbles:!1}));const a=this.calculateCanvasDropPosition(o,n,!1);this.canvasDropPreview={action:t,nodeUuid:e,actionIndex:i,position:a,actionHeight:s}}else r&&r.dispatchEvent(new CustomEvent("action-show-ghost",{detail:{},bubbles:!1})),this.canvasDropPreview=null}handleActionDropExternal(t){var e,i,o;const{action:n,nodeUuid:s,actionIndex:r,mouseX:a,mouseY:l,isLastAction:d=!1}=t.detail,c=this.actionDragIsCopy;this.isActionExternalDrag=!1,this.actionDragIsCopy=!1,this.actionDragLastDetail=null,this.previousActionDragTargetNodeUuid=null,null===(e=this.querySelector("#drag-hint"))||void 0===e||e.classList.remove("visible");const h=this.actionDragTargetNodeUuid;if(h&&h!==s){const t=this.querySelector(`temba-flow-node[data-node-uuid="${h}"]`);return t&&t.dispatchEvent(new CustomEvent("action-drop",{detail:{action:n,sourceNodeUuid:s,actionIndex:r,mouseX:a,mouseY:l,isCopy:c},bubbles:!1})),this.canvasDropPreview=null,void(this.actionDragTargetNodeUuid=null)}if(d&&!c)return this.canvasDropPreview=null,void(this.actionDragTargetNodeUuid=null);const u=this.calculateCanvasDropPosition(a,l,!0);if(!c){const t=this.definition.nodes.find(t=>t.uuid===s);if(!t)return;const e=t.actions.filter((t,e)=>e!==r);if(0===e.length)this.deleteNodes([s]);else{const o={...t,actions:e};null===(i=Qc())||void 0===i||i.getState().updateNode(s,o)}}const p=c?{...n,uuid:Kt()}:n,m={uuid:Kt(),actions:[p],exits:[{uuid:Kt(),destination_uuid:null}]},g={position:u,type:"execute_actions",config:{}};null===(o=Qc())||void 0===o||o.getState().addNode(m,g),c&&this.copyActionLocalizations(n.uuid,p.uuid),this.canvasDropPreview=null,this.actionDragTargetNodeUuid=null,requestAnimationFrame(()=>{this.checkCollisionsAndReflow([m.uuid])})}copyActionLocalizations(t,e){var i,o,n;const s=null===(i=this.definition)||void 0===i?void 0:i.localization;if(!s)return;const r=null===(o=Qc())||void 0===o?void 0:o.getState();if(r)for(const i of Object.keys(s)){const o=null===(n=s[i])||void 0===n?void 0:n[t];o&&r.updateLocalization(i,e,JSON.parse(JSON.stringify(o)))}}closeOpenWindows(){var t;if(this.issuesWindowHidden||(this.issuesWindowHidden=!0),this.revisionsWindowHidden||(null===(t=this.getRevisionsWindow())||void 0===t||t.close(),this.revisionsWindowHidden=!0),this.simulatorActive){const t=document.querySelector("temba-simulator");null==t||t.handleClose()}}closeFloatingWindows(){var t;this.issuesWindowHidden||(this.issuesWindowHidden=!0),this.revisionsWindowHidden||(null===(t=this.getRevisionsWindow())||void 0===t||t.close(),this.revisionsWindowHidden=!0)}getRevisionsWindow(){return this.querySelector("temba-revisions-window")}handleIssuesTabClick(){this.issuesWindowHidden?(this.closeOpenWindows(),this.issuesWindowHidden=!1):this.issuesWindowHidden=!0}handleIssueSelected(t){var e;const{issue:i}=t.detail;this.issuesWindowHidden=!0,this.focusNode(i.node_uuid);const o=this.definition.nodes.find(t=>t.uuid===i.node_uuid);if(o)if(i.action_uuid){const t=null===(e=o.actions)||void 0===e?void 0:e.find(t=>t.uuid===i.action_uuid);t&&(this.editingAction=t,this.editingNode=o,this.editingNodeUI=this.definition._ui.nodes[i.node_uuid])}else this.editingNode=o,this.editingNodeUI=this.definition._ui.nodes[i.node_uuid]}handleRevisionViewed(){var t;this.viewingRevision=!0,this.closeFlowSearch(),null===(t=this.plumber)||void 0===t||t.reset()}handleRevisionCancelled(){var t;this.viewingRevision=!1,null===(t=this.plumber)||void 0===t||t.reset()}handleRevisionsClosed(){this.viewingRevision=!1,this.revisionsWindowHidden=!0}async handleRevisionReverted(t){var e;const{definition:i,languageCode:o}=t.detail;this.viewingRevision=!1,this.revisionsWindowHidden=!0,null===(e=this.plumber)||void 0===e||e.reset(),await this.saveChanges(i),Qc().getState().fetchRevision(`/flow/revisions/${this.flow}`).finally(()=>{o&&this.handleLanguageChange(o)})}renderToolbarElement(){var t,e,i,o;const n=this.getLocalizationLanguages(),s=this.getAvailableLanguages(),r=null===(t=this.definition)||void 0===t?void 0:t.language,a=(null===(e=s.find(t=>t.code===r))||void 0===e?void 0:e.name)||(r?$c(r):"")||"Primary language",l=!this.languageCode||this.languageCode===r||!n.some(t=>t.code===this.languageCode),d=l?null:n.find(t=>t.code===this.languageCode),c=d||{name:a},h=this.getLocalizationProgress(l?"":this.languageCode),u=Math.round(h.localized/Math.max(h.total,1)*100),p=!this.definition||0===this.definition.nodes.length?[]:[{name:a,value:Nm},...n.map(t=>{const e=this.getLocalizationProgress(t.code),i=Math.round(e.localized/Math.max(e.total,1)*100);return{name:t.name,value:t.code,percent:i}})],m=this.autoTranslateEnabled&&Boolean(d)&&h.total>0&&h.localized<h.total;return W`
|
|
10934
|
+
</div>`}checkCollisionsAndReflow(t=[]){var e,i;if(!this.definition)return;const o=[];for(const t of this.definition.nodes){const i=null===(e=this.definition._ui)||void 0===e?void 0:e.nodes[t.uuid];if(!(null==i?void 0:i.position))continue;const n=Wc(t.uuid,i.position);n&&o.push(n)}const n=(null===(i=this.definition._ui)||void 0===i?void 0:i.stickies)||{};for(const[t,e]of Object.entries(n)){if(!e.position)continue;const i=this.querySelector(`temba-sticky-note[uuid="${t}"]`);if(!i)continue;const n=Wc(t,e.position,i);n&&o.push(n)}const s=((t,e)=>{const i=new Map,o=new Set(t),n=new Map;for(const t of e)n.set(t.uuid,{...t});for(const t of[...o]){const e=n.get(t);if(e)for(const[i,s]of n)if(i!==t&&!o.has(i)&&Vc(e,s)&&e.top>s.top&&s.top<30){o.delete(t),o.add(i);break}}const s=[],r=new Set;for(const t of o){const e=n.get(t);if(e)for(const[t,i]of n)o.has(t)||r.has(t)||Vc(e,i)&&(s.push(t),r.add(t))}const a=new Set;let l=0;for(;s.length>0&&l<200;){l++;const t=s.shift();if(a.has(t))continue;const e=n.get(t),d=[];for(const[i,s]of n)i!==t&&(o.has(i)||a.has(i))&&Vc(e,s)&&d.push(s);if(0===d.length)continue;const c=d.filter(t=>o.has(t.uuid)),h=[...Zc];let u=null;if(c.length>0){for(const t of c){if(e.top>t.top){const t=h.indexOf("up");-1!==t&&h.splice(t,1)}if(e.left>t.left){const t=h.indexOf("left");-1!==t&&h.splice(t,1)}}let t=0,i=0;for(const o of c)t+=Math.min(e.right,o.right)-Math.max(e.left,o.left),i+=Math.min(e.bottom,o.bottom)-Math.max(e.top,o.top);t>i?u="vertical":i>t&&(u="horizontal")}let p=null,m=1/0;for(const i of h){const s=Kc(e,d,i);if(!s)continue;const r=Yc(e,s.left,s.top);let l=!1,h=0;for(const[e,i]of n)if(e!==t&&Vc(r,i)){if(o.has(e)||a.has(e)){l=!0;break}h++}if(l)continue;const g=Math.abs(s.left-e.left)+Math.abs(s.top-e.top);let f;if(c.length>0){const t="up"===i||"down"===i;f=2e3*h+(null===u||"vertical"===u&&t||"horizontal"===u&&!t?0:5e3)+g}else f=1e4*h+g;f<m&&(m=f,p=s)}if(p){i.set(t,{left:p.left,top:p.top});const l=Yc(e,p.left,p.top);n.set(t,l),a.add(t);for(const[e,i]of n)e!==t&&(o.has(e)||a.has(e)||r.has(e)||Vc(l,i)&&(s.push(e),r.add(e)))}}return i})(t,o);if(s.size>0){const t={};for(const[e,i]of s.entries())t[e]=i;Qc().getState().updateCanvasPositions(t)}}findTargetNodeAt(t,e){var i;const o=document.elementFromPoint(t,e);return null!==(i=null==o?void 0:o.closest("temba-flow-node"))&&void 0!==i?i:null}updateCanvasSize(){var t;if(!this.definition)return;const e=Qc();if(!e)return;let i=0,o=0;this.definition.nodes.forEach(t=>{const e=this.definition._ui.nodes[t.uuid];if(e&&e.position){const n=this.querySelector(`[id="${t.uuid}"]`);n&&(i=Math.max(i,e.position.left+n.offsetWidth),o=Math.max(o,e.position.top+n.offsetHeight))}});const n=(null===(t=this.definition._ui)||void 0===t?void 0:t.stickies)||{};Object.entries(n).forEach(([t,e])=>{if(e.position){const n=this.querySelector(`temba-sticky-note[uuid="${t}"]`);if(n){const t=n.clientWidth,s=n.clientHeight;i=Math.max(i,e.position.left+t),o=Math.max(o,e.position.top+s)}else i=Math.max(i,e.position.left+(e.width||200)),o=Math.max(o,e.position.top+(e.height||100))}}),e.getState().expandCanvas(i,o)}handleCanvasContextMenu(t){if(this.isReadOnly())return void t.preventDefault();"canvas"===t.target.id&&(t.preventDefault(),t.stopPropagation(),this.dragManager.blurActiveContentEditable(),this.showContextMenuAt(t.clientX,t.clientY))}showContextMenuAt(t,e){if(this.isReadOnly())return;const i=this.querySelector("#canvas");if(!i)return;const o=i.getBoundingClientRect(),n=(t-o.left)/this.zoom-10,s=(e-o.top)/this.zoom-10,r=Mc(n),a=Mc(s),l=this.querySelector("temba-canvas-menu");if(l){const i=this.definition&&this.definition.nodes.length>0;l.show(t,e,{x:r,y:a},!0,i,up[this.flowType])}}handleEmptyFlowClick(t){const e=this.querySelector("#editor");if(!e)return;e.scrollTo({left:0,top:0,behavior:"smooth"});const i=this.querySelector("temba-canvas-menu");if(i){const e=t.currentTarget.getBoundingClientRect(),o=265,n=e.left+e.width/2-o/2,s=e.bottom+8;i.show(n,s,{x:0,y:0},!1,!1,up[this.flowType])}}handleCanvasMenuSelection(t){const e=t.detail,i=Qc();if("reflow"!==e.action)if("sticky"===e.action){const t=i.getState().createStickyNote({left:e.position.x,top:e.position.y});requestAnimationFrame(()=>{this.checkCollisionsAndReflow([t])}),this.pendingCanvasConnection=null,this.connectionPlaceholder=null,this.sourceId=null,this.connectionSourceX=null,this.connectionSourceY=null,this.dragFromNodeId=null}else if("other"===e.action){const t=this.querySelector("temba-node-type-selector");t&&t.show("all",e.position)}else this.handleNodeTypeSelection(new CustomEvent(Fo.Selection,{detail:{nodeType:e.action,position:e.position}}));else this.performReflow()}cleanUpConnection(){this.isCreatingNewNode&&(this.isCreatingNewNode=!1,this.pendingNodePosition=null),this.originalConnectionTargetId&&(this.plumber.connectIds(this.dragFromNodeId,this.sourceId,this.originalConnectionTargetId),this.originalConnectionTargetId=null),this.pendingCanvasConnection&&(this.pendingCanvasConnection=null,this.connectionPlaceholder=null,this.sourceId=null,this.connectionSourceX=null,this.connectionSourceY=null,this.dragFromNodeId=null,this.originalConnectionTargetId=null)}handleCanvasMenuClosed(){this.cleanUpConnection()}handleNodeTypeSelectorClosed(){this.addActionToNodeUuid=null,this.cleanUpConnection()}handleNodeTypeSelection(t){const e=t.detail;if(this.pendingCanvasConnection,this.addActionToNodeUuid){const t=this.definition.nodes.find(t=>t.uuid===this.addActionToNodeUuid),i=this.definition._ui.nodes[this.addActionToNodeUuid];if(t&&i){const o=Kt();return this.editingAction={uuid:o,type:e.nodeType},this.editingNode=t,this.editingNodeUI=i,this.isCreatingNewNode=!1,void(this.addActionToNodeUuid=null)}this.addActionToNodeUuid=null}const i=Kt(),o=e.nodeType in Om,n=o?"execute_actions":e.nodeType,s=Pm[n],r=(null==s?void 0:s.form)&&Object.keys(s.form).some(t=>{var e;return["rules","categories","cases"].includes(t)||"array"===(null===(e=s.form[t])||void 0===e?void 0:e.type)}),a={uuid:i,actions:[],exits:r?[]:[{uuid:Kt(),destination_uuid:null}]};r&&(a.router={type:"switch",categories:[],cases:[],operand:"@input.text",default_category_uuid:void 0});const l={position:this.pendingCanvasConnection?this.pendingCanvasConnection.position:{left:e.position.x,top:e.position.y},type:n,config:{}};if(this.isCreatingNewNode=!0,this.pendingNodePosition=this.pendingCanvasConnection?this.pendingCanvasConnection.position:{left:e.position.x,top:e.position.y},this.editingNode=a,this.editingNodeUI=l,o){const t=Kt();this.editingAction={uuid:t,type:e.nodeType}}}handleActionEditRequested(t){this.editingAction=t.detail.action,this.editForceBase=!!t.detail.forceBase,this.dialogOrigin=null!=t.detail.originX?{x:t.detail.originX,y:t.detail.originY}:null;const e=t.detail.nodeUuid,i=this.definition.nodes.find(t=>t.uuid===e);i&&(this.editingNode=i,this.editingNodeUI=this.definition._ui.nodes[e])}handleAddActionRequested(t){const e=t.detail.nodeUuid,i=this.definition.nodes.find(t=>t.uuid===e);if(!i)return;const o=this.definition._ui.nodes[e];if(!o)return;const n=this.querySelector("temba-node-type-selector");n&&(n.show("action-no-branching",{x:o.position.left,y:o.position.top}),this.addActionToNodeUuid=e)}handleNodeEditRequested(t){this.editForceBase=!!t.detail.forceBase,this.editingAction=null,this.editingNode=t.detail.node,this.editingNodeUI=t.detail.nodeUI,this.dialogOrigin=null!=t.detail.originX?{x:t.detail.originX,y:t.detail.originY}:null}handleNodeDeleted(t){const e=t.detail.uuid;e&&this.deleteNodes([e])}handleActionSaved(t){var e,i;if(this.editingNode&&this.editingAction){let o;o=this.editingNode.actions.findIndex(t=>t.uuid===this.editingAction.uuid)>=0?this.editingNode.actions.map(e=>e.uuid===this.editingAction.uuid?t:e):[...this.editingNode.actions,t];const n={...this.editingNode,actions:o};if(this.isCreatingNewNode){const t=Qc(),i={position:this.pendingNodePosition||{left:0,top:0},type:null===(e=this.editingNodeUI)||void 0===e?void 0:e.type,config:{}};t.getState().addNode(n,i),this.pendingCanvasConnection&&(t.getState().updateConnection(this.pendingCanvasConnection.fromNodeId,this.pendingCanvasConnection.exitId,n.uuid),this.pendingCanvasConnection=null,this.connectionPlaceholder=null,this.sourceId=null,this.connectionSourceX=null,this.connectionSourceY=null,this.dragFromNodeId=null),this.isCreatingNewNode=!1,this.pendingNodePosition=null,requestAnimationFrame(()=>{this.checkCollisionsAndReflow([n.uuid])})}else{const t=this.editingNode.uuid;null===(i=Qc())||void 0===i||i.getState().updateNode(t,n),requestAnimationFrame(()=>{this.checkCollisionsAndReflow([t])})}}this.closeNodeEditor()}closeNodeEditor(){this.editingNode=null,this.editingNodeUI=null,this.editingAction=null,this.dialogOrigin=null,this.editForceBase=!1}handleActionEditCanceled(){this.cleanUpConnection(),this.closeNodeEditor()}handleNodeSaved(t,e){var i,o,n;if(this.editingNode)if(this.isCreatingNewNode){const o=Qc(),n={position:this.pendingNodePosition||{left:0,top:0},type:null===(i=this.editingNodeUI)||void 0===i?void 0:i.type,config:e||{}};o.getState().addNode(t,n),this.pendingCanvasConnection&&(o.getState().updateConnection(this.pendingCanvasConnection.fromNodeId,this.pendingCanvasConnection.exitId,t.uuid),this.pendingCanvasConnection=null,this.connectionPlaceholder=null,this.sourceId=null,this.connectionSourceX=null,this.connectionSourceY=null,this.dragFromNodeId=null),this.isCreatingNewNode=!1,this.pendingNodePosition=null,requestAnimationFrame(()=>{this.checkCollisionsAndReflow([t.uuid])})}else{if(this.plumber){const e=this.editingNode.exits||[],i=t.exits||[];e.filter(t=>!i.find(e=>e.uuid===t.uuid)).forEach(t=>{this.plumber.removeExitConnection(t.uuid)})}this.plumber.revalidate([t.uuid]),null===(o=Qc())||void 0===o||o.getState().updateNode(this.editingNode.uuid,t),e&&(null===(n=Qc())||void 0===n||n.getState().updateNodeUIConfig(t.uuid,e));const i=t.uuid;requestAnimationFrame(()=>{this.checkCollisionsAndReflow([i])})}this.closeNodeEditor()}handleNodeEditCanceled(){this.cleanUpConnection(),this.closeNodeEditor()}getNodeAtPosition(t,e){const i=this.querySelectorAll("temba-flow-node");for(const o of Array.from(i)){const i=o.getBoundingClientRect();if(t>=i.left&&t<=i.right&&e>=i.top&&e<=i.bottom)return o.getAttribute("data-node-uuid")}return null}calculateCanvasDropPosition(t,e,i=!0){const o=this.querySelector("#canvas");if(!o)return{left:0,top:0};const n=o.getBoundingClientRect(),s=(t-n.left)/this.zoom-20,r=(e-n.top)/this.zoom-20;return i?{left:Mc(s),top:Mc(r)}:{left:s,top:r}}handleActionDragExternal(t){var e,i,o;const{action:n,nodeUuid:s,actionIndex:r,mouseX:a,mouseY:l,actionHeight:d=60,isLastAction:c=!1}=t.detail,h=!this.isActionExternalDrag;if(this.isActionExternalDrag=!0,this.actionDragLastDetail={action:n,nodeUuid:s,actionIndex:r,mouseX:a,mouseY:l,actionHeight:d,isLastAction:c},h){null!==(i=null===(e=this.querySelector("#canvas"))||void 0===e?void 0:e.classList.contains("shift-held"))&&void 0!==i&&i?(this.actionDragIsCopy=!0,this.showActionOriginal(!0)):null===(o=this.querySelector("#drag-hint"))||void 0===o||o.classList.add("visible")}const u=this.getNodeAtPosition(a,l);if(u&&u!==s){const t=this.definition._ui.nodes[u],e=this.definition.nodes.find(t=>t.uuid===u);if("execute_actions"===(null==t?void 0:t.type)&&e){if(this.previousActionDragTargetNodeUuid&&this.previousActionDragTargetNodeUuid!==u){const t=this.querySelector(`temba-flow-node[data-node-uuid="${this.previousActionDragTargetNodeUuid}"]`);t&&t.dispatchEvent(new CustomEvent("action-drag-leave",{detail:{},bubbles:!1}))}this.actionDragTargetNodeUuid=u,this.previousActionDragTargetNodeUuid=u,this.canvasDropPreview=null;const t=this.querySelector(`temba-flow-node[data-node-uuid="${s}"]`);t&&t.dispatchEvent(new CustomEvent("action-show-ghost",{detail:{},bubbles:!1}));const e=this.querySelector(`temba-flow-node[data-node-uuid="${u}"]`);return e&&e.dispatchEvent(new CustomEvent("action-drag-over",{detail:{action:n,sourceNodeUuid:s,actionIndex:r,mouseX:a,mouseY:l,actionHeight:d},bubbles:!1})),void this.requestUpdate()}}if(this.previousActionDragTargetNodeUuid){const t=this.querySelector(`temba-flow-node[data-node-uuid="${this.previousActionDragTargetNodeUuid}"]`);t&&t.dispatchEvent(new CustomEvent("action-drag-leave",{detail:{},bubbles:!1})),this.previousActionDragTargetNodeUuid=null}this.actionDragTargetNodeUuid=null;const p=this.querySelector(`temba-flow-node[data-node-uuid="${s}"]`);if(!c||this.actionDragIsCopy){p&&p.dispatchEvent(new CustomEvent("action-hide-ghost",{detail:{},bubbles:!1}));const t=this.calculateCanvasDropPosition(a,l,!1);this.canvasDropPreview={action:n,nodeUuid:s,actionIndex:r,position:t,actionHeight:d}}else p&&p.dispatchEvent(new CustomEvent("action-show-ghost",{detail:{},bubbles:!1})),this.canvasDropPreview=null;this.requestUpdate()}handleActionDragInternal(t){var e;if(this.previousActionDragTargetNodeUuid){const t=this.querySelector(`temba-flow-node[data-node-uuid="${this.previousActionDragTargetNodeUuid}"]`);t&&t.dispatchEvent(new CustomEvent("action-drag-leave",{detail:{},bubbles:!1})),this.previousActionDragTargetNodeUuid=null}this.canvasDropPreview=null,this.actionDragTargetNodeUuid=null,this.isActionExternalDrag=!1,this.actionDragIsCopy=!1,null===(e=this.querySelector("#drag-hint"))||void 0===e||e.classList.remove("visible"),this.actionDragLastDetail=null}showActionOriginal(t){if(!this.actionDragLastDetail)return;const e=this.querySelector(`temba-flow-node[data-node-uuid="${this.actionDragLastDetail.nodeUuid}"]`);e&&e.dispatchEvent(new CustomEvent(t?"action-show-original":"action-hide-original",{detail:{},bubbles:!1}))}reprocessActionDrag(){if(!this.actionDragLastDetail)return;const{action:t,nodeUuid:e,actionIndex:i,mouseX:o,mouseY:n,actionHeight:s}=this.actionDragLastDetail,r=this.querySelector(`temba-flow-node[data-node-uuid="${e}"]`);if(!this.actionDragTargetNodeUuid)if(this.actionDragIsCopy){r&&r.dispatchEvent(new CustomEvent("action-hide-ghost",{detail:{},bubbles:!1}));const a=this.calculateCanvasDropPosition(o,n,!1);this.canvasDropPreview={action:t,nodeUuid:e,actionIndex:i,position:a,actionHeight:s}}else r&&r.dispatchEvent(new CustomEvent("action-show-ghost",{detail:{},bubbles:!1})),this.canvasDropPreview=null}handleActionDropExternal(t){var e,i,o;const{action:n,nodeUuid:s,actionIndex:r,mouseX:a,mouseY:l,isLastAction:d=!1}=t.detail,c=this.actionDragIsCopy;this.isActionExternalDrag=!1,this.actionDragIsCopy=!1,this.actionDragLastDetail=null,this.previousActionDragTargetNodeUuid=null,null===(e=this.querySelector("#drag-hint"))||void 0===e||e.classList.remove("visible");const h=this.actionDragTargetNodeUuid;if(h&&h!==s){const t=this.querySelector(`temba-flow-node[data-node-uuid="${h}"]`);return t&&t.dispatchEvent(new CustomEvent("action-drop",{detail:{action:n,sourceNodeUuid:s,actionIndex:r,mouseX:a,mouseY:l,isCopy:c},bubbles:!1})),this.canvasDropPreview=null,void(this.actionDragTargetNodeUuid=null)}if(d&&!c)return this.canvasDropPreview=null,void(this.actionDragTargetNodeUuid=null);const u=this.calculateCanvasDropPosition(a,l,!0);if(!c){const t=this.definition.nodes.find(t=>t.uuid===s);if(!t)return;const e=t.actions.filter((t,e)=>e!==r);if(0===e.length)this.deleteNodes([s]);else{const o={...t,actions:e};null===(i=Qc())||void 0===i||i.getState().updateNode(s,o)}}const p=c?{...n,uuid:Kt()}:n,m={uuid:Kt(),actions:[p],exits:[{uuid:Kt(),destination_uuid:null}]},g={position:u,type:"execute_actions",config:{}};null===(o=Qc())||void 0===o||o.getState().addNode(m,g),c&&this.copyActionLocalizations(n.uuid,p.uuid),this.canvasDropPreview=null,this.actionDragTargetNodeUuid=null,requestAnimationFrame(()=>{this.checkCollisionsAndReflow([m.uuid])})}copyActionLocalizations(t,e){var i,o,n;const s=null===(i=this.definition)||void 0===i?void 0:i.localization;if(!s)return;const r=null===(o=Qc())||void 0===o?void 0:o.getState();if(r)for(const i of Object.keys(s)){const o=null===(n=s[i])||void 0===n?void 0:n[t];o&&r.updateLocalization(i,e,JSON.parse(JSON.stringify(o)))}}closeOpenWindows(){var t;if(this.issuesWindowHidden||(this.issuesWindowHidden=!0),this.revisionsWindowHidden||(null===(t=this.getRevisionsWindow())||void 0===t||t.close(),this.revisionsWindowHidden=!0),this.simulatorActive){const t=document.querySelector("temba-simulator");null==t||t.handleClose()}}closeFloatingWindows(){var t;this.issuesWindowHidden||(this.issuesWindowHidden=!0),this.revisionsWindowHidden||(null===(t=this.getRevisionsWindow())||void 0===t||t.close(),this.revisionsWindowHidden=!0)}getRevisionsWindow(){return this.querySelector("temba-revisions-window")}handleIssuesTabClick(){this.issuesWindowHidden?(this.closeOpenWindows(),this.issuesWindowHidden=!1):this.issuesWindowHidden=!0}handleIssueSelected(t){var e;const{issue:i}=t.detail;this.issuesWindowHidden=!0,this.focusNode(i.node_uuid);const o=this.definition.nodes.find(t=>t.uuid===i.node_uuid);if(o)if(i.action_uuid){const t=null===(e=o.actions)||void 0===e?void 0:e.find(t=>t.uuid===i.action_uuid);t&&(this.editingAction=t,this.editingNode=o,this.editingNodeUI=this.definition._ui.nodes[i.node_uuid])}else this.editingNode=o,this.editingNodeUI=this.definition._ui.nodes[i.node_uuid]}handleRevisionViewed(){var t;this.viewingRevision=!0,this.closeFlowSearch(),null===(t=this.plumber)||void 0===t||t.reset()}handleRevisionCancelled(){var t;this.viewingRevision=!1,null===(t=this.plumber)||void 0===t||t.reset()}handleRevisionsClosed(){this.viewingRevision=!1,this.revisionsWindowHidden=!0}async handleRevisionReverted(t){var e;const{definition:i,languageCode:o}=t.detail;this.viewingRevision=!1,this.revisionsWindowHidden=!0,null===(e=this.plumber)||void 0===e||e.reset(),await this.saveChanges(i),Qc().getState().fetchRevision(`/flow/revisions/${this.flow}`).finally(()=>{o&&this.handleLanguageChange(o)})}renderToolbarElement(){var t,e,i,o;const n=this.getLocalizationLanguages(),s=this.getAvailableLanguages(),r=null===(t=this.definition)||void 0===t?void 0:t.language,a=(null===(e=s.find(t=>t.code===r))||void 0===e?void 0:e.name)||(r?$c(r):"")||"Primary language",l=!this.languageCode||this.languageCode===r||!n.some(t=>t.code===this.languageCode),d=l?null:n.find(t=>t.code===this.languageCode),c=d||{name:a},h=this.getLocalizationProgress(l?"":this.languageCode),u=Math.round(h.localized/Math.max(h.total,1)*100),p=!this.definition||0===this.definition.nodes.length?[]:[{name:a,value:Rm},...n.map(t=>{const e=this.getLocalizationProgress(t.code),i=Math.round(e.localized/Math.max(e.total,1)*100);return{name:t.name,value:t.code,percent:i}})],m=Boolean(d)&&h.total>0;return W`
|
|
10938
10935
|
<temba-editor-toolbar
|
|
10939
10936
|
?message-view=${this.showMessageTable}
|
|
10940
10937
|
.zoom=${this.zoom}
|
|
@@ -10954,8 +10951,8 @@ background: #ccc;
|
|
|
10954
10951
|
@temba-button-clicked=${this.handleToolbarAction}
|
|
10955
10952
|
></temba-editor-toolbar>
|
|
10956
10953
|
`}handleToolbarAction(t){var e,i;const o=t.detail;switch(o.action){case"view-change":this.showMessageTable="table"===o.view;break;case"zoom-in":this.zoomManager.zoomIn();break;case"zoom-out":this.zoomManager.zoomOut();break;case"zoom-to-fit":this.zoomManager.zoomToFit();break;case"zoom-to-full":this.zoomManager.zoomToFull();break;case"revisions":this.revisionsWindowHidden?(this.closeOpenWindows(),this.revisionsWindowHidden=!1):(null===(e=this.getRevisionsWindow())||void 0===e||e.close(),this.revisionsWindowHidden=!0);break;case"search":this.openFlowSearch();break;case"auto-translate":this.handleAutoTranslateClick();break;case"language-change":o.isPrimary?this.handleLanguageChange((null===(i=this.definition)||void 0===i?void 0:i.language)||""):o.languageCode&&this.handleLanguageChange(o.languageCode)}}focusNode(t){const e=this.querySelector(`temba-flow-node[uuid="${t}"]`);if(!e)return;const i=this.querySelector("#editor");if(!i)return;const o=i.getBoundingClientRect(),n=o.width/2,s=o.height/2,r=e.offsetLeft+e.offsetWidth/2,a=e.offsetTop+e.offsetHeight/2,l=r*this.zoom-n,d=a*this.zoom-s;i.scrollTo({left:Math.max(0,l),top:Math.max(0,d),behavior:"smooth"})}handleSearchResultSelected(t){var e,i,o;const n=t.detail;if(n.stickyField)return void this.focusCanvasElement(`temba-sticky-note[uuid="${n.nodeUuid}"]`,n.stickyField);const s=this.definition.nodes.find(t=>t.uuid===n.nodeUuid);if(!s)return;const r=null===(e=this.definition._ui)||void 0===e?void 0:e.nodes[n.nodeUuid];if(this.showMessageTable){const t=this.querySelector("temba-message-table");null===(i=null==t?void 0:t.focusSearchResult)||void 0===i||i.call(t,n.nodeUuid,(null===(o=n.action)||void 0===o?void 0:o.uuid)||null)}else this.focusNode(n.nodeUuid);setTimeout(()=>{n.action?(this.editingAction=n.action,this.editingNode=s,this.editingNodeUI=r,this.dialogOrigin=null):(this.editingNode=s,this.editingNodeUI=r,this.dialogOrigin=null)},200)}focusCanvasElement(t,e){const i=this.querySelector(t);if(!i)return;const o=this.querySelector("#editor");if(!o)return;const n=o.getBoundingClientRect(),s=i.offsetLeft+i.offsetWidth/2,r=i.offsetTop+i.offsetHeight/2,a=s*this.zoom-n.width/2,l=r*this.zoom-n.height/2;o.scrollTo({left:Math.max(0,a),top:Math.max(0,l),behavior:"smooth"}),e&&setTimeout(()=>{var t;const o=null===(t=i.shadowRoot)||void 0===t?void 0:t.querySelector(`.sticky-${e}`);o&&o.focus()},300)}isReadOnly(){return this.viewingRevision||this.isTranslating}render(){var t,e,i;const o=W`<style>
|
|
10957
|
-
${r(
|
|
10958
|
-
${r(
|
|
10954
|
+
${r(og.styles.cssText)}
|
|
10955
|
+
${r(Xm.styles.cssText)}
|
|
10959
10956
|
</style>`,n=(null===(e=null===(t=this.definition)||void 0===t?void 0:t._ui)||void 0===e?void 0:e.stickies)||{},s=this.definition&&this.definition.nodes.length>0&&this.definition.nodes.some(t=>{var e;return!(null===(e=this.definition._ui)||void 0===e?void 0:e.nodes[t.uuid])});return W`${o}
|
|
10960
10957
|
<temba-issues-window
|
|
10961
10958
|
.issues=${this.flowIssues}
|
|
@@ -10972,12 +10969,12 @@ background: #ccc;
|
|
|
10972
10969
|
@temba-revision-reverted=${this.handleRevisionReverted}
|
|
10973
10970
|
@temba-revisions-closed=${this.handleRevisionsClosed}
|
|
10974
10971
|
></temba-revisions-window>
|
|
10975
|
-
|
|
10976
|
-
|
|
10977
|
-
|
|
10978
|
-
|
|
10979
|
-
|
|
10980
|
-
|
|
10972
|
+
<temba-auto-translate
|
|
10973
|
+
.definition=${this.definition}
|
|
10974
|
+
language-code=${this.languageCode}
|
|
10975
|
+
?disabled=${this.viewingRevision}
|
|
10976
|
+
@temba-auto-translate-changed=${this.handleAutoTranslateChanged}
|
|
10977
|
+
></temba-auto-translate>
|
|
10981
10978
|
<div id="editor-container">
|
|
10982
10979
|
${this.renderToolbarElement()}
|
|
10983
10980
|
<div id="editor">
|
|
@@ -11087,7 +11084,7 @@ background: #ccc;
|
|
|
11087
11084
|
.active=${!this.issuesWindowHidden}
|
|
11088
11085
|
@temba-button-clicked=${()=>this.handleIssuesTabClick()}
|
|
11089
11086
|
></temba-floating-tab>
|
|
11090
|
-
`:""} `}}
|
|
11087
|
+
`:""} `}}og.MAX_FLOW_SETTINGS=50,t([mt({type:String})],og.prototype,"flow",void 0),t([mt({type:String})],og.prototype,"version",void 0),t([mt({type:String})],og.prototype,"flowType",void 0),t([mt({type:Array})],og.prototype,"features",void 0),t([Id(zd,t=>t.flowDefinition)],og.prototype,"definition",void 0),t([Id(zd,t=>t.simulatorActive)],og.prototype,"simulatorActive",void 0),t([Id(zd,t=>t.canvasSize)],og.prototype,"canvasSize",void 0),t([Id(zd,t=>t.dirtyDate)],og.prototype,"dirtyDate",void 0),t([Id(zd,t=>t.languageCode)],og.prototype,"languageCode",void 0),t([Id(zd,t=>t.isTranslating)],og.prototype,"isTranslating",void 0),t([Id(zd,t=>t.workspace)],og.prototype,"workspace",void 0),t([Id(zd,t=>t.getCurrentActivity())],og.prototype,"activityData",void 0),t([Id(zd,t=>{var e,i;return null!==(i=null===(e=t.flowInfo)||void 0===e?void 0:e.issues)&&void 0!==i?i:eg})],og.prototype,"flowIssues",void 0),t([gt()],og.prototype,"isDragging",void 0),t([gt()],og.prototype,"currentDragItem",void 0),t([gt()],og.prototype,"selectedItems",void 0),t([gt()],og.prototype,"isSelecting",void 0),t([gt()],og.prototype,"selectionBox",void 0),t([gt()],og.prototype,"targetId",void 0),t([gt()],og.prototype,"sourceId",void 0),t([gt()],og.prototype,"dragFromNodeId",void 0),t([gt()],og.prototype,"originalConnectionTargetId",void 0),t([gt()],og.prototype,"isValidTarget",void 0),t([gt()],og.prototype,"issuesWindowHidden",void 0),t([gt()],og.prototype,"revisionsWindowHidden",void 0),t([gt()],og.prototype,"viewingRevision",void 0),t([gt()],og.prototype,"isSaving",void 0),t([gt()],og.prototype,"saveError",void 0),t([gt()],og.prototype,"zoom",void 0),t([gt()],og.prototype,"autoTranslating",void 0),t([gt()],og.prototype,"editingNode",void 0),t([gt()],og.prototype,"editingNodeUI",void 0),t([gt()],og.prototype,"editingAction",void 0),t([mt({type:Boolean,reflect:!0,attribute:"message-view"})],og.prototype,"showMessageTable",void 0),t([gt()],og.prototype,"isCreatingNewNode",void 0),t([gt()],og.prototype,"pendingNodePosition",void 0),t([gt()],og.prototype,"canvasDropPreview",void 0),t([gt()],og.prototype,"addActionToNodeUuid",void 0),t([gt()],og.prototype,"actionDragTargetNodeUuid",void 0),t([gt()],og.prototype,"connectionPlaceholder",void 0);class ng extends Ve{constructor(){super(...arguments),this.dragging=!1,this.selected=!1,this.colorPickerExpanded=!1,this.removing=!1,this.isTouchDevice=navigator.maxTouchPoints>0&&/iPad|iPhone|Macintosh/.test(navigator.userAgent),this.editingField=null,this.removalTimeout=null,this.resizing=!1,this.resizeStartX=0,this.resizeStartY=0,this.resizeStartWidth=0,this.resizeStartHeight=0,this.resizeZoom=1,this.boundResizeMove=this.handleResizeMove.bind(this),this.boundResizeEnd=this.handleResizeEnd.bind(this),this.boundResizeTouchMove=this.handleResizeTouchMove.bind(this),this.boundResizeTouchEnd=this.handleResizeTouchEnd.bind(this)}static get styles(){return a`
|
|
11091
11088
|
:host {
|
|
11092
11089
|
--sticky-color: #fef08a;
|
|
11093
11090
|
--sticky-border-color: #facc15;
|
|
@@ -11541,7 +11538,7 @@ background: #ccc;
|
|
|
11541
11538
|
></div>`}
|
|
11542
11539
|
</div>
|
|
11543
11540
|
</div>
|
|
11544
|
-
`}}t([mt({type:String})],
|
|
11541
|
+
`}}t([mt({type:String})],ng.prototype,"uuid",void 0),t([mt({type:Object})],ng.prototype,"data",void 0),t([mt({type:Boolean})],ng.prototype,"dragging",void 0),t([mt({type:Boolean})],ng.prototype,"selected",void 0),t([mt({type:Boolean})],ng.prototype,"colorPickerExpanded",void 0),t([mt({type:Boolean})],ng.prototype,"removing",void 0),t([Id(zd,t=>t.isTranslating)],ng.prototype,"isTranslating",void 0);class sg extends Ve{constructor(){super(...arguments),this.x=0,this.y=0,this.open=!1,this.showStickyNote=!0,this.shortcuts=[],this.showReflow=!1,this.clickPosition={x:0,y:0}}static get styles(){return a`
|
|
11545
11542
|
:host {
|
|
11546
11543
|
position: fixed;
|
|
11547
11544
|
z-index: 10000;
|
|
@@ -11630,7 +11627,7 @@ background: #ccc;
|
|
|
11630
11627
|
</div>
|
|
11631
11628
|
`:""}
|
|
11632
11629
|
</div>
|
|
11633
|
-
`:W``}}t([mt({type:Number})],
|
|
11630
|
+
`:W``}}t([mt({type:Number})],sg.prototype,"x",void 0),t([mt({type:Number})],sg.prototype,"y",void 0),t([mt({type:Boolean})],sg.prototype,"open",void 0),t([mt({type:Boolean})],sg.prototype,"showStickyNote",void 0),t([mt({type:Array})],sg.prototype,"shortcuts",void 0),t([mt({type:Boolean})],sg.prototype,"showReflow",void 0),t([gt()],sg.prototype,"clickPosition",void 0);class rg extends Ve{constructor(){super(...arguments),this.open=!1,this.mode="all",this.flowType="message",this.features=[],this.clickPosition={x:0,y:0},this.searchQuery="",this.highlightedIndex=0,this.boundHandleEscape=t=>{"Escape"===t.key&&this.close()}}static get styles(){return a`
|
|
11634
11631
|
:host {
|
|
11635
11632
|
--dialog-top-offset: clamp(16px, 6vh, 64px);
|
|
11636
11633
|
--dialog-bottom-offset: clamp(24px, 5vh, 56px);
|
|
@@ -11801,7 +11798,7 @@ background: #ccc;
|
|
|
11801
11798
|
--button-y: 0.5em;
|
|
11802
11799
|
--button-x: 1.25em;
|
|
11803
11800
|
}
|
|
11804
|
-
`}show(t,e){this.mode=t,this.clickPosition=e,this.searchQuery="",this.highlightedIndex=0,this.open=!0,document.addEventListener("keydown",this.boundHandleEscape),this.updateComplete.then(()=>{var t;const e=null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector(".search-input");null==e||e.focus()})}close(t=!0){this.open&&(this.open=!1,document.removeEventListener("keydown",this.boundHandleEscape),t&&this.fireCustomEvent(Fo.Canceled,{}))}isConfigAvailable(t){if(void 0!==t.flowTypes){if(0===t.flowTypes.length)return!1;if(!t.flowTypes.includes(this.flowType))return!1}if(t.features&&t.features.length>0)for(const e of t.features)if(!this.features.includes(e))return!1;return!0}handleNodeTypeClick(t){this.fireCustomEvent(Fo.Selection,{nodeType:t,position:this.clickPosition}),this.close(!1)}handleOverlayClick(){this.close()}handleSearchInput(t){this.searchQuery=t.target.value,this.highlightedIndex=0}handleKeyDown(t){if("Enter"===t.key){const t=this.getVisibleItems();if(t.length>0){const e=Math.min(this.highlightedIndex,t.length-1);this.handleNodeTypeClick(t[e].type)}}else if("ArrowDown"===t.key||"n"===t.key&&t.ctrlKey){t.preventDefault();const e=this.getVisibleItems();e.length>0&&(this.highlightedIndex=(this.highlightedIndex+1)%e.length)}else if("ArrowUp"===t.key||"p"===t.key&&t.ctrlKey){t.preventDefault();const e=this.getVisibleItems();e.length>0&&(this.highlightedIndex=(this.highlightedIndex-1+e.length)%e.length)}else"Escape"===t.key&&this.close()}getPromotedItems(){const t=[],e=
|
|
11801
|
+
`}show(t,e){this.mode=t,this.clickPosition=e,this.searchQuery="",this.highlightedIndex=0,this.open=!0,document.addEventListener("keydown",this.boundHandleEscape),this.updateComplete.then(()=>{var t;const e=null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector(".search-input");null==e||e.focus()})}close(t=!0){this.open&&(this.open=!1,document.removeEventListener("keydown",this.boundHandleEscape),t&&this.fireCustomEvent(Fo.Canceled,{}))}isConfigAvailable(t){if(void 0!==t.flowTypes){if(0===t.flowTypes.length)return!1;if(!t.flowTypes.includes(this.flowType))return!1}if(t.features&&t.features.length>0)for(const e of t.features)if(!this.features.includes(e))return!1;return!0}handleNodeTypeClick(t){this.fireCustomEvent(Fo.Selection,{nodeType:t,position:this.clickPosition}),this.close(!1)}handleOverlayClick(){this.close()}handleSearchInput(t){this.searchQuery=t.target.value,this.highlightedIndex=0}handleKeyDown(t){if("Enter"===t.key){const t=this.getVisibleItems();if(t.length>0){const e=Math.min(this.highlightedIndex,t.length-1);this.handleNodeTypeClick(t[e].type)}}else if("ArrowDown"===t.key||"n"===t.key&&t.ctrlKey){t.preventDefault();const e=this.getVisibleItems();e.length>0&&(this.highlightedIndex=(this.highlightedIndex+1)%e.length)}else if("ArrowUp"===t.key||"p"===t.key&&t.ctrlKey){t.preventDefault();const e=this.getVisibleItems();e.length>0&&(this.highlightedIndex=(this.highlightedIndex-1+e.length)%e.length)}else"Escape"===t.key&&this.close()}getPromotedItems(){const t=[],e=Om.send_msg;e&&this.isConfigAvailable(e)&&t.push({type:"send_msg",config:e,branching:!1,color:vp[e.group].color});const i=Pm.wait_for_response;return i&&this.isConfigAvailable(i)&&t.push({type:"wait_for_response",config:i,branching:!0,color:bp[fp.wait].color}),t}getCategories(){const t=[],e="action-no-branching"===this.mode,i=new Map;Object.entries(Om).filter(([t,e])=>!(e.aliases&&e.aliases.includes(t))&&e.name&&!e.hideFromActions&&e.group&&this.isConfigAvailable(e)).forEach(([t,e])=>{const o=vp[e.group];i.has(e.group)||i.set(e.group,[]),i.get(e.group).push({type:t,config:e,branching:!1,color:o.color})}),e||Object.entries(Pm).filter(([t,e])=>"execute_actions"!==t&&t===e.type&&e.name&&e.showAsAction&&e.group&&this.isConfigAvailable(e)).forEach(([t,e])=>{const o=e.group,n=vp[o]||bp[o];i.has(o)||i.set(o,[]),i.get(o).push({type:t,config:e,branching:!0,color:n.color})});const o=Object.keys(gp),n=Object.keys(Om),s=Object.keys(Pm);if(Array.from(i.entries()).sort(([t],[e])=>{const i=o.indexOf(t),n=o.indexOf(e);return(-1===i?999:i)-(-1===n?999:n)}).forEach(([e,i])=>{const o=i.sort((t,e)=>{const i=n.indexOf(t.type),o=n.indexOf(e.type),r=s.indexOf(t.type),a=s.indexOf(e.type);return(-1!==i?i:-1!==r?1e3+r:2e3)-(-1!==o?o:-1!==a?1e3+a:2e3)}),r=vp[e];t.push({name:r.title,description:r.description,color:r.color,items:o})}),!e){const e=new Map;Object.entries(Pm).filter(([t,e])=>"execute_actions"!==t&&t===e.type&&e.name&&!e.showAsAction&&!e.hideFromSplits&&"wait_for_response"!==t&&this.isConfigAvailable(e)).forEach(([t,i])=>{const o=i.group||fp.split,n=bp[o]||vp[o];e.has(o)||e.set(o,[]),e.get(o).push({type:t,config:i,branching:!0,color:n.color})});const i=Object.keys(fp);Array.from(e.entries()).sort(([t],[e])=>{const o=i.indexOf(t),n=i.indexOf(e);return(-1===o?999:o)-(-1===n?999:n)}).forEach(([e,i])=>{const o=i.sort((t,e)=>{const i=s.indexOf(t.type),o=s.indexOf(e.type);return(-1===i?999:i)-(-1===o?999:o)}),n=bp[e]||vp[e];t.push({name:n.title,description:n.description,color:n.color,items:o})})}return t}filterBySearch(t){if(!this.searchQuery)return t;const e=this.searchQuery.toLowerCase();return t.filter(t=>{var i;return null===(i=t.config.name)||void 0===i?void 0:i.toLowerCase().includes(e)})}getVisibleItems(){const t=this.getPromotedItems(),e=this.getCategories(),i="action-no-branching"===this.mode,o=this.filterBySearch(i?t.filter(t=>!t.branching):t);return[...o,...e.map(t=>({...t,items:this.filterBySearch(t.items)})).filter(t=>t.items.length>0).flatMap(t=>t.items)]}renderItem(t,e){return W`
|
|
11805
11802
|
<div
|
|
11806
11803
|
class="node-item ${t.branching?"branching":""} ${e===this.highlightedIndex?"highlighted":""}"
|
|
11807
11804
|
style="--item-color: ${t.color}"
|
|
@@ -11849,7 +11846,7 @@ background: #ccc;
|
|
|
11849
11846
|
></temba-button>
|
|
11850
11847
|
</div>
|
|
11851
11848
|
</div>
|
|
11852
|
-
`}}t([mt({type:Boolean,reflect:!0})],
|
|
11849
|
+
`}}t([mt({type:Boolean,reflect:!0})],rg.prototype,"open",void 0),t([mt({type:String})],rg.prototype,"mode",void 0),t([mt({type:String})],rg.prototype,"flowType",void 0),t([mt({type:Array})],rg.prototype,"features",void 0),t([gt()],rg.prototype,"clickPosition",void 0),t([gt()],rg.prototype,"searchQuery",void 0),t([gt()],rg.prototype,"highlightedIndex",void 0);class ag extends zh{constructor(){super(...arguments),this.dirtyMessage="You have unsaved changes to the contact notepad. Are you sure you want to contiunue?"}static get styles(){return a`
|
|
11853
11850
|
:host {
|
|
11854
11851
|
height: 100%;
|
|
11855
11852
|
display: flex;
|
|
@@ -11919,7 +11916,7 @@ background: #ccc;
|
|
|
11919
11916
|
`:null}
|
|
11920
11917
|
</div>
|
|
11921
11918
|
</div>
|
|
11922
|
-
`:super.render();var t}}t([mt({type:Object,attribute:!1})],
|
|
11919
|
+
`:super.render();var t}}t([mt({type:Object,attribute:!1})],ag.prototype,"note",void 0),t([mt({type:String})],ag.prototype,"dirtyMessage",void 0);class lg extends Ve{constructor(){super(...arguments),this.total=100,this.current=0,this.pct=0,this.done=!1,this.showEstimatedCompletion=!1,this.showPercentage=!1,this.animated=!0}willUpdate(t){if(super.willUpdate(t),t.has("eta")&&this.eta&&(this.estimatedCompletionDate=new Date(this.eta),this.showEstimatedCompletion=this.estimatedCompletionDate>new Date),t.has("current")||t.has("total")){const t=Math.floor(Math.min(this.current/this.total*100,100));Number.isNaN(t)?this.showPercentage=!1:(this.pct=t,this.showPercentage=!0),this.done=this.pct>=100}}render(){const t=["meter",this.done?"done":"",this.animated?"":"static"].filter(Boolean).join(" ");return W`<div class="wrapper ${this.done?"complete":""}">
|
|
11923
11920
|
<div class="${t}">
|
|
11924
11921
|
${this.message?W`<div class="message">${this.message}</div>`:null}
|
|
11925
11922
|
<span class="complete" style="flex-basis: ${this.pct}%"></span>
|
|
@@ -11936,7 +11933,7 @@ background: #ccc;
|
|
|
11936
11933
|
</div>`:null}
|
|
11937
11934
|
|
|
11938
11935
|
<slot></slot>
|
|
11939
|
-
</div>`}}
|
|
11936
|
+
</div>`}}lg.styles=a`
|
|
11940
11937
|
:host {
|
|
11941
11938
|
display: flex;
|
|
11942
11939
|
}
|
|
@@ -12070,7 +12067,7 @@ background: #ccc;
|
|
|
12070
12067
|
.meter.done > span {
|
|
12071
12068
|
background: rgb(var(--success-rgb));
|
|
12072
12069
|
}
|
|
12073
|
-
`,t([mt({type:Number})],
|
|
12070
|
+
`,t([mt({type:Number})],lg.prototype,"total",void 0),t([mt({type:Number})],lg.prototype,"current",void 0),t([mt({type:Number})],lg.prototype,"pct",void 0),t([mt({type:Boolean})],lg.prototype,"done",void 0),t([mt({type:String})],lg.prototype,"eta",void 0),t([mt({type:String,attribute:!1})],lg.prototype,"estimatedCompletionDate",void 0),t([mt({type:Boolean})],lg.prototype,"showEstimatedCompletion",void 0),t([mt({type:Boolean})],lg.prototype,"showPercentage",void 0),t([mt({type:String})],lg.prototype,"message",void 0),t([mt({type:Boolean})],lg.prototype,"animated",void 0);class dg extends Ve{constructor(){super(...arguments),this.refreshes=0,this.complete=!1,this.running=!1}updated(t){super.updated(t),t.has("id")&&this.refresh()}interruptStart(){var t,e;t=this.interruptTitle,e=this.interruptEndpoint,window.showModax(t,e)}refresh(){fe(this.statusEndpoint,this.getHeaders()).then(t=>{if(t.length>0){this.refreshes++;const e=t[0];if(this.current=e.progress.current,this.total=e.progress.total,this.complete="Completed"==e.status||"Failed"==e.status||"Interrupted"==e.status,this.running="Started"===e.status,"Pending"===e.status?this.message="Preparing to start..":"Queued"===e.status?this.message="Waiting..":this.message=null,"Started"===e.status){const t=(new Date).getTime()-new Date(e.modified_on).getTime(),i=this.current/t;if(i>.1){const t=new Date((new Date).getTime()+(this.total-this.current)/i),e=new Date;e.setMonth(e.getMonth()+2),this.eta=t>e?null:t.toISOString()}}!this.complete&&this.current<this.total&&setTimeout(()=>{this.refresh()},Math.min(1e3*this.refreshes,6e4)),this.complete&&this.scheduleRemoval()}})}scheduleRemoval(){setTimeout(()=>{this.remove()},5e3)}render(){return W`<temba-progress
|
|
12074
12071
|
total=${this.total}
|
|
12075
12072
|
current=${this.current}
|
|
12076
12073
|
eta=${this.eta}
|
|
@@ -12080,7 +12077,7 @@ background: #ccc;
|
|
|
12080
12077
|
name="close"
|
|
12081
12078
|
@click=${this.interruptStart}
|
|
12082
12079
|
></temba-icon>`:null}
|
|
12083
|
-
</temba-progress>`}}
|
|
12080
|
+
</temba-progress>`}}dg.styles=a`
|
|
12084
12081
|
temba-icon[name='close'] {
|
|
12085
12082
|
cursor: pointer;
|
|
12086
12083
|
margin: 0 4px;
|
|
@@ -12089,7 +12086,7 @@ background: #ccc;
|
|
|
12089
12086
|
temba-icon[name='close']:hover {
|
|
12090
12087
|
color: var(--color-primary-dark);
|
|
12091
12088
|
}
|
|
12092
|
-
`,t([mt({type:String})],
|
|
12089
|
+
`,t([mt({type:String})],dg.prototype,"id",void 0),t([mt({type:Number})],dg.prototype,"current",void 0),t([mt({type:Number})],dg.prototype,"total",void 0),t([mt({type:Number})],dg.prototype,"refreshes",void 0),t([mt({type:String})],dg.prototype,"eta",void 0),t([mt({type:Boolean})],dg.prototype,"complete",void 0),t([mt({type:Boolean})],dg.prototype,"running",void 0),t([mt({type:String})],dg.prototype,"message",void 0),t([mt({type:String})],dg.prototype,"statusEndpoint",void 0),t([mt({type:String})],dg.prototype,"interruptTitle",void 0),t([mt({type:String})],dg.prototype,"interruptEndpoint",void 0);class cg extends Dh{static get styles(){return a`
|
|
12093
12090
|
temba-options {
|
|
12094
12091
|
display: block;
|
|
12095
12092
|
width: 100%;
|
|
@@ -12177,7 +12174,7 @@ background: #ccc;
|
|
|
12177
12174
|
.cursorIndex=${this.cursorIndex}
|
|
12178
12175
|
.options=${this.filteredShortcuts}
|
|
12179
12176
|
></temba-options>
|
|
12180
|
-
`}}t([mt({type:String})],
|
|
12177
|
+
`}}t([mt({type:String})],cg.prototype,"filter",void 0),t([mt({type:Boolean})],cg.prototype,"showSearch",void 0),t([mt({type:Array})],cg.prototype,"filteredShortcuts",void 0),t([mt({type:Number})],cg.prototype,"cursorIndex",void 0);class hg extends Ve{constructor(){super(...arguments),this.placeholder="",this.endpoint=""}handleChange(){this.blur()}render(){return W`
|
|
12181
12178
|
<div>
|
|
12182
12179
|
<temba-dropdown>
|
|
12183
12180
|
<div slot="toggle"><slot name="toggle"></slot></div>
|
|
@@ -12192,7 +12189,7 @@ background: #ccc;
|
|
|
12192
12189
|
</div>
|
|
12193
12190
|
</temba-dropdown>
|
|
12194
12191
|
</div>
|
|
12195
|
-
`}}
|
|
12192
|
+
`}}hg.styles=a`
|
|
12196
12193
|
:host {
|
|
12197
12194
|
}
|
|
12198
12195
|
|
|
@@ -12209,7 +12206,7 @@ background: #ccc;
|
|
|
12209
12206
|
--color-widget-border: transparent;
|
|
12210
12207
|
--widget-box-shadow: none;
|
|
12211
12208
|
}
|
|
12212
|
-
`,t([mt({type:String})],
|
|
12209
|
+
`,t([mt({type:String})],hg.prototype,"placeholder",void 0),t([mt({type:String})],hg.prototype,"endpoint",void 0);class ug extends hh{static get styles(){return a`
|
|
12213
12210
|
${super.styles}
|
|
12214
12211
|
|
|
12215
12212
|
:host {
|
|
@@ -12221,7 +12218,7 @@ background: #ccc;
|
|
|
12221
12218
|
name=${t.name}
|
|
12222
12219
|
avatar=${t.avatar}
|
|
12223
12220
|
showname
|
|
12224
|
-
></temba-user>`:W``}}t([mt({type:String})],
|
|
12221
|
+
></temba-user>`:W``}}t([mt({type:String})],ug.prototype,"endpoint",void 0),t([mt({type:String})],ug.prototype,"nameKey",void 0),t([mt({type:String})],ug.prototype,"valueKey",void 0),t([mt({type:String})],ug.prototype,"placeholder",void 0),t([mt({type:Boolean})],ug.prototype,"sorted",void 0),t([mt({type:Object})],ug.prototype,"user",void 0);class pg extends hh{static get styles(){return a`
|
|
12225
12222
|
${super.styles}
|
|
12226
12223
|
|
|
12227
12224
|
:host {
|
|
@@ -12234,33 +12231,33 @@ background: #ccc;
|
|
|
12234
12231
|
* (c) 2024 Jukka Kurkela
|
|
12235
12232
|
* Released under the MIT License
|
|
12236
12233
|
*/
|
|
12237
|
-
function
|
|
12234
|
+
function mg(t){return t+.5|0}t([mt({type:String})],pg.prototype,"endpoint",void 0),t([mt({type:String})],pg.prototype,"nameKey",void 0),t([mt({type:String})],pg.prototype,"valueKey",void 0),t([mt({type:String})],pg.prototype,"placeholder",void 0),t([mt({type:Boolean})],pg.prototype,"sorted",void 0),t([mt({type:Object})],pg.prototype,"workspace",void 0);const gg=(t,e,i)=>Math.max(Math.min(t,i),e);function fg(t){return gg(mg(2.55*t),0,255)}function vg(t){return gg(mg(255*t),0,255)}function bg(t){return gg(mg(t/2.55)/100,0,1)}function yg(t){return gg(mg(100*t),0,100)}const xg={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},wg=[..."0123456789ABCDEF"],_g=t=>wg[15&t],kg=t=>wg[(240&t)>>4]+wg[15&t],Cg=t=>(240&t)>>4==(15&t);function Sg(t){var e=(t=>Cg(t.r)&&Cg(t.g)&&Cg(t.b)&&Cg(t.a))(t)?_g:kg;return t?"#"+e(t.r)+e(t.g)+e(t.b)+((t,e)=>t<255?e(t):"")(t.a,e):void 0}const Ag=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function $g(t,e,i){const o=e*Math.min(i,1-i),n=(e,n=(e+t/30)%12)=>i-o*Math.max(Math.min(n-3,9-n,1),-1);return[n(0),n(8),n(4)]}function Eg(t,e,i){const o=(o,n=(o+t/60)%6)=>i-i*e*Math.max(Math.min(n,4-n,1),0);return[o(5),o(3),o(1)]}function Tg(t,e,i){const o=$g(t,1,.5);let n;for(e+i>1&&(n=1/(e+i),e*=n,i*=n),n=0;n<3;n++)o[n]*=1-e-i,o[n]+=e;return o}function Dg(t){const e=t.r/255,i=t.g/255,o=t.b/255,n=Math.max(e,i,o),s=Math.min(e,i,o),r=(n+s)/2;let a,l,d;return n!==s&&(d=n-s,l=r>.5?d/(2-n-s):d/(n+s),a=function(t,e,i,o,n){return t===n?(e-i)/o+(e<i?6:0):e===n?(i-t)/o+2:(t-e)/o+4}(e,i,o,d,n),a=60*a+.5),[0|a,l||0,r]}function Mg(t,e,i,o){return(Array.isArray(e)?t(e[0],e[1],e[2]):t(e,i,o)).map(vg)}function zg(t,e,i){return Mg($g,t,e,i)}function Ig(t){return(t%360+360)%360}function Og(t){const e=Ag.exec(t);let i,o=255;if(!e)return;e[5]!==i&&(o=e[6]?fg(+e[5]):vg(+e[5]));const n=Ig(+e[2]),s=+e[3]/100,r=+e[4]/100;return i="hwb"===e[1]?function(t,e,i){return Mg(Tg,t,e,i)}(n,s,r):"hsv"===e[1]?function(t,e,i){return Mg(Eg,t,e,i)}(n,s,r):zg(n,s,r),{r:i[0],g:i[1],b:i[2],a:o}}const Lg={x:"dark",Z:"light",Y:"re",X:"blu",W:"gr",V:"medium",U:"slate",A:"ee",T:"ol",S:"or",B:"ra",C:"lateg",D:"ights",R:"in",Q:"turquois",E:"hi",P:"ro",O:"al",N:"le",M:"de",L:"yello",F:"en",K:"ch",G:"arks",H:"ea",I:"ightg",J:"wh"},Pg={OiceXe:"f0f8ff",antiquewEte:"faebd7",aqua:"ffff",aquamarRe:"7fffd4",azuY:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"0",blanKedOmond:"ffebcd",Xe:"ff",XeviTet:"8a2be2",bPwn:"a52a2a",burlywood:"deb887",caMtXe:"5f9ea0",KartYuse:"7fff00",KocTate:"d2691e",cSO:"ff7f50",cSnflowerXe:"6495ed",cSnsilk:"fff8dc",crimson:"dc143c",cyan:"ffff",xXe:"8b",xcyan:"8b8b",xgTMnPd:"b8860b",xWay:"a9a9a9",xgYF:"6400",xgYy:"a9a9a9",xkhaki:"bdb76b",xmagFta:"8b008b",xTivegYF:"556b2f",xSange:"ff8c00",xScEd:"9932cc",xYd:"8b0000",xsOmon:"e9967a",xsHgYF:"8fbc8f",xUXe:"483d8b",xUWay:"2f4f4f",xUgYy:"2f4f4f",xQe:"ced1",xviTet:"9400d3",dAppRk:"ff1493",dApskyXe:"bfff",dimWay:"696969",dimgYy:"696969",dodgerXe:"1e90ff",fiYbrick:"b22222",flSOwEte:"fffaf0",foYstWAn:"228b22",fuKsia:"ff00ff",gaRsbSo:"dcdcdc",ghostwEte:"f8f8ff",gTd:"ffd700",gTMnPd:"daa520",Way:"808080",gYF:"8000",gYFLw:"adff2f",gYy:"808080",honeyMw:"f0fff0",hotpRk:"ff69b4",RdianYd:"cd5c5c",Rdigo:"4b0082",ivSy:"fffff0",khaki:"f0e68c",lavFMr:"e6e6fa",lavFMrXsh:"fff0f5",lawngYF:"7cfc00",NmoncEffon:"fffacd",ZXe:"add8e6",ZcSO:"f08080",Zcyan:"e0ffff",ZgTMnPdLw:"fafad2",ZWay:"d3d3d3",ZgYF:"90ee90",ZgYy:"d3d3d3",ZpRk:"ffb6c1",ZsOmon:"ffa07a",ZsHgYF:"20b2aa",ZskyXe:"87cefa",ZUWay:"778899",ZUgYy:"778899",ZstAlXe:"b0c4de",ZLw:"ffffe0",lime:"ff00",limegYF:"32cd32",lRF:"faf0e6",magFta:"ff00ff",maPon:"800000",VaquamarRe:"66cdaa",VXe:"cd",VScEd:"ba55d3",VpurpN:"9370db",VsHgYF:"3cb371",VUXe:"7b68ee",VsprRggYF:"fa9a",VQe:"48d1cc",VviTetYd:"c71585",midnightXe:"191970",mRtcYam:"f5fffa",mistyPse:"ffe4e1",moccasR:"ffe4b5",navajowEte:"ffdead",navy:"80",Tdlace:"fdf5e6",Tive:"808000",TivedBb:"6b8e23",Sange:"ffa500",SangeYd:"ff4500",ScEd:"da70d6",pOegTMnPd:"eee8aa",pOegYF:"98fb98",pOeQe:"afeeee",pOeviTetYd:"db7093",papayawEp:"ffefd5",pHKpuff:"ffdab9",peru:"cd853f",pRk:"ffc0cb",plum:"dda0dd",powMrXe:"b0e0e6",purpN:"800080",YbeccapurpN:"663399",Yd:"ff0000",Psybrown:"bc8f8f",PyOXe:"4169e1",saddNbPwn:"8b4513",sOmon:"fa8072",sandybPwn:"f4a460",sHgYF:"2e8b57",sHshell:"fff5ee",siFna:"a0522d",silver:"c0c0c0",skyXe:"87ceeb",UXe:"6a5acd",UWay:"708090",UgYy:"708090",snow:"fffafa",sprRggYF:"ff7f",stAlXe:"4682b4",tan:"d2b48c",teO:"8080",tEstN:"d8bfd8",tomato:"ff6347",Qe:"40e0d0",viTet:"ee82ee",JHt:"f5deb3",wEte:"ffffff",wEtesmoke:"f5f5f5",Lw:"ffff00",LwgYF:"9acd32"};let Rg;function Ng(t){Rg||(Rg=function(){const t={},e=Object.keys(Pg),i=Object.keys(Lg);let o,n,s,r,a;for(o=0;o<e.length;o++){for(r=a=e[o],n=0;n<i.length;n++)s=i[n],a=a.replace(s,Lg[s]);s=parseInt(Pg[r],16),t[a]=[s>>16&255,s>>8&255,255&s]}return t}(),Rg.transparent=[0,0,0,0]);const e=Rg[t.toLowerCase()];return e&&{r:e[0],g:e[1],b:e[2],a:4===e.length?e[3]:255}}const Bg=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;const Fg=t=>t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055,qg=t=>t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4);function Ug(t,e,i){if(t){let o=Dg(t);o[e]=Math.max(0,Math.min(o[e]+o[e]*i,0===e?360:1)),o=zg(o),t.r=o[0],t.g=o[1],t.b=o[2]}}function jg(t,e){return t?Object.assign(e||{},t):t}function Hg(t){var e={r:0,g:0,b:0,a:255};return Array.isArray(t)?t.length>=3&&(e={r:t[0],g:t[1],b:t[2],a:255},t.length>3&&(e.a=vg(t[3]))):(e=jg(t,{r:0,g:0,b:0,a:1})).a=vg(e.a),e}function Wg(t){return"r"===t.charAt(0)?function(t){const e=Bg.exec(t);let i,o,n,s=255;if(e){if(e[7]!==i){const t=+e[7];s=e[8]?fg(t):gg(255*t,0,255)}return i=+e[1],o=+e[3],n=+e[5],i=255&(e[2]?fg(i):gg(i,0,255)),o=255&(e[4]?fg(o):gg(o,0,255)),n=255&(e[6]?fg(n):gg(n,0,255)),{r:i,g:o,b:n,a:s}}}(t):Og(t)}class Vg{constructor(t){if(t instanceof Vg)return t;const e=typeof t;let i;var o,n,s;"object"===e?i=Hg(t):"string"===e&&(s=(o=t).length,"#"===o[0]&&(4===s||5===s?n={r:255&17*xg[o[1]],g:255&17*xg[o[2]],b:255&17*xg[o[3]],a:5===s?17*xg[o[4]]:255}:7!==s&&9!==s||(n={r:xg[o[1]]<<4|xg[o[2]],g:xg[o[3]]<<4|xg[o[4]],b:xg[o[5]]<<4|xg[o[6]],a:9===s?xg[o[7]]<<4|xg[o[8]]:255})),i=n||Ng(t)||Wg(t)),this._rgb=i,this._valid=!!i}get valid(){return this._valid}get rgb(){var t=jg(this._rgb);return t&&(t.a=bg(t.a)),t}set rgb(t){this._rgb=Hg(t)}rgbString(){return this._valid?function(t){return t&&(t.a<255?`rgba(${t.r}, ${t.g}, ${t.b}, ${bg(t.a)})`:`rgb(${t.r}, ${t.g}, ${t.b})`)}(this._rgb):void 0}hexString(){return this._valid?Sg(this._rgb):void 0}hslString(){return this._valid?function(t){if(!t)return;const e=Dg(t),i=e[0],o=yg(e[1]),n=yg(e[2]);return t.a<255?`hsla(${i}, ${o}%, ${n}%, ${bg(t.a)})`:`hsl(${i}, ${o}%, ${n}%)`}(this._rgb):void 0}mix(t,e){if(t){const i=this.rgb,o=t.rgb;let n;const s=e===n?.5:e,r=2*s-1,a=i.a-o.a,l=((r*a===-1?r:(r+a)/(1+r*a))+1)/2;n=1-l,i.r=255&l*i.r+n*o.r+.5,i.g=255&l*i.g+n*o.g+.5,i.b=255&l*i.b+n*o.b+.5,i.a=s*i.a+(1-s)*o.a,this.rgb=i}return this}interpolate(t,e){return t&&(this._rgb=function(t,e,i){const o=qg(bg(t.r)),n=qg(bg(t.g)),s=qg(bg(t.b));return{r:vg(Fg(o+i*(qg(bg(e.r))-o))),g:vg(Fg(n+i*(qg(bg(e.g))-n))),b:vg(Fg(s+i*(qg(bg(e.b))-s))),a:t.a+i*(e.a-t.a)}}(this._rgb,t._rgb,e)),this}clone(){return new Vg(this.rgb)}alpha(t){return this._rgb.a=vg(t),this}clearer(t){return this._rgb.a*=1-t,this}greyscale(){const t=this._rgb,e=mg(.3*t.r+.59*t.g+.11*t.b);return t.r=t.g=t.b=e,this}opaquer(t){return this._rgb.a*=1+t,this}negate(){const t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}lighten(t){return Ug(this._rgb,2,t),this}darken(t){return Ug(this._rgb,2,-t),this}saturate(t){return Ug(this._rgb,1,t),this}desaturate(t){return Ug(this._rgb,1,-t),this}rotate(t){return function(t,e){var i=Dg(t);i[0]=Ig(i[0]+e),i=zg(i),t.r=i[0],t.g=i[1],t.b=i[2]}(this._rgb,t),this}}
|
|
12238
12235
|
/*!
|
|
12239
12236
|
* Chart.js v4.5.1
|
|
12240
12237
|
* https://www.chartjs.org
|
|
12241
12238
|
* (c) 2025 Chart.js Contributors
|
|
12242
12239
|
* Released under the MIT License
|
|
12243
|
-
*/function Yg(){}const Kg=(()=>{let t=0;return()=>t++})();function Gg(t){return null==t}function Xg(t){if(Array.isArray&&Array.isArray(t))return!0;const e=Object.prototype.toString.call(t);return"[object"===e.slice(0,7)&&"Array]"===e.slice(-6)}function Qg(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)}function Jg(t){return("number"==typeof t||t instanceof Number)&&isFinite(+t)}function tf(t,e){return Jg(t)?t:e}function ef(t,e){return void 0===t?e:t}const of=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100*e:+t;function nf(t,e,i){if(t&&"function"==typeof t.call)return t.apply(i,e)}function sf(t,e,i,o){let n,s,r;if(Xg(t))for(s=t.length,n=0;n<s;n++)e.call(i,t[n],n);else if(Qg(t))for(r=Object.keys(t),s=r.length,n=0;n<s;n++)e.call(i,t[r[n]],r[n])}function rf(t,e){let i,o,n,s;if(!t||!e||t.length!==e.length)return!1;for(i=0,o=t.length;i<o;++i)if(n=t[i],s=e[i],n.datasetIndex!==s.datasetIndex||n.index!==s.index)return!1;return!0}function af(t){if(Xg(t))return t.map(af);if(Qg(t)){const e=Object.create(null),i=Object.keys(t),o=i.length;let n=0;for(;n<o;++n)e[i[n]]=af(t[i[n]]);return e}return t}function lf(t){return-1===["__proto__","prototype","constructor"].indexOf(t)}function df(t,e,i,o){if(!lf(t))return;const n=e[t],s=i[t];Qg(n)&&Qg(s)?cf(n,s,o):e[t]=af(s)}function cf(t,e,i){const o=Xg(e)?e:[e],n=o.length;if(!Qg(t))return t;const s=(i=i||{}).merger||df;let r;for(let e=0;e<n;++e){if(r=o[e],!Qg(r))continue;const n=Object.keys(r);for(let e=0,o=n.length;e<o;++e)s(n[e],t,r,i)}return t}function hf(t,e){return cf(t,e,{merger:uf})}function uf(t,e,i){if(!lf(t))return;const o=e[t],n=i[t];Qg(o)&&Qg(n)?hf(o,n):Object.prototype.hasOwnProperty.call(e,t)||(e[t]=af(n))}const pf={"":t=>t,x:t=>t.x,y:t=>t.y};function mf(t,e){const i=pf[e]||(pf[e]=function(t){const e=function(t){const e=t.split("."),i=[];let o="";for(const t of e)o+=t,o.endsWith("\\")?o=o.slice(0,-1)+".":(i.push(o),o="");return i}(t);return t=>{for(const i of e){if(""===i)break;t=t&&t[i]}return t}}(e));return i(t)}function gf(t){return t.charAt(0).toUpperCase()+t.slice(1)}const ff=t=>void 0!==t,vf=t=>"function"==typeof t,bf=(t,e)=>{if(t.size!==e.size)return!1;for(const i of t)if(!e.has(i))return!1;return!0};const yf=Math.PI,xf=2*yf,wf=xf+yf,_f=Number.POSITIVE_INFINITY,kf=yf/180,Cf=yf/2,Sf=yf/4,Af=2*yf/3,$f=Math.log10,Ef=Math.sign;function Tf(t,e,i){return Math.abs(t-e)<i}function Df(t){const e=Math.round(t);t=Tf(t,e,t/1e3)?e:t;const i=Math.pow(10,Math.floor($f(t))),o=t/i;return(o<=1?1:o<=2?2:o<=5?5:10)*i}function Mf(t){return!function(t){return"symbol"==typeof t||"object"==typeof t&&null!==t&&!(Symbol.toPrimitive in t||"toString"in t||"valueOf"in t)}(t)&&!isNaN(parseFloat(t))&&isFinite(t)}function zf(t,e,i){let o,n,s;for(o=0,n=t.length;o<n;o++)s=t[o][i],isNaN(s)||(e.min=Math.min(e.min,s),e.max=Math.max(e.max,s))}function If(t){return t*(yf/180)}function Of(t){return t*(180/yf)}function Lf(t){if(!Jg(t))return;let e=1,i=0;for(;Math.round(t*e)/e!==t;)e*=10,i++;return i}function Pf(t,e){const i=e.x-t.x,o=e.y-t.y,n=Math.sqrt(i*i+o*o);let s=Math.atan2(o,i);return s<-.5*yf&&(s+=xf),{angle:s,distance:n}}function Rf(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function Nf(t,e){return(t-e+wf)%xf-yf}function Bf(t){return(t%xf+xf)%xf}function Ff(t,e,i,o){const n=Bf(t),s=Bf(e),r=Bf(i),a=Bf(s-n),l=Bf(r-n),d=Bf(n-s),c=Bf(n-r);return n===s||n===r||o&&s===r||a>l&&d<c}function qf(t,e,i){return Math.max(e,Math.min(i,t))}function Uf(t,e,i,o=1e-6){return t>=Math.min(e,i)-o&&t<=Math.max(e,i)+o}function jf(t,e,i){i=i||(i=>t[i]<e);let o,n=t.length-1,s=0;for(;n-s>1;)o=s+n>>1,i(o)?s=o:n=o;return{lo:s,hi:n}}const Hf=(t,e,i,o)=>jf(t,i,o?o=>{const n=t[o][e];return n<i||n===i&&t[o+1][e]===i}:o=>t[o][e]<i),Wf=(t,e,i)=>jf(t,i,o=>t[o][e]>=i);const Vf=["push","pop","shift","splice","unshift"];function Zf(t,e){const i=t._chartjs;if(!i)return;const o=i.listeners,n=o.indexOf(e);-1!==n&&o.splice(n,1),o.length>0||(Vf.forEach(e=>{delete t[e]}),delete t._chartjs)}function Yf(t){const e=new Set(t);return e.size===t.length?t:Array.from(e)}const Kf="undefined"==typeof window?function(t){return t()}:window.requestAnimationFrame;function Gf(t,e){let i=[],o=!1;return function(...n){i=n,o||(o=!0,Kf.call(window,()=>{o=!1,t.apply(e,i)}))}}const Xf=t=>"start"===t?"left":"end"===t?"right":"center",Qf=(t,e,i)=>"start"===t?e:"end"===t?i:(e+i)/2;function Jf(t,e,i){const o=e.length;let n=0,s=o;if(t._sorted){const{iScale:r,vScale:a,_parsed:l}=t,d=t.dataset&&t.dataset.options?t.dataset.options.spanGaps:null,c=r.axis,{min:h,max:u,minDefined:p,maxDefined:m}=r.getUserBounds();if(p){if(n=Math.min(Hf(l,c,h).lo,i?o:Hf(e,c,r.getPixelForValue(h)).lo),d){const t=l.slice(0,n+1).reverse().findIndex(t=>!Gg(t[a.axis]));n-=Math.max(0,t)}n=qf(n,0,o-1)}if(m){let t=Math.max(Hf(l,r.axis,u,!0).hi+1,i?0:Hf(e,c,r.getPixelForValue(u),!0).hi+1);if(d){const e=l.slice(t-1).findIndex(t=>!Gg(t[a.axis]));t+=Math.max(0,e)}s=qf(t,n,o)-n}else s=o-n}return{start:n,count:s}}function tv(t){const{xScale:e,yScale:i,_scaleRanges:o}=t,n={xmin:e.min,xmax:e.max,ymin:i.min,ymax:i.max};if(!o)return t._scaleRanges=n,!0;const s=o.xmin!==e.min||o.xmax!==e.max||o.ymin!==i.min||o.ymax!==i.max;return Object.assign(o,n),s}const ev=t=>0===t||1===t,iv=(t,e,i)=>-Math.pow(2,10*(t-=1))*Math.sin((t-e)*xf/i),ov=(t,e,i)=>Math.pow(2,-10*t)*Math.sin((t-e)*xf/i)+1,nv={linear:t=>t,easeInQuad:t=>t*t,easeOutQuad:t=>-t*(t-2),easeInOutQuad:t=>(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1),easeInCubic:t=>t*t*t,easeOutCubic:t=>(t-=1)*t*t+1,easeInOutCubic:t=>(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2),easeInQuart:t=>t*t*t*t,easeOutQuart:t=>-((t-=1)*t*t*t-1),easeInOutQuart:t=>(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2),easeInQuint:t=>t*t*t*t*t,easeOutQuint:t=>(t-=1)*t*t*t*t+1,easeInOutQuint:t=>(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2),easeInSine:t=>1-Math.cos(t*Cf),easeOutSine:t=>Math.sin(t*Cf),easeInOutSine:t=>-.5*(Math.cos(yf*t)-1),easeInExpo:t=>0===t?0:Math.pow(2,10*(t-1)),easeOutExpo:t=>1===t?1:1-Math.pow(2,-10*t),easeInOutExpo:t=>ev(t)?t:t<.5?.5*Math.pow(2,10*(2*t-1)):.5*(2-Math.pow(2,-10*(2*t-1))),easeInCirc:t=>t>=1?t:-(Math.sqrt(1-t*t)-1),easeOutCirc:t=>Math.sqrt(1-(t-=1)*t),easeInOutCirc:t=>(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1),easeInElastic:t=>ev(t)?t:iv(t,.075,.3),easeOutElastic:t=>ev(t)?t:ov(t,.075,.3),easeInOutElastic(t){const e=.1125;return ev(t)?t:t<.5?.5*iv(2*t,e,.45):.5+.5*ov(2*t-1,e,.45)},easeInBack(t){const e=1.70158;return t*t*((e+1)*t-e)},easeOutBack(t){const e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack(t){let e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:t=>1-nv.easeOutBounce(1-t),easeOutBounce(t){const e=7.5625,i=2.75;return t<1/i?e*t*t:t<2/i?e*(t-=1.5/i)*t+.75:t<2.5/i?e*(t-=2.25/i)*t+.9375:e*(t-=2.625/i)*t+.984375},easeInOutBounce:t=>t<.5?.5*nv.easeInBounce(2*t):.5*nv.easeOutBounce(2*t-1)+.5};function sv(t){if(t&&"object"==typeof t){const e=t.toString();return"[object CanvasPattern]"===e||"[object CanvasGradient]"===e}return!1}function rv(t){return sv(t)?t:new Zg(t)}function av(t){return sv(t)?t:new Zg(t).saturate(.5).darken(.1).hexString()}const lv=["x","y","borderWidth","radius","tension"],dv=["color","borderColor","backgroundColor"];const cv=new Map;function hv(t,e,i){return function(t,e){e=e||{};const i=t+JSON.stringify(e);let o=cv.get(i);return o||(o=new Intl.NumberFormat(t,e),cv.set(i,o)),o}(e,i).format(t)}const uv={values:t=>Xg(t)?t:""+t,numeric(t,e,i){if(0===t)return"0";const o=this.chart.options.locale;let n,s=t;if(i.length>1){const e=Math.max(Math.abs(i[0].value),Math.abs(i[i.length-1].value));(e<1e-4||e>1e15)&&(n="scientific"),s=function(t,e){let i=e.length>3?e[2].value-e[1].value:e[1].value-e[0].value;Math.abs(i)>=1&&t!==Math.floor(t)&&(i=t-Math.floor(t));return i}(t,i)}const r=$f(Math.abs(s)),a=isNaN(r)?1:Math.max(Math.min(-1*Math.floor(r),20),0),l={notation:n,minimumFractionDigits:a,maximumFractionDigits:a};return Object.assign(l,this.options.ticks.format),hv(t,o,l)},logarithmic(t,e,i){if(0===t)return"0";const o=i[e].significand||t/Math.pow(10,Math.floor($f(t)));return[1,2,3,5,10,15].includes(o)||e>.8*i.length?uv.numeric.call(this,t,e,i):""}};var pv={formatters:uv};const mv=Object.create(null),gv=Object.create(null);function fv(t,e){if(!e)return t;const i=e.split(".");for(let e=0,o=i.length;e<o;++e){const o=i[e];t=t[o]||(t[o]=Object.create(null))}return t}function vv(t,e,i){return"string"==typeof e?cf(fv(t,e),i):cf(fv(t,""),e)}class bv{constructor(t,e){this.animation=void 0,this.backgroundColor="rgba(0,0,0,0.1)",this.borderColor="rgba(0,0,0,0.1)",this.color="#666",this.datasets={},this.devicePixelRatio=t=>t.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(t,e)=>av(e.backgroundColor),this.hoverBorderColor=(t,e)=>av(e.borderColor),this.hoverColor=(t,e)=>av(e.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(t),this.apply(e)}set(t,e){return vv(this,t,e)}get(t){return fv(this,t)}describe(t,e){return vv(gv,t,e)}override(t,e){return vv(mv,t,e)}route(t,e,i,o){const n=fv(this,t),s=fv(this,i),r="_"+e;Object.defineProperties(n,{[r]:{value:n[e],writable:!0},[e]:{enumerable:!0,get(){const t=this[r],e=s[o];return Qg(t)?Object.assign({},e,t):ef(t,e)},set(t){this[r]=t}}})}apply(t){t.forEach(t=>t(this))}}var yv=new bv({_scriptable:t=>!t.startsWith("on"),_indexable:t=>"events"!==t,hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}},[function(t){t.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),t.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:t=>"onProgress"!==t&&"onComplete"!==t&&"fn"!==t}),t.set("animations",{colors:{type:"color",properties:dv},numbers:{type:"number",properties:lv}}),t.describe("animations",{_fallback:"animation"}),t.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:t=>0|t}}}})},function(t){t.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})},function(t){t.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(t,e)=>e.lineWidth,tickColor:(t,e)=>e.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:pv.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),t.route("scale.ticks","color","","color"),t.route("scale.grid","color","","borderColor"),t.route("scale.border","color","","borderColor"),t.route("scale.title","color","","color"),t.describe("scale",{_fallback:!1,_scriptable:t=>!t.startsWith("before")&&!t.startsWith("after")&&"callback"!==t&&"parser"!==t,_indexable:t=>"borderDash"!==t&&"tickBorderDash"!==t&&"dash"!==t}),t.describe("scales",{_fallback:"scale"}),t.describe("scale.ticks",{_scriptable:t=>"backdropPadding"!==t&&"callback"!==t,_indexable:t=>"backdropPadding"!==t})}]);function xv(t,e,i,o,n){let s=e[n];return s||(s=e[n]=t.measureText(n).width,i.push(n)),s>o&&(o=s),o}function wv(t,e,i,o){let n=(o=o||{}).data=o.data||{},s=o.garbageCollect=o.garbageCollect||[];o.font!==e&&(n=o.data={},s=o.garbageCollect=[],o.font=e),t.save(),t.font=e;let r=0;const a=i.length;let l,d,c,h,u;for(l=0;l<a;l++)if(h=i[l],null==h||Xg(h)){if(Xg(h))for(d=0,c=h.length;d<c;d++)u=h[d],null==u||Xg(u)||(r=xv(t,n,s,r,u))}else r=xv(t,n,s,r,h);t.restore();const p=s.length/2;if(p>i.length){for(l=0;l<p;l++)delete n[s[l]];s.splice(0,p)}return r}function _v(t,e,i){const o=t.currentDevicePixelRatio,n=0!==i?Math.max(i/2,.5):0;return Math.round((e-n)*o)/o+n}function kv(t,e){(e||t)&&((e=e||t.getContext("2d")).save(),e.resetTransform(),e.clearRect(0,0,t.width,t.height),e.restore())}function Cv(t,e,i,o){Sv(t,e,i,o,null)}function Sv(t,e,i,o,n){let s,r,a,l,d,c,h,u;const p=e.pointStyle,m=e.rotation,g=e.radius;let f=(m||0)*kf;if(p&&"object"==typeof p&&(s=p.toString(),"[object HTMLImageElement]"===s||"[object HTMLCanvasElement]"===s))return t.save(),t.translate(i,o),t.rotate(f),t.drawImage(p,-p.width/2,-p.height/2,p.width,p.height),void t.restore();if(!(isNaN(g)||g<=0)){switch(t.beginPath(),p){default:n?t.ellipse(i,o,n/2,g,0,0,xf):t.arc(i,o,g,0,xf),t.closePath();break;case"triangle":c=n?n/2:g,t.moveTo(i+Math.sin(f)*c,o-Math.cos(f)*g),f+=Af,t.lineTo(i+Math.sin(f)*c,o-Math.cos(f)*g),f+=Af,t.lineTo(i+Math.sin(f)*c,o-Math.cos(f)*g),t.closePath();break;case"rectRounded":d=.516*g,l=g-d,r=Math.cos(f+Sf)*l,h=Math.cos(f+Sf)*(n?n/2-d:l),a=Math.sin(f+Sf)*l,u=Math.sin(f+Sf)*(n?n/2-d:l),t.arc(i-h,o-a,d,f-yf,f-Cf),t.arc(i+u,o-r,d,f-Cf,f),t.arc(i+h,o+a,d,f,f+Cf),t.arc(i-u,o+r,d,f+Cf,f+yf),t.closePath();break;case"rect":if(!m){l=Math.SQRT1_2*g,c=n?n/2:l,t.rect(i-c,o-l,2*c,2*l);break}f+=Sf;case"rectRot":h=Math.cos(f)*(n?n/2:g),r=Math.cos(f)*g,a=Math.sin(f)*g,u=Math.sin(f)*(n?n/2:g),t.moveTo(i-h,o-a),t.lineTo(i+u,o-r),t.lineTo(i+h,o+a),t.lineTo(i-u,o+r),t.closePath();break;case"crossRot":f+=Sf;case"cross":h=Math.cos(f)*(n?n/2:g),r=Math.cos(f)*g,a=Math.sin(f)*g,u=Math.sin(f)*(n?n/2:g),t.moveTo(i-h,o-a),t.lineTo(i+h,o+a),t.moveTo(i+u,o-r),t.lineTo(i-u,o+r);break;case"star":h=Math.cos(f)*(n?n/2:g),r=Math.cos(f)*g,a=Math.sin(f)*g,u=Math.sin(f)*(n?n/2:g),t.moveTo(i-h,o-a),t.lineTo(i+h,o+a),t.moveTo(i+u,o-r),t.lineTo(i-u,o+r),f+=Sf,h=Math.cos(f)*(n?n/2:g),r=Math.cos(f)*g,a=Math.sin(f)*g,u=Math.sin(f)*(n?n/2:g),t.moveTo(i-h,o-a),t.lineTo(i+h,o+a),t.moveTo(i+u,o-r),t.lineTo(i-u,o+r);break;case"line":r=n?n/2:Math.cos(f)*g,a=Math.sin(f)*g,t.moveTo(i-r,o-a),t.lineTo(i+r,o+a);break;case"dash":t.moveTo(i,o),t.lineTo(i+Math.cos(f)*(n?n/2:g),o+Math.sin(f)*g);break;case!1:t.closePath()}t.fill(),e.borderWidth>0&&t.stroke()}}function Av(t,e,i){return i=i||.5,!e||t&&t.x>e.left-i&&t.x<e.right+i&&t.y>e.top-i&&t.y<e.bottom+i}function $v(t,e){t.save(),t.beginPath(),t.rect(e.left,e.top,e.right-e.left,e.bottom-e.top),t.clip()}function Ev(t){t.restore()}function Tv(t,e,i,o,n){if(!e)return t.lineTo(i.x,i.y);if("middle"===n){const o=(e.x+i.x)/2;t.lineTo(o,e.y),t.lineTo(o,i.y)}else"after"===n!=!!o?t.lineTo(e.x,i.y):t.lineTo(i.x,e.y);t.lineTo(i.x,i.y)}function Dv(t,e,i,o){if(!e)return t.lineTo(i.x,i.y);t.bezierCurveTo(o?e.cp1x:e.cp2x,o?e.cp1y:e.cp2y,o?i.cp2x:i.cp1x,o?i.cp2y:i.cp1y,i.x,i.y)}function Mv(t,e,i,o,n){if(n.strikethrough||n.underline){const s=t.measureText(o),r=e-s.actualBoundingBoxLeft,a=e+s.actualBoundingBoxRight,l=i-s.actualBoundingBoxAscent,d=i+s.actualBoundingBoxDescent,c=n.strikethrough?(l+d)/2:d;t.strokeStyle=t.fillStyle,t.beginPath(),t.lineWidth=n.decorationWidth||2,t.moveTo(r,c),t.lineTo(a,c),t.stroke()}}function zv(t,e){const i=t.fillStyle;t.fillStyle=e.color,t.fillRect(e.left,e.top,e.width,e.height),t.fillStyle=i}function Iv(t,e,i,o,n,s={}){const r=Xg(e)?e:[e],a=s.strokeWidth>0&&""!==s.strokeColor;let l,d;for(t.save(),t.font=n.string,function(t,e){e.translation&&t.translate(e.translation[0],e.translation[1]),Gg(e.rotation)||t.rotate(e.rotation),e.color&&(t.fillStyle=e.color),e.textAlign&&(t.textAlign=e.textAlign),e.textBaseline&&(t.textBaseline=e.textBaseline)}(t,s),l=0;l<r.length;++l)d=r[l],s.backdrop&&zv(t,s.backdrop),a&&(s.strokeColor&&(t.strokeStyle=s.strokeColor),Gg(s.strokeWidth)||(t.lineWidth=s.strokeWidth),t.strokeText(d,i,o,s.maxWidth)),t.fillText(d,i,o,s.maxWidth),Mv(t,i,o,d,s),o+=Number(n.lineHeight);t.restore()}function Ov(t,e){const{x:i,y:o,w:n,h:s,radius:r}=e;t.arc(i+r.topLeft,o+r.topLeft,r.topLeft,1.5*yf,yf,!0),t.lineTo(i,o+s-r.bottomLeft),t.arc(i+r.bottomLeft,o+s-r.bottomLeft,r.bottomLeft,yf,Cf,!0),t.lineTo(i+n-r.bottomRight,o+s),t.arc(i+n-r.bottomRight,o+s-r.bottomRight,r.bottomRight,Cf,0,!0),t.lineTo(i+n,o+r.topRight),t.arc(i+n-r.topRight,o+r.topRight,r.topRight,0,-Cf,!0),t.lineTo(i+r.topLeft,o)}const Lv=/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/,Pv=/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;function Rv(t,e){const i=(""+t).match(Lv);if(!i||"normal"===i[1])return 1.2*e;switch(t=+i[2],i[3]){case"px":return t;case"%":t/=100}return e*t}const Nv=t=>+t||0;function Bv(t,e){const i={},o=Qg(e),n=o?Object.keys(e):e,s=Qg(t)?o?i=>ef(t[i],t[e[i]]):e=>t[e]:()=>t;for(const t of n)i[t]=Nv(s(t));return i}function Fv(t){return Bv(t,{top:"y",right:"x",bottom:"y",left:"x"})}function qv(t){return Bv(t,["topLeft","topRight","bottomLeft","bottomRight"])}function Uv(t){const e=Fv(t);return e.width=e.left+e.right,e.height=e.top+e.bottom,e}function jv(t,e){t=t||{},e=e||yv.font;let i=ef(t.size,e.size);"string"==typeof i&&(i=parseInt(i,10));let o=ef(t.style,e.style);o&&!(""+o).match(Pv)&&(console.warn('Invalid font style specified: "'+o+'"'),o=void 0);const n={family:ef(t.family,e.family),lineHeight:Rv(ef(t.lineHeight,e.lineHeight),i),size:i,style:o,weight:ef(t.weight,e.weight),string:""};return n.string=function(t){return!t||Gg(t.size)||Gg(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}(n),n}function Hv(t,e,i,o){let n,s,r;for(n=0,s=t.length;n<s;++n)if(r=t[n],void 0!==r&&(void 0!==e&&"function"==typeof r&&(r=r(e)),void 0!==i&&Xg(r)&&(r=r[i%r.length]),void 0!==r))return r}function Wv(t,e){return Object.assign(Object.create(t),e)}function Vv(t,e=[""],i,o,n=()=>t[0]){const s=i||t;void 0===o&&(o=ob("_fallback",t));const r={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:t,_rootScopes:s,_fallback:o,_getTarget:n,override:i=>Vv([i,...t],e,s,o)};return new Proxy(r,{deleteProperty:(e,i)=>(delete e[i],delete e._keys,delete t[0][i],!0),get:(i,o)=>Xv(i,o,()=>function(t,e,i,o){let n;for(const s of e)if(n=ob(Kv(s,t),i),void 0!==n)return Gv(t,n)?eb(i,o,t,n):n}(o,e,t,i)),getOwnPropertyDescriptor:(t,e)=>Reflect.getOwnPropertyDescriptor(t._scopes[0],e),getPrototypeOf:()=>Reflect.getPrototypeOf(t[0]),has:(t,e)=>nb(t).includes(e),ownKeys:t=>nb(t),set(t,e,i){const o=t._storage||(t._storage=n());return t[e]=o[e]=i,delete t._keys,!0}})}function Zv(t,e,i,o){const n={_cacheable:!1,_proxy:t,_context:e,_subProxy:i,_stack:new Set,_descriptors:Yv(t,o),setContext:e=>Zv(t,e,i,o),override:n=>Zv(t.override(n),e,i,o)};return new Proxy(n,{deleteProperty:(e,i)=>(delete e[i],delete t[i],!0),get:(t,e,i)=>Xv(t,e,()=>function(t,e,i){const{_proxy:o,_context:n,_subProxy:s,_descriptors:r}=t;let a=o[e];vf(a)&&r.isScriptable(e)&&(a=function(t,e,i,o){const{_proxy:n,_context:s,_subProxy:r,_stack:a}=i;if(a.has(t))throw new Error("Recursion detected: "+Array.from(a).join("->")+"->"+t);a.add(t);let l=e(s,r||o);a.delete(t),Gv(t,l)&&(l=eb(n._scopes,n,t,l));return l}(e,a,t,i));Xg(a)&&a.length&&(a=function(t,e,i,o){const{_proxy:n,_context:s,_subProxy:r,_descriptors:a}=i;if(void 0!==s.index&&o(t))return e[s.index%e.length];if(Qg(e[0])){const i=e,o=n._scopes.filter(t=>t!==i);e=[];for(const l of i){const i=eb(o,n,t,l);e.push(Zv(i,s,r&&r[t],a))}}return e}(e,a,t,r.isIndexable));Gv(e,a)&&(a=Zv(a,n,s&&s[e],r));return a}(t,e,i)),getOwnPropertyDescriptor:(e,i)=>e._descriptors.allKeys?Reflect.has(t,i)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(t,i),getPrototypeOf:()=>Reflect.getPrototypeOf(t),has:(e,i)=>Reflect.has(t,i),ownKeys:()=>Reflect.ownKeys(t),set:(e,i,o)=>(t[i]=o,delete e[i],!0)})}function Yv(t,e={scriptable:!0,indexable:!0}){const{_scriptable:i=e.scriptable,_indexable:o=e.indexable,_allKeys:n=e.allKeys}=t;return{allKeys:n,scriptable:i,indexable:o,isScriptable:vf(i)?i:()=>i,isIndexable:vf(o)?o:()=>o}}const Kv=(t,e)=>t?t+gf(e):e,Gv=(t,e)=>Qg(e)&&"adapters"!==t&&(null===Object.getPrototypeOf(e)||e.constructor===Object);function Xv(t,e,i){if(Object.prototype.hasOwnProperty.call(t,e)||"constructor"===e)return t[e];const o=i();return t[e]=o,o}function Qv(t,e,i){return vf(t)?t(e,i):t}const Jv=(t,e)=>!0===t?e:"string"==typeof t?mf(e,t):void 0;function tb(t,e,i,o,n){for(const s of e){const e=Jv(i,s);if(e){t.add(e);const s=Qv(e._fallback,i,n);if(void 0!==s&&s!==i&&s!==o)return s}else if(!1===e&&void 0!==o&&i!==o)return null}return!1}function eb(t,e,i,o){const n=e._rootScopes,s=Qv(e._fallback,i,o),r=[...t,...n],a=new Set;a.add(o);let l=ib(a,r,i,s||i,o);return null!==l&&((void 0===s||s===i||(l=ib(a,r,s,l,o),null!==l))&&Vv(Array.from(a),[""],n,s,()=>function(t,e,i){const o=t._getTarget();e in o||(o[e]={});const n=o[e];if(Xg(n)&&Qg(i))return i;return n||{}}(e,i,o)))}function ib(t,e,i,o,n){for(;i;)i=tb(t,e,i,o,n);return i}function ob(t,e){for(const i of e){if(!i)continue;const e=i[t];if(void 0!==e)return e}}function nb(t){let e=t._keys;return e||(e=t._keys=function(t){const e=new Set;for(const i of t)for(const t of Object.keys(i).filter(t=>!t.startsWith("_")))e.add(t);return Array.from(e)}(t._scopes)),e}function sb(t,e,i,o){const{iScale:n}=t,{key:s="r"}=this._parsing,r=new Array(o);let a,l,d,c;for(a=0,l=o;a<l;++a)d=a+i,c=e[d],r[a]={r:n.parse(mf(c,s),d)};return r}const rb=Number.EPSILON||1e-14,ab=(t,e)=>e<t.length&&!t[e].skip&&t[e],lb=t=>"x"===t?"y":"x";function db(t,e,i,o){const n=t.skip?e:t,s=e,r=i.skip?e:i,a=Rf(s,n),l=Rf(r,s);let d=a/(a+l),c=l/(a+l);d=isNaN(d)?0:d,c=isNaN(c)?0:c;const h=o*d,u=o*c;return{previous:{x:s.x-h*(r.x-n.x),y:s.y-h*(r.y-n.y)},next:{x:s.x+u*(r.x-n.x),y:s.y+u*(r.y-n.y)}}}function cb(t,e="x"){const i=lb(e),o=t.length,n=Array(o).fill(0),s=Array(o);let r,a,l,d=ab(t,0);for(r=0;r<o;++r)if(a=l,l=d,d=ab(t,r+1),l){if(d){const t=d[e]-l[e];n[r]=0!==t?(d[i]-l[i])/t:0}s[r]=a?d?Ef(n[r-1])!==Ef(n[r])?0:(n[r-1]+n[r])/2:n[r-1]:n[r]}!function(t,e,i){const o=t.length;let n,s,r,a,l,d=ab(t,0);for(let c=0;c<o-1;++c)l=d,d=ab(t,c+1),l&&d&&(Tf(e[c],0,rb)?i[c]=i[c+1]=0:(n=i[c]/e[c],s=i[c+1]/e[c],a=Math.pow(n,2)+Math.pow(s,2),a<=9||(r=3/Math.sqrt(a),i[c]=n*r*e[c],i[c+1]=s*r*e[c])))}(t,n,s),function(t,e,i="x"){const o=lb(i),n=t.length;let s,r,a,l=ab(t,0);for(let d=0;d<n;++d){if(r=a,a=l,l=ab(t,d+1),!a)continue;const n=a[i],c=a[o];r&&(s=(n-r[i])/3,a[`cp1${i}`]=n-s,a[`cp1${o}`]=c-s*e[d]),l&&(s=(l[i]-n)/3,a[`cp2${i}`]=n+s,a[`cp2${o}`]=c+s*e[d])}}(t,s,e)}function hb(t,e,i){return Math.max(Math.min(t,i),e)}function ub(t,e,i,o,n){let s,r,a,l;if(e.spanGaps&&(t=t.filter(t=>!t.skip)),"monotone"===e.cubicInterpolationMode)cb(t,n);else{let i=o?t[t.length-1]:t[0];for(s=0,r=t.length;s<r;++s)a=t[s],l=db(i,a,t[Math.min(s+1,r-(o?0:1))%r],e.tension),a.cp1x=l.previous.x,a.cp1y=l.previous.y,a.cp2x=l.next.x,a.cp2y=l.next.y,i=a}e.capBezierPoints&&function(t,e){let i,o,n,s,r,a=Av(t[0],e);for(i=0,o=t.length;i<o;++i)r=s,s=a,a=i<o-1&&Av(t[i+1],e),s&&(n=t[i],r&&(n.cp1x=hb(n.cp1x,e.left,e.right),n.cp1y=hb(n.cp1y,e.top,e.bottom)),a&&(n.cp2x=hb(n.cp2x,e.left,e.right),n.cp2y=hb(n.cp2y,e.top,e.bottom)))}(t,i)}function pb(){return"undefined"!=typeof window&&"undefined"!=typeof document}function mb(t){let e=t.parentNode;return e&&"[object ShadowRoot]"===e.toString()&&(e=e.host),e}function gb(t,e,i){let o;return"string"==typeof t?(o=parseInt(t,10),-1!==t.indexOf("%")&&(o=o/100*e.parentNode[i])):o=t,o}const fb=t=>t.ownerDocument.defaultView.getComputedStyle(t,null);const vb=["top","right","bottom","left"];function bb(t,e,i){const o={};i=i?"-"+i:"";for(let n=0;n<4;n++){const s=vb[n];o[s]=parseFloat(t[e+"-"+s+i])||0}return o.width=o.left+o.right,o.height=o.top+o.bottom,o}function yb(t,e){if("native"in t)return t;const{canvas:i,currentDevicePixelRatio:o}=e,n=fb(i),s="border-box"===n.boxSizing,r=bb(n,"padding"),a=bb(n,"border","width"),{x:l,y:d,box:c}=function(t,e){const i=t.touches,o=i&&i.length?i[0]:t,{offsetX:n,offsetY:s}=o;let r,a,l=!1;if(((t,e,i)=>(t>0||e>0)&&(!i||!i.shadowRoot))(n,s,t.target))r=n,a=s;else{const t=e.getBoundingClientRect();r=o.clientX-t.left,a=o.clientY-t.top,l=!0}return{x:r,y:a,box:l}}(t,i),h=r.left+(c&&a.left),u=r.top+(c&&a.top);let{width:p,height:m}=e;return s&&(p-=r.width+a.width,m-=r.height+a.height),{x:Math.round((l-h)/p*i.width/o),y:Math.round((d-u)/m*i.height/o)}}const xb=t=>Math.round(10*t)/10;function wb(t,e,i,o){const n=fb(t),s=bb(n,"margin"),r=gb(n.maxWidth,t,"clientWidth")||_f,a=gb(n.maxHeight,t,"clientHeight")||_f,l=function(t,e,i){let o,n;if(void 0===e||void 0===i){const s=t&&mb(t);if(s){const t=s.getBoundingClientRect(),r=fb(s),a=bb(r,"border","width"),l=bb(r,"padding");e=t.width-l.width-a.width,i=t.height-l.height-a.height,o=gb(r.maxWidth,s,"clientWidth"),n=gb(r.maxHeight,s,"clientHeight")}else e=t.clientWidth,i=t.clientHeight}return{width:e,height:i,maxWidth:o||_f,maxHeight:n||_f}}(t,e,i);let{width:d,height:c}=l;if("content-box"===n.boxSizing){const t=bb(n,"border","width"),e=bb(n,"padding");d-=e.width+t.width,c-=e.height+t.height}d=Math.max(0,d-s.width),c=Math.max(0,o?d/o:c-s.height),d=xb(Math.min(d,r,l.maxWidth)),c=xb(Math.min(c,a,l.maxHeight)),d&&!c&&(c=xb(d/2));return(void 0!==e||void 0!==i)&&o&&l.height&&c>l.height&&(c=l.height,d=xb(Math.floor(c*o))),{width:d,height:c}}function _b(t,e,i){const o=e||1,n=xb(t.height*o),s=xb(t.width*o);t.height=xb(t.height),t.width=xb(t.width);const r=t.canvas;return r.style&&(i||!r.style.height&&!r.style.width)&&(r.style.height=`${t.height}px`,r.style.width=`${t.width}px`),(t.currentDevicePixelRatio!==o||r.height!==n||r.width!==s)&&(t.currentDevicePixelRatio=o,r.height=n,r.width=s,t.ctx.setTransform(o,0,0,o,0,0),!0)}const kb=function(){let t=!1;try{const e={get passive(){return t=!0,!1}};pb()&&(window.addEventListener("test",null,e),window.removeEventListener("test",null,e))}catch(t){}return t}();function Cb(t,e){const i=function(t,e){return fb(t).getPropertyValue(e)}(t,e),o=i&&i.match(/^(\d+)(\.\d+)?px$/);return o?+o[1]:void 0}function Sb(t,e,i,o){return{x:t.x+i*(e.x-t.x),y:t.y+i*(e.y-t.y)}}function Ab(t,e,i,o){return{x:t.x+i*(e.x-t.x),y:"middle"===o?i<.5?t.y:e.y:"after"===o?i<1?t.y:e.y:i>0?e.y:t.y}}function $b(t,e,i,o){const n={x:t.cp2x,y:t.cp2y},s={x:e.cp1x,y:e.cp1y},r=Sb(t,n,i),a=Sb(n,s,i),l=Sb(s,e,i),d=Sb(r,a,i),c=Sb(a,l,i);return Sb(d,c,i)}function Eb(t,e,i){return t?function(t,e){return{x:i=>t+t+e-i,setWidth(t){e=t},textAlign:t=>"center"===t?t:"right"===t?"left":"right",xPlus:(t,e)=>t-e,leftForLtr:(t,e)=>t-e}}(e,i):{x:t=>t,setWidth(t){},textAlign:t=>t,xPlus:(t,e)=>t+e,leftForLtr:(t,e)=>t}}function Tb(t,e){let i,o;"ltr"!==e&&"rtl"!==e||(i=t.canvas.style,o=[i.getPropertyValue("direction"),i.getPropertyPriority("direction")],i.setProperty("direction",e,"important"),t.prevTextDirection=o)}function Db(t,e){void 0!==e&&(delete t.prevTextDirection,t.canvas.style.setProperty("direction",e[0],e[1]))}function Mb(t){return"angle"===t?{between:Ff,compare:Nf,normalize:Bf}:{between:Uf,compare:(t,e)=>t-e,normalize:t=>t}}function zb({start:t,end:e,count:i,loop:o,style:n}){return{start:t%i,end:e%i,loop:o&&(e-t+1)%i==0,style:n}}function Ib(t,e,i){if(!i)return[t];const{property:o,start:n,end:s}=i,r=e.length,{compare:a,between:l,normalize:d}=Mb(o),{start:c,end:h,loop:u,style:p}=function(t,e,i){const{property:o,start:n,end:s}=i,{between:r,normalize:a}=Mb(o),l=e.length;let d,c,{start:h,end:u,loop:p}=t;if(p){for(h+=l,u+=l,d=0,c=l;d<c&&r(a(e[h%l][o]),n,s);++d)h--,u--;h%=l,u%=l}return u<h&&(u+=l),{start:h,end:u,loop:p,style:t.style}}(t,e,i),m=[];let g,f,v,b=!1,y=null;const x=()=>b||l(n,v,g)&&0!==a(n,v),w=()=>!b||0===a(s,g)||l(s,v,g);for(let t=c,i=c;t<=h;++t)f=e[t%r],f.skip||(g=d(f[o]),g!==v&&(b=l(g,n,s),null===y&&x()&&(y=0===a(g,n)?t:i),null!==y&&w()&&(m.push(zb({start:y,end:t,loop:u,count:r,style:p})),y=null),i=t,v=g));return null!==y&&m.push(zb({start:y,end:h,loop:u,count:r,style:p})),m}function Ob(t,e){const i=[],o=t.segments;for(let n=0;n<o.length;n++){const s=Ib(o[n],t.points,e);s.length&&i.push(...s)}return i}function Lb(t,e,i,o){return o&&o.setContext&&i?function(t,e,i,o){const n=t._chart.getContext(),s=Pb(t.options),{_datasetIndex:r,options:{spanGaps:a}}=t,l=i.length,d=[];let c=s,h=e[0].start,u=h;function p(t,e,o,n){const s=a?-1:1;if(t!==e){for(t+=l;i[t%l].skip;)t-=s;for(;i[e%l].skip;)e+=s;t%l!==e%l&&(d.push({start:t%l,end:e%l,loop:o,style:n}),c=n,h=e%l)}}for(const t of e){h=a?h:t.start;let e,s=i[h%l];for(u=h+1;u<=t.end;u++){const a=i[u%l];e=Pb(o.setContext(Wv(n,{type:"segment",p0:s,p1:a,p0DataIndex:(u-1)%l,p1DataIndex:u%l,datasetIndex:r}))),Rb(e,c)&&p(h,u-1,t.loop,c),s=a,c=e}h<u-1&&p(h,u-1,t.loop,c)}return d}(t,e,i,o):e}function Pb(t){return{backgroundColor:t.backgroundColor,borderCapStyle:t.borderCapStyle,borderDash:t.borderDash,borderDashOffset:t.borderDashOffset,borderJoinStyle:t.borderJoinStyle,borderWidth:t.borderWidth,borderColor:t.borderColor}}function Rb(t,e){if(!e)return!1;const i=[],o=function(t,e){return sv(e)?(i.includes(e)||i.push(e),i.indexOf(e)):e};return JSON.stringify(t,o)!==JSON.stringify(e,o)}function Nb(t,e,i){return t.options.clip?t[i]:e[i]}function Bb(t,e){const i=e._clip;if(i.disabled)return!1;const o=function(t,e){const{xScale:i,yScale:o}=t;return i&&o?{left:Nb(i,e,"left"),right:Nb(i,e,"right"),top:Nb(o,e,"top"),bottom:Nb(o,e,"bottom")}:e}(e,t.chartArea);return{left:!1===i.left?0:o.left-(!0===i.left?0:i.left),right:!1===i.right?t.width:o.right+(!0===i.right?0:i.right),top:!1===i.top?0:o.top-(!0===i.top?0:i.top),bottom:!1===i.bottom?t.height:o.bottom+(!0===i.bottom?0:i.bottom)}}
|
|
12240
|
+
*/function Zg(){}const Yg=(()=>{let t=0;return()=>t++})();function Kg(t){return null==t}function Gg(t){if(Array.isArray&&Array.isArray(t))return!0;const e=Object.prototype.toString.call(t);return"[object"===e.slice(0,7)&&"Array]"===e.slice(-6)}function Xg(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)}function Qg(t){return("number"==typeof t||t instanceof Number)&&isFinite(+t)}function Jg(t,e){return Qg(t)?t:e}function tf(t,e){return void 0===t?e:t}const ef=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100*e:+t;function of(t,e,i){if(t&&"function"==typeof t.call)return t.apply(i,e)}function nf(t,e,i,o){let n,s,r;if(Gg(t))for(s=t.length,n=0;n<s;n++)e.call(i,t[n],n);else if(Xg(t))for(r=Object.keys(t),s=r.length,n=0;n<s;n++)e.call(i,t[r[n]],r[n])}function sf(t,e){let i,o,n,s;if(!t||!e||t.length!==e.length)return!1;for(i=0,o=t.length;i<o;++i)if(n=t[i],s=e[i],n.datasetIndex!==s.datasetIndex||n.index!==s.index)return!1;return!0}function rf(t){if(Gg(t))return t.map(rf);if(Xg(t)){const e=Object.create(null),i=Object.keys(t),o=i.length;let n=0;for(;n<o;++n)e[i[n]]=rf(t[i[n]]);return e}return t}function af(t){return-1===["__proto__","prototype","constructor"].indexOf(t)}function lf(t,e,i,o){if(!af(t))return;const n=e[t],s=i[t];Xg(n)&&Xg(s)?df(n,s,o):e[t]=rf(s)}function df(t,e,i){const o=Gg(e)?e:[e],n=o.length;if(!Xg(t))return t;const s=(i=i||{}).merger||lf;let r;for(let e=0;e<n;++e){if(r=o[e],!Xg(r))continue;const n=Object.keys(r);for(let e=0,o=n.length;e<o;++e)s(n[e],t,r,i)}return t}function cf(t,e){return df(t,e,{merger:hf})}function hf(t,e,i){if(!af(t))return;const o=e[t],n=i[t];Xg(o)&&Xg(n)?cf(o,n):Object.prototype.hasOwnProperty.call(e,t)||(e[t]=rf(n))}const uf={"":t=>t,x:t=>t.x,y:t=>t.y};function pf(t,e){const i=uf[e]||(uf[e]=function(t){const e=function(t){const e=t.split("."),i=[];let o="";for(const t of e)o+=t,o.endsWith("\\")?o=o.slice(0,-1)+".":(i.push(o),o="");return i}(t);return t=>{for(const i of e){if(""===i)break;t=t&&t[i]}return t}}(e));return i(t)}function mf(t){return t.charAt(0).toUpperCase()+t.slice(1)}const gf=t=>void 0!==t,ff=t=>"function"==typeof t,vf=(t,e)=>{if(t.size!==e.size)return!1;for(const i of t)if(!e.has(i))return!1;return!0};const bf=Math.PI,yf=2*bf,xf=yf+bf,wf=Number.POSITIVE_INFINITY,_f=bf/180,kf=bf/2,Cf=bf/4,Sf=2*bf/3,Af=Math.log10,$f=Math.sign;function Ef(t,e,i){return Math.abs(t-e)<i}function Tf(t){const e=Math.round(t);t=Ef(t,e,t/1e3)?e:t;const i=Math.pow(10,Math.floor(Af(t))),o=t/i;return(o<=1?1:o<=2?2:o<=5?5:10)*i}function Df(t){return!function(t){return"symbol"==typeof t||"object"==typeof t&&null!==t&&!(Symbol.toPrimitive in t||"toString"in t||"valueOf"in t)}(t)&&!isNaN(parseFloat(t))&&isFinite(t)}function Mf(t,e,i){let o,n,s;for(o=0,n=t.length;o<n;o++)s=t[o][i],isNaN(s)||(e.min=Math.min(e.min,s),e.max=Math.max(e.max,s))}function zf(t){return t*(bf/180)}function If(t){return t*(180/bf)}function Of(t){if(!Qg(t))return;let e=1,i=0;for(;Math.round(t*e)/e!==t;)e*=10,i++;return i}function Lf(t,e){const i=e.x-t.x,o=e.y-t.y,n=Math.sqrt(i*i+o*o);let s=Math.atan2(o,i);return s<-.5*bf&&(s+=yf),{angle:s,distance:n}}function Pf(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function Rf(t,e){return(t-e+xf)%yf-bf}function Nf(t){return(t%yf+yf)%yf}function Bf(t,e,i,o){const n=Nf(t),s=Nf(e),r=Nf(i),a=Nf(s-n),l=Nf(r-n),d=Nf(n-s),c=Nf(n-r);return n===s||n===r||o&&s===r||a>l&&d<c}function Ff(t,e,i){return Math.max(e,Math.min(i,t))}function qf(t,e,i,o=1e-6){return t>=Math.min(e,i)-o&&t<=Math.max(e,i)+o}function Uf(t,e,i){i=i||(i=>t[i]<e);let o,n=t.length-1,s=0;for(;n-s>1;)o=s+n>>1,i(o)?s=o:n=o;return{lo:s,hi:n}}const jf=(t,e,i,o)=>Uf(t,i,o?o=>{const n=t[o][e];return n<i||n===i&&t[o+1][e]===i}:o=>t[o][e]<i),Hf=(t,e,i)=>Uf(t,i,o=>t[o][e]>=i);const Wf=["push","pop","shift","splice","unshift"];function Vf(t,e){const i=t._chartjs;if(!i)return;const o=i.listeners,n=o.indexOf(e);-1!==n&&o.splice(n,1),o.length>0||(Wf.forEach(e=>{delete t[e]}),delete t._chartjs)}function Zf(t){const e=new Set(t);return e.size===t.length?t:Array.from(e)}const Yf="undefined"==typeof window?function(t){return t()}:window.requestAnimationFrame;function Kf(t,e){let i=[],o=!1;return function(...n){i=n,o||(o=!0,Yf.call(window,()=>{o=!1,t.apply(e,i)}))}}const Gf=t=>"start"===t?"left":"end"===t?"right":"center",Xf=(t,e,i)=>"start"===t?e:"end"===t?i:(e+i)/2;function Qf(t,e,i){const o=e.length;let n=0,s=o;if(t._sorted){const{iScale:r,vScale:a,_parsed:l}=t,d=t.dataset&&t.dataset.options?t.dataset.options.spanGaps:null,c=r.axis,{min:h,max:u,minDefined:p,maxDefined:m}=r.getUserBounds();if(p){if(n=Math.min(jf(l,c,h).lo,i?o:jf(e,c,r.getPixelForValue(h)).lo),d){const t=l.slice(0,n+1).reverse().findIndex(t=>!Kg(t[a.axis]));n-=Math.max(0,t)}n=Ff(n,0,o-1)}if(m){let t=Math.max(jf(l,r.axis,u,!0).hi+1,i?0:jf(e,c,r.getPixelForValue(u),!0).hi+1);if(d){const e=l.slice(t-1).findIndex(t=>!Kg(t[a.axis]));t+=Math.max(0,e)}s=Ff(t,n,o)-n}else s=o-n}return{start:n,count:s}}function Jf(t){const{xScale:e,yScale:i,_scaleRanges:o}=t,n={xmin:e.min,xmax:e.max,ymin:i.min,ymax:i.max};if(!o)return t._scaleRanges=n,!0;const s=o.xmin!==e.min||o.xmax!==e.max||o.ymin!==i.min||o.ymax!==i.max;return Object.assign(o,n),s}const tv=t=>0===t||1===t,ev=(t,e,i)=>-Math.pow(2,10*(t-=1))*Math.sin((t-e)*yf/i),iv=(t,e,i)=>Math.pow(2,-10*t)*Math.sin((t-e)*yf/i)+1,ov={linear:t=>t,easeInQuad:t=>t*t,easeOutQuad:t=>-t*(t-2),easeInOutQuad:t=>(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1),easeInCubic:t=>t*t*t,easeOutCubic:t=>(t-=1)*t*t+1,easeInOutCubic:t=>(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2),easeInQuart:t=>t*t*t*t,easeOutQuart:t=>-((t-=1)*t*t*t-1),easeInOutQuart:t=>(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2),easeInQuint:t=>t*t*t*t*t,easeOutQuint:t=>(t-=1)*t*t*t*t+1,easeInOutQuint:t=>(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2),easeInSine:t=>1-Math.cos(t*kf),easeOutSine:t=>Math.sin(t*kf),easeInOutSine:t=>-.5*(Math.cos(bf*t)-1),easeInExpo:t=>0===t?0:Math.pow(2,10*(t-1)),easeOutExpo:t=>1===t?1:1-Math.pow(2,-10*t),easeInOutExpo:t=>tv(t)?t:t<.5?.5*Math.pow(2,10*(2*t-1)):.5*(2-Math.pow(2,-10*(2*t-1))),easeInCirc:t=>t>=1?t:-(Math.sqrt(1-t*t)-1),easeOutCirc:t=>Math.sqrt(1-(t-=1)*t),easeInOutCirc:t=>(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1),easeInElastic:t=>tv(t)?t:ev(t,.075,.3),easeOutElastic:t=>tv(t)?t:iv(t,.075,.3),easeInOutElastic(t){const e=.1125;return tv(t)?t:t<.5?.5*ev(2*t,e,.45):.5+.5*iv(2*t-1,e,.45)},easeInBack(t){const e=1.70158;return t*t*((e+1)*t-e)},easeOutBack(t){const e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack(t){let e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:t=>1-ov.easeOutBounce(1-t),easeOutBounce(t){const e=7.5625,i=2.75;return t<1/i?e*t*t:t<2/i?e*(t-=1.5/i)*t+.75:t<2.5/i?e*(t-=2.25/i)*t+.9375:e*(t-=2.625/i)*t+.984375},easeInOutBounce:t=>t<.5?.5*ov.easeInBounce(2*t):.5*ov.easeOutBounce(2*t-1)+.5};function nv(t){if(t&&"object"==typeof t){const e=t.toString();return"[object CanvasPattern]"===e||"[object CanvasGradient]"===e}return!1}function sv(t){return nv(t)?t:new Vg(t)}function rv(t){return nv(t)?t:new Vg(t).saturate(.5).darken(.1).hexString()}const av=["x","y","borderWidth","radius","tension"],lv=["color","borderColor","backgroundColor"];const dv=new Map;function cv(t,e,i){return function(t,e){e=e||{};const i=t+JSON.stringify(e);let o=dv.get(i);return o||(o=new Intl.NumberFormat(t,e),dv.set(i,o)),o}(e,i).format(t)}const hv={values:t=>Gg(t)?t:""+t,numeric(t,e,i){if(0===t)return"0";const o=this.chart.options.locale;let n,s=t;if(i.length>1){const e=Math.max(Math.abs(i[0].value),Math.abs(i[i.length-1].value));(e<1e-4||e>1e15)&&(n="scientific"),s=function(t,e){let i=e.length>3?e[2].value-e[1].value:e[1].value-e[0].value;Math.abs(i)>=1&&t!==Math.floor(t)&&(i=t-Math.floor(t));return i}(t,i)}const r=Af(Math.abs(s)),a=isNaN(r)?1:Math.max(Math.min(-1*Math.floor(r),20),0),l={notation:n,minimumFractionDigits:a,maximumFractionDigits:a};return Object.assign(l,this.options.ticks.format),cv(t,o,l)},logarithmic(t,e,i){if(0===t)return"0";const o=i[e].significand||t/Math.pow(10,Math.floor(Af(t)));return[1,2,3,5,10,15].includes(o)||e>.8*i.length?hv.numeric.call(this,t,e,i):""}};var uv={formatters:hv};const pv=Object.create(null),mv=Object.create(null);function gv(t,e){if(!e)return t;const i=e.split(".");for(let e=0,o=i.length;e<o;++e){const o=i[e];t=t[o]||(t[o]=Object.create(null))}return t}function fv(t,e,i){return"string"==typeof e?df(gv(t,e),i):df(gv(t,""),e)}class vv{constructor(t,e){this.animation=void 0,this.backgroundColor="rgba(0,0,0,0.1)",this.borderColor="rgba(0,0,0,0.1)",this.color="#666",this.datasets={},this.devicePixelRatio=t=>t.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(t,e)=>rv(e.backgroundColor),this.hoverBorderColor=(t,e)=>rv(e.borderColor),this.hoverColor=(t,e)=>rv(e.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(t),this.apply(e)}set(t,e){return fv(this,t,e)}get(t){return gv(this,t)}describe(t,e){return fv(mv,t,e)}override(t,e){return fv(pv,t,e)}route(t,e,i,o){const n=gv(this,t),s=gv(this,i),r="_"+e;Object.defineProperties(n,{[r]:{value:n[e],writable:!0},[e]:{enumerable:!0,get(){const t=this[r],e=s[o];return Xg(t)?Object.assign({},e,t):tf(t,e)},set(t){this[r]=t}}})}apply(t){t.forEach(t=>t(this))}}var bv=new vv({_scriptable:t=>!t.startsWith("on"),_indexable:t=>"events"!==t,hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}},[function(t){t.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),t.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:t=>"onProgress"!==t&&"onComplete"!==t&&"fn"!==t}),t.set("animations",{colors:{type:"color",properties:lv},numbers:{type:"number",properties:av}}),t.describe("animations",{_fallback:"animation"}),t.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:t=>0|t}}}})},function(t){t.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})},function(t){t.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(t,e)=>e.lineWidth,tickColor:(t,e)=>e.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:uv.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),t.route("scale.ticks","color","","color"),t.route("scale.grid","color","","borderColor"),t.route("scale.border","color","","borderColor"),t.route("scale.title","color","","color"),t.describe("scale",{_fallback:!1,_scriptable:t=>!t.startsWith("before")&&!t.startsWith("after")&&"callback"!==t&&"parser"!==t,_indexable:t=>"borderDash"!==t&&"tickBorderDash"!==t&&"dash"!==t}),t.describe("scales",{_fallback:"scale"}),t.describe("scale.ticks",{_scriptable:t=>"backdropPadding"!==t&&"callback"!==t,_indexable:t=>"backdropPadding"!==t})}]);function yv(t,e,i,o,n){let s=e[n];return s||(s=e[n]=t.measureText(n).width,i.push(n)),s>o&&(o=s),o}function xv(t,e,i,o){let n=(o=o||{}).data=o.data||{},s=o.garbageCollect=o.garbageCollect||[];o.font!==e&&(n=o.data={},s=o.garbageCollect=[],o.font=e),t.save(),t.font=e;let r=0;const a=i.length;let l,d,c,h,u;for(l=0;l<a;l++)if(h=i[l],null==h||Gg(h)){if(Gg(h))for(d=0,c=h.length;d<c;d++)u=h[d],null==u||Gg(u)||(r=yv(t,n,s,r,u))}else r=yv(t,n,s,r,h);t.restore();const p=s.length/2;if(p>i.length){for(l=0;l<p;l++)delete n[s[l]];s.splice(0,p)}return r}function wv(t,e,i){const o=t.currentDevicePixelRatio,n=0!==i?Math.max(i/2,.5):0;return Math.round((e-n)*o)/o+n}function _v(t,e){(e||t)&&((e=e||t.getContext("2d")).save(),e.resetTransform(),e.clearRect(0,0,t.width,t.height),e.restore())}function kv(t,e,i,o){Cv(t,e,i,o,null)}function Cv(t,e,i,o,n){let s,r,a,l,d,c,h,u;const p=e.pointStyle,m=e.rotation,g=e.radius;let f=(m||0)*_f;if(p&&"object"==typeof p&&(s=p.toString(),"[object HTMLImageElement]"===s||"[object HTMLCanvasElement]"===s))return t.save(),t.translate(i,o),t.rotate(f),t.drawImage(p,-p.width/2,-p.height/2,p.width,p.height),void t.restore();if(!(isNaN(g)||g<=0)){switch(t.beginPath(),p){default:n?t.ellipse(i,o,n/2,g,0,0,yf):t.arc(i,o,g,0,yf),t.closePath();break;case"triangle":c=n?n/2:g,t.moveTo(i+Math.sin(f)*c,o-Math.cos(f)*g),f+=Sf,t.lineTo(i+Math.sin(f)*c,o-Math.cos(f)*g),f+=Sf,t.lineTo(i+Math.sin(f)*c,o-Math.cos(f)*g),t.closePath();break;case"rectRounded":d=.516*g,l=g-d,r=Math.cos(f+Cf)*l,h=Math.cos(f+Cf)*(n?n/2-d:l),a=Math.sin(f+Cf)*l,u=Math.sin(f+Cf)*(n?n/2-d:l),t.arc(i-h,o-a,d,f-bf,f-kf),t.arc(i+u,o-r,d,f-kf,f),t.arc(i+h,o+a,d,f,f+kf),t.arc(i-u,o+r,d,f+kf,f+bf),t.closePath();break;case"rect":if(!m){l=Math.SQRT1_2*g,c=n?n/2:l,t.rect(i-c,o-l,2*c,2*l);break}f+=Cf;case"rectRot":h=Math.cos(f)*(n?n/2:g),r=Math.cos(f)*g,a=Math.sin(f)*g,u=Math.sin(f)*(n?n/2:g),t.moveTo(i-h,o-a),t.lineTo(i+u,o-r),t.lineTo(i+h,o+a),t.lineTo(i-u,o+r),t.closePath();break;case"crossRot":f+=Cf;case"cross":h=Math.cos(f)*(n?n/2:g),r=Math.cos(f)*g,a=Math.sin(f)*g,u=Math.sin(f)*(n?n/2:g),t.moveTo(i-h,o-a),t.lineTo(i+h,o+a),t.moveTo(i+u,o-r),t.lineTo(i-u,o+r);break;case"star":h=Math.cos(f)*(n?n/2:g),r=Math.cos(f)*g,a=Math.sin(f)*g,u=Math.sin(f)*(n?n/2:g),t.moveTo(i-h,o-a),t.lineTo(i+h,o+a),t.moveTo(i+u,o-r),t.lineTo(i-u,o+r),f+=Cf,h=Math.cos(f)*(n?n/2:g),r=Math.cos(f)*g,a=Math.sin(f)*g,u=Math.sin(f)*(n?n/2:g),t.moveTo(i-h,o-a),t.lineTo(i+h,o+a),t.moveTo(i+u,o-r),t.lineTo(i-u,o+r);break;case"line":r=n?n/2:Math.cos(f)*g,a=Math.sin(f)*g,t.moveTo(i-r,o-a),t.lineTo(i+r,o+a);break;case"dash":t.moveTo(i,o),t.lineTo(i+Math.cos(f)*(n?n/2:g),o+Math.sin(f)*g);break;case!1:t.closePath()}t.fill(),e.borderWidth>0&&t.stroke()}}function Sv(t,e,i){return i=i||.5,!e||t&&t.x>e.left-i&&t.x<e.right+i&&t.y>e.top-i&&t.y<e.bottom+i}function Av(t,e){t.save(),t.beginPath(),t.rect(e.left,e.top,e.right-e.left,e.bottom-e.top),t.clip()}function $v(t){t.restore()}function Ev(t,e,i,o,n){if(!e)return t.lineTo(i.x,i.y);if("middle"===n){const o=(e.x+i.x)/2;t.lineTo(o,e.y),t.lineTo(o,i.y)}else"after"===n!=!!o?t.lineTo(e.x,i.y):t.lineTo(i.x,e.y);t.lineTo(i.x,i.y)}function Tv(t,e,i,o){if(!e)return t.lineTo(i.x,i.y);t.bezierCurveTo(o?e.cp1x:e.cp2x,o?e.cp1y:e.cp2y,o?i.cp2x:i.cp1x,o?i.cp2y:i.cp1y,i.x,i.y)}function Dv(t,e,i,o,n){if(n.strikethrough||n.underline){const s=t.measureText(o),r=e-s.actualBoundingBoxLeft,a=e+s.actualBoundingBoxRight,l=i-s.actualBoundingBoxAscent,d=i+s.actualBoundingBoxDescent,c=n.strikethrough?(l+d)/2:d;t.strokeStyle=t.fillStyle,t.beginPath(),t.lineWidth=n.decorationWidth||2,t.moveTo(r,c),t.lineTo(a,c),t.stroke()}}function Mv(t,e){const i=t.fillStyle;t.fillStyle=e.color,t.fillRect(e.left,e.top,e.width,e.height),t.fillStyle=i}function zv(t,e,i,o,n,s={}){const r=Gg(e)?e:[e],a=s.strokeWidth>0&&""!==s.strokeColor;let l,d;for(t.save(),t.font=n.string,function(t,e){e.translation&&t.translate(e.translation[0],e.translation[1]),Kg(e.rotation)||t.rotate(e.rotation),e.color&&(t.fillStyle=e.color),e.textAlign&&(t.textAlign=e.textAlign),e.textBaseline&&(t.textBaseline=e.textBaseline)}(t,s),l=0;l<r.length;++l)d=r[l],s.backdrop&&Mv(t,s.backdrop),a&&(s.strokeColor&&(t.strokeStyle=s.strokeColor),Kg(s.strokeWidth)||(t.lineWidth=s.strokeWidth),t.strokeText(d,i,o,s.maxWidth)),t.fillText(d,i,o,s.maxWidth),Dv(t,i,o,d,s),o+=Number(n.lineHeight);t.restore()}function Iv(t,e){const{x:i,y:o,w:n,h:s,radius:r}=e;t.arc(i+r.topLeft,o+r.topLeft,r.topLeft,1.5*bf,bf,!0),t.lineTo(i,o+s-r.bottomLeft),t.arc(i+r.bottomLeft,o+s-r.bottomLeft,r.bottomLeft,bf,kf,!0),t.lineTo(i+n-r.bottomRight,o+s),t.arc(i+n-r.bottomRight,o+s-r.bottomRight,r.bottomRight,kf,0,!0),t.lineTo(i+n,o+r.topRight),t.arc(i+n-r.topRight,o+r.topRight,r.topRight,0,-kf,!0),t.lineTo(i+r.topLeft,o)}const Ov=/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/,Lv=/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;function Pv(t,e){const i=(""+t).match(Ov);if(!i||"normal"===i[1])return 1.2*e;switch(t=+i[2],i[3]){case"px":return t;case"%":t/=100}return e*t}const Rv=t=>+t||0;function Nv(t,e){const i={},o=Xg(e),n=o?Object.keys(e):e,s=Xg(t)?o?i=>tf(t[i],t[e[i]]):e=>t[e]:()=>t;for(const t of n)i[t]=Rv(s(t));return i}function Bv(t){return Nv(t,{top:"y",right:"x",bottom:"y",left:"x"})}function Fv(t){return Nv(t,["topLeft","topRight","bottomLeft","bottomRight"])}function qv(t){const e=Bv(t);return e.width=e.left+e.right,e.height=e.top+e.bottom,e}function Uv(t,e){t=t||{},e=e||bv.font;let i=tf(t.size,e.size);"string"==typeof i&&(i=parseInt(i,10));let o=tf(t.style,e.style);o&&!(""+o).match(Lv)&&(console.warn('Invalid font style specified: "'+o+'"'),o=void 0);const n={family:tf(t.family,e.family),lineHeight:Pv(tf(t.lineHeight,e.lineHeight),i),size:i,style:o,weight:tf(t.weight,e.weight),string:""};return n.string=function(t){return!t||Kg(t.size)||Kg(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}(n),n}function jv(t,e,i,o){let n,s,r;for(n=0,s=t.length;n<s;++n)if(r=t[n],void 0!==r&&(void 0!==e&&"function"==typeof r&&(r=r(e)),void 0!==i&&Gg(r)&&(r=r[i%r.length]),void 0!==r))return r}function Hv(t,e){return Object.assign(Object.create(t),e)}function Wv(t,e=[""],i,o,n=()=>t[0]){const s=i||t;void 0===o&&(o=ib("_fallback",t));const r={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:t,_rootScopes:s,_fallback:o,_getTarget:n,override:i=>Wv([i,...t],e,s,o)};return new Proxy(r,{deleteProperty:(e,i)=>(delete e[i],delete e._keys,delete t[0][i],!0),get:(i,o)=>Gv(i,o,()=>function(t,e,i,o){let n;for(const s of e)if(n=ib(Yv(s,t),i),void 0!==n)return Kv(t,n)?tb(i,o,t,n):n}(o,e,t,i)),getOwnPropertyDescriptor:(t,e)=>Reflect.getOwnPropertyDescriptor(t._scopes[0],e),getPrototypeOf:()=>Reflect.getPrototypeOf(t[0]),has:(t,e)=>ob(t).includes(e),ownKeys:t=>ob(t),set(t,e,i){const o=t._storage||(t._storage=n());return t[e]=o[e]=i,delete t._keys,!0}})}function Vv(t,e,i,o){const n={_cacheable:!1,_proxy:t,_context:e,_subProxy:i,_stack:new Set,_descriptors:Zv(t,o),setContext:e=>Vv(t,e,i,o),override:n=>Vv(t.override(n),e,i,o)};return new Proxy(n,{deleteProperty:(e,i)=>(delete e[i],delete t[i],!0),get:(t,e,i)=>Gv(t,e,()=>function(t,e,i){const{_proxy:o,_context:n,_subProxy:s,_descriptors:r}=t;let a=o[e];ff(a)&&r.isScriptable(e)&&(a=function(t,e,i,o){const{_proxy:n,_context:s,_subProxy:r,_stack:a}=i;if(a.has(t))throw new Error("Recursion detected: "+Array.from(a).join("->")+"->"+t);a.add(t);let l=e(s,r||o);a.delete(t),Kv(t,l)&&(l=tb(n._scopes,n,t,l));return l}(e,a,t,i));Gg(a)&&a.length&&(a=function(t,e,i,o){const{_proxy:n,_context:s,_subProxy:r,_descriptors:a}=i;if(void 0!==s.index&&o(t))return e[s.index%e.length];if(Xg(e[0])){const i=e,o=n._scopes.filter(t=>t!==i);e=[];for(const l of i){const i=tb(o,n,t,l);e.push(Vv(i,s,r&&r[t],a))}}return e}(e,a,t,r.isIndexable));Kv(e,a)&&(a=Vv(a,n,s&&s[e],r));return a}(t,e,i)),getOwnPropertyDescriptor:(e,i)=>e._descriptors.allKeys?Reflect.has(t,i)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(t,i),getPrototypeOf:()=>Reflect.getPrototypeOf(t),has:(e,i)=>Reflect.has(t,i),ownKeys:()=>Reflect.ownKeys(t),set:(e,i,o)=>(t[i]=o,delete e[i],!0)})}function Zv(t,e={scriptable:!0,indexable:!0}){const{_scriptable:i=e.scriptable,_indexable:o=e.indexable,_allKeys:n=e.allKeys}=t;return{allKeys:n,scriptable:i,indexable:o,isScriptable:ff(i)?i:()=>i,isIndexable:ff(o)?o:()=>o}}const Yv=(t,e)=>t?t+mf(e):e,Kv=(t,e)=>Xg(e)&&"adapters"!==t&&(null===Object.getPrototypeOf(e)||e.constructor===Object);function Gv(t,e,i){if(Object.prototype.hasOwnProperty.call(t,e)||"constructor"===e)return t[e];const o=i();return t[e]=o,o}function Xv(t,e,i){return ff(t)?t(e,i):t}const Qv=(t,e)=>!0===t?e:"string"==typeof t?pf(e,t):void 0;function Jv(t,e,i,o,n){for(const s of e){const e=Qv(i,s);if(e){t.add(e);const s=Xv(e._fallback,i,n);if(void 0!==s&&s!==i&&s!==o)return s}else if(!1===e&&void 0!==o&&i!==o)return null}return!1}function tb(t,e,i,o){const n=e._rootScopes,s=Xv(e._fallback,i,o),r=[...t,...n],a=new Set;a.add(o);let l=eb(a,r,i,s||i,o);return null!==l&&((void 0===s||s===i||(l=eb(a,r,s,l,o),null!==l))&&Wv(Array.from(a),[""],n,s,()=>function(t,e,i){const o=t._getTarget();e in o||(o[e]={});const n=o[e];if(Gg(n)&&Xg(i))return i;return n||{}}(e,i,o)))}function eb(t,e,i,o,n){for(;i;)i=Jv(t,e,i,o,n);return i}function ib(t,e){for(const i of e){if(!i)continue;const e=i[t];if(void 0!==e)return e}}function ob(t){let e=t._keys;return e||(e=t._keys=function(t){const e=new Set;for(const i of t)for(const t of Object.keys(i).filter(t=>!t.startsWith("_")))e.add(t);return Array.from(e)}(t._scopes)),e}function nb(t,e,i,o){const{iScale:n}=t,{key:s="r"}=this._parsing,r=new Array(o);let a,l,d,c;for(a=0,l=o;a<l;++a)d=a+i,c=e[d],r[a]={r:n.parse(pf(c,s),d)};return r}const sb=Number.EPSILON||1e-14,rb=(t,e)=>e<t.length&&!t[e].skip&&t[e],ab=t=>"x"===t?"y":"x";function lb(t,e,i,o){const n=t.skip?e:t,s=e,r=i.skip?e:i,a=Pf(s,n),l=Pf(r,s);let d=a/(a+l),c=l/(a+l);d=isNaN(d)?0:d,c=isNaN(c)?0:c;const h=o*d,u=o*c;return{previous:{x:s.x-h*(r.x-n.x),y:s.y-h*(r.y-n.y)},next:{x:s.x+u*(r.x-n.x),y:s.y+u*(r.y-n.y)}}}function db(t,e="x"){const i=ab(e),o=t.length,n=Array(o).fill(0),s=Array(o);let r,a,l,d=rb(t,0);for(r=0;r<o;++r)if(a=l,l=d,d=rb(t,r+1),l){if(d){const t=d[e]-l[e];n[r]=0!==t?(d[i]-l[i])/t:0}s[r]=a?d?$f(n[r-1])!==$f(n[r])?0:(n[r-1]+n[r])/2:n[r-1]:n[r]}!function(t,e,i){const o=t.length;let n,s,r,a,l,d=rb(t,0);for(let c=0;c<o-1;++c)l=d,d=rb(t,c+1),l&&d&&(Ef(e[c],0,sb)?i[c]=i[c+1]=0:(n=i[c]/e[c],s=i[c+1]/e[c],a=Math.pow(n,2)+Math.pow(s,2),a<=9||(r=3/Math.sqrt(a),i[c]=n*r*e[c],i[c+1]=s*r*e[c])))}(t,n,s),function(t,e,i="x"){const o=ab(i),n=t.length;let s,r,a,l=rb(t,0);for(let d=0;d<n;++d){if(r=a,a=l,l=rb(t,d+1),!a)continue;const n=a[i],c=a[o];r&&(s=(n-r[i])/3,a[`cp1${i}`]=n-s,a[`cp1${o}`]=c-s*e[d]),l&&(s=(l[i]-n)/3,a[`cp2${i}`]=n+s,a[`cp2${o}`]=c+s*e[d])}}(t,s,e)}function cb(t,e,i){return Math.max(Math.min(t,i),e)}function hb(t,e,i,o,n){let s,r,a,l;if(e.spanGaps&&(t=t.filter(t=>!t.skip)),"monotone"===e.cubicInterpolationMode)db(t,n);else{let i=o?t[t.length-1]:t[0];for(s=0,r=t.length;s<r;++s)a=t[s],l=lb(i,a,t[Math.min(s+1,r-(o?0:1))%r],e.tension),a.cp1x=l.previous.x,a.cp1y=l.previous.y,a.cp2x=l.next.x,a.cp2y=l.next.y,i=a}e.capBezierPoints&&function(t,e){let i,o,n,s,r,a=Sv(t[0],e);for(i=0,o=t.length;i<o;++i)r=s,s=a,a=i<o-1&&Sv(t[i+1],e),s&&(n=t[i],r&&(n.cp1x=cb(n.cp1x,e.left,e.right),n.cp1y=cb(n.cp1y,e.top,e.bottom)),a&&(n.cp2x=cb(n.cp2x,e.left,e.right),n.cp2y=cb(n.cp2y,e.top,e.bottom)))}(t,i)}function ub(){return"undefined"!=typeof window&&"undefined"!=typeof document}function pb(t){let e=t.parentNode;return e&&"[object ShadowRoot]"===e.toString()&&(e=e.host),e}function mb(t,e,i){let o;return"string"==typeof t?(o=parseInt(t,10),-1!==t.indexOf("%")&&(o=o/100*e.parentNode[i])):o=t,o}const gb=t=>t.ownerDocument.defaultView.getComputedStyle(t,null);const fb=["top","right","bottom","left"];function vb(t,e,i){const o={};i=i?"-"+i:"";for(let n=0;n<4;n++){const s=fb[n];o[s]=parseFloat(t[e+"-"+s+i])||0}return o.width=o.left+o.right,o.height=o.top+o.bottom,o}function bb(t,e){if("native"in t)return t;const{canvas:i,currentDevicePixelRatio:o}=e,n=gb(i),s="border-box"===n.boxSizing,r=vb(n,"padding"),a=vb(n,"border","width"),{x:l,y:d,box:c}=function(t,e){const i=t.touches,o=i&&i.length?i[0]:t,{offsetX:n,offsetY:s}=o;let r,a,l=!1;if(((t,e,i)=>(t>0||e>0)&&(!i||!i.shadowRoot))(n,s,t.target))r=n,a=s;else{const t=e.getBoundingClientRect();r=o.clientX-t.left,a=o.clientY-t.top,l=!0}return{x:r,y:a,box:l}}(t,i),h=r.left+(c&&a.left),u=r.top+(c&&a.top);let{width:p,height:m}=e;return s&&(p-=r.width+a.width,m-=r.height+a.height),{x:Math.round((l-h)/p*i.width/o),y:Math.round((d-u)/m*i.height/o)}}const yb=t=>Math.round(10*t)/10;function xb(t,e,i,o){const n=gb(t),s=vb(n,"margin"),r=mb(n.maxWidth,t,"clientWidth")||wf,a=mb(n.maxHeight,t,"clientHeight")||wf,l=function(t,e,i){let o,n;if(void 0===e||void 0===i){const s=t&&pb(t);if(s){const t=s.getBoundingClientRect(),r=gb(s),a=vb(r,"border","width"),l=vb(r,"padding");e=t.width-l.width-a.width,i=t.height-l.height-a.height,o=mb(r.maxWidth,s,"clientWidth"),n=mb(r.maxHeight,s,"clientHeight")}else e=t.clientWidth,i=t.clientHeight}return{width:e,height:i,maxWidth:o||wf,maxHeight:n||wf}}(t,e,i);let{width:d,height:c}=l;if("content-box"===n.boxSizing){const t=vb(n,"border","width"),e=vb(n,"padding");d-=e.width+t.width,c-=e.height+t.height}d=Math.max(0,d-s.width),c=Math.max(0,o?d/o:c-s.height),d=yb(Math.min(d,r,l.maxWidth)),c=yb(Math.min(c,a,l.maxHeight)),d&&!c&&(c=yb(d/2));return(void 0!==e||void 0!==i)&&o&&l.height&&c>l.height&&(c=l.height,d=yb(Math.floor(c*o))),{width:d,height:c}}function wb(t,e,i){const o=e||1,n=yb(t.height*o),s=yb(t.width*o);t.height=yb(t.height),t.width=yb(t.width);const r=t.canvas;return r.style&&(i||!r.style.height&&!r.style.width)&&(r.style.height=`${t.height}px`,r.style.width=`${t.width}px`),(t.currentDevicePixelRatio!==o||r.height!==n||r.width!==s)&&(t.currentDevicePixelRatio=o,r.height=n,r.width=s,t.ctx.setTransform(o,0,0,o,0,0),!0)}const _b=function(){let t=!1;try{const e={get passive(){return t=!0,!1}};ub()&&(window.addEventListener("test",null,e),window.removeEventListener("test",null,e))}catch(t){}return t}();function kb(t,e){const i=function(t,e){return gb(t).getPropertyValue(e)}(t,e),o=i&&i.match(/^(\d+)(\.\d+)?px$/);return o?+o[1]:void 0}function Cb(t,e,i,o){return{x:t.x+i*(e.x-t.x),y:t.y+i*(e.y-t.y)}}function Sb(t,e,i,o){return{x:t.x+i*(e.x-t.x),y:"middle"===o?i<.5?t.y:e.y:"after"===o?i<1?t.y:e.y:i>0?e.y:t.y}}function Ab(t,e,i,o){const n={x:t.cp2x,y:t.cp2y},s={x:e.cp1x,y:e.cp1y},r=Cb(t,n,i),a=Cb(n,s,i),l=Cb(s,e,i),d=Cb(r,a,i),c=Cb(a,l,i);return Cb(d,c,i)}function $b(t,e,i){return t?function(t,e){return{x:i=>t+t+e-i,setWidth(t){e=t},textAlign:t=>"center"===t?t:"right"===t?"left":"right",xPlus:(t,e)=>t-e,leftForLtr:(t,e)=>t-e}}(e,i):{x:t=>t,setWidth(t){},textAlign:t=>t,xPlus:(t,e)=>t+e,leftForLtr:(t,e)=>t}}function Eb(t,e){let i,o;"ltr"!==e&&"rtl"!==e||(i=t.canvas.style,o=[i.getPropertyValue("direction"),i.getPropertyPriority("direction")],i.setProperty("direction",e,"important"),t.prevTextDirection=o)}function Tb(t,e){void 0!==e&&(delete t.prevTextDirection,t.canvas.style.setProperty("direction",e[0],e[1]))}function Db(t){return"angle"===t?{between:Bf,compare:Rf,normalize:Nf}:{between:qf,compare:(t,e)=>t-e,normalize:t=>t}}function Mb({start:t,end:e,count:i,loop:o,style:n}){return{start:t%i,end:e%i,loop:o&&(e-t+1)%i==0,style:n}}function zb(t,e,i){if(!i)return[t];const{property:o,start:n,end:s}=i,r=e.length,{compare:a,between:l,normalize:d}=Db(o),{start:c,end:h,loop:u,style:p}=function(t,e,i){const{property:o,start:n,end:s}=i,{between:r,normalize:a}=Db(o),l=e.length;let d,c,{start:h,end:u,loop:p}=t;if(p){for(h+=l,u+=l,d=0,c=l;d<c&&r(a(e[h%l][o]),n,s);++d)h--,u--;h%=l,u%=l}return u<h&&(u+=l),{start:h,end:u,loop:p,style:t.style}}(t,e,i),m=[];let g,f,v,b=!1,y=null;const x=()=>b||l(n,v,g)&&0!==a(n,v),w=()=>!b||0===a(s,g)||l(s,v,g);for(let t=c,i=c;t<=h;++t)f=e[t%r],f.skip||(g=d(f[o]),g!==v&&(b=l(g,n,s),null===y&&x()&&(y=0===a(g,n)?t:i),null!==y&&w()&&(m.push(Mb({start:y,end:t,loop:u,count:r,style:p})),y=null),i=t,v=g));return null!==y&&m.push(Mb({start:y,end:h,loop:u,count:r,style:p})),m}function Ib(t,e){const i=[],o=t.segments;for(let n=0;n<o.length;n++){const s=zb(o[n],t.points,e);s.length&&i.push(...s)}return i}function Ob(t,e,i,o){return o&&o.setContext&&i?function(t,e,i,o){const n=t._chart.getContext(),s=Lb(t.options),{_datasetIndex:r,options:{spanGaps:a}}=t,l=i.length,d=[];let c=s,h=e[0].start,u=h;function p(t,e,o,n){const s=a?-1:1;if(t!==e){for(t+=l;i[t%l].skip;)t-=s;for(;i[e%l].skip;)e+=s;t%l!==e%l&&(d.push({start:t%l,end:e%l,loop:o,style:n}),c=n,h=e%l)}}for(const t of e){h=a?h:t.start;let e,s=i[h%l];for(u=h+1;u<=t.end;u++){const a=i[u%l];e=Lb(o.setContext(Hv(n,{type:"segment",p0:s,p1:a,p0DataIndex:(u-1)%l,p1DataIndex:u%l,datasetIndex:r}))),Pb(e,c)&&p(h,u-1,t.loop,c),s=a,c=e}h<u-1&&p(h,u-1,t.loop,c)}return d}(t,e,i,o):e}function Lb(t){return{backgroundColor:t.backgroundColor,borderCapStyle:t.borderCapStyle,borderDash:t.borderDash,borderDashOffset:t.borderDashOffset,borderJoinStyle:t.borderJoinStyle,borderWidth:t.borderWidth,borderColor:t.borderColor}}function Pb(t,e){if(!e)return!1;const i=[],o=function(t,e){return nv(e)?(i.includes(e)||i.push(e),i.indexOf(e)):e};return JSON.stringify(t,o)!==JSON.stringify(e,o)}function Rb(t,e,i){return t.options.clip?t[i]:e[i]}function Nb(t,e){const i=e._clip;if(i.disabled)return!1;const o=function(t,e){const{xScale:i,yScale:o}=t;return i&&o?{left:Rb(i,e,"left"),right:Rb(i,e,"right"),top:Rb(o,e,"top"),bottom:Rb(o,e,"bottom")}:e}(e,t.chartArea);return{left:!1===i.left?0:o.left-(!0===i.left?0:i.left),right:!1===i.right?t.width:o.right+(!0===i.right?0:i.right),top:!1===i.top?0:o.top-(!0===i.top?0:i.top),bottom:!1===i.bottom?t.height:o.bottom+(!0===i.bottom?0:i.bottom)}}
|
|
12244
12241
|
/*!
|
|
12245
12242
|
* Chart.js v4.5.1
|
|
12246
12243
|
* https://www.chartjs.org
|
|
12247
12244
|
* (c) 2025 Chart.js Contributors
|
|
12248
12245
|
* Released under the MIT License
|
|
12249
|
-
*/class Fb{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(t,e,i,o){const n=e.listeners[o],s=e.duration;n.forEach(o=>o({chart:t,initial:e.initial,numSteps:s,currentStep:Math.min(i-e.start,s)}))}_refresh(){this._request||(this._running=!0,this._request=Kf.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(t=Date.now()){let e=0;this._charts.forEach((i,o)=>{if(!i.running||!i.items.length)return;const n=i.items;let s,r=n.length-1,a=!1;for(;r>=0;--r)s=n[r],s._active?(s._total>i.duration&&(i.duration=s._total),s.tick(t),a=!0):(n[r]=n[n.length-1],n.pop());a&&(o.draw(),this._notify(o,i,t,"progress")),n.length||(i.running=!1,this._notify(o,i,t,"complete"),i.initial=!1),e+=n.length}),this._lastDate=t,0===e&&(this._running=!1)}_getAnims(t){const e=this._charts;let i=e.get(t);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},e.set(t,i)),i}listen(t,e,i){this._getAnims(t).listeners[e].push(i)}add(t,e){e&&e.length&&this._getAnims(t).items.push(...e)}has(t){return this._getAnims(t).items.length>0}start(t){const e=this._charts.get(t);e&&(e.running=!0,e.start=Date.now(),e.duration=e.items.reduce((t,e)=>Math.max(t,e._duration),0),this._refresh())}running(t){if(!this._running)return!1;const e=this._charts.get(t);return!!(e&&e.running&&e.items.length)}stop(t){const e=this._charts.get(t);if(!e||!e.items.length)return;const i=e.items;let o=i.length-1;for(;o>=0;--o)i[o].cancel();e.items=[],this._notify(t,e,Date.now(),"complete")}remove(t){return this._charts.delete(t)}}var qb=new Fb;const Ub="transparent",jb={boolean:(t,e,i)=>i>.5?e:t,color(t,e,i){const o=rv(t||Ub),n=o.valid&&rv(e||Ub);return n&&n.valid?n.mix(o,i).hexString():e},number:(t,e,i)=>t+(e-t)*i};class Hb{constructor(t,e,i,o){const n=e[i];o=Hv([t.to,o,n,t.from]);const s=Hv([t.from,n,o]);this._active=!0,this._fn=t.fn||jb[t.type||typeof s],this._easing=nv[t.easing]||nv.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=e,this._prop=i,this._from=s,this._to=o,this._promises=void 0}active(){return this._active}update(t,e,i){if(this._active){this._notify(!1);const o=this._target[this._prop],n=i-this._start,s=this._duration-n;this._start=i,this._duration=Math.floor(Math.max(s,t.duration)),this._total+=n,this._loop=!!t.loop,this._to=Hv([t.to,e,o,t.from]),this._from=Hv([t.from,o,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){const e=t-this._start,i=this._duration,o=this._prop,n=this._from,s=this._loop,r=this._to;let a;if(this._active=n!==r&&(s||e<i),!this._active)return this._target[o]=r,void this._notify(!0);e<0?this._target[o]=n:(a=e/i%2,a=s&&a>1?2-a:a,a=this._easing(Math.min(1,Math.max(0,a))),this._target[o]=this._fn(n,r,a))}wait(){const t=this._promises||(this._promises=[]);return new Promise((e,i)=>{t.push({res:e,rej:i})})}_notify(t){const e=t?"res":"rej",i=this._promises||[];for(let t=0;t<i.length;t++)i[t][e]()}}class Wb{constructor(t,e){this._chart=t,this._properties=new Map,this.configure(e)}configure(t){if(!Qg(t))return;const e=Object.keys(yv.animation),i=this._properties;Object.getOwnPropertyNames(t).forEach(o=>{const n=t[o];if(!Qg(n))return;const s={};for(const t of e)s[t]=n[t];(Xg(n.properties)&&n.properties||[o]).forEach(t=>{t!==o&&i.has(t)||i.set(t,s)})})}_animateOptions(t,e){const i=e.options,o=function(t,e){if(!e)return;let i=t.options;if(!i)return void(t.options=e);i.$shared&&(t.options=i=Object.assign({},i,{$shared:!1,$animations:{}}));return i}(t,i);if(!o)return[];const n=this._createAnimations(o,i);return i.$shared&&function(t,e){const i=[],o=Object.keys(e);for(let e=0;e<o.length;e++){const n=t[o[e]];n&&n.active()&&i.push(n.wait())}return Promise.all(i)}(t.options.$animations,i).then(()=>{t.options=i},()=>{}),n}_createAnimations(t,e){const i=this._properties,o=[],n=t.$animations||(t.$animations={}),s=Object.keys(e),r=Date.now();let a;for(a=s.length-1;a>=0;--a){const l=s[a];if("$"===l.charAt(0))continue;if("options"===l){o.push(...this._animateOptions(t,e));continue}const d=e[l];let c=n[l];const h=i.get(l);if(c){if(h&&c.active()){c.update(h,d,r);continue}c.cancel()}h&&h.duration?(n[l]=c=new Hb(h,t,l,d),o.push(c)):t[l]=d}return o}update(t,e){if(0===this._properties.size)return void Object.assign(t,e);const i=this._createAnimations(t,e);return i.length?(qb.add(this._chart,i),!0):void 0}}function Vb(t,e){const i=t&&t.options||{},o=i.reverse,n=void 0===i.min?e:0,s=void 0===i.max?e:0;return{start:o?s:n,end:o?n:s}}function Zb(t,e){const i=[],o=t._getSortedDatasetMetas(e);let n,s;for(n=0,s=o.length;n<s;++n)i.push(o[n].index);return i}function Yb(t,e,i,o={}){const n=t.keys,s="single"===o.mode;let r,a,l,d;if(null===e)return;let c=!1;for(r=0,a=n.length;r<a;++r){if(l=+n[r],l===i){if(c=!0,o.all)continue;break}d=t.values[l],Jg(d)&&(s||0===e||Ef(e)===Ef(d))&&(e+=d)}return c||o.all?e:0}function Kb(t,e){const i=t&&t.options.stacked;return i||void 0===i&&void 0!==e.stack}function Gb(t,e,i){const o=t[e]||(t[e]={});return o[i]||(o[i]={})}function Xb(t,e,i,o){for(const n of e.getMatchingVisibleMetas(o).reverse()){const e=t[n.index];if(i&&e>0||!i&&e<0)return n.index}return null}function Qb(t,e){const{chart:i,_cachedMeta:o}=t,n=i._stacks||(i._stacks={}),{iScale:s,vScale:r,index:a}=o,l=s.axis,d=r.axis,c=function(t,e,i){return`${t.id}.${e.id}.${i.stack||i.type}`}(s,r,o),h=e.length;let u;for(let t=0;t<h;++t){const i=e[t],{[l]:s,[d]:h}=i;u=(i._stacks||(i._stacks={}))[d]=Gb(n,c,s),u[a]=h,u._top=Xb(u,r,!0,o.type),u._bottom=Xb(u,r,!1,o.type);(u._visualValues||(u._visualValues={}))[a]=h}}function Jb(t,e){const i=t.scales;return Object.keys(i).filter(t=>i[t].axis===e).shift()}function ty(t,e){const i=t.controller.index,o=t.vScale&&t.vScale.axis;if(o){e=e||t._parsed;for(const t of e){const e=t._stacks;if(!e||void 0===e[o]||void 0===e[o][i])return;delete e[o][i],void 0!==e[o]._visualValues&&void 0!==e[o]._visualValues[i]&&delete e[o]._visualValues[i]}}}const ey=t=>"reset"===t||"none"===t,iy=(t,e)=>e?t:Object.assign({},t);class oy{static defaults={};static datasetElementType=null;static dataElementType=null;constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=Kb(t.vScale,t),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(t){this.index!==t&&ty(this._cachedMeta),this.index=t}linkScales(){const t=this.chart,e=this._cachedMeta,i=this.getDataset(),o=(t,e,i,o)=>"x"===t?e:"r"===t?o:i,n=e.xAxisID=ef(i.xAxisID,Jb(t,"x")),s=e.yAxisID=ef(i.yAxisID,Jb(t,"y")),r=e.rAxisID=ef(i.rAxisID,Jb(t,"r")),a=e.indexAxis,l=e.iAxisID=o(a,n,s,r),d=e.vAxisID=o(a,s,n,r);e.xScale=this.getScaleForId(n),e.yScale=this.getScaleForId(s),e.rScale=this.getScaleForId(r),e.iScale=this.getScaleForId(l),e.vScale=this.getScaleForId(d)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){const e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update("reset")}_destroy(){const t=this._cachedMeta;this._data&&Zf(this._data,this),t._stacked&&ty(t)}_dataCheck(){const t=this.getDataset(),e=t.data||(t.data=[]),i=this._data;if(Qg(e)){const t=this._cachedMeta;this._data=function(t,e){const{iScale:i,vScale:o}=e,n="x"===i.axis?"x":"y",s="x"===o.axis?"x":"y",r=Object.keys(t),a=new Array(r.length);let l,d,c;for(l=0,d=r.length;l<d;++l)c=r[l],a[l]={[n]:c,[s]:t[c]};return a}(e,t)}else if(i!==e){if(i){Zf(i,this);const t=this._cachedMeta;ty(t),t._parsed=[]}e&&Object.isExtensible(e)&&(n=this,(o=e)._chartjs?o._chartjs.listeners.push(n):(Object.defineProperty(o,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[n]}}),Vf.forEach(t=>{const e="_onData"+gf(t),i=o[t];Object.defineProperty(o,t,{configurable:!0,enumerable:!1,value(...t){const n=i.apply(this,t);return o._chartjs.listeners.forEach(i=>{"function"==typeof i[e]&&i[e](...t)}),n}})}))),this._syncList=[],this._data=e}var o,n}addElements(){const t=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(t.dataset=new this.datasetElementType)}buildOrUpdateElements(t){const e=this._cachedMeta,i=this.getDataset();let o=!1;this._dataCheck();const n=e._stacked;e._stacked=Kb(e.vScale,e),e.stack!==i.stack&&(o=!0,ty(e),e.stack=i.stack),this._resyncElements(t),(o||n!==e._stacked)&&(Qb(this,e._parsed),e._stacked=Kb(e.vScale,e))}configure(){const t=this.chart.config,e=t.datasetScopeKeys(this._type),i=t.getOptionScopes(this.getDataset(),e,!0);this.options=t.createResolver(i,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(t,e){const{_cachedMeta:i,_data:o}=this,{iScale:n,_stacked:s}=i,r=n.axis;let a,l,d,c=0===t&&e===o.length||i._sorted,h=t>0&&i._parsed[t-1];if(!1===this._parsing)i._parsed=o,i._sorted=!0,d=o;else{d=Xg(o[t])?this.parseArrayData(i,o,t,e):Qg(o[t])?this.parseObjectData(i,o,t,e):this.parsePrimitiveData(i,o,t,e);const n=()=>null===l[r]||h&&l[r]<h[r];for(a=0;a<e;++a)i._parsed[a+t]=l=d[a],c&&(n()&&(c=!1),h=l);i._sorted=c}s&&Qb(this,d)}parsePrimitiveData(t,e,i,o){const{iScale:n,vScale:s}=t,r=n.axis,a=s.axis,l=n.getLabels(),d=n===s,c=new Array(o);let h,u,p;for(h=0,u=o;h<u;++h)p=h+i,c[h]={[r]:d||n.parse(l[p],p),[a]:s.parse(e[p],p)};return c}parseArrayData(t,e,i,o){const{xScale:n,yScale:s}=t,r=new Array(o);let a,l,d,c;for(a=0,l=o;a<l;++a)d=a+i,c=e[d],r[a]={x:n.parse(c[0],d),y:s.parse(c[1],d)};return r}parseObjectData(t,e,i,o){const{xScale:n,yScale:s}=t,{xAxisKey:r="x",yAxisKey:a="y"}=this._parsing,l=new Array(o);let d,c,h,u;for(d=0,c=o;d<c;++d)h=d+i,u=e[h],l[d]={x:n.parse(mf(u,r),h),y:s.parse(mf(u,a),h)};return l}getParsed(t){return this._cachedMeta._parsed[t]}getDataElement(t){return this._cachedMeta.data[t]}applyStack(t,e,i){const o=this.chart,n=this._cachedMeta,s=e[t.axis];return Yb({keys:Zb(o,!0),values:e._stacks[t.axis]._visualValues},s,n.index,{mode:i})}updateRangeFromParsed(t,e,i,o){const n=i[e.axis];let s=null===n?NaN:n;const r=o&&i._stacks[e.axis];o&&r&&(o.values=r,s=Yb(o,n,this._cachedMeta.index)),t.min=Math.min(t.min,s),t.max=Math.max(t.max,s)}getMinMax(t,e){const i=this._cachedMeta,o=i._parsed,n=i._sorted&&t===i.iScale,s=o.length,r=this._getOtherScale(t),a=((t,e,i)=>t&&!e.hidden&&e._stacked&&{keys:Zb(i,!0),values:null})(e,i,this.chart),l={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY},{min:d,max:c}=function(t){const{min:e,max:i,minDefined:o,maxDefined:n}=t.getUserBounds();return{min:o?e:Number.NEGATIVE_INFINITY,max:n?i:Number.POSITIVE_INFINITY}}(r);let h,u;function p(){u=o[h];const e=u[r.axis];return!Jg(u[t.axis])||d>e||c<e}for(h=0;h<s&&(p()||(this.updateRangeFromParsed(l,t,u,a),!n));++h);if(n)for(h=s-1;h>=0;--h)if(!p()){this.updateRangeFromParsed(l,t,u,a);break}return l}getAllParsedValues(t){const e=this._cachedMeta._parsed,i=[];let o,n,s;for(o=0,n=e.length;o<n;++o)s=e[o][t.axis],Jg(s)&&i.push(s);return i}getMaxOverflow(){return!1}getLabelAndValue(t){const e=this._cachedMeta,i=e.iScale,o=e.vScale,n=this.getParsed(t);return{label:i?""+i.getLabelForValue(n[i.axis]):"",value:o?""+o.getLabelForValue(n[o.axis]):""}}_update(t){const e=this._cachedMeta;this.update(t||"default"),e._clip=function(t){let e,i,o,n;return Qg(t)?(e=t.top,i=t.right,o=t.bottom,n=t.left):e=i=o=n=t,{top:e,right:i,bottom:o,left:n,disabled:!1===t}}(ef(this.options.clip,function(t,e,i){if(!1===i)return!1;const o=Vb(t,i),n=Vb(e,i);return{top:n.end,right:o.end,bottom:n.start,left:o.start}}(e.xScale,e.yScale,this.getMaxOverflow())))}update(t){}draw(){const t=this._ctx,e=this.chart,i=this._cachedMeta,o=i.data||[],n=e.chartArea,s=[],r=this._drawStart||0,a=this._drawCount||o.length-r,l=this.options.drawActiveElementsOnTop;let d;for(i.dataset&&i.dataset.draw(t,n,r,a),d=r;d<r+a;++d){const e=o[d];e.hidden||(e.active&&l?s.push(e):e.draw(t,n))}for(d=0;d<s.length;++d)s[d].draw(t,n)}getStyle(t,e){const i=e?"active":"default";return void 0===t&&this._cachedMeta.dataset?this.resolveDatasetElementOptions(i):this.resolveDataElementOptions(t||0,i)}getContext(t,e,i){const o=this.getDataset();let n;if(t>=0&&t<this._cachedMeta.data.length){const e=this._cachedMeta.data[t];n=e.$context||(e.$context=function(t,e,i){return Wv(t,{active:!1,dataIndex:e,parsed:void 0,raw:void 0,element:i,index:e,mode:"default",type:"data"})}(this.getContext(),t,e)),n.parsed=this.getParsed(t),n.raw=o.data[t],n.index=n.dataIndex=t}else n=this.$context||(this.$context=function(t,e){return Wv(t,{active:!1,dataset:void 0,datasetIndex:e,index:e,mode:"default",type:"dataset"})}(this.chart.getContext(),this.index)),n.dataset=o,n.index=n.datasetIndex=this.index;return n.active=!!e,n.mode=i,n}resolveDatasetElementOptions(t){return this._resolveElementOptions(this.datasetElementType.id,t)}resolveDataElementOptions(t,e){return this._resolveElementOptions(this.dataElementType.id,e,t)}_resolveElementOptions(t,e="default",i){const o="active"===e,n=this._cachedDataOpts,s=t+"-"+e,r=n[s],a=this.enableOptionSharing&&ff(i);if(r)return iy(r,a);const l=this.chart.config,d=l.datasetElementScopeKeys(this._type,t),c=o?[`${t}Hover`,"hover",t,""]:[t,""],h=l.getOptionScopes(this.getDataset(),d),u=Object.keys(yv.elements[t]),p=l.resolveNamedOptions(h,u,()=>this.getContext(i,o,e),c);return p.$shared&&(p.$shared=a,n[s]=Object.freeze(iy(p,a))),p}_resolveAnimations(t,e,i){const o=this.chart,n=this._cachedDataOpts,s=`animation-${e}`,r=n[s];if(r)return r;let a;if(!1!==o.options.animation){const o=this.chart.config,n=o.datasetAnimationScopeKeys(this._type,e),s=o.getOptionScopes(this.getDataset(),n);a=o.createResolver(s,this.getContext(t,i,e))}const l=new Wb(o,a&&a.animations);return a&&a._cacheable&&(n[s]=Object.freeze(l)),l}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,e){return!e||ey(t)||this.chart._animationsDisabled}_getSharedOptions(t,e){const i=this.resolveDataElementOptions(t,e),o=this._sharedOptions,n=this.getSharedOptions(i),s=this.includeOptions(e,n)||n!==o;return this.updateSharedOptions(n,e,i),{sharedOptions:n,includeOptions:s}}updateElement(t,e,i,o){ey(o)?Object.assign(t,i):this._resolveAnimations(e,o).update(t,i)}updateSharedOptions(t,e,i){t&&!ey(e)&&this._resolveAnimations(void 0,e).update(t,i)}_setStyle(t,e,i,o){t.active=o;const n=this.getStyle(e,o);this._resolveAnimations(e,i,o).update(t,{options:!o&&this.getSharedOptions(n)||n})}removeHoverStyle(t,e,i){this._setStyle(t,i,"active",!1)}setHoverStyle(t,e,i){this._setStyle(t,i,"active",!0)}_removeDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){const e=this._data,i=this._cachedMeta.data;for(const[t,e,i]of this._syncList)this[t](e,i);this._syncList=[];const o=i.length,n=e.length,s=Math.min(n,o);s&&this.parse(0,s),n>o?this._insertElements(o,n-o,t):n<o&&this._removeElements(n,o-n)}_insertElements(t,e,i=!0){const o=this._cachedMeta,n=o.data,s=t+e;let r;const a=t=>{for(t.length+=e,r=t.length-1;r>=s;r--)t[r]=t[r-e]};for(a(n),r=t;r<s;++r)n[r]=new this.dataElementType;this._parsing&&a(o._parsed),this.parse(t,e),i&&this.updateElements(n,t,e,"reset")}updateElements(t,e,i,o){}_removeElements(t,e){const i=this._cachedMeta;if(this._parsing){const o=i._parsed.splice(t,e);i._stacked&&ty(i,o)}i.data.splice(t,e)}_sync(t){if(this._parsing)this._syncList.push(t);else{const[e,i,o]=t;this[e](i,o)}this.chart._dataChanges.push([this.index,...t])}_onDataPush(){const t=arguments.length;this._sync(["_insertElements",this.getDataset().data.length-t,t])}_onDataPop(){this._sync(["_removeElements",this._cachedMeta.data.length-1,1])}_onDataShift(){this._sync(["_removeElements",0,1])}_onDataSplice(t,e){e&&this._sync(["_removeElements",t,e]);const i=arguments.length-2;i&&this._sync(["_insertElements",t,i])}_onDataUnshift(){this._sync(["_insertElements",0,arguments.length])}}function ny(t){const e=t.iScale,i=function(t,e){if(!t._cache.$bar){const i=t.getMatchingVisibleMetas(e);let o=[];for(let e=0,n=i.length;e<n;e++)o=o.concat(i[e].controller.getAllParsedValues(t));t._cache.$bar=Yf(o.sort((t,e)=>t-e))}return t._cache.$bar}(e,t.type);let o,n,s,r,a=e._length;const l=()=>{32767!==s&&-32768!==s&&(ff(r)&&(a=Math.min(a,Math.abs(s-r)||a)),r=s)};for(o=0,n=i.length;o<n;++o)s=e.getPixelForValue(i[o]),l();for(r=void 0,o=0,n=e.ticks.length;o<n;++o)s=e.getPixelForTick(o),l();return a}function sy(t,e,i,o){return Xg(t)?function(t,e,i,o){const n=i.parse(t[0],o),s=i.parse(t[1],o),r=Math.min(n,s),a=Math.max(n,s);let l=r,d=a;Math.abs(r)>Math.abs(a)&&(l=a,d=r),e[i.axis]=d,e._custom={barStart:l,barEnd:d,start:n,end:s,min:r,max:a}}(t,e,i,o):e[i.axis]=i.parse(t,o),e}function ry(t,e,i,o){const n=t.iScale,s=t.vScale,r=n.getLabels(),a=n===s,l=[];let d,c,h,u;for(d=i,c=i+o;d<c;++d)u=e[d],h={},h[n.axis]=a||n.parse(r[d],d),l.push(sy(u,h,s,d));return l}function ay(t){return t&&void 0!==t.barStart&&void 0!==t.barEnd}function ly(t,e,i,o){let n=e.borderSkipped;const s={};if(!n)return void(t.borderSkipped=s);if(!0===n)return void(t.borderSkipped={top:!0,right:!0,bottom:!0,left:!0});const{start:r,end:a,reverse:l,top:d,bottom:c}=function(t){let e,i,o,n,s;return t.horizontal?(e=t.base>t.x,i="left",o="right"):(e=t.base<t.y,i="bottom",o="top"),e?(n="end",s="start"):(n="start",s="end"),{start:i,end:o,reverse:e,top:n,bottom:s}}(t);"middle"===n&&i&&(t.enableBorderRadius=!0,(i._top||0)===o?n=d:(i._bottom||0)===o?n=c:(s[dy(c,r,a,l)]=!0,n=d)),s[dy(n,r,a,l)]=!0,t.borderSkipped=s}function dy(t,e,i,o){var n,s,r;return o?(r=i,t=cy(t=(n=t)===(s=e)?r:n===r?s:n,i,e)):t=cy(t,e,i),t}function cy(t,e,i){return"start"===t?e:"end"===t?i:t}function hy(t,{inflateAmount:e},i){t.inflateAmount="auto"===e?1===i?.33:0:e}class uy extends oy{static id="doughnut";static defaults={datasetElementType:!1,dataElementType:"arc",animation:{animateRotate:!0,animateScale:!1},animations:{numbers:{type:"number",properties:["circumference","endAngle","innerRadius","outerRadius","startAngle","x","y","offset","borderWidth","spacing"]}},cutout:"50%",rotation:0,circumference:360,radius:"100%",spacing:0,indexAxis:"r"};static descriptors={_scriptable:t=>"spacing"!==t,_indexable:t=>"spacing"!==t&&!t.startsWith("borderDash")&&!t.startsWith("hoverBorderDash")};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data,{labels:{pointStyle:i,textAlign:o,color:n,useBorderRadius:s,borderRadius:r}}=t.legend.options;return e.labels.length&&e.datasets.length?e.labels.map((e,a)=>{const l=t.getDatasetMeta(0).controller.getStyle(a);return{text:e,fillStyle:l.backgroundColor,fontColor:n,hidden:!t.getDataVisibility(a),lineDash:l.borderDash,lineDashOffset:l.borderDashOffset,lineJoin:l.borderJoinStyle,lineWidth:l.borderWidth,strokeStyle:l.borderColor,textAlign:o,pointStyle:i,borderRadius:s&&(r||l.borderRadius),index:a}}):[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}}}};constructor(t,e){super(t,e),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(t,e){const i=this.getDataset().data,o=this._cachedMeta;if(!1===this._parsing)o._parsed=i;else{let n,s,r=t=>+i[t];if(Qg(i[t])){const{key:t="value"}=this._parsing;r=e=>+mf(i[e],t)}for(n=t,s=t+e;n<s;++n)o._parsed[n]=r(n)}}_getRotation(){return If(this.options.rotation-90)}_getCircumference(){return If(this.options.circumference)}_getRotationExtents(){let t=xf,e=-xf;for(let i=0;i<this.chart.data.datasets.length;++i)if(this.chart.isDatasetVisible(i)&&this.chart.getDatasetMeta(i).type===this._type){const o=this.chart.getDatasetMeta(i).controller,n=o._getRotation(),s=o._getCircumference();t=Math.min(t,n),e=Math.max(e,n+s)}return{rotation:t,circumference:e-t}}update(t){const e=this.chart,{chartArea:i}=e,o=this._cachedMeta,n=o.data,s=this.getMaxBorderWidth()+this.getMaxOffset(n)+this.options.spacing,r=Math.max((Math.min(i.width,i.height)-s)/2,0),a=Math.min((l=this.options.cutout,d=r,"string"==typeof l&&l.endsWith("%")?parseFloat(l)/100:+l/d),1);var l,d;const c=this._getRingWeight(this.index),{circumference:h,rotation:u}=this._getRotationExtents(),{ratioX:p,ratioY:m,offsetX:g,offsetY:f}=function(t,e,i){let o=1,n=1,s=0,r=0;if(e<xf){const a=t,l=a+e,d=Math.cos(a),c=Math.sin(a),h=Math.cos(l),u=Math.sin(l),p=(t,e,o)=>Ff(t,a,l,!0)?1:Math.max(e,e*i,o,o*i),m=(t,e,o)=>Ff(t,a,l,!0)?-1:Math.min(e,e*i,o,o*i),g=p(0,d,h),f=p(Cf,c,u),v=m(yf,d,h),b=m(yf+Cf,c,u);o=(g-v)/2,n=(f-b)/2,s=-(g+v)/2,r=-(f+b)/2}return{ratioX:o,ratioY:n,offsetX:s,offsetY:r}}(u,h,a),v=(i.width-s)/p,b=(i.height-s)/m,y=Math.max(Math.min(v,b)/2,0),x=of(this.options.radius,y),w=(x-Math.max(x*a,0))/this._getVisibleDatasetWeightTotal();this.offsetX=g*x,this.offsetY=f*x,o.total=this.calculateTotal(),this.outerRadius=x-w*this._getRingWeightOffset(this.index),this.innerRadius=Math.max(this.outerRadius-w*c,0),this.updateElements(n,0,n.length,t)}_circumference(t,e){const i=this.options,o=this._cachedMeta,n=this._getCircumference();return e&&i.animation.animateRotate||!this.chart.getDataVisibility(t)||null===o._parsed[t]||o.data[t].hidden?0:this.calculateCircumference(o._parsed[t]*n/xf)}updateElements(t,e,i,o){const n="reset"===o,s=this.chart,r=s.chartArea,a=s.options.animation,l=(r.left+r.right)/2,d=(r.top+r.bottom)/2,c=n&&a.animateScale,h=c?0:this.innerRadius,u=c?0:this.outerRadius,{sharedOptions:p,includeOptions:m}=this._getSharedOptions(e,o);let g,f=this._getRotation();for(g=0;g<e;++g)f+=this._circumference(g,n);for(g=e;g<e+i;++g){const e=this._circumference(g,n),i=t[g],s={x:l+this.offsetX,y:d+this.offsetY,startAngle:f,endAngle:f+e,circumference:e,outerRadius:u,innerRadius:h};m&&(s.options=p||this.resolveDataElementOptions(g,i.active?"active":o)),f+=e,this.updateElement(i,g,s,o)}}calculateTotal(){const t=this._cachedMeta,e=t.data;let i,o=0;for(i=0;i<e.length;i++){const n=t._parsed[i];null===n||isNaN(n)||!this.chart.getDataVisibility(i)||e[i].hidden||(o+=Math.abs(n))}return o}calculateCircumference(t){const e=this._cachedMeta.total;return e>0&&!isNaN(t)?xf*(Math.abs(t)/e):0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,o=i.data.labels||[],n=hv(e._parsed[t],i.options.locale);return{label:o[t]||"",value:n}}getMaxBorderWidth(t){let e=0;const i=this.chart;let o,n,s,r,a;if(!t)for(o=0,n=i.data.datasets.length;o<n;++o)if(i.isDatasetVisible(o)){s=i.getDatasetMeta(o),t=s.data,r=s.controller;break}if(!t)return 0;for(o=0,n=t.length;o<n;++o)a=r.resolveDataElementOptions(o),"inner"!==a.borderAlign&&(e=Math.max(e,a.borderWidth||0,a.hoverBorderWidth||0));return e}getMaxOffset(t){let e=0;for(let i=0,o=t.length;i<o;++i){const t=this.resolveDataElementOptions(i);e=Math.max(e,t.offset||0,t.hoverOffset||0)}return e}_getRingWeightOffset(t){let e=0;for(let i=0;i<t;++i)this.chart.isDatasetVisible(i)&&(e+=this._getRingWeight(i));return e}_getRingWeight(t){return Math.max(ef(this.chart.data.datasets[t].weight,1),0)}_getVisibleDatasetWeightTotal(){return this._getRingWeightOffset(this.chart.data.datasets.length)||1}}class py extends oy{static id="polarArea";static defaults={dataElementType:"arc",animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:"number",properties:["x","y","startAngle","endAngle","innerRadius","outerRadius"]}},indexAxis:"r",startAngle:0};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data;if(e.labels.length&&e.datasets.length){const{labels:{pointStyle:i,color:o}}=t.legend.options;return e.labels.map((e,n)=>{const s=t.getDatasetMeta(0).controller.getStyle(n);return{text:e,fillStyle:s.backgroundColor,strokeStyle:s.borderColor,fontColor:o,lineWidth:s.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(n),index:n}})}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};constructor(t,e){super(t,e),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,o=i.data.labels||[],n=hv(e._parsed[t].r,i.options.locale);return{label:o[t]||"",value:n}}parseObjectData(t,e,i,o){return sb.bind(this)(t,e,i,o)}update(t){const e=this._cachedMeta.data;this._updateRadius(),this.updateElements(e,0,e.length,t)}getMinMax(){const t=this._cachedMeta,e={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY};return t.data.forEach((t,i)=>{const o=this.getParsed(i).r;!isNaN(o)&&this.chart.getDataVisibility(i)&&(o<e.min&&(e.min=o),o>e.max&&(e.max=o))}),e}_updateRadius(){const t=this.chart,e=t.chartArea,i=t.options,o=Math.min(e.right-e.left,e.bottom-e.top),n=Math.max(o/2,0),s=(n-Math.max(i.cutoutPercentage?n/100*i.cutoutPercentage:1,0))/t.getVisibleDatasetCount();this.outerRadius=n-s*this.index,this.innerRadius=this.outerRadius-s}updateElements(t,e,i,o){const n="reset"===o,s=this.chart,r=s.options.animation,a=this._cachedMeta.rScale,l=a.xCenter,d=a.yCenter,c=a.getIndexAngle(0)-.5*yf;let h,u=c;const p=360/this.countVisibleElements();for(h=0;h<e;++h)u+=this._computeAngle(h,o,p);for(h=e;h<e+i;h++){const e=t[h];let i=u,m=u+this._computeAngle(h,o,p),g=s.getDataVisibility(h)?a.getDistanceFromCenterForValue(this.getParsed(h).r):0;u=m,n&&(r.animateScale&&(g=0),r.animateRotate&&(i=m=c));const f={x:l,y:d,innerRadius:0,outerRadius:g,startAngle:i,endAngle:m,options:this.resolveDataElementOptions(h,e.active?"active":o)};this.updateElement(e,h,f,o)}}countVisibleElements(){const t=this._cachedMeta;let e=0;return t.data.forEach((t,i)=>{!isNaN(this.getParsed(i).r)&&this.chart.getDataVisibility(i)&&e++}),e}_computeAngle(t,e,i){return this.chart.getDataVisibility(t)?If(this.resolveDataElementOptions(t,e).angle||i):0}}var my=Object.freeze({__proto__:null,BarController:class extends oy{static id="bar";static defaults={datasetElementType:!1,dataElementType:"bar",categoryPercentage:.8,barPercentage:.9,grouped:!0,animations:{numbers:{type:"number",properties:["x","y","base","width","height"]}}};static overrides={scales:{_index_:{type:"category",offset:!0,grid:{offset:!0}},_value_:{type:"linear",beginAtZero:!0}}};parsePrimitiveData(t,e,i,o){return ry(t,e,i,o)}parseArrayData(t,e,i,o){return ry(t,e,i,o)}parseObjectData(t,e,i,o){const{iScale:n,vScale:s}=t,{xAxisKey:r="x",yAxisKey:a="y"}=this._parsing,l="x"===n.axis?r:a,d="x"===s.axis?r:a,c=[];let h,u,p,m;for(h=i,u=i+o;h<u;++h)m=e[h],p={},p[n.axis]=n.parse(mf(m,l),h),c.push(sy(mf(m,d),p,s,h));return c}updateRangeFromParsed(t,e,i,o){super.updateRangeFromParsed(t,e,i,o);const n=i._custom;n&&e===this._cachedMeta.vScale&&(t.min=Math.min(t.min,n.min),t.max=Math.max(t.max,n.max))}getMaxOverflow(){return 0}getLabelAndValue(t){const e=this._cachedMeta,{iScale:i,vScale:o}=e,n=this.getParsed(t),s=n._custom,r=ay(s)?"["+s.start+", "+s.end+"]":""+o.getLabelForValue(n[o.axis]);return{label:""+i.getLabelForValue(n[i.axis]),value:r}}initialize(){this.enableOptionSharing=!0,super.initialize();this._cachedMeta.stack=this.getDataset().stack}update(t){const e=this._cachedMeta;this.updateElements(e.data,0,e.data.length,t)}updateElements(t,e,i,o){const n="reset"===o,{index:s,_cachedMeta:{vScale:r}}=this,a=r.getBasePixel(),l=r.isHorizontal(),d=this._getRuler(),{sharedOptions:c,includeOptions:h}=this._getSharedOptions(e,o);for(let u=e;u<e+i;u++){const e=this.getParsed(u),i=n||Gg(e[r.axis])?{base:a,head:a}:this._calculateBarValuePixels(u),p=this._calculateBarIndexPixels(u,d),m=(e._stacks||{})[r.axis],g={horizontal:l,base:i.base,enableBorderRadius:!m||ay(e._custom)||s===m._top||s===m._bottom,x:l?i.head:p.center,y:l?p.center:i.head,height:l?p.size:Math.abs(i.size),width:l?Math.abs(i.size):p.size};h&&(g.options=c||this.resolveDataElementOptions(u,t[u].active?"active":o));const f=g.options||t[u].options;ly(g,f,m,s),hy(g,f,d.ratio),this.updateElement(t[u],u,g,o)}}_getStacks(t,e){const{iScale:i}=this._cachedMeta,o=i.getMatchingVisibleMetas(this._type).filter(t=>t.controller.options.grouped),n=i.options.stacked,s=[],r=this._cachedMeta.controller.getParsed(e),a=r&&r[i.axis],l=t=>{const e=t._parsed.find(t=>t[i.axis]===a),o=e&&e[t.vScale.axis];if(Gg(o)||isNaN(o))return!0};for(const i of o)if((void 0===e||!l(i))&&((!1===n||-1===s.indexOf(i.stack)||void 0===n&&void 0===i.stack)&&s.push(i.stack),i.index===t))break;return s.length||s.push(void 0),s}_getStackCount(t){return this._getStacks(void 0,t).length}_getAxisCount(){return this._getAxis().length}getFirstScaleIdForIndexAxis(){const t=this.chart.scales,e=this.chart.options.indexAxis;return Object.keys(t).filter(i=>t[i].axis===e).shift()}_getAxis(){const t={},e=this.getFirstScaleIdForIndexAxis();for(const i of this.chart.data.datasets)t[ef("x"===this.chart.options.indexAxis?i.xAxisID:i.yAxisID,e)]=!0;return Object.keys(t)}_getStackIndex(t,e,i){const o=this._getStacks(t,i),n=void 0!==e?o.indexOf(e):-1;return-1===n?o.length-1:n}_getRuler(){const t=this.options,e=this._cachedMeta,i=e.iScale,o=[];let n,s;for(n=0,s=e.data.length;n<s;++n)o.push(i.getPixelForValue(this.getParsed(n)[i.axis],n));const r=t.barThickness;return{min:r||ny(e),pixels:o,start:i._startPixel,end:i._endPixel,stackCount:this._getStackCount(),scale:i,grouped:t.grouped,ratio:r?1:t.categoryPercentage*t.barPercentage}}_calculateBarValuePixels(t){const{_cachedMeta:{vScale:e,_stacked:i,index:o},options:{base:n,minBarLength:s}}=this,r=n||0,a=this.getParsed(t),l=a._custom,d=ay(l);let c,h,u=a[e.axis],p=0,m=i?this.applyStack(e,a,i):u;m!==u&&(p=m-u,m=u),d&&(u=l.barStart,m=l.barEnd-l.barStart,0!==u&&Ef(u)!==Ef(l.barEnd)&&(p=0),p+=u);const g=Gg(n)||d?p:n;let f=e.getPixelForValue(g);if(c=this.chart.getDataVisibility(t)?e.getPixelForValue(p+m):f,h=c-f,Math.abs(h)<s){h=function(t,e,i){return 0!==t?Ef(t):(e.isHorizontal()?1:-1)*(e.min>=i?1:-1)}(h,e,r)*s,u===r&&(f-=h/2);const t=e.getPixelForDecimal(0),n=e.getPixelForDecimal(1),l=Math.min(t,n),p=Math.max(t,n);f=Math.max(Math.min(f,p),l),c=f+h,i&&!d&&(a._stacks[e.axis]._visualValues[o]=e.getValueForPixel(c)-e.getValueForPixel(f))}if(f===e.getPixelForValue(r)){const t=Ef(h)*e.getLineWidthForValue(r)/2;f+=t,h-=t}return{size:h,base:f,head:c,center:c+h/2}}_calculateBarIndexPixels(t,e){const i=e.scale,o=this.options,n=o.skipNull,s=ef(o.maxBarThickness,1/0);let r,a;const l=this._getAxisCount();if(e.grouped){const i=n?this._getStackCount(t):e.stackCount,d="flex"===o.barThickness?function(t,e,i,o){const n=e.pixels,s=n[t];let r=t>0?n[t-1]:null,a=t<n.length-1?n[t+1]:null;const l=i.categoryPercentage;null===r&&(r=s-(null===a?e.end-e.start:a-s)),null===a&&(a=s+s-r);const d=s-(s-Math.min(r,a))/2*l;return{chunk:Math.abs(a-r)/2*l/o,ratio:i.barPercentage,start:d}}(t,e,o,i*l):function(t,e,i,o){const n=i.barThickness;let s,r;return Gg(n)?(s=e.min*i.categoryPercentage,r=i.barPercentage):(s=n*o,r=1),{chunk:s/o,ratio:r,start:e.pixels[t]-s/2}}(t,e,o,i*l),c="x"===this.chart.options.indexAxis?this.getDataset().xAxisID:this.getDataset().yAxisID,h=this._getAxis().indexOf(ef(c,this.getFirstScaleIdForIndexAxis())),u=this._getStackIndex(this.index,this._cachedMeta.stack,n?t:void 0)+h;r=d.start+d.chunk*u+d.chunk/2,a=Math.min(s,d.chunk*d.ratio)}else r=i.getPixelForValue(this.getParsed(t)[i.axis],t),a=Math.min(s,e.min*e.ratio);return{base:r-a/2,head:r+a/2,center:r,size:a}}draw(){const t=this._cachedMeta,e=t.vScale,i=t.data,o=i.length;let n=0;for(;n<o;++n)null===this.getParsed(n)[e.axis]||i[n].hidden||i[n].draw(this._ctx)}},BubbleController:class extends oy{static id="bubble";static defaults={datasetElementType:!1,dataElementType:"point",animations:{numbers:{type:"number",properties:["x","y","borderWidth","radius"]}}};static overrides={scales:{x:{type:"linear"},y:{type:"linear"}}};initialize(){this.enableOptionSharing=!0,super.initialize()}parsePrimitiveData(t,e,i,o){const n=super.parsePrimitiveData(t,e,i,o);for(let t=0;t<n.length;t++)n[t]._custom=this.resolveDataElementOptions(t+i).radius;return n}parseArrayData(t,e,i,o){const n=super.parseArrayData(t,e,i,o);for(let t=0;t<n.length;t++){const o=e[i+t];n[t]._custom=ef(o[2],this.resolveDataElementOptions(t+i).radius)}return n}parseObjectData(t,e,i,o){const n=super.parseObjectData(t,e,i,o);for(let t=0;t<n.length;t++){const o=e[i+t];n[t]._custom=ef(o&&o.r&&+o.r,this.resolveDataElementOptions(t+i).radius)}return n}getMaxOverflow(){const t=this._cachedMeta.data;let e=0;for(let i=t.length-1;i>=0;--i)e=Math.max(e,t[i].size(this.resolveDataElementOptions(i))/2);return e>0&&e}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart.data.labels||[],{xScale:o,yScale:n}=e,s=this.getParsed(t),r=o.getLabelForValue(s.x),a=n.getLabelForValue(s.y),l=s._custom;return{label:i[t]||"",value:"("+r+", "+a+(l?", "+l:"")+")"}}update(t){const e=this._cachedMeta.data;this.updateElements(e,0,e.length,t)}updateElements(t,e,i,o){const n="reset"===o,{iScale:s,vScale:r}=this._cachedMeta,{sharedOptions:a,includeOptions:l}=this._getSharedOptions(e,o),d=s.axis,c=r.axis;for(let h=e;h<e+i;h++){const e=t[h],i=!n&&this.getParsed(h),u={},p=u[d]=n?s.getPixelForDecimal(.5):s.getPixelForValue(i[d]),m=u[c]=n?r.getBasePixel():r.getPixelForValue(i[c]);u.skip=isNaN(p)||isNaN(m),l&&(u.options=a||this.resolveDataElementOptions(h,e.active?"active":o),n&&(u.options.radius=0)),this.updateElement(e,h,u,o)}}resolveDataElementOptions(t,e){const i=this.getParsed(t);let o=super.resolveDataElementOptions(t,e);o.$shared&&(o=Object.assign({},o,{$shared:!1}));const n=o.radius;return"active"!==e&&(o.radius=0),o.radius+=ef(i&&i._custom,n),o}},DoughnutController:uy,LineController:class extends oy{static id="line";static defaults={datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1};static overrides={scales:{_index_:{type:"category"},_value_:{type:"linear"}}};initialize(){this.enableOptionSharing=!0,this.supportsDecimation=!0,super.initialize()}update(t){const e=this._cachedMeta,{dataset:i,data:o=[],_dataset:n}=e,s=this.chart._animationsDisabled;let{start:r,count:a}=Jf(e,o,s);this._drawStart=r,this._drawCount=a,tv(e)&&(r=0,a=o.length),i._chart=this.chart,i._datasetIndex=this.index,i._decimated=!!n._decimated,i.points=o;const l=this.resolveDatasetElementOptions(t);this.options.showLine||(l.borderWidth=0),l.segment=this.options.segment,this.updateElement(i,void 0,{animated:!s,options:l},t),this.updateElements(o,r,a,t)}updateElements(t,e,i,o){const n="reset"===o,{iScale:s,vScale:r,_stacked:a,_dataset:l}=this._cachedMeta,{sharedOptions:d,includeOptions:c}=this._getSharedOptions(e,o),h=s.axis,u=r.axis,{spanGaps:p,segment:m}=this.options,g=Mf(p)?p:Number.POSITIVE_INFINITY,f=this.chart._animationsDisabled||n||"none"===o,v=e+i,b=t.length;let y=e>0&&this.getParsed(e-1);for(let i=0;i<b;++i){const p=t[i],b=f?p:{};if(i<e||i>=v){b.skip=!0;continue}const x=this.getParsed(i),w=Gg(x[u]),_=b[h]=s.getPixelForValue(x[h],i),k=b[u]=n||w?r.getBasePixel():r.getPixelForValue(a?this.applyStack(r,x,a):x[u],i);b.skip=isNaN(_)||isNaN(k)||w,b.stop=i>0&&Math.abs(x[h]-y[h])>g,m&&(b.parsed=x,b.raw=l.data[i]),c&&(b.options=d||this.resolveDataElementOptions(i,p.active?"active":o)),f||this.updateElement(p,i,b,o),y=x}}getMaxOverflow(){const t=this._cachedMeta,e=t.dataset,i=e.options&&e.options.borderWidth||0,o=t.data||[];if(!o.length)return i;const n=o[0].size(this.resolveDataElementOptions(0)),s=o[o.length-1].size(this.resolveDataElementOptions(o.length-1));return Math.max(i,n,s)/2}draw(){const t=this._cachedMeta;t.dataset.updateControlPoints(this.chart.chartArea,t.iScale.axis),super.draw()}},PieController:class extends uy{static id="pie";static defaults={cutout:0,rotation:0,circumference:360,radius:"100%"}},PolarAreaController:py,RadarController:class extends oy{static id="radar";static defaults={datasetElementType:"line",dataElementType:"point",indexAxis:"r",showLine:!0,elements:{line:{fill:"start"}}};static overrides={aspectRatio:1,scales:{r:{type:"radialLinear"}}};getLabelAndValue(t){const e=this._cachedMeta.vScale,i=this.getParsed(t);return{label:e.getLabels()[t],value:""+e.getLabelForValue(i[e.axis])}}parseObjectData(t,e,i,o){return sb.bind(this)(t,e,i,o)}update(t){const e=this._cachedMeta,i=e.dataset,o=e.data||[],n=e.iScale.getLabels();if(i.points=o,"resize"!==t){const e=this.resolveDatasetElementOptions(t);this.options.showLine||(e.borderWidth=0);const s={_loop:!0,_fullLoop:n.length===o.length,options:e};this.updateElement(i,void 0,s,t)}this.updateElements(o,0,o.length,t)}updateElements(t,e,i,o){const n=this._cachedMeta.rScale,s="reset"===o;for(let r=e;r<e+i;r++){const e=t[r],i=this.resolveDataElementOptions(r,e.active?"active":o),a=n.getPointPositionForValue(r,this.getParsed(r).r),l=s?n.xCenter:a.x,d=s?n.yCenter:a.y,c={x:l,y:d,angle:a.angle,skip:isNaN(l)||isNaN(d),options:i};this.updateElement(e,r,c,o)}}},ScatterController:class extends oy{static id="scatter";static defaults={datasetElementType:!1,dataElementType:"point",showLine:!1,fill:!1};static overrides={interaction:{mode:"point"},scales:{x:{type:"linear"},y:{type:"linear"}}};getLabelAndValue(t){const e=this._cachedMeta,i=this.chart.data.labels||[],{xScale:o,yScale:n}=e,s=this.getParsed(t),r=o.getLabelForValue(s.x),a=n.getLabelForValue(s.y);return{label:i[t]||"",value:"("+r+", "+a+")"}}update(t){const e=this._cachedMeta,{data:i=[]}=e,o=this.chart._animationsDisabled;let{start:n,count:s}=Jf(e,i,o);if(this._drawStart=n,this._drawCount=s,tv(e)&&(n=0,s=i.length),this.options.showLine){this.datasetElementType||this.addElements();const{dataset:n,_dataset:s}=e;n._chart=this.chart,n._datasetIndex=this.index,n._decimated=!!s._decimated,n.points=i;const r=this.resolveDatasetElementOptions(t);r.segment=this.options.segment,this.updateElement(n,void 0,{animated:!o,options:r},t)}else this.datasetElementType&&(delete e.dataset,this.datasetElementType=!1);this.updateElements(i,n,s,t)}addElements(){const{showLine:t}=this.options;!this.datasetElementType&&t&&(this.datasetElementType=this.chart.registry.getElement("line")),super.addElements()}updateElements(t,e,i,o){const n="reset"===o,{iScale:s,vScale:r,_stacked:a,_dataset:l}=this._cachedMeta,d=this.resolveDataElementOptions(e,o),c=this.getSharedOptions(d),h=this.includeOptions(o,c),u=s.axis,p=r.axis,{spanGaps:m,segment:g}=this.options,f=Mf(m)?m:Number.POSITIVE_INFINITY,v=this.chart._animationsDisabled||n||"none"===o;let b=e>0&&this.getParsed(e-1);for(let d=e;d<e+i;++d){const e=t[d],i=this.getParsed(d),m=v?e:{},y=Gg(i[p]),x=m[u]=s.getPixelForValue(i[u],d),w=m[p]=n||y?r.getBasePixel():r.getPixelForValue(a?this.applyStack(r,i,a):i[p],d);m.skip=isNaN(x)||isNaN(w)||y,m.stop=d>0&&Math.abs(i[u]-b[u])>f,g&&(m.parsed=i,m.raw=l.data[d]),h&&(m.options=c||this.resolveDataElementOptions(d,e.active?"active":o)),v||this.updateElement(e,d,m,o),b=i}this.updateSharedOptions(c,o,d)}getMaxOverflow(){const t=this._cachedMeta,e=t.data||[];if(!this.options.showLine){let t=0;for(let i=e.length-1;i>=0;--i)t=Math.max(t,e[i].size(this.resolveDataElementOptions(i))/2);return t>0&&t}const i=t.dataset,o=i.options&&i.options.borderWidth||0;if(!e.length)return o;const n=e[0].size(this.resolveDataElementOptions(0)),s=e[e.length-1].size(this.resolveDataElementOptions(e.length-1));return Math.max(o,n,s)/2}}});function gy(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}class fy{static override(t){Object.assign(fy.prototype,t)}options;constructor(t){this.options=t||{}}init(){}formats(){return gy()}parse(){return gy()}format(){return gy()}add(){return gy()}diff(){return gy()}startOf(){return gy()}endOf(){return gy()}}var vy={_date:fy};function by(t,e,i,o){const{controller:n,data:s,_sorted:r}=t,a=n._cachedMeta.iScale,l=t.dataset&&t.dataset.options?t.dataset.options.spanGaps:null;if(a&&e===a.axis&&"r"!==e&&r&&s.length){const r=a._reversePixels?Wf:Hf;if(!o){const o=r(s,e,i);if(l){const{vScale:e}=n._cachedMeta,{_parsed:i}=t,s=i.slice(0,o.lo+1).reverse().findIndex(t=>!Gg(t[e.axis]));o.lo-=Math.max(0,s);const r=i.slice(o.hi).findIndex(t=>!Gg(t[e.axis]));o.hi+=Math.max(0,r)}return o}if(n._sharedOptions){const t=s[0],o="function"==typeof t.getRange&&t.getRange(e);if(o){const t=r(s,e,i-o),n=r(s,e,i+o);return{lo:t.lo,hi:n.hi}}}}return{lo:0,hi:s.length-1}}function yy(t,e,i,o,n){const s=t.getSortedVisibleDatasetMetas(),r=i[e];for(let t=0,i=s.length;t<i;++t){const{index:i,data:a}=s[t],{lo:l,hi:d}=by(s[t],e,r,n);for(let t=l;t<=d;++t){const e=a[t];e.skip||o(e,i,t)}}}function xy(t,e,i,o,n){const s=[];if(!n&&!t.isPointInArea(e))return s;return yy(t,i,e,function(i,r,a){(n||Av(i,t.chartArea,0))&&i.inRange(e.x,e.y,o)&&s.push({element:i,datasetIndex:r,index:a})},!0),s}function wy(t,e,i,o,n,s){let r=[];const a=function(t){const e=-1!==t.indexOf("x"),i=-1!==t.indexOf("y");return function(t,o){const n=e?Math.abs(t.x-o.x):0,s=i?Math.abs(t.y-o.y):0;return Math.sqrt(Math.pow(n,2)+Math.pow(s,2))}}(i);let l=Number.POSITIVE_INFINITY;return yy(t,i,e,function(i,d,c){const h=i.inRange(e.x,e.y,n);if(o&&!h)return;const u=i.getCenterPoint(n);if(!(!!s||t.isPointInArea(u))&&!h)return;const p=a(e,u);p<l?(r=[{element:i,datasetIndex:d,index:c}],l=p):p===l&&r.push({element:i,datasetIndex:d,index:c})}),r}function _y(t,e,i,o,n,s){return s||t.isPointInArea(e)?"r"!==i||o?wy(t,e,i,o,n,s):function(t,e,i,o){let n=[];return yy(t,i,e,function(t,i,s){const{startAngle:r,endAngle:a}=t.getProps(["startAngle","endAngle"],o),{angle:l}=Pf(t,{x:e.x,y:e.y});Ff(l,r,a)&&n.push({element:t,datasetIndex:i,index:s})}),n}(t,e,i,n):[]}function ky(t,e,i,o,n){const s=[],r="x"===i?"inXRange":"inYRange";let a=!1;return yy(t,i,e,(t,o,l)=>{t[r]&&t[r](e[i],n)&&(s.push({element:t,datasetIndex:o,index:l}),a=a||t.inRange(e.x,e.y,n))}),o&&!a?[]:s}var Cy={modes:{index(t,e,i,o){const n=yb(e,t),s=i.axis||"x",r=i.includeInvisible||!1,a=i.intersect?xy(t,n,s,o,r):_y(t,n,s,!1,o,r),l=[];return a.length?(t.getSortedVisibleDatasetMetas().forEach(t=>{const e=a[0].index,i=t.data[e];i&&!i.skip&&l.push({element:i,datasetIndex:t.index,index:e})}),l):[]},dataset(t,e,i,o){const n=yb(e,t),s=i.axis||"xy",r=i.includeInvisible||!1;let a=i.intersect?xy(t,n,s,o,r):_y(t,n,s,!1,o,r);if(a.length>0){const e=a[0].datasetIndex,i=t.getDatasetMeta(e).data;a=[];for(let t=0;t<i.length;++t)a.push({element:i[t],datasetIndex:e,index:t})}return a},point:(t,e,i,o)=>xy(t,yb(e,t),i.axis||"xy",o,i.includeInvisible||!1),nearest(t,e,i,o){const n=yb(e,t),s=i.axis||"xy",r=i.includeInvisible||!1;return _y(t,n,s,i.intersect,o,r)},x:(t,e,i,o)=>ky(t,yb(e,t),"x",i.intersect,o),y:(t,e,i,o)=>ky(t,yb(e,t),"y",i.intersect,o)}};const Sy=["left","top","right","bottom"];function Ay(t,e){return t.filter(t=>t.pos===e)}function $y(t,e){return t.filter(t=>-1===Sy.indexOf(t.pos)&&t.box.axis===e)}function Ey(t,e){return t.sort((t,i)=>{const o=e?i:t,n=e?t:i;return o.weight===n.weight?o.index-n.index:o.weight-n.weight})}function Ty(t,e){const i=function(t){const e={};for(const i of t){const{stack:t,pos:o,stackWeight:n}=i;if(!t||!Sy.includes(o))continue;const s=e[t]||(e[t]={count:0,placed:0,weight:0,size:0});s.count++,s.weight+=n}return e}(t),{vBoxMaxWidth:o,hBoxMaxHeight:n}=e;let s,r,a;for(s=0,r=t.length;s<r;++s){a=t[s];const{fullSize:r}=a.box,l=i[a.stack],d=l&&a.stackWeight/l.weight;a.horizontal?(a.width=d?d*o:r&&e.availableWidth,a.height=n):(a.width=o,a.height=d?d*n:r&&e.availableHeight)}return i}function Dy(t,e,i,o){return Math.max(t[i],e[i])+Math.max(t[o],e[o])}function My(t,e){t.top=Math.max(t.top,e.top),t.left=Math.max(t.left,e.left),t.bottom=Math.max(t.bottom,e.bottom),t.right=Math.max(t.right,e.right)}function zy(t,e,i,o){const{pos:n,box:s}=i,r=t.maxPadding;if(!Qg(n)){i.size&&(t[n]-=i.size);const e=o[i.stack]||{size:0,count:1};e.size=Math.max(e.size,i.horizontal?s.height:s.width),i.size=e.size/e.count,t[n]+=i.size}s.getPadding&&My(r,s.getPadding());const a=Math.max(0,e.outerWidth-Dy(r,t,"left","right")),l=Math.max(0,e.outerHeight-Dy(r,t,"top","bottom")),d=a!==t.w,c=l!==t.h;return t.w=a,t.h=l,i.horizontal?{same:d,other:c}:{same:c,other:d}}function Iy(t,e){const i=e.maxPadding;function o(t){const o={left:0,top:0,right:0,bottom:0};return t.forEach(t=>{o[t]=Math.max(e[t],i[t])}),o}return o(t?["left","right"]:["top","bottom"])}function Oy(t,e,i,o){const n=[];let s,r,a,l,d,c;for(s=0,r=t.length,d=0;s<r;++s){a=t[s],l=a.box,l.update(a.width||e.w,a.height||e.h,Iy(a.horizontal,e));const{same:r,other:h}=zy(e,i,a,o);d|=r&&n.length,c=c||h,l.fullSize||n.push(a)}return d&&Oy(n,e,i,o)||c}function Ly(t,e,i,o,n){t.top=i,t.left=e,t.right=e+o,t.bottom=i+n,t.width=o,t.height=n}function Py(t,e,i,o){const n=i.padding;let{x:s,y:r}=e;for(const a of t){const t=a.box,l=o[a.stack]||{placed:0,weight:1},d=a.stackWeight/l.weight||1;if(a.horizontal){const o=e.w*d,s=l.size||t.height;ff(l.start)&&(r=l.start),t.fullSize?Ly(t,n.left,r,i.outerWidth-n.right-n.left,s):Ly(t,e.left+l.placed,r,o,s),l.start=r,l.placed+=o,r=t.bottom}else{const o=e.h*d,r=l.size||t.width;ff(l.start)&&(s=l.start),t.fullSize?Ly(t,s,n.top,r,i.outerHeight-n.bottom-n.top):Ly(t,s,e.top+l.placed,r,o),l.start=s,l.placed+=o,s=t.right}}e.x=s,e.y=r}var Ry={addBox(t,e){t.boxes||(t.boxes=[]),e.fullSize=e.fullSize||!1,e.position=e.position||"top",e.weight=e.weight||0,e._layers=e._layers||function(){return[{z:0,draw(t){e.draw(t)}}]},t.boxes.push(e)},removeBox(t,e){const i=t.boxes?t.boxes.indexOf(e):-1;-1!==i&&t.boxes.splice(i,1)},configure(t,e,i){e.fullSize=i.fullSize,e.position=i.position,e.weight=i.weight},update(t,e,i,o){if(!t)return;const n=Uv(t.options.layout.padding),s=Math.max(e-n.width,0),r=Math.max(i-n.height,0),a=function(t){const e=function(t){const e=[];let i,o,n,s,r,a;for(i=0,o=(t||[]).length;i<o;++i)n=t[i],({position:s,options:{stack:r,stackWeight:a=1}}=n),e.push({index:i,box:n,pos:s,horizontal:n.isHorizontal(),weight:n.weight,stack:r&&s+r,stackWeight:a});return e}(t),i=Ey(e.filter(t=>t.box.fullSize),!0),o=Ey(Ay(e,"left"),!0),n=Ey(Ay(e,"right")),s=Ey(Ay(e,"top"),!0),r=Ey(Ay(e,"bottom")),a=$y(e,"x"),l=$y(e,"y");return{fullSize:i,leftAndTop:o.concat(s),rightAndBottom:n.concat(l).concat(r).concat(a),chartArea:Ay(e,"chartArea"),vertical:o.concat(n).concat(l),horizontal:s.concat(r).concat(a)}}(t.boxes),l=a.vertical,d=a.horizontal;sf(t.boxes,t=>{"function"==typeof t.beforeLayout&&t.beforeLayout()});const c=l.reduce((t,e)=>e.box.options&&!1===e.box.options.display?t:t+1,0)||1,h=Object.freeze({outerWidth:e,outerHeight:i,padding:n,availableWidth:s,availableHeight:r,vBoxMaxWidth:s/2/c,hBoxMaxHeight:r/2}),u=Object.assign({},n);My(u,Uv(o));const p=Object.assign({maxPadding:u,w:s,h:r,x:n.left,y:n.top},n),m=Ty(l.concat(d),h);Oy(a.fullSize,p,h,m),Oy(l,p,h,m),Oy(d,p,h,m)&&Oy(l,p,h,m),function(t){const e=t.maxPadding;function i(i){const o=Math.max(e[i]-t[i],0);return t[i]+=o,o}t.y+=i("top"),t.x+=i("left"),i("right"),i("bottom")}(p),Py(a.leftAndTop,p,h,m),p.x+=p.w,p.y+=p.h,Py(a.rightAndBottom,p,h,m),t.chartArea={left:p.left,top:p.top,right:p.left+p.w,bottom:p.top+p.h,height:p.h,width:p.w},sf(a.chartArea,e=>{const i=e.box;Object.assign(i,t.chartArea),i.update(p.w,p.h,{left:0,top:0,right:0,bottom:0})})}};class Ny{acquireContext(t,e){}releaseContext(t){return!1}addEventListener(t,e,i){}removeEventListener(t,e,i){}getDevicePixelRatio(){return 1}getMaximumSize(t,e,i,o){return e=Math.max(0,e||t.width),i=i||t.height,{width:e,height:Math.max(0,o?Math.floor(e/o):i)}}isAttached(t){return!0}updateConfig(t){}}class By extends Ny{acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null}updateConfig(t){t.options.animation=!1}}const Fy="$chartjs",qy={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},Uy=t=>null===t||""===t;const jy=!!kb&&{passive:!0};function Hy(t,e,i){t&&t.canvas&&t.canvas.removeEventListener(e,i,jy)}function Wy(t,e){for(const i of t)if(i===e||i.contains(e))return!0}function Vy(t,e,i){const o=t.canvas,n=new MutationObserver(t=>{let e=!1;for(const i of t)e=e||Wy(i.addedNodes,o),e=e&&!Wy(i.removedNodes,o);e&&i()});return n.observe(document,{childList:!0,subtree:!0}),n}function Zy(t,e,i){const o=t.canvas,n=new MutationObserver(t=>{let e=!1;for(const i of t)e=e||Wy(i.removedNodes,o),e=e&&!Wy(i.addedNodes,o);e&&i()});return n.observe(document,{childList:!0,subtree:!0}),n}const Yy=new Map;let Ky=0;function Gy(){const t=window.devicePixelRatio;t!==Ky&&(Ky=t,Yy.forEach((e,i)=>{i.currentDevicePixelRatio!==t&&e()}))}function Xy(t,e,i){const o=t.canvas,n=o&&mb(o);if(!n)return;const s=Gf((t,e)=>{const o=n.clientWidth;i(t,e),o<n.clientWidth&&i()},window),r=new ResizeObserver(t=>{const e=t[0],i=e.contentRect.width,o=e.contentRect.height;0===i&&0===o||s(i,o)});return r.observe(n),function(t,e){Yy.size||window.addEventListener("resize",Gy),Yy.set(t,e)}(t,s),r}function Qy(t,e,i){i&&i.disconnect(),"resize"===e&&function(t){Yy.delete(t),Yy.size||window.removeEventListener("resize",Gy)}(t)}function Jy(t,e,i){const o=t.canvas,n=Gf(e=>{null!==t.ctx&&i(function(t,e){const i=qy[t.type]||t.type,{x:o,y:n}=yb(t,e);return{type:i,chart:e,native:t,x:void 0!==o?o:null,y:void 0!==n?n:null}}(e,t))},t);return function(t,e,i){t&&t.addEventListener(e,i,jy)}(o,e,n),n}class tx extends Ny{acquireContext(t,e){const i=t&&t.getContext&&t.getContext("2d");return i&&i.canvas===t?(function(t,e){const i=t.style,o=t.getAttribute("height"),n=t.getAttribute("width");if(t[Fy]={initial:{height:o,width:n,style:{display:i.display,height:i.height,width:i.width}}},i.display=i.display||"block",i.boxSizing=i.boxSizing||"border-box",Uy(n)){const e=Cb(t,"width");void 0!==e&&(t.width=e)}if(Uy(o))if(""===t.style.height)t.height=t.width/(e||2);else{const e=Cb(t,"height");void 0!==e&&(t.height=e)}}(t,e),i):null}releaseContext(t){const e=t.canvas;if(!e[Fy])return!1;const i=e[Fy].initial;["height","width"].forEach(t=>{const o=i[t];Gg(o)?e.removeAttribute(t):e.setAttribute(t,o)});const o=i.style||{};return Object.keys(o).forEach(t=>{e.style[t]=o[t]}),e.width=e.width,delete e[Fy],!0}addEventListener(t,e,i){this.removeEventListener(t,e);const o=t.$proxies||(t.$proxies={}),n={attach:Vy,detach:Zy,resize:Xy}[e]||Jy;o[e]=n(t,e,i)}removeEventListener(t,e){const i=t.$proxies||(t.$proxies={}),o=i[e];if(!o)return;({attach:Qy,detach:Qy,resize:Qy}[e]||Hy)(t,e,o),i[e]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,e,i,o){return wb(t,e,i,o)}isAttached(t){const e=t&&mb(t);return!(!e||!e.isConnected)}}let ex=class{static defaults={};static defaultRoutes=void 0;x;y;active=!1;options;$animations;tooltipPosition(t){const{x:e,y:i}=this.getProps(["x","y"],t);return{x:e,y:i}}hasValue(){return Mf(this.x)&&Mf(this.y)}getProps(t,e){const i=this.$animations;if(!e||!i)return this;const o={};return t.forEach(t=>{o[t]=i[t]&&i[t].active()?i[t]._to:this[t]}),o}};function ix(t,e){const i=t.options.ticks,o=function(t){const e=t.options.offset,i=t._tickSize(),o=t._length/i+(e?0:1),n=t._maxLength/i;return Math.floor(Math.min(o,n))}(t),n=Math.min(i.maxTicksLimit||o,o),s=i.major.enabled?function(t){const e=[];let i,o;for(i=0,o=t.length;i<o;i++)t[i].major&&e.push(i);return e}(e):[],r=s.length,a=s[0],l=s[r-1],d=[];if(r>n)return function(t,e,i,o){let n,s=0,r=i[0];for(o=Math.ceil(o),n=0;n<t.length;n++)n===r&&(e.push(t[n]),s++,r=i[s*o])}(e,d,s,r/n),d;const c=function(t,e,i){const o=function(t){const e=t.length;let i,o;if(e<2)return!1;for(o=t[0],i=1;i<e;++i)if(t[i]-t[i-1]!==o)return!1;return o}(t),n=e.length/i;if(!o)return Math.max(n,1);const s=function(t){const e=[],i=Math.sqrt(t);let o;for(o=1;o<i;o++)t%o===0&&(e.push(o),e.push(t/o));return i===(0|i)&&e.push(i),e.sort((t,e)=>t-e).pop(),e}(o);for(let t=0,e=s.length-1;t<e;t++){const e=s[t];if(e>n)return e}return Math.max(n,1)}(s,e,n);if(r>0){let t,i;const o=r>1?Math.round((l-a)/(r-1)):null;for(ox(e,d,c,Gg(o)?0:a-o,a),t=0,i=r-1;t<i;t++)ox(e,d,c,s[t],s[t+1]);return ox(e,d,c,l,Gg(o)?e.length:l+o),d}return ox(e,d,c),d}function ox(t,e,i,o,n){const s=ef(o,0),r=Math.min(ef(n,t.length),t.length);let a,l,d,c=0;for(i=Math.ceil(i),n&&(a=n-o,i=a/Math.floor(a/i)),d=s;d<0;)c++,d=Math.round(s+c*i);for(l=Math.max(s,0);l<r;l++)l===d&&(e.push(t[l]),c++,d=Math.round(s+c*i))}const nx=(t,e,i)=>"top"===e||"left"===e?t[e]+i:t[e]-i,sx=(t,e)=>Math.min(e||t,t);function rx(t,e){const i=[],o=t.length/e,n=t.length;let s=0;for(;s<n;s+=o)i.push(t[Math.floor(s)]);return i}function ax(t,e,i){const o=t.ticks.length,n=Math.min(e,o-1),s=t._startPixel,r=t._endPixel,a=1e-6;let l,d=t.getPixelForTick(n);if(!(i&&(l=1===o?Math.max(d-s,r-d):0===e?(t.getPixelForTick(1)-d)/2:(d-t.getPixelForTick(n-1))/2,d+=n<e?l:-l,d<s-a||d>r+a)))return d}function lx(t){return t.drawTicks?t.tickLength:0}function dx(t,e){if(!t.display)return 0;const i=jv(t.font,e),o=Uv(t.padding);return(Xg(t.text)?t.text.length:1)*i.lineHeight+o.height}function cx(t,e,i){let o=Xf(t);return(i&&"right"!==e||!i&&"right"===e)&&(o=(t=>"left"===t?"right":"right"===t?"left":t)(o)),o}class hx extends ex{constructor(t){super(),this.id=t.id,this.type=t.type,this.options=void 0,this.ctx=t.ctx,this.chart=t.chart,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this._margins={left:0,right:0,top:0,bottom:0},this.maxWidth=void 0,this.maxHeight=void 0,this.paddingTop=void 0,this.paddingBottom=void 0,this.paddingLeft=void 0,this.paddingRight=void 0,this.axis=void 0,this.labelRotation=void 0,this.min=void 0,this.max=void 0,this._range=void 0,this.ticks=[],this._gridLineItems=null,this._labelItems=null,this._labelSizes=null,this._length=0,this._maxLength=0,this._longestTextCache={},this._startPixel=void 0,this._endPixel=void 0,this._reversePixels=!1,this._userMax=void 0,this._userMin=void 0,this._suggestedMax=void 0,this._suggestedMin=void 0,this._ticksLength=0,this._borderValue=0,this._cache={},this._dataLimitsCached=!1,this.$context=void 0}init(t){this.options=t.setContext(this.getContext()),this.axis=t.axis,this._userMin=this.parse(t.min),this._userMax=this.parse(t.max),this._suggestedMin=this.parse(t.suggestedMin),this._suggestedMax=this.parse(t.suggestedMax)}parse(t,e){return t}getUserBounds(){let{_userMin:t,_userMax:e,_suggestedMin:i,_suggestedMax:o}=this;return t=tf(t,Number.POSITIVE_INFINITY),e=tf(e,Number.NEGATIVE_INFINITY),i=tf(i,Number.POSITIVE_INFINITY),o=tf(o,Number.NEGATIVE_INFINITY),{min:tf(t,i),max:tf(e,o),minDefined:Jg(t),maxDefined:Jg(e)}}getMinMax(t){let e,{min:i,max:o,minDefined:n,maxDefined:s}=this.getUserBounds();if(n&&s)return{min:i,max:o};const r=this.getMatchingVisibleMetas();for(let a=0,l=r.length;a<l;++a)e=r[a].controller.getMinMax(this,t),n||(i=Math.min(i,e.min)),s||(o=Math.max(o,e.max));return i=s&&i>o?o:i,o=n&&i>o?i:o,{min:tf(i,tf(o,i)),max:tf(o,tf(i,o))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}getLabelItems(t=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(t))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){nf(this.options.beforeUpdate,[this])}update(t,e,i){const{beginAtZero:o,grace:n,ticks:s}=this.options,r=s.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this._margins=i=Object.assign({left:0,right:0,top:0,bottom:0},i),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+i.left+i.right:this.height+i.top+i.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=function(t,e,i){const{min:o,max:n}=t,s=of(e,(n-o)/2),r=(t,e)=>i&&0===t?0:t+e;return{min:r(o,-Math.abs(s)),max:r(n,s)}}(this,n,o),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const a=r<this.ticks.length;this._convertTicksToLabels(a?rx(this.ticks,r):this.ticks),this.configure(),this.beforeCalculateLabelRotation(),this.calculateLabelRotation(),this.afterCalculateLabelRotation(),s.display&&(s.autoSkip||"auto"===s.source)&&(this.ticks=ix(this,this.ticks),this._labelSizes=null,this.afterAutoSkip()),a&&this._convertTicksToLabels(this.ticks),this.beforeFit(),this.fit(),this.afterFit(),this.afterUpdate()}configure(){let t,e,i=this.options.reverse;this.isHorizontal()?(t=this.left,e=this.right):(t=this.top,e=this.bottom,i=!i),this._startPixel=t,this._endPixel=e,this._reversePixels=i,this._length=e-t,this._alignToPixels=this.options.alignToPixels}afterUpdate(){nf(this.options.afterUpdate,[this])}beforeSetDimensions(){nf(this.options.beforeSetDimensions,[this])}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=0,this.right=this.width):(this.height=this.maxHeight,this.top=0,this.bottom=this.height),this.paddingLeft=0,this.paddingTop=0,this.paddingRight=0,this.paddingBottom=0}afterSetDimensions(){nf(this.options.afterSetDimensions,[this])}_callHooks(t){this.chart.notifyPlugins(t,this.getContext()),nf(this.options[t],[this])}beforeDataLimits(){this._callHooks("beforeDataLimits")}determineDataLimits(){}afterDataLimits(){this._callHooks("afterDataLimits")}beforeBuildTicks(){this._callHooks("beforeBuildTicks")}buildTicks(){return[]}afterBuildTicks(){this._callHooks("afterBuildTicks")}beforeTickToLabelConversion(){nf(this.options.beforeTickToLabelConversion,[this])}generateTickLabels(t){const e=this.options.ticks;let i,o,n;for(i=0,o=t.length;i<o;i++)n=t[i],n.label=nf(e.callback,[n.value,i,t],this)}afterTickToLabelConversion(){nf(this.options.afterTickToLabelConversion,[this])}beforeCalculateLabelRotation(){nf(this.options.beforeCalculateLabelRotation,[this])}calculateLabelRotation(){const t=this.options,e=t.ticks,i=sx(this.ticks.length,t.ticks.maxTicksLimit),o=e.minRotation||0,n=e.maxRotation;let s,r,a,l=o;if(!this._isVisible()||!e.display||o>=n||i<=1||!this.isHorizontal())return void(this.labelRotation=o);const d=this._getLabelSizes(),c=d.widest.width,h=d.highest.height,u=qf(this.chart.width-c,0,this.maxWidth);s=t.offset?this.maxWidth/i:u/(i-1),c+6>s&&(s=u/(i-(t.offset?.5:1)),r=this.maxHeight-lx(t.grid)-e.padding-dx(t.title,this.chart.options.font),a=Math.sqrt(c*c+h*h),l=Of(Math.min(Math.asin(qf((d.highest.height+6)/s,-1,1)),Math.asin(qf(r/a,-1,1))-Math.asin(qf(h/a,-1,1)))),l=Math.max(o,Math.min(n,l))),this.labelRotation=l}afterCalculateLabelRotation(){nf(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){nf(this.options.beforeFit,[this])}fit(){const t={width:0,height:0},{chart:e,options:{ticks:i,title:o,grid:n}}=this,s=this._isVisible(),r=this.isHorizontal();if(s){const s=dx(o,e.options.font);if(r?(t.width=this.maxWidth,t.height=lx(n)+s):(t.height=this.maxHeight,t.width=lx(n)+s),i.display&&this.ticks.length){const{first:e,last:o,widest:n,highest:s}=this._getLabelSizes(),a=2*i.padding,l=If(this.labelRotation),d=Math.cos(l),c=Math.sin(l);if(r){const e=i.mirror?0:c*n.width+d*s.height;t.height=Math.min(this.maxHeight,t.height+e+a)}else{const e=i.mirror?0:d*n.width+c*s.height;t.width=Math.min(this.maxWidth,t.width+e+a)}this._calculatePadding(e,o,c,d)}}this._handleMargins(),r?(this.width=this._length=e.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=e.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,e,i,o){const{ticks:{align:n,padding:s},position:r}=this.options,a=0!==this.labelRotation,l="top"!==r&&"x"===this.axis;if(this.isHorizontal()){const r=this.getPixelForTick(0)-this.left,d=this.right-this.getPixelForTick(this.ticks.length-1);let c=0,h=0;a?l?(c=o*t.width,h=i*e.height):(c=i*t.height,h=o*e.width):"start"===n?h=e.width:"end"===n?c=t.width:"inner"!==n&&(c=t.width/2,h=e.width/2),this.paddingLeft=Math.max((c-r+s)*this.width/(this.width-r),0),this.paddingRight=Math.max((h-d+s)*this.width/(this.width-d),0)}else{let i=e.height/2,o=t.height/2;"start"===n?(i=0,o=t.height):"end"===n&&(i=e.height,o=0),this.paddingTop=i+s,this.paddingBottom=o+s}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){nf(this.options.afterFit,[this])}isHorizontal(){const{axis:t,position:e}=this.options;return"top"===e||"bottom"===e||"x"===t}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){let e,i;for(this.beforeTickToLabelConversion(),this.generateTickLabels(t),e=0,i=t.length;e<i;e++)Gg(t[e].label)&&(t.splice(e,1),i--,e--);this.afterTickToLabelConversion()}_getLabelSizes(){let t=this._labelSizes;if(!t){const e=this.options.ticks.sampleSize;let i=this.ticks;e<i.length&&(i=rx(i,e)),this._labelSizes=t=this._computeLabelSizes(i,i.length,this.options.ticks.maxTicksLimit)}return t}_computeLabelSizes(t,e,i){const{ctx:o,_longestTextCache:n}=this,s=[],r=[],a=Math.floor(e/sx(e,i));let l,d,c,h,u,p,m,g,f,v,b,y=0,x=0;for(l=0;l<e;l+=a){if(h=t[l].label,u=this._resolveTickFontOptions(l),o.font=p=u.string,m=n[p]=n[p]||{data:{},gc:[]},g=u.lineHeight,f=v=0,Gg(h)||Xg(h)){if(Xg(h))for(d=0,c=h.length;d<c;++d)b=h[d],Gg(b)||Xg(b)||(f=xv(o,m.data,m.gc,f,b),v+=g)}else f=xv(o,m.data,m.gc,f,h),v=g;s.push(f),r.push(v),y=Math.max(f,y),x=Math.max(v,x)}!function(t,e){sf(t,t=>{const i=t.gc,o=i.length/2;let n;if(o>e){for(n=0;n<o;++n)delete t.data[i[n]];i.splice(0,o)}})}(n,e);const w=s.indexOf(y),_=r.indexOf(x),k=t=>({width:s[t]||0,height:r[t]||0});return{first:k(0),last:k(e-1),widest:k(w),highest:k(_),widths:s,heights:r}}getLabelForValue(t){return t}getPixelForValue(t,e){return NaN}getValueForPixel(t){}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);const e=this._startPixel+t*this._length;return qf(this._alignToPixels?_v(this.chart,e,0):e,-32768,32767)}getDecimalForPixel(t){const e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0}getContext(t){const e=this.ticks||[];if(t>=0&&t<e.length){const i=e[t];return i.$context||(i.$context=function(t,e,i){return Wv(t,{tick:i,index:e,type:"tick"})}(this.getContext(),t,i))}return this.$context||(this.$context=Wv(this.chart.getContext(),{scale:this,type:"scale"}))}_tickSize(){const t=this.options.ticks,e=If(this.labelRotation),i=Math.abs(Math.cos(e)),o=Math.abs(Math.sin(e)),n=this._getLabelSizes(),s=t.autoSkipPadding||0,r=n?n.widest.width+s:0,a=n?n.highest.height+s:0;return this.isHorizontal()?a*i>r*o?r/i:a/o:a*o<r*i?a/i:r/o}_isVisible(){const t=this.options.display;return"auto"!==t?!!t:this.getMatchingVisibleMetas().length>0}_computeGridLineItems(t){const e=this.axis,i=this.chart,o=this.options,{grid:n,position:s,border:r}=o,a=n.offset,l=this.isHorizontal(),d=this.ticks.length+(a?1:0),c=lx(n),h=[],u=r.setContext(this.getContext()),p=u.display?u.width:0,m=p/2,g=function(t){return _v(i,t,p)};let f,v,b,y,x,w,_,k,C,S,A,$;if("top"===s)f=g(this.bottom),w=this.bottom-c,k=f-m,S=g(t.top)+m,$=t.bottom;else if("bottom"===s)f=g(this.top),S=t.top,$=g(t.bottom)-m,w=f+m,k=this.top+c;else if("left"===s)f=g(this.right),x=this.right-c,_=f-m,C=g(t.left)+m,A=t.right;else if("right"===s)f=g(this.left),C=t.left,A=g(t.right)-m,x=f+m,_=this.left+c;else if("x"===e){if("center"===s)f=g((t.top+t.bottom)/2+.5);else if(Qg(s)){const t=Object.keys(s)[0],e=s[t];f=g(this.chart.scales[t].getPixelForValue(e))}S=t.top,$=t.bottom,w=f+m,k=w+c}else if("y"===e){if("center"===s)f=g((t.left+t.right)/2);else if(Qg(s)){const t=Object.keys(s)[0],e=s[t];f=g(this.chart.scales[t].getPixelForValue(e))}x=f-m,_=x-c,C=t.left,A=t.right}const E=ef(o.ticks.maxTicksLimit,d),T=Math.max(1,Math.ceil(d/E));for(v=0;v<d;v+=T){const t=this.getContext(v),e=n.setContext(t),o=r.setContext(t),s=e.lineWidth,d=e.color,c=o.dash||[],u=o.dashOffset,p=e.tickWidth,m=e.tickColor,g=e.tickBorderDash||[],f=e.tickBorderDashOffset;b=ax(this,v,a),void 0!==b&&(y=_v(i,b,s),l?x=_=C=A=y:w=k=S=$=y,h.push({tx1:x,ty1:w,tx2:_,ty2:k,x1:C,y1:S,x2:A,y2:$,width:s,color:d,borderDash:c,borderDashOffset:u,tickWidth:p,tickColor:m,tickBorderDash:g,tickBorderDashOffset:f}))}return this._ticksLength=d,this._borderValue=f,h}_computeLabelItems(t){const e=this.axis,i=this.options,{position:o,ticks:n}=i,s=this.isHorizontal(),r=this.ticks,{align:a,crossAlign:l,padding:d,mirror:c}=n,h=lx(i.grid),u=h+d,p=c?-d:u,m=-If(this.labelRotation),g=[];let f,v,b,y,x,w,_,k,C,S,A,$,E="middle";if("top"===o)w=this.bottom-p,_=this._getXAxisLabelAlignment();else if("bottom"===o)w=this.top+p,_=this._getXAxisLabelAlignment();else if("left"===o){const t=this._getYAxisLabelAlignment(h);_=t.textAlign,x=t.x}else if("right"===o){const t=this._getYAxisLabelAlignment(h);_=t.textAlign,x=t.x}else if("x"===e){if("center"===o)w=(t.top+t.bottom)/2+u;else if(Qg(o)){const t=Object.keys(o)[0],e=o[t];w=this.chart.scales[t].getPixelForValue(e)+u}_=this._getXAxisLabelAlignment()}else if("y"===e){if("center"===o)x=(t.left+t.right)/2-u;else if(Qg(o)){const t=Object.keys(o)[0],e=o[t];x=this.chart.scales[t].getPixelForValue(e)}_=this._getYAxisLabelAlignment(h).textAlign}"y"===e&&("start"===a?E="top":"end"===a&&(E="bottom"));const T=this._getLabelSizes();for(f=0,v=r.length;f<v;++f){b=r[f],y=b.label;const t=n.setContext(this.getContext(f));k=this.getPixelForTick(f)+n.labelOffset,C=this._resolveTickFontOptions(f),S=C.lineHeight,A=Xg(y)?y.length:1;const e=A/2,i=t.color,a=t.textStrokeColor,d=t.textStrokeWidth;let h,u=_;if(s?(x=k,"inner"===_&&(u=f===v-1?this.options.reverse?"left":"right":0===f?this.options.reverse?"right":"left":"center"),$="top"===o?"near"===l||0!==m?-A*S+S/2:"center"===l?-T.highest.height/2-e*S+S:-T.highest.height+S/2:"near"===l||0!==m?S/2:"center"===l?T.highest.height/2-e*S:T.highest.height-A*S,c&&($*=-1),0===m||t.showLabelBackdrop||(x+=S/2*Math.sin(m))):(w=k,$=(1-A)*S/2),t.showLabelBackdrop){const e=Uv(t.backdropPadding),i=T.heights[f],o=T.widths[f];let n=$-e.top,s=0-e.left;switch(E){case"middle":n-=i/2;break;case"bottom":n-=i}switch(_){case"center":s-=o/2;break;case"right":s-=o;break;case"inner":f===v-1?s-=o:f>0&&(s-=o/2)}h={left:s,top:n,width:o+e.width,height:i+e.height,color:t.backdropColor}}g.push({label:y,font:C,textOffset:$,options:{rotation:m,color:i,strokeColor:a,strokeWidth:d,textAlign:u,textBaseline:E,translation:[x,w],backdrop:h}})}return g}_getXAxisLabelAlignment(){const{position:t,ticks:e}=this.options;if(-If(this.labelRotation))return"top"===t?"left":"right";let i="center";return"start"===e.align?i="left":"end"===e.align?i="right":"inner"===e.align&&(i="inner"),i}_getYAxisLabelAlignment(t){const{position:e,ticks:{crossAlign:i,mirror:o,padding:n}}=this.options,s=t+n,r=this._getLabelSizes().widest.width;let a,l;return"left"===e?o?(l=this.right+n,"near"===i?a="left":"center"===i?(a="center",l+=r/2):(a="right",l+=r)):(l=this.right-s,"near"===i?a="right":"center"===i?(a="center",l-=r/2):(a="left",l=this.left)):"right"===e?o?(l=this.left+n,"near"===i?a="right":"center"===i?(a="center",l-=r/2):(a="left",l-=r)):(l=this.left+s,"near"===i?a="left":"center"===i?(a="center",l+=r/2):(a="right",l=this.right)):a="right",{textAlign:a,x:l}}_computeLabelArea(){if(this.options.ticks.mirror)return;const t=this.chart,e=this.options.position;return"left"===e||"right"===e?{top:0,left:this.left,bottom:t.height,right:this.right}:"top"===e||"bottom"===e?{top:this.top,left:0,bottom:this.bottom,right:t.width}:void 0}drawBackground(){const{ctx:t,options:{backgroundColor:e},left:i,top:o,width:n,height:s}=this;e&&(t.save(),t.fillStyle=e,t.fillRect(i,o,n,s),t.restore())}getLineWidthForValue(t){const e=this.options.grid;if(!this._isVisible()||!e.display)return 0;const i=this.ticks.findIndex(e=>e.value===t);if(i>=0){return e.setContext(this.getContext(i)).lineWidth}return 0}drawGrid(t){const e=this.options.grid,i=this.ctx,o=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t));let n,s;const r=(t,e,o)=>{o.width&&o.color&&(i.save(),i.lineWidth=o.width,i.strokeStyle=o.color,i.setLineDash(o.borderDash||[]),i.lineDashOffset=o.borderDashOffset,i.beginPath(),i.moveTo(t.x,t.y),i.lineTo(e.x,e.y),i.stroke(),i.restore())};if(e.display)for(n=0,s=o.length;n<s;++n){const t=o[n];e.drawOnChartArea&&r({x:t.x1,y:t.y1},{x:t.x2,y:t.y2},t),e.drawTicks&&r({x:t.tx1,y:t.ty1},{x:t.tx2,y:t.ty2},{color:t.tickColor,width:t.tickWidth,borderDash:t.tickBorderDash,borderDashOffset:t.tickBorderDashOffset})}}drawBorder(){const{chart:t,ctx:e,options:{border:i,grid:o}}=this,n=i.setContext(this.getContext()),s=i.display?n.width:0;if(!s)return;const r=o.setContext(this.getContext(0)).lineWidth,a=this._borderValue;let l,d,c,h;this.isHorizontal()?(l=_v(t,this.left,s)-s/2,d=_v(t,this.right,r)+r/2,c=h=a):(c=_v(t,this.top,s)-s/2,h=_v(t,this.bottom,r)+r/2,l=d=a),e.save(),e.lineWidth=n.width,e.strokeStyle=n.color,e.beginPath(),e.moveTo(l,c),e.lineTo(d,h),e.stroke(),e.restore()}drawLabels(t){if(!this.options.ticks.display)return;const e=this.ctx,i=this._computeLabelArea();i&&$v(e,i);const o=this.getLabelItems(t);for(const t of o){const i=t.options,o=t.font;Iv(e,t.label,0,t.textOffset,o,i)}i&&Ev(e)}drawTitle(){const{ctx:t,options:{position:e,title:i,reverse:o}}=this;if(!i.display)return;const n=jv(i.font),s=Uv(i.padding),r=i.align;let a=n.lineHeight/2;"bottom"===e||"center"===e||Qg(e)?(a+=s.bottom,Xg(i.text)&&(a+=n.lineHeight*(i.text.length-1))):a+=s.top;const{titleX:l,titleY:d,maxWidth:c,rotation:h}=function(t,e,i,o){const{top:n,left:s,bottom:r,right:a,chart:l}=t,{chartArea:d,scales:c}=l;let h,u,p,m=0;const g=r-n,f=a-s;if(t.isHorizontal()){if(u=Qf(o,s,a),Qg(i)){const t=Object.keys(i)[0],o=i[t];p=c[t].getPixelForValue(o)+g-e}else p="center"===i?(d.bottom+d.top)/2+g-e:nx(t,i,e);h=a-s}else{if(Qg(i)){const t=Object.keys(i)[0],o=i[t];u=c[t].getPixelForValue(o)-f+e}else u="center"===i?(d.left+d.right)/2-f+e:nx(t,i,e);p=Qf(o,r,n),m="left"===i?-Cf:Cf}return{titleX:u,titleY:p,maxWidth:h,rotation:m}}(this,a,e,r);Iv(t,i.text,0,0,n,{color:i.color,maxWidth:c,rotation:h,textAlign:cx(r,e,o),textBaseline:"middle",translation:[l,d]})}draw(t){this._isVisible()&&(this.drawBackground(),this.drawGrid(t),this.drawBorder(),this.drawTitle(),this.drawLabels(t))}_layers(){const t=this.options,e=t.ticks&&t.ticks.z||0,i=ef(t.grid&&t.grid.z,-1),o=ef(t.border&&t.border.z,0);return this._isVisible()&&this.draw===hx.prototype.draw?[{z:i,draw:t=>{this.drawBackground(),this.drawGrid(t),this.drawTitle()}},{z:o,draw:()=>{this.drawBorder()}},{z:e,draw:t=>{this.drawLabels(t)}}]:[{z:e,draw:t=>{this.draw(t)}}]}getMatchingVisibleMetas(t){const e=this.chart.getSortedVisibleDatasetMetas(),i=this.axis+"AxisID",o=[];let n,s;for(n=0,s=e.length;n<s;++n){const s=e[n];s[i]!==this.id||t&&s.type!==t||o.push(s)}return o}_resolveTickFontOptions(t){return jv(this.options.ticks.setContext(this.getContext(t)).font)}_maxDigits(){const t=this._resolveTickFontOptions(0).lineHeight;return(this.isHorizontal()?this.width:this.height)/t}}class ux{constructor(t,e,i){this.type=t,this.scope=e,this.override=i,this.items=Object.create(null)}isForType(t){return Object.prototype.isPrototypeOf.call(this.type.prototype,t.prototype)}register(t){const e=Object.getPrototypeOf(t);let i;(function(t){return"id"in t&&"defaults"in t})(e)&&(i=this.register(e));const o=this.items,n=t.id,s=this.scope+"."+n;if(!n)throw new Error("class does not have id: "+t);return n in o||(o[n]=t,function(t,e,i){const o=cf(Object.create(null),[i?yv.get(i):{},yv.get(e),t.defaults]);yv.set(e,o),t.defaultRoutes&&function(t,e){Object.keys(e).forEach(i=>{const o=i.split("."),n=o.pop(),s=[t].concat(o).join("."),r=e[i].split("."),a=r.pop(),l=r.join(".");yv.route(s,n,l,a)})}(e,t.defaultRoutes);t.descriptors&&yv.describe(e,t.descriptors)}(t,s,i),this.override&&yv.override(t.id,t.overrides)),s}get(t){return this.items[t]}unregister(t){const e=this.items,i=t.id,o=this.scope;i in e&&delete e[i],o&&i in yv[o]&&(delete yv[o][i],this.override&&delete mv[i])}}class px{constructor(){this.controllers=new ux(oy,"datasets",!0),this.elements=new ux(ex,"elements"),this.plugins=new ux(Object,"plugins"),this.scales=new ux(hx,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each("register",t)}remove(...t){this._each("unregister",t)}addControllers(...t){this._each("register",t,this.controllers)}addElements(...t){this._each("register",t,this.elements)}addPlugins(...t){this._each("register",t,this.plugins)}addScales(...t){this._each("register",t,this.scales)}getController(t){return this._get(t,this.controllers,"controller")}getElement(t){return this._get(t,this.elements,"element")}getPlugin(t){return this._get(t,this.plugins,"plugin")}getScale(t){return this._get(t,this.scales,"scale")}removeControllers(...t){this._each("unregister",t,this.controllers)}removeElements(...t){this._each("unregister",t,this.elements)}removePlugins(...t){this._each("unregister",t,this.plugins)}removeScales(...t){this._each("unregister",t,this.scales)}_each(t,e,i){[...e].forEach(e=>{const o=i||this._getRegistryForType(e);i||o.isForType(e)||o===this.plugins&&e.id?this._exec(t,o,e):sf(e,e=>{const o=i||this._getRegistryForType(e);this._exec(t,o,e)})})}_exec(t,e,i){const o=gf(t);nf(i["before"+o],[],i),e[t](i),nf(i["after"+o],[],i)}_getRegistryForType(t){for(let e=0;e<this._typedRegistries.length;e++){const i=this._typedRegistries[e];if(i.isForType(t))return i}return this.plugins}_get(t,e,i){const o=e.get(t);if(void 0===o)throw new Error('"'+t+'" is not a registered '+i+".");return o}}var mx=new px;class gx{constructor(){this._init=void 0}notify(t,e,i,o){if("beforeInit"===e&&(this._init=this._createDescriptors(t,!0),this._notify(this._init,t,"install")),void 0===this._init)return;const n=o?this._descriptors(t).filter(o):this._descriptors(t),s=this._notify(n,t,e,i);return"afterDestroy"===e&&(this._notify(n,t,"stop"),this._notify(this._init,t,"uninstall"),this._init=void 0),s}_notify(t,e,i,o){o=o||{};for(const n of t){const t=n.plugin;if(!1===nf(t[i],[e,o,n.options],t)&&o.cancelable)return!1}return!0}invalidate(){Gg(this._cache)||(this._oldCache=this._cache,this._cache=void 0)}_descriptors(t){if(this._cache)return this._cache;const e=this._cache=this._createDescriptors(t);return this._notifyStateChanges(t),e}_createDescriptors(t,e){const i=t&&t.config,o=ef(i.options&&i.options.plugins,{}),n=function(t){const e={},i=[],o=Object.keys(mx.plugins.items);for(let t=0;t<o.length;t++)i.push(mx.getPlugin(o[t]));const n=t.plugins||[];for(let t=0;t<n.length;t++){const o=n[t];-1===i.indexOf(o)&&(i.push(o),e[o.id]=!0)}return{plugins:i,localIds:e}}(i);return!1!==o||e?function(t,{plugins:e,localIds:i},o,n){const s=[],r=t.getContext();for(const a of e){const e=a.id,l=fx(o[e],n);null!==l&&s.push({plugin:a,options:vx(t.config,{plugin:a,local:i[e]},l,r)})}return s}(t,n,o,e):[]}_notifyStateChanges(t){const e=this._oldCache||[],i=this._cache,o=(t,e)=>t.filter(t=>!e.some(e=>t.plugin.id===e.plugin.id));this._notify(o(e,i),t,"stop"),this._notify(o(i,e),t,"start")}}function fx(t,e){return e||!1!==t?!0===t?{}:t:null}function vx(t,{plugin:e,local:i},o,n){const s=t.pluginScopeKeys(e),r=t.getOptionScopes(o,s);return i&&e.defaults&&r.push(e.defaults),t.createResolver(r,n,[""],{scriptable:!1,indexable:!1,allKeys:!0})}function bx(t,e){const i=yv.datasets[t]||{};return((e.datasets||{})[t]||{}).indexAxis||e.indexAxis||i.indexAxis||"x"}function yx(t){if("x"===t||"y"===t||"r"===t)return t}function xx(t){return"top"===t||"bottom"===t?"x":"left"===t||"right"===t?"y":void 0}function wx(t,...e){if(yx(t))return t;for(const i of e){const e=i.axis||xx(i.position)||t.length>1&&yx(t[0].toLowerCase());if(e)return e}throw new Error(`Cannot determine type of '${t}' axis. Please provide 'axis' or 'position' option.`)}function _x(t,e,i){if(i[e+"AxisID"]===t)return{axis:e}}function kx(t,e){const i=mv[t.type]||{scales:{}},o=e.scales||{},n=bx(t.type,e),s=Object.create(null);return Object.keys(o).forEach(e=>{const r=o[e];if(!Qg(r))return console.error(`Invalid scale configuration for scale: ${e}`);if(r._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${e}`);const a=wx(e,r,function(t,e){if(e.data&&e.data.datasets){const i=e.data.datasets.filter(e=>e.xAxisID===t||e.yAxisID===t);if(i.length)return _x(t,"x",i[0])||_x(t,"y",i[0])}return{}}(e,t),yv.scales[r.type]),l=function(t,e){return t===e?"_index_":"_value_"}(a,n),d=i.scales||{};s[e]=hf(Object.create(null),[{axis:a},r,d[a],d[l]])}),t.data.datasets.forEach(i=>{const n=i.type||t.type,r=i.indexAxis||bx(n,e),a=(mv[n]||{}).scales||{};Object.keys(a).forEach(t=>{const e=function(t,e){let i=t;return"_index_"===t?i=e:"_value_"===t&&(i="x"===e?"y":"x"),i}(t,r),n=i[e+"AxisID"]||e;s[n]=s[n]||Object.create(null),hf(s[n],[{axis:e},o[n],a[t]])})}),Object.keys(s).forEach(t=>{const e=s[t];hf(e,[yv.scales[e.type],yv.scale])}),s}function Cx(t){const e=t.options||(t.options={});e.plugins=ef(e.plugins,{}),e.scales=kx(t,e)}function Sx(t){return(t=t||{}).datasets=t.datasets||[],t.labels=t.labels||[],t}const Ax=new Map,$x=new Set;function Ex(t,e){let i=Ax.get(t);return i||(i=e(),Ax.set(t,i),$x.add(i)),i}const Tx=(t,e,i)=>{const o=mf(e,i);void 0!==o&&t.add(o)};class Dx{constructor(t){this._config=function(t){return(t=t||{}).data=Sx(t.data),Cx(t),t}(t),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=Sx(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){const t=this._config;this.clearCache(),Cx(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return Ex(t,()=>[[`datasets.${t}`,""]])}datasetAnimationScopeKeys(t,e){return Ex(`${t}.transition.${e}`,()=>[[`datasets.${t}.transitions.${e}`,`transitions.${e}`],[`datasets.${t}`,""]])}datasetElementScopeKeys(t,e){return Ex(`${t}-${e}`,()=>[[`datasets.${t}.elements.${e}`,`datasets.${t}`,`elements.${e}`,""]])}pluginScopeKeys(t){const e=t.id;return Ex(`${this.type}-plugin-${e}`,()=>[[`plugins.${e}`,...t.additionalOptionScopes||[]]])}_cachedScopes(t,e){const i=this._scopeCache;let o=i.get(t);return o&&!e||(o=new Map,i.set(t,o)),o}getOptionScopes(t,e,i){const{options:o,type:n}=this,s=this._cachedScopes(t,i),r=s.get(e);if(r)return r;const a=new Set;e.forEach(e=>{t&&(a.add(t),e.forEach(e=>Tx(a,t,e))),e.forEach(t=>Tx(a,o,t)),e.forEach(t=>Tx(a,mv[n]||{},t)),e.forEach(t=>Tx(a,yv,t)),e.forEach(t=>Tx(a,gv,t))});const l=Array.from(a);return 0===l.length&&l.push(Object.create(null)),$x.has(e)&&s.set(e,l),l}chartOptionScopes(){const{options:t,type:e}=this;return[t,mv[e]||{},yv.datasets[e]||{},{type:e},yv,gv]}resolveNamedOptions(t,e,i,o=[""]){const n={$shared:!0},{resolver:s,subPrefixes:r}=Mx(this._resolverCache,t,o);let a=s;if(function(t,e){const{isScriptable:i,isIndexable:o}=Yv(t);for(const n of e){const e=i(n),s=o(n),r=(s||e)&&t[n];if(e&&(vf(r)||zx(r))||s&&Xg(r))return!0}return!1}(s,e)){n.$shared=!1;a=Zv(s,i=vf(i)?i():i,this.createResolver(t,i,r))}for(const t of e)n[t]=a[t];return n}createResolver(t,e,i=[""],o){const{resolver:n}=Mx(this._resolverCache,t,i);return Qg(e)?Zv(n,e,void 0,o):n}}function Mx(t,e,i){let o=t.get(e);o||(o=new Map,t.set(e,o));const n=i.join();let s=o.get(n);if(!s){s={resolver:Vv(e,i),subPrefixes:i.filter(t=>!t.toLowerCase().includes("hover"))},o.set(n,s)}return s}const zx=t=>Qg(t)&&Object.getOwnPropertyNames(t).some(e=>vf(t[e]));const Ix=["top","bottom","left","right","chartArea"];function Ox(t,e){return"top"===t||"bottom"===t||-1===Ix.indexOf(t)&&"x"===e}function Lx(t,e){return function(i,o){return i[t]===o[t]?i[e]-o[e]:i[t]-o[t]}}function Px(t){const e=t.chart,i=e.options.animation;e.notifyPlugins("afterRender"),nf(i&&i.onComplete,[t],e)}function Rx(t){const e=t.chart,i=e.options.animation;nf(i&&i.onProgress,[t],e)}function Nx(t){return pb()&&"string"==typeof t?t=document.getElementById(t):t&&t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t}const Bx={},Fx=t=>{const e=Nx(t);return Object.values(Bx).filter(t=>t.canvas===e).pop()};function qx(t,e,i){const o=Object.keys(t);for(const n of o){const o=+n;if(o>=e){const s=t[n];delete t[n],(i>0||o>e)&&(t[o+i]=s)}}}class Ux{static defaults=yv;static instances=Bx;static overrides=mv;static registry=mx;static version="4.5.1";static getChart=Fx;static register(...t){mx.add(...t),jx()}static unregister(...t){mx.remove(...t),jx()}constructor(t,e){const i=this.config=new Dx(e),o=Nx(t),n=Fx(o);if(n)throw new Error("Canvas is already in use. Chart with ID '"+n.id+"' must be destroyed before the canvas with ID '"+n.canvas.id+"' can be reused.");const s=i.createResolver(i.chartOptionScopes(),this.getContext());this.platform=new(i.platform||function(t){return!pb()||"undefined"!=typeof OffscreenCanvas&&t instanceof OffscreenCanvas?By:tx}(o)),this.platform.updateConfig(i);const r=this.platform.acquireContext(o,s.aspectRatio),a=r&&r.canvas,l=a&&a.height,d=a&&a.width;this.id=Kg(),this.ctx=r,this.canvas=a,this.width=d,this.height=l,this._options=s,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new gx,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=function(t,e){let i;return function(...o){return e?(clearTimeout(i),i=setTimeout(t,e,o)):t.apply(this,o),e}}(t=>this.update(t),s.resizeDelay||0),this._dataChanges=[],Bx[this.id]=this,r&&a?(qb.listen(this,"complete",Px),qb.listen(this,"progress",Rx),this._initialize(),this.attached&&this.update()):console.error("Failed to create chart: can't acquire context from the given item")}get aspectRatio(){const{options:{aspectRatio:t,maintainAspectRatio:e},width:i,height:o,_aspectRatio:n}=this;return Gg(t)?e&&n?n:o?i/o:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}get registry(){return mx}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():_b(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return kv(this.canvas,this.ctx),this}stop(){return qb.stop(this),this}resize(t,e){qb.running(this)?this._resizeBeforeDraw={width:t,height:e}:this._resize(t,e)}_resize(t,e){const i=this.options,o=this.canvas,n=i.maintainAspectRatio&&this.aspectRatio,s=this.platform.getMaximumSize(o,t,e,n),r=i.devicePixelRatio||this.platform.getDevicePixelRatio(),a=this.width?"resize":"attach";this.width=s.width,this.height=s.height,this._aspectRatio=this.aspectRatio,_b(this,r,!0)&&(this.notifyPlugins("resize",{size:s}),nf(i.onResize,[this,s],this),this.attached&&this._doResize(a)&&this.render())}ensureScalesHaveIDs(){sf(this.options.scales||{},(t,e)=>{t.id=e})}buildOrUpdateScales(){const t=this.options,e=t.scales,i=this.scales,o=Object.keys(i).reduce((t,e)=>(t[e]=!1,t),{});let n=[];e&&(n=n.concat(Object.keys(e).map(t=>{const i=e[t],o=wx(t,i),n="r"===o,s="x"===o;return{options:i,dposition:n?"chartArea":s?"bottom":"left",dtype:n?"radialLinear":s?"category":"linear"}}))),sf(n,e=>{const n=e.options,s=n.id,r=wx(s,n),a=ef(n.type,e.dtype);void 0!==n.position&&Ox(n.position,r)===Ox(e.dposition)||(n.position=e.dposition),o[s]=!0;let l=null;if(s in i&&i[s].type===a)l=i[s];else{l=new(mx.getScale(a))({id:s,type:a,ctx:this.ctx,chart:this}),i[l.id]=l}l.init(n,t)}),sf(o,(t,e)=>{t||delete i[e]}),sf(i,t=>{Ry.configure(this,t,t.options),Ry.addBox(this,t)})}_updateMetasets(){const t=this._metasets,e=this.data.datasets.length,i=t.length;if(t.sort((t,e)=>t.index-e.index),i>e){for(let t=e;t<i;++t)this._destroyDatasetMeta(t);t.splice(e,i-e)}this._sortedMetasets=t.slice(0).sort(Lx("order","index"))}_removeUnreferencedMetasets(){const{_metasets:t,data:{datasets:e}}=this;t.length>e.length&&delete this._stacks,t.forEach((t,i)=>{0===e.filter(e=>e===t._dataset).length&&this._destroyDatasetMeta(i)})}buildOrUpdateControllers(){const t=[],e=this.data.datasets;let i,o;for(this._removeUnreferencedMetasets(),i=0,o=e.length;i<o;i++){const o=e[i];let n=this.getDatasetMeta(i);const s=o.type||this.config.type;if(n.type&&n.type!==s&&(this._destroyDatasetMeta(i),n=this.getDatasetMeta(i)),n.type=s,n.indexAxis=o.indexAxis||bx(s,this.options),n.order=o.order||0,n.index=i,n.label=""+o.label,n.visible=this.isDatasetVisible(i),n.controller)n.controller.updateIndex(i),n.controller.linkScales();else{const e=mx.getController(s),{datasetElementType:o,dataElementType:r}=yv.datasets[s];Object.assign(e,{dataElementType:mx.getElement(r),datasetElementType:o&&mx.getElement(o)}),n.controller=new e(this,i),t.push(n.controller)}}return this._updateMetasets(),t}_resetElements(){sf(this.data.datasets,(t,e)=>{this.getDatasetMeta(e).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){const e=this.config;e.update();const i=this._options=e.createResolver(e.chartOptionScopes(),this.getContext()),o=this._animationsDisabled=!i.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),!1===this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0}))return;const n=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let s=0;for(let t=0,e=this.data.datasets.length;t<e;t++){const{controller:e}=this.getDatasetMeta(t),i=!o&&-1===n.indexOf(e);e.buildOrUpdateElements(i),s=Math.max(+e.getMaxOverflow(),s)}s=this._minPadding=i.layout.autoPadding?s:0,this._updateLayout(s),o||sf(n,t=>{t.reset()}),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort(Lx("z","_idx"));const{_active:r,_lastEvent:a}=this;a?this._eventHandler(a,!0):r.length&&this._updateHoverStyles(r,r,!0),this.render()}_updateScales(){sf(this.scales,t=>{Ry.removeBox(this,t)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const t=this.options,e=new Set(Object.keys(this._listeners)),i=new Set(t.events);bf(e,i)&&!!this._responsiveListeners===t.responsive||(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:t}=this,e=this._getUniformDataChanges()||[];for(const{method:i,start:o,count:n}of e){qx(t,o,"_removeElements"===i?-n:n)}}_getUniformDataChanges(){const t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];const e=this.data.datasets.length,i=e=>new Set(t.filter(t=>t[0]===e).map((t,e)=>e+","+t.splice(1).join(","))),o=i(0);for(let t=1;t<e;t++)if(!bf(o,i(t)))return;return Array.from(o).map(t=>t.split(",")).map(t=>({method:t[1],start:+t[2],count:+t[3]}))}_updateLayout(t){if(!1===this.notifyPlugins("beforeLayout",{cancelable:!0}))return;Ry.update(this,this.width,this.height,t);const e=this.chartArea,i=e.width<=0||e.height<=0;this._layers=[],sf(this.boxes,t=>{i&&"chartArea"===t.position||(t.configure&&t.configure(),this._layers.push(...t._layers()))},this),this._layers.forEach((t,e)=>{t._idx=e}),this.notifyPlugins("afterLayout")}_updateDatasets(t){if(!1!==this.notifyPlugins("beforeDatasetsUpdate",{mode:t,cancelable:!0})){for(let t=0,e=this.data.datasets.length;t<e;++t)this.getDatasetMeta(t).controller.configure();for(let e=0,i=this.data.datasets.length;e<i;++e)this._updateDataset(e,vf(t)?t({datasetIndex:e}):t);this.notifyPlugins("afterDatasetsUpdate",{mode:t})}}_updateDataset(t,e){const i=this.getDatasetMeta(t),o={meta:i,index:t,mode:e,cancelable:!0};!1!==this.notifyPlugins("beforeDatasetUpdate",o)&&(i.controller._update(e),o.cancelable=!1,this.notifyPlugins("afterDatasetUpdate",o))}render(){!1!==this.notifyPlugins("beforeRender",{cancelable:!0})&&(qb.has(this)?this.attached&&!qb.running(this)&&qb.start(this):(this.draw(),Px({chart:this})))}draw(){let t;if(this._resizeBeforeDraw){const{width:t,height:e}=this._resizeBeforeDraw;this._resizeBeforeDraw=null,this._resize(t,e)}if(this.clear(),this.width<=0||this.height<=0)return;if(!1===this.notifyPlugins("beforeDraw",{cancelable:!0}))return;const e=this._layers;for(t=0;t<e.length&&e[t].z<=0;++t)e[t].draw(this.chartArea);for(this._drawDatasets();t<e.length;++t)e[t].draw(this.chartArea);this.notifyPlugins("afterDraw")}_getSortedDatasetMetas(t){const e=this._sortedMetasets,i=[];let o,n;for(o=0,n=e.length;o<n;++o){const n=e[o];t&&!n.visible||i.push(n)}return i}getSortedVisibleDatasetMetas(){return this._getSortedDatasetMetas(!0)}_drawDatasets(){if(!1===this.notifyPlugins("beforeDatasetsDraw",{cancelable:!0}))return;const t=this.getSortedVisibleDatasetMetas();for(let e=t.length-1;e>=0;--e)this._drawDataset(t[e]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){const e=this.ctx,i={meta:t,index:t.index,cancelable:!0},o=Bb(this,t);!1!==this.notifyPlugins("beforeDatasetDraw",i)&&(o&&$v(e,o),t.controller.draw(),o&&Ev(e),i.cancelable=!1,this.notifyPlugins("afterDatasetDraw",i))}isPointInArea(t){return Av(t,this.chartArea,this._minPadding)}getElementsAtEventForMode(t,e,i,o){const n=Cy.modes[e];return"function"==typeof n?n(this,t,i,o):[]}getDatasetMeta(t){const e=this.data.datasets[t],i=this._metasets;let o=i.filter(t=>t&&t._dataset===e).pop();return o||(o={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e&&e.order||0,index:t,_dataset:e,_parsed:[],_sorted:!1},i.push(o)),o}getContext(){return this.$context||(this.$context=Wv(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){const e=this.data.datasets[t];if(!e)return!1;const i=this.getDatasetMeta(t);return"boolean"==typeof i.hidden?!i.hidden:!e.hidden}setDatasetVisibility(t,e){this.getDatasetMeta(t).hidden=!e}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,e,i){const o=i?"show":"hide",n=this.getDatasetMeta(t),s=n.controller._resolveAnimations(void 0,o);ff(e)?(n.data[e].hidden=!i,this.update()):(this.setDatasetVisibility(t,i),s.update(n,{visible:i}),this.update(e=>e.datasetIndex===t?o:void 0))}hide(t,e){this._updateVisibility(t,e,!1)}show(t,e){this._updateVisibility(t,e,!0)}_destroyDatasetMeta(t){const e=this._metasets[t];e&&e.controller&&e.controller._destroy(),delete this._metasets[t]}_stop(){let t,e;for(this.stop(),qb.remove(this),t=0,e=this.data.datasets.length;t<e;++t)this._destroyDatasetMeta(t)}destroy(){this.notifyPlugins("beforeDestroy");const{canvas:t,ctx:e}=this;this._stop(),this.config.clearCache(),t&&(this.unbindEvents(),kv(t,e),this.platform.releaseContext(e),this.canvas=null,this.ctx=null),delete Bx[this.id],this.notifyPlugins("afterDestroy")}toBase64Image(...t){return this.canvas.toDataURL(...t)}bindEvents(){this.bindUserEvents(),this.options.responsive?this.bindResponsiveEvents():this.attached=!0}bindUserEvents(){const t=this._listeners,e=this.platform,i=(i,o)=>{e.addEventListener(this,i,o),t[i]=o},o=(t,e,i)=>{t.offsetX=e,t.offsetY=i,this._eventHandler(t)};sf(this.options.events,t=>i(t,o))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const t=this._responsiveListeners,e=this.platform,i=(i,o)=>{e.addEventListener(this,i,o),t[i]=o},o=(i,o)=>{t[i]&&(e.removeEventListener(this,i,o),delete t[i])},n=(t,e)=>{this.canvas&&this.resize(t,e)};let s;const r=()=>{o("attach",r),this.attached=!0,this.resize(),i("resize",n),i("detach",s)};s=()=>{this.attached=!1,o("resize",n),this._stop(),this._resize(0,0),i("attach",r)},e.isAttached(this.canvas)?r():s()}unbindEvents(){sf(this._listeners,(t,e)=>{this.platform.removeEventListener(this,e,t)}),this._listeners={},sf(this._responsiveListeners,(t,e)=>{this.platform.removeEventListener(this,e,t)}),this._responsiveListeners=void 0}updateHoverStyle(t,e,i){const o=i?"set":"remove";let n,s,r,a;for("dataset"===e&&(n=this.getDatasetMeta(t[0].datasetIndex),n.controller["_"+o+"DatasetHoverStyle"]()),r=0,a=t.length;r<a;++r){s=t[r];const e=s&&this.getDatasetMeta(s.datasetIndex).controller;e&&e[o+"HoverStyle"](s.element,s.datasetIndex,s.index)}}getActiveElements(){return this._active||[]}setActiveElements(t){const e=this._active||[],i=t.map(({datasetIndex:t,index:e})=>{const i=this.getDatasetMeta(t);if(!i)throw new Error("No dataset found at index "+t);return{datasetIndex:t,element:i.data[e],index:e}});!rf(i,e)&&(this._active=i,this._lastEvent=null,this._updateHoverStyles(i,e))}notifyPlugins(t,e,i){return this._plugins.notify(this,t,e,i)}isPluginEnabled(t){return 1===this._plugins._cache.filter(e=>e.plugin.id===t).length}_updateHoverStyles(t,e,i){const o=this.options.hover,n=(t,e)=>t.filter(t=>!e.some(e=>t.datasetIndex===e.datasetIndex&&t.index===e.index)),s=n(e,t),r=i?t:n(t,e);s.length&&this.updateHoverStyle(s,o.mode,!1),r.length&&o.mode&&this.updateHoverStyle(r,o.mode,!0)}_eventHandler(t,e){const i={event:t,replay:e,cancelable:!0,inChartArea:this.isPointInArea(t)},o=e=>(e.options.events||this.options.events).includes(t.native.type);if(!1===this.notifyPlugins("beforeEvent",i,o))return;const n=this._handleEvent(t,e,i.inChartArea);return i.cancelable=!1,this.notifyPlugins("afterEvent",i,o),(n||i.changed)&&this.render(),this}_handleEvent(t,e,i){const{_active:o=[],options:n}=this,s=e,r=this._getActiveElements(t,o,i,s),a=function(t){return"mouseup"===t.type||"click"===t.type||"contextmenu"===t.type}(t),l=function(t,e,i,o){return i&&"mouseout"!==t.type?o?e:t:null}(t,this._lastEvent,i,a);i&&(this._lastEvent=null,nf(n.onHover,[t,r,this],this),a&&nf(n.onClick,[t,r,this],this));const d=!rf(r,o);return(d||e)&&(this._active=r,this._updateHoverStyles(r,o,e)),this._lastEvent=l,d}_getActiveElements(t,e,i,o){if("mouseout"===t.type)return[];if(!i)return e;const n=this.options.hover;return this.getElementsAtEventForMode(t,n.mode,n,o)}}function jx(){return sf(Ux.instances,t=>t._plugins.invalidate())}function Hx(t,e,i,o){const n=Bv(t.options.borderRadius,["outerStart","outerEnd","innerStart","innerEnd"]);const s=(i-e)/2,r=Math.min(s,o*e/2),a=t=>{const e=(i-Math.min(s,t))*o/2;return qf(t,0,Math.min(s,e))};return{outerStart:a(n.outerStart),outerEnd:a(n.outerEnd),innerStart:qf(n.innerStart,0,r),innerEnd:qf(n.innerEnd,0,r)}}function Wx(t,e,i,o){return{x:i+t*Math.cos(e),y:o+t*Math.sin(e)}}function Vx(t,e,i,o,n,s){const{x:r,y:a,startAngle:l,pixelMargin:d,innerRadius:c}=e,h=Math.max(e.outerRadius+o+i-d,0),u=c>0?c+o+i+d:0;let p=0;const m=n-l;if(o){const t=((c>0?c-o:0)+(h>0?h-o:0))/2;p=(m-(0!==t?m*t/(t+o):m))/2}const g=(m-Math.max(.001,m*h-i/yf)/h)/2,f=l+g+p,v=n-g-p,{outerStart:b,outerEnd:y,innerStart:x,innerEnd:w}=Hx(e,u,h,v-f),_=h-b,k=h-y,C=f+b/_,S=v-y/k,A=u+x,$=u+w,E=f+x/A,T=v-w/$;if(t.beginPath(),s){const e=(C+S)/2;if(t.arc(r,a,h,C,e),t.arc(r,a,h,e,S),y>0){const e=Wx(k,S,r,a);t.arc(e.x,e.y,y,S,v+Cf)}const i=Wx($,v,r,a);if(t.lineTo(i.x,i.y),w>0){const e=Wx($,T,r,a);t.arc(e.x,e.y,w,v+Cf,T+Math.PI)}const o=(v-w/u+(f+x/u))/2;if(t.arc(r,a,u,v-w/u,o,!0),t.arc(r,a,u,o,f+x/u,!0),x>0){const e=Wx(A,E,r,a);t.arc(e.x,e.y,x,E+Math.PI,f-Cf)}const n=Wx(_,f,r,a);if(t.lineTo(n.x,n.y),b>0){const e=Wx(_,C,r,a);t.arc(e.x,e.y,b,f-Cf,C)}}else{t.moveTo(r,a);const e=Math.cos(C)*h+r,i=Math.sin(C)*h+a;t.lineTo(e,i);const o=Math.cos(S)*h+r,n=Math.sin(S)*h+a;t.lineTo(o,n)}t.closePath()}function Zx(t,e,i,o,n){const{fullCircles:s,startAngle:r,circumference:a,options:l}=e,{borderWidth:d,borderJoinStyle:c,borderDash:h,borderDashOffset:u,borderRadius:p}=l,m="inner"===l.borderAlign;if(!d)return;t.setLineDash(h||[]),t.lineDashOffset=u,m?(t.lineWidth=2*d,t.lineJoin=c||"round"):(t.lineWidth=d,t.lineJoin=c||"bevel");let g=e.endAngle;if(s){Vx(t,e,i,o,g,n);for(let e=0;e<s;++e)t.stroke();isNaN(a)||(g=r+(a%xf||xf))}m&&function(t,e,i){const{startAngle:o,pixelMargin:n,x:s,y:r,outerRadius:a,innerRadius:l}=e;let d=n/a;t.beginPath(),t.arc(s,r,a,o-d,i+d),l>n?(d=n/l,t.arc(s,r,l,i+d,o-d,!0)):t.arc(s,r,n,i+Cf,o-Cf),t.closePath(),t.clip()}(t,e,g),l.selfJoin&&g-r>=yf&&0===p&&"miter"!==c&&function(t,e,i){const{startAngle:o,x:n,y:s,outerRadius:r,innerRadius:a,options:l}=e,{borderWidth:d,borderJoinStyle:c}=l,h=Math.min(d/r,Bf(o-i));if(t.beginPath(),t.arc(n,s,r-d/2,o+h/2,i-h/2),a>0){const e=Math.min(d/a,Bf(o-i));t.arc(n,s,a+d/2,i-e/2,o+e/2,!0)}else{const e=Math.min(d/2,r*Bf(o-i));if("round"===c)t.arc(n,s,e,i-yf/2,o+yf/2,!0);else if("bevel"===c){const r=2*e*e,a=-r*Math.cos(i+yf/2)+n,l=-r*Math.sin(i+yf/2)+s,d=r*Math.cos(o+yf/2)+n,c=r*Math.sin(o+yf/2)+s;t.lineTo(a,l),t.lineTo(d,c)}}t.closePath(),t.moveTo(0,0),t.rect(0,0,t.canvas.width,t.canvas.height),t.clip("evenodd")}(t,e,g),s||(Vx(t,e,i,o,g,n),t.stroke())}class Yx extends ex{static id="arc";static defaults={borderAlign:"center",borderColor:"#fff",borderDash:[],borderDashOffset:0,borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0,circular:!0,selfJoin:!1};static defaultRoutes={backgroundColor:"backgroundColor"};static descriptors={_scriptable:!0,_indexable:t=>"borderDash"!==t};circumference;endAngle;fullCircles;innerRadius;outerRadius;pixelMargin;startAngle;constructor(t){super(),this.options=void 0,this.circumference=void 0,this.startAngle=void 0,this.endAngle=void 0,this.innerRadius=void 0,this.outerRadius=void 0,this.pixelMargin=0,this.fullCircles=0,t&&Object.assign(this,t)}inRange(t,e,i){const o=this.getProps(["x","y"],i),{angle:n,distance:s}=Pf(o,{x:t,y:e}),{startAngle:r,endAngle:a,innerRadius:l,outerRadius:d,circumference:c}=this.getProps(["startAngle","endAngle","innerRadius","outerRadius","circumference"],i),h=(this.options.spacing+this.options.borderWidth)/2,u=ef(c,a-r),p=Ff(n,r,a)&&r!==a,m=u>=xf||p,g=Uf(s,l+h,d+h);return m&&g}getCenterPoint(t){const{x:e,y:i,startAngle:o,endAngle:n,innerRadius:s,outerRadius:r}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius"],t),{offset:a,spacing:l}=this.options,d=(o+n)/2,c=(s+r+l+a)/2;return{x:e+Math.cos(d)*c,y:i+Math.sin(d)*c}}tooltipPosition(t){return this.getCenterPoint(t)}draw(t){const{options:e,circumference:i}=this,o=(e.offset||0)/4,n=(e.spacing||0)/2,s=e.circular;if(this.pixelMargin="inner"===e.borderAlign?.33:0,this.fullCircles=i>xf?Math.floor(i/xf):0,0===i||this.innerRadius<0||this.outerRadius<0)return;t.save();const r=(this.startAngle+this.endAngle)/2;t.translate(Math.cos(r)*o,Math.sin(r)*o);const a=o*(1-Math.sin(Math.min(yf,i||0)));t.fillStyle=e.backgroundColor,t.strokeStyle=e.borderColor,function(t,e,i,o,n){const{fullCircles:s,startAngle:r,circumference:a}=e;let l=e.endAngle;if(s){Vx(t,e,i,o,l,n);for(let e=0;e<s;++e)t.fill();isNaN(a)||(l=r+(a%xf||xf))}Vx(t,e,i,o,l,n),t.fill()}(t,this,a,n,s),Zx(t,this,a,n,s),t.restore()}}function Kx(t,e,i=e){t.lineCap=ef(i.borderCapStyle,e.borderCapStyle),t.setLineDash(ef(i.borderDash,e.borderDash)),t.lineDashOffset=ef(i.borderDashOffset,e.borderDashOffset),t.lineJoin=ef(i.borderJoinStyle,e.borderJoinStyle),t.lineWidth=ef(i.borderWidth,e.borderWidth),t.strokeStyle=ef(i.borderColor,e.borderColor)}function Gx(t,e,i){t.lineTo(i.x,i.y)}function Xx(t,e,i={}){const o=t.length,{start:n=0,end:s=o-1}=i,{start:r,end:a}=e,l=Math.max(n,r),d=Math.min(s,a),c=n<r&&s<r||n>a&&s>a;return{count:o,start:l,loop:e.loop,ilen:d<l&&!c?o+d-l:d-l}}function Qx(t,e,i,o){const{points:n,options:s}=e,{count:r,start:a,loop:l,ilen:d}=Xx(n,i,o),c=function(t){return t.stepped?Tv:t.tension||"monotone"===t.cubicInterpolationMode?Dv:Gx}(s);let h,u,p,{move:m=!0,reverse:g}=o||{};for(h=0;h<=d;++h)u=n[(a+(g?d-h:h))%r],u.skip||(m?(t.moveTo(u.x,u.y),m=!1):c(t,p,u,g,s.stepped),p=u);return l&&(u=n[(a+(g?d:0))%r],c(t,p,u,g,s.stepped)),!!l}function Jx(t,e,i,o){const n=e.points,{count:s,start:r,ilen:a}=Xx(n,i,o),{move:l=!0,reverse:d}=o||{};let c,h,u,p,m,g,f=0,v=0;const b=t=>(r+(d?a-t:t))%s,y=()=>{p!==m&&(t.lineTo(f,m),t.lineTo(f,p),t.lineTo(f,g))};for(l&&(h=n[b(0)],t.moveTo(h.x,h.y)),c=0;c<=a;++c){if(h=n[b(c)],h.skip)continue;const e=h.x,i=h.y,o=0|e;o===u?(i<p?p=i:i>m&&(m=i),f=(v*f+e)/++v):(y(),t.lineTo(e,i),u=o,v=0,p=m=i),g=i}y()}function tw(t){const e=t.options,i=e.borderDash&&e.borderDash.length;return!(t._decimated||t._loop||e.tension||"monotone"===e.cubicInterpolationMode||e.stepped||i)?Jx:Qx}const ew="function"==typeof Path2D;function iw(t,e,i,o){ew&&!e.options.segment?function(t,e,i,o){let n=e._path;n||(n=e._path=new Path2D,e.path(n,i,o)&&n.closePath()),Kx(t,e.options),t.stroke(n)}(t,e,i,o):function(t,e,i,o){const{segments:n,options:s}=e,r=tw(e);for(const a of n)Kx(t,s,a.style),t.beginPath(),r(t,e,a,{start:i,end:i+o-1})&&t.closePath(),t.stroke()}(t,e,i,o)}class ow extends ex{static id="line";static defaults={borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:"default",fill:!1,spanGaps:!1,stepped:!1,tension:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};static descriptors={_scriptable:!0,_indexable:t=>"borderDash"!==t&&"fill"!==t};constructor(t){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,t&&Object.assign(this,t)}updateControlPoints(t,e){const i=this.options;if((i.tension||"monotone"===i.cubicInterpolationMode)&&!i.stepped&&!this._pointsUpdated){const o=i.spanGaps?this._loop:this._fullLoop;ub(this._points,i,t,o,e),this._pointsUpdated=!0}}set points(t){this._points=t,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=function(t,e){const i=t.points,o=t.options.spanGaps,n=i.length;if(!n)return[];const s=!!t._loop,{start:r,end:a}=function(t,e,i,o){let n=0,s=e-1;if(i&&!o)for(;n<e&&!t[n].skip;)n++;for(;n<e&&t[n].skip;)n++;for(n%=e,i&&(s+=n);s>n&&t[s%e].skip;)s--;return s%=e,{start:n,end:s}}(i,n,s,o);return Lb(t,!0===o?[{start:r,end:a,loop:s}]:function(t,e,i,o){const n=t.length,s=[];let r,a=e,l=t[e];for(r=e+1;r<=i;++r){const i=t[r%n];i.skip||i.stop?l.skip||(o=!1,s.push({start:e%n,end:(r-1)%n,loop:o}),e=a=i.stop?r:null):(a=r,l.skip&&(e=r)),l=i}return null!==a&&s.push({start:e%n,end:a%n,loop:o}),s}(i,r,a<r?a+n:a,!!t._fullLoop&&0===r&&a===n-1),i,e)}(this,this.options.segment))}first(){const t=this.segments,e=this.points;return t.length&&e[t[0].start]}last(){const t=this.segments,e=this.points,i=t.length;return i&&e[t[i-1].end]}interpolate(t,e){const i=this.options,o=t[e],n=this.points,s=Ob(this,{property:e,start:o,end:o});if(!s.length)return;const r=[],a=function(t){return t.stepped?Ab:t.tension||"monotone"===t.cubicInterpolationMode?$b:Sb}(i);let l,d;for(l=0,d=s.length;l<d;++l){const{start:d,end:c}=s[l],h=n[d],u=n[c];if(h===u){r.push(h);continue}const p=a(h,u,Math.abs((o-h[e])/(u[e]-h[e])),i.stepped);p[e]=t[e],r.push(p)}return 1===r.length?r[0]:r}pathSegment(t,e,i){return tw(this)(t,this,e,i)}path(t,e,i){const o=this.segments,n=tw(this);let s=this._loop;e=e||0,i=i||this.points.length-e;for(const r of o)s&=n(t,this,r,{start:e,end:e+i-1});return!!s}draw(t,e,i,o){const n=this.options||{};(this.points||[]).length&&n.borderWidth&&(t.save(),iw(t,this,i,o),t.restore()),this.animated&&(this._pointsUpdated=!1,this._path=void 0)}}function nw(t,e,i,o){const n=t.options,{[i]:s}=t.getProps([i],o);return Math.abs(e-s)<n.radius+n.hitRadius}class sw extends ex{static id="point";parsed;skip;stop;static defaults={borderWidth:1,hitRadius:1,hoverBorderWidth:1,hoverRadius:4,pointStyle:"circle",radius:3,rotation:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};constructor(t){super(),this.options=void 0,this.parsed=void 0,this.skip=void 0,this.stop=void 0,t&&Object.assign(this,t)}inRange(t,e,i){const o=this.options,{x:n,y:s}=this.getProps(["x","y"],i);return Math.pow(t-n,2)+Math.pow(e-s,2)<Math.pow(o.hitRadius+o.radius,2)}inXRange(t,e){return nw(this,t,"x",e)}inYRange(t,e){return nw(this,t,"y",e)}getCenterPoint(t){const{x:e,y:i}=this.getProps(["x","y"],t);return{x:e,y:i}}size(t){let e=(t=t||this.options||{}).radius||0;e=Math.max(e,e&&t.hoverRadius||0);return 2*(e+(e&&t.borderWidth||0))}draw(t,e){const i=this.options;this.skip||i.radius<.1||!Av(this,e,this.size(i)/2)||(t.strokeStyle=i.borderColor,t.lineWidth=i.borderWidth,t.fillStyle=i.backgroundColor,Cv(t,i,this.x,this.y))}getRange(){const t=this.options||{};return t.radius+t.hitRadius}}function rw(t,e){const{x:i,y:o,base:n,width:s,height:r}=t.getProps(["x","y","base","width","height"],e);let a,l,d,c,h;return t.horizontal?(h=r/2,a=Math.min(i,n),l=Math.max(i,n),d=o-h,c=o+h):(h=s/2,a=i-h,l=i+h,d=Math.min(o,n),c=Math.max(o,n)),{left:a,top:d,right:l,bottom:c}}function aw(t,e,i,o){return t?0:qf(e,i,o)}function lw(t){const e=rw(t),i=e.right-e.left,o=e.bottom-e.top,n=function(t,e,i){const o=t.options.borderWidth,n=t.borderSkipped,s=Fv(o);return{t:aw(n.top,s.top,0,i),r:aw(n.right,s.right,0,e),b:aw(n.bottom,s.bottom,0,i),l:aw(n.left,s.left,0,e)}}(t,i/2,o/2),s=function(t,e,i){const{enableBorderRadius:o}=t.getProps(["enableBorderRadius"]),n=t.options.borderRadius,s=qv(n),r=Math.min(e,i),a=t.borderSkipped,l=o||Qg(n);return{topLeft:aw(!l||a.top||a.left,s.topLeft,0,r),topRight:aw(!l||a.top||a.right,s.topRight,0,r),bottomLeft:aw(!l||a.bottom||a.left,s.bottomLeft,0,r),bottomRight:aw(!l||a.bottom||a.right,s.bottomRight,0,r)}}(t,i/2,o/2);return{outer:{x:e.left,y:e.top,w:i,h:o,radius:s},inner:{x:e.left+n.l,y:e.top+n.t,w:i-n.l-n.r,h:o-n.t-n.b,radius:{topLeft:Math.max(0,s.topLeft-Math.max(n.t,n.l)),topRight:Math.max(0,s.topRight-Math.max(n.t,n.r)),bottomLeft:Math.max(0,s.bottomLeft-Math.max(n.b,n.l)),bottomRight:Math.max(0,s.bottomRight-Math.max(n.b,n.r))}}}}function dw(t,e,i,o){const n=null===e,s=null===i,r=t&&!(n&&s)&&rw(t,o);return r&&(n||Uf(e,r.left,r.right))&&(s||Uf(i,r.top,r.bottom))}function cw(t,e){t.rect(e.x,e.y,e.w,e.h)}function hw(t,e,i={}){const o=t.x!==i.x?-e:0,n=t.y!==i.y?-e:0,s=(t.x+t.w!==i.x+i.w?e:0)-o,r=(t.y+t.h!==i.y+i.h?e:0)-n;return{x:t.x+o,y:t.y+n,w:t.w+s,h:t.h+r,radius:t.radius}}class uw extends ex{static id="bar";static defaults={borderSkipped:"start",borderWidth:0,borderRadius:0,inflateAmount:"auto",pointStyle:void 0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};constructor(t){super(),this.options=void 0,this.horizontal=void 0,this.base=void 0,this.width=void 0,this.height=void 0,this.inflateAmount=void 0,t&&Object.assign(this,t)}draw(t){const{inflateAmount:e,options:{borderColor:i,backgroundColor:o}}=this,{inner:n,outer:s}=lw(this),r=(a=s.radius).topLeft||a.topRight||a.bottomLeft||a.bottomRight?Ov:cw;var a;t.save(),s.w===n.w&&s.h===n.h||(t.beginPath(),r(t,hw(s,e,n)),t.clip(),r(t,hw(n,-e,s)),t.fillStyle=i,t.fill("evenodd")),t.beginPath(),r(t,hw(n,e)),t.fillStyle=o,t.fill(),t.restore()}inRange(t,e,i){return dw(this,t,e,i)}inXRange(t,e){return dw(this,t,null,e)}inYRange(t,e){return dw(this,null,t,e)}getCenterPoint(t){const{x:e,y:i,base:o,horizontal:n}=this.getProps(["x","y","base","horizontal"],t);return{x:n?(e+o)/2:e,y:n?i:(i+o)/2}}getRange(t){return"x"===t?this.width/2:this.height/2}}var pw=Object.freeze({__proto__:null,ArcElement:Yx,BarElement:uw,LineElement:ow,PointElement:sw});const mw=["rgb(54, 162, 235)","rgb(255, 99, 132)","rgb(255, 159, 64)","rgb(255, 205, 86)","rgb(75, 192, 192)","rgb(153, 102, 255)","rgb(201, 203, 207)"],gw=mw.map(t=>t.replace("rgb(","rgba(").replace(")",", 0.5)"));function fw(t){return mw[t%mw.length]}function vw(t){return gw[t%gw.length]}function bw(t){let e=0;return(i,o)=>{const n=t.getDatasetMeta(o).controller;n instanceof uy?e=function(t,e){return t.backgroundColor=t.data.map(()=>fw(e++)),e}(i,e):n instanceof py?e=function(t,e){return t.backgroundColor=t.data.map(()=>vw(e++)),e}(i,e):n&&(e=function(t,e){return t.borderColor=fw(e),t.backgroundColor=vw(e),++e}(i,e))}}function yw(t){let e;for(e in t)if(t[e].borderColor||t[e].backgroundColor)return!0;return!1}var xw={id:"colors",defaults:{enabled:!0,forceOverride:!1},beforeLayout(t,e,i){if(!i.enabled)return;const{data:{datasets:o},options:n}=t.config,{elements:s}=n,r=yw(o)||(a=n)&&(a.borderColor||a.backgroundColor)||s&&yw(s)||"rgba(0,0,0,0.1)"!==yv.borderColor||"rgba(0,0,0,0.1)"!==yv.backgroundColor;var a;if(!i.forceOverride&&r)return;const l=bw(t);o.forEach(l)}};function ww(t){if(t._decimated){const e=t._data;delete t._decimated,delete t._data,Object.defineProperty(t,"data",{configurable:!0,enumerable:!0,writable:!0,value:e})}}function _w(t){t.data.datasets.forEach(t=>{ww(t)})}var kw={id:"decimation",defaults:{algorithm:"min-max",enabled:!1},beforeElementsUpdate:(t,e,i)=>{if(!i.enabled)return void _w(t);const o=t.width;t.data.datasets.forEach((e,n)=>{const{_data:s,indexAxis:r}=e,a=t.getDatasetMeta(n),l=s||e.data;if("y"===Hv([r,t.options.indexAxis]))return;if(!a.controller.supportsDecimation)return;const d=t.scales[a.xAxisID];if("linear"!==d.type&&"time"!==d.type)return;if(t.options.parsing)return;let{start:c,count:h}=function(t,e){const i=e.length;let o,n=0;const{iScale:s}=t,{min:r,max:a,minDefined:l,maxDefined:d}=s.getUserBounds();return l&&(n=qf(Hf(e,s.axis,r).lo,0,i-1)),o=d?qf(Hf(e,s.axis,a).hi+1,n,i)-n:i-n,{start:n,count:o}}(a,l);if(h<=(i.threshold||4*o))return void ww(e);let u;switch(Gg(s)&&(e._data=l,delete e.data,Object.defineProperty(e,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(t){this._data=t}})),i.algorithm){case"lttb":u=function(t,e,i,o,n){const s=n.samples||o;if(s>=i)return t.slice(e,e+i);const r=[],a=(i-2)/(s-2);let l=0;const d=e+i-1;let c,h,u,p,m,g=e;for(r[l++]=t[g],c=0;c<s-2;c++){let o,n=0,s=0;const d=Math.floor((c+1)*a)+1+e,f=Math.min(Math.floor((c+2)*a)+1,i)+e,v=f-d;for(o=d;o<f;o++)n+=t[o].x,s+=t[o].y;n/=v,s/=v;const b=Math.floor(c*a)+1+e,y=Math.min(Math.floor((c+1)*a)+1,i)+e,{x:x,y:w}=t[g];for(u=p=-1,o=b;o<y;o++)p=.5*Math.abs((x-n)*(t[o].y-w)-(x-t[o].x)*(s-w)),p>u&&(u=p,h=t[o],m=o);r[l++]=h,g=m}return r[l++]=t[d],r}(l,c,h,o,i);break;case"min-max":u=function(t,e,i,o){let n,s,r,a,l,d,c,h,u,p,m=0,g=0;const f=[],v=e+i-1,b=t[e].x,y=t[v].x-b;for(n=e;n<e+i;++n){s=t[n],r=(s.x-b)/y*o,a=s.y;const e=0|r;if(e===l)a<u?(u=a,d=n):a>p&&(p=a,c=n),m=(g*m+s.x)/++g;else{const i=n-1;if(!Gg(d)&&!Gg(c)){const e=Math.min(d,c),o=Math.max(d,c);e!==h&&e!==i&&f.push({...t[e],x:m}),o!==h&&o!==i&&f.push({...t[o],x:m})}n>0&&i!==h&&f.push(t[i]),f.push(s),l=e,g=0,u=p=a,d=c=h=n}}return f}(l,c,h,o);break;default:throw new Error(`Unsupported decimation algorithm '${i.algorithm}'`)}e._decimated=u})},destroy(t){_w(t)}};function Cw(t,e,i,o){if(o)return;let n=e[t],s=i[t];return"angle"===t&&(n=Bf(n),s=Bf(s)),{property:t,start:n,end:s}}function Sw(t,e,i){for(;e>t;e--){const t=i[e];if(!isNaN(t.x)&&!isNaN(t.y))break}return e}function Aw(t,e,i,o){return t&&e?o(t[i],e[i]):t?t[i]:e?e[i]:0}function $w(t,e){let i=[],o=!1;return Xg(t)?(o=!0,i=t):i=function(t,e){const{x:i=null,y:o=null}=t||{},n=e.points,s=[];return e.segments.forEach(({start:t,end:e})=>{e=Sw(t,e,n);const r=n[t],a=n[e];null!==o?(s.push({x:r.x,y:o}),s.push({x:a.x,y:o})):null!==i&&(s.push({x:i,y:r.y}),s.push({x:i,y:a.y}))}),s}(t,e),i.length?new ow({points:i,options:{tension:0},_loop:o,_fullLoop:o}):null}function Ew(t){return t&&!1!==t.fill}function Tw(t,e,i){let o=t[e].fill;const n=[e];let s;if(!i)return o;for(;!1!==o&&-1===n.indexOf(o);){if(!Jg(o))return o;if(s=t[o],!s)return!1;if(s.visible)return o;n.push(o),o=s.fill}return!1}function Dw(t,e,i){const o=function(t){const e=t.options,i=e.fill;let o=ef(i&&i.target,i);void 0===o&&(o=!!e.backgroundColor);if(!1===o||null===o)return!1;if(!0===o)return"origin";return o}(t);if(Qg(o))return!isNaN(o.value)&&o;let n=parseFloat(o);return Jg(n)&&Math.floor(n)===n?function(t,e,i,o){"-"!==t&&"+"!==t||(i=e+i);if(i===e||i<0||i>=o)return!1;return i}(o[0],e,n,i):["origin","start","end","stack","shape"].indexOf(o)>=0&&o}function Mw(t,e,i){const o=[];for(let n=0;n<i.length;n++){const s=i[n],{first:r,last:a,point:l}=zw(s,e,"x");if(!(!l||r&&a))if(r)o.unshift(l);else if(t.push(l),!a)break}t.push(...o)}function zw(t,e,i){const o=t.interpolate(e,i);if(!o)return{};const n=o[i],s=t.segments,r=t.points;let a=!1,l=!1;for(let t=0;t<s.length;t++){const e=s[t],o=r[e.start][i],d=r[e.end][i];if(Uf(n,o,d)){a=n===o,l=n===d;break}}return{first:a,last:l,point:o}}class Iw{constructor(t){this.x=t.x,this.y=t.y,this.radius=t.radius}pathSegment(t,e,i){const{x:o,y:n,radius:s}=this;return e=e||{start:0,end:xf},t.arc(o,n,s,e.end,e.start,!0),!i.bounds}interpolate(t){const{x:e,y:i,radius:o}=this,n=t.angle;return{x:e+Math.cos(n)*o,y:i+Math.sin(n)*o,angle:n}}}function Ow(t){const{chart:e,fill:i,line:o}=t;if(Jg(i))return function(t,e){const i=t.getDatasetMeta(e),o=i&&t.isDatasetVisible(e);return o?i.dataset:null}(e,i);if("stack"===i)return function(t){const{scale:e,index:i,line:o}=t,n=[],s=o.segments,r=o.points,a=function(t,e){const i=[],o=t.getMatchingVisibleMetas("line");for(let t=0;t<o.length;t++){const n=o[t];if(n.index===e)break;n.hidden||i.unshift(n.dataset)}return i}(e,i);a.push($w({x:null,y:e.bottom},o));for(let t=0;t<s.length;t++){const e=s[t];for(let t=e.start;t<=e.end;t++)Mw(n,r[t],a)}return new ow({points:n,options:{}})}(t);if("shape"===i)return!0;const n=function(t){const e=t.scale||{};if(e.getPointPositionForValue)return function(t){const{scale:e,fill:i}=t,o=e.options,n=e.getLabels().length,s=o.reverse?e.max:e.min,r=function(t,e,i){let o;return o="start"===t?i:"end"===t?e.options.reverse?e.min:e.max:Qg(t)?t.value:e.getBaseValue(),o}(i,e,s),a=[];if(o.grid.circular){const t=e.getPointPositionForValue(0,s);return new Iw({x:t.x,y:t.y,radius:e.getDistanceFromCenterForValue(r)})}for(let t=0;t<n;++t)a.push(e.getPointPositionForValue(t,r));return a}(t);return function(t){const{scale:e={},fill:i}=t,o=function(t,e){let i=null;return"start"===t?i=e.bottom:"end"===t?i=e.top:Qg(t)?i=e.getPixelForValue(t.value):e.getBasePixel&&(i=e.getBasePixel()),i}(i,e);if(Jg(o)){const t=e.isHorizontal();return{x:t?o:null,y:t?null:o}}return null}(t)}(t);return n instanceof Iw?n:$w(n,o)}function Lw(t,e,i){const o=Ow(e),{chart:n,index:s,line:r,scale:a,axis:l}=e,d=r.options,c=d.fill,h=d.backgroundColor,{above:u=h,below:p=h}=c||{},m=n.getDatasetMeta(s),g=Bb(n,m);o&&r.points.length&&($v(t,i),function(t,e){const{line:i,target:o,above:n,below:s,area:r,scale:a,clip:l}=e,d=i._loop?"angle":e.axis;t.save();let c=s;s!==n&&("x"===d?(Pw(t,o,r.top),Nw(t,{line:i,target:o,color:n,scale:a,property:d,clip:l}),t.restore(),t.save(),Pw(t,o,r.bottom)):"y"===d&&(Rw(t,o,r.left),Nw(t,{line:i,target:o,color:s,scale:a,property:d,clip:l}),t.restore(),t.save(),Rw(t,o,r.right),c=n));Nw(t,{line:i,target:o,color:c,scale:a,property:d,clip:l}),t.restore()}(t,{line:r,target:o,above:u,below:p,area:i,scale:a,axis:l,clip:g}),Ev(t))}function Pw(t,e,i){const{segments:o,points:n}=e;let s=!0,r=!1;t.beginPath();for(const a of o){const{start:o,end:l}=a,d=n[o],c=n[Sw(o,l,n)];s?(t.moveTo(d.x,d.y),s=!1):(t.lineTo(d.x,i),t.lineTo(d.x,d.y)),r=!!e.pathSegment(t,a,{move:r}),r?t.closePath():t.lineTo(c.x,i)}t.lineTo(e.first().x,i),t.closePath(),t.clip()}function Rw(t,e,i){const{segments:o,points:n}=e;let s=!0,r=!1;t.beginPath();for(const a of o){const{start:o,end:l}=a,d=n[o],c=n[Sw(o,l,n)];s?(t.moveTo(d.x,d.y),s=!1):(t.lineTo(i,d.y),t.lineTo(d.x,d.y)),r=!!e.pathSegment(t,a,{move:r}),r?t.closePath():t.lineTo(i,c.y)}t.lineTo(i,e.first().y),t.closePath(),t.clip()}function Nw(t,e){const{line:i,target:o,property:n,color:s,scale:r,clip:a}=e,l=function(t,e,i){const o=t.segments,n=t.points,s=e.points,r=[];for(const t of o){let{start:o,end:a}=t;a=Sw(o,a,n);const l=Cw(i,n[o],n[a],t.loop);if(!e.segments){r.push({source:t,target:l,start:n[o],end:n[a]});continue}const d=Ob(e,l);for(const e of d){const o=Cw(i,s[e.start],s[e.end],e.loop),a=Ib(t,n,o);for(const t of a)r.push({source:t,target:e,start:{[i]:Aw(l,o,"start",Math.max)},end:{[i]:Aw(l,o,"end",Math.min)}})}}return r}(i,o,n);for(const{source:e,target:d,start:c,end:h}of l){const{style:{backgroundColor:l=s}={}}=e,u=!0!==o;t.save(),t.fillStyle=l,Bw(t,r,a,u&&Cw(n,c,h)),t.beginPath();const p=!!i.pathSegment(t,e);let m;if(u){p?t.closePath():Fw(t,o,h,n);const e=!!o.pathSegment(t,d,{move:p,reverse:!0});m=p&&e,m||Fw(t,o,c,n)}t.closePath(),t.fill(m?"evenodd":"nonzero"),t.restore()}}function Bw(t,e,i,o){const n=e.chart.chartArea,{property:s,start:r,end:a}=o||{};if("x"===s||"y"===s){let e,o,l,d;"x"===s?(e=r,o=n.top,l=a,d=n.bottom):(e=n.left,o=r,l=n.right,d=a),t.beginPath(),i&&(e=Math.max(e,i.left),l=Math.min(l,i.right),o=Math.max(o,i.top),d=Math.min(d,i.bottom)),t.rect(e,o,l-e,d-o),t.clip()}}function Fw(t,e,i,o){const n=e.interpolate(i,o);n&&t.lineTo(n.x,n.y)}var qw={id:"filler",afterDatasetsUpdate(t,e,i){const o=(t.data.datasets||[]).length,n=[];let s,r,a,l;for(r=0;r<o;++r)s=t.getDatasetMeta(r),a=s.dataset,l=null,a&&a.options&&a instanceof ow&&(l={visible:t.isDatasetVisible(r),index:r,fill:Dw(a,r,o),chart:t,axis:s.controller.options.indexAxis,scale:s.vScale,line:a}),s.$filler=l,n.push(l);for(r=0;r<o;++r)l=n[r],l&&!1!==l.fill&&(l.fill=Tw(n,r,i.propagate))},beforeDraw(t,e,i){const o="beforeDraw"===i.drawTime,n=t.getSortedVisibleDatasetMetas(),s=t.chartArea;for(let e=n.length-1;e>=0;--e){const i=n[e].$filler;i&&(i.line.updateControlPoints(s,i.axis),o&&i.fill&&Lw(t.ctx,i,s))}},beforeDatasetsDraw(t,e,i){if("beforeDatasetsDraw"!==i.drawTime)return;const o=t.getSortedVisibleDatasetMetas();for(let e=o.length-1;e>=0;--e){const i=o[e].$filler;Ew(i)&&Lw(t.ctx,i,t.chartArea)}},beforeDatasetDraw(t,e,i){const o=e.meta.$filler;Ew(o)&&"beforeDatasetDraw"===i.drawTime&&Lw(t.ctx,o,t.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};const Uw=(t,e)=>{let{boxHeight:i=e,boxWidth:o=e}=t;return t.usePointStyle&&(i=Math.min(i,e),o=t.pointStyleWidth||Math.min(o,e)),{boxWidth:o,boxHeight:i,itemHeight:Math.max(e,i)}};class jw extends ex{constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e,i){this.maxWidth=t,this.maxHeight=e,this._margins=i,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const t=this.options.labels||{};let e=nf(t.generateLabels,[this.chart],this)||[];t.filter&&(e=e.filter(e=>t.filter(e,this.chart.data))),t.sort&&(e=e.sort((e,i)=>t.sort(e,i,this.chart.data))),this.options.reverse&&e.reverse(),this.legendItems=e}fit(){const{options:t,ctx:e}=this;if(!t.display)return void(this.width=this.height=0);const i=t.labels,o=jv(i.font),n=o.size,s=this._computeTitleHeight(),{boxWidth:r,itemHeight:a}=Uw(i,n);let l,d;e.font=o.string,this.isHorizontal()?(l=this.maxWidth,d=this._fitRows(s,n,r,a)+10):(d=this.maxHeight,l=this._fitCols(s,o,r,a)+10),this.width=Math.min(l,t.maxWidth||this.maxWidth),this.height=Math.min(d,t.maxHeight||this.maxHeight)}_fitRows(t,e,i,o){const{ctx:n,maxWidth:s,options:{labels:{padding:r}}}=this,a=this.legendHitBoxes=[],l=this.lineWidths=[0],d=o+r;let c=t;n.textAlign="left",n.textBaseline="middle";let h=-1,u=-d;return this.legendItems.forEach((t,p)=>{const m=i+e/2+n.measureText(t.text).width;(0===p||l[l.length-1]+m+2*r>s)&&(c+=d,l[l.length-(p>0?0:1)]=0,u+=d,h++),a[p]={left:0,top:u,row:h,width:m,height:o},l[l.length-1]+=m+r}),c}_fitCols(t,e,i,o){const{ctx:n,maxHeight:s,options:{labels:{padding:r}}}=this,a=this.legendHitBoxes=[],l=this.columnSizes=[],d=s-t;let c=r,h=0,u=0,p=0,m=0;return this.legendItems.forEach((t,s)=>{const{itemWidth:g,itemHeight:f}=function(t,e,i,o,n){const s=function(t,e,i,o){let n=t.text;n&&"string"!=typeof n&&(n=n.reduce((t,e)=>t.length>e.length?t:e));return e+i.size/2+o.measureText(n).width}(o,t,e,i),r=function(t,e,i){let o=t;"string"!=typeof e.text&&(o=Hw(e,i));return o}(n,o,e.lineHeight);return{itemWidth:s,itemHeight:r}}(i,e,n,t,o);s>0&&u+f+2*r>d&&(c+=h+r,l.push({width:h,height:u}),p+=h+r,m++,h=u=0),a[s]={left:p,top:u,col:m,width:g,height:f},h=Math.max(h,g),u+=f+r}),c+=h,l.push({width:h,height:u}),c}adjustHitBoxes(){if(!this.options.display)return;const t=this._computeTitleHeight(),{legendHitBoxes:e,options:{align:i,labels:{padding:o},rtl:n}}=this,s=Eb(n,this.left,this.width);if(this.isHorizontal()){let n=0,r=Qf(i,this.left+o,this.right-this.lineWidths[n]);for(const a of e)n!==a.row&&(n=a.row,r=Qf(i,this.left+o,this.right-this.lineWidths[n])),a.top+=this.top+t+o,a.left=s.leftForLtr(s.x(r),a.width),r+=a.width+o}else{let n=0,r=Qf(i,this.top+t+o,this.bottom-this.columnSizes[n].height);for(const a of e)a.col!==n&&(n=a.col,r=Qf(i,this.top+t+o,this.bottom-this.columnSizes[n].height)),a.top=r,a.left+=this.left+o,a.left=s.leftForLtr(s.x(a.left),a.width),r+=a.height+o}}isHorizontal(){return"top"===this.options.position||"bottom"===this.options.position}draw(){if(this.options.display){const t=this.ctx;$v(t,this),this._draw(),Ev(t)}}_draw(){const{options:t,columnSizes:e,lineWidths:i,ctx:o}=this,{align:n,labels:s}=t,r=yv.color,a=Eb(t.rtl,this.left,this.width),l=jv(s.font),{padding:d}=s,c=l.size,h=c/2;let u;this.drawTitle(),o.textAlign=a.textAlign("left"),o.textBaseline="middle",o.lineWidth=.5,o.font=l.string;const{boxWidth:p,boxHeight:m,itemHeight:g}=Uw(s,c),f=this.isHorizontal(),v=this._computeTitleHeight();u=f?{x:Qf(n,this.left+d,this.right-i[0]),y:this.top+d+v,line:0}:{x:this.left+d,y:Qf(n,this.top+v+d,this.bottom-e[0].height),line:0},Tb(this.ctx,t.textDirection);const b=g+d;this.legendItems.forEach((y,x)=>{o.strokeStyle=y.fontColor,o.fillStyle=y.fontColor;const w=o.measureText(y.text).width,_=a.textAlign(y.textAlign||(y.textAlign=s.textAlign)),k=p+h+w;let C=u.x,S=u.y;a.setWidth(this.width),f?x>0&&C+k+d>this.right&&(S=u.y+=b,u.line++,C=u.x=Qf(n,this.left+d,this.right-i[u.line])):x>0&&S+b>this.bottom&&(C=u.x=C+e[u.line].width+d,u.line++,S=u.y=Qf(n,this.top+v+d,this.bottom-e[u.line].height));if(function(t,e,i){if(isNaN(p)||p<=0||isNaN(m)||m<0)return;o.save();const n=ef(i.lineWidth,1);if(o.fillStyle=ef(i.fillStyle,r),o.lineCap=ef(i.lineCap,"butt"),o.lineDashOffset=ef(i.lineDashOffset,0),o.lineJoin=ef(i.lineJoin,"miter"),o.lineWidth=n,o.strokeStyle=ef(i.strokeStyle,r),o.setLineDash(ef(i.lineDash,[])),s.usePointStyle){const r={radius:m*Math.SQRT2/2,pointStyle:i.pointStyle,rotation:i.rotation,borderWidth:n},l=a.xPlus(t,p/2);Sv(o,r,l,e+h,s.pointStyleWidth&&p)}else{const s=e+Math.max((c-m)/2,0),r=a.leftForLtr(t,p),l=qv(i.borderRadius);o.beginPath(),Object.values(l).some(t=>0!==t)?Ov(o,{x:r,y:s,w:p,h:m,radius:l}):o.rect(r,s,p,m),o.fill(),0!==n&&o.stroke()}o.restore()}(a.x(C),S,y),C=((t,e,i,o)=>t===(o?"left":"right")?i:"center"===t?(e+i)/2:e)(_,C+p+h,f?C+k:this.right,t.rtl),function(t,e,i){Iv(o,i.text,t,e+g/2,l,{strikethrough:i.hidden,textAlign:a.textAlign(i.textAlign)})}(a.x(C),S,y),f)u.x+=k+d;else if("string"!=typeof y.text){const t=l.lineHeight;u.y+=Hw(y,t)+d}else u.y+=b}),Db(this.ctx,t.textDirection)}drawTitle(){const t=this.options,e=t.title,i=jv(e.font),o=Uv(e.padding);if(!e.display)return;const n=Eb(t.rtl,this.left,this.width),s=this.ctx,r=e.position,a=i.size/2,l=o.top+a;let d,c=this.left,h=this.width;if(this.isHorizontal())h=Math.max(...this.lineWidths),d=this.top+l,c=Qf(t.align,c,this.right-h);else{const e=this.columnSizes.reduce((t,e)=>Math.max(t,e.height),0);d=l+Qf(t.align,this.top,this.bottom-e-t.labels.padding-this._computeTitleHeight())}const u=Qf(r,c,c+h);s.textAlign=n.textAlign(Xf(r)),s.textBaseline="middle",s.strokeStyle=e.color,s.fillStyle=e.color,s.font=i.string,Iv(s,e.text,u,d,i)}_computeTitleHeight(){const t=this.options.title,e=jv(t.font),i=Uv(t.padding);return t.display?e.lineHeight+i.height:0}_getLegendItemAt(t,e){let i,o,n;if(Uf(t,this.left,this.right)&&Uf(e,this.top,this.bottom))for(n=this.legendHitBoxes,i=0;i<n.length;++i)if(o=n[i],Uf(t,o.left,o.left+o.width)&&Uf(e,o.top,o.top+o.height))return this.legendItems[i];return null}handleEvent(t){const e=this.options;if(!function(t,e){if(("mousemove"===t||"mouseout"===t)&&(e.onHover||e.onLeave))return!0;if(e.onClick&&("click"===t||"mouseup"===t))return!0;return!1}(t.type,e))return;const i=this._getLegendItemAt(t.x,t.y);if("mousemove"===t.type||"mouseout"===t.type){const o=this._hoveredItem,n=((t,e)=>null!==t&&null!==e&&t.datasetIndex===e.datasetIndex&&t.index===e.index)(o,i);o&&!n&&nf(e.onLeave,[t,o,this],this),this._hoveredItem=i,i&&!n&&nf(e.onHover,[t,i,this],this)}else i&&nf(e.onClick,[t,i,this],this)}}function Hw(t,e){return e*(t.text?t.text.length:0)}var Ww={id:"legend",_element:jw,start(t,e,i){const o=t.legend=new jw({ctx:t.ctx,options:i,chart:t});Ry.configure(t,o,i),Ry.addBox(t,o)},stop(t){Ry.removeBox(t,t.legend),delete t.legend},beforeUpdate(t,e,i){const o=t.legend;Ry.configure(t,o,i),o.options=i},afterUpdate(t){const e=t.legend;e.buildLabels(),e.adjustHitBoxes()},afterEvent(t,e){e.replay||t.legend.handleEvent(e.event)},defaults:{display:!0,position:"top",align:"center",fullSize:!0,reverse:!1,weight:1e3,onClick(t,e,i){const o=e.datasetIndex,n=i.chart;n.isDatasetVisible(o)?(n.hide(o),e.hidden=!0):(n.show(o),e.hidden=!1)},onHover:null,onLeave:null,labels:{color:t=>t.chart.options.color,boxWidth:40,padding:10,generateLabels(t){const e=t.data.datasets,{labels:{usePointStyle:i,pointStyle:o,textAlign:n,color:s,useBorderRadius:r,borderRadius:a}}=t.legend.options;return t._getSortedDatasetMetas().map(t=>{const l=t.controller.getStyle(i?0:void 0),d=Uv(l.borderWidth);return{text:e[t.index].label,fillStyle:l.backgroundColor,fontColor:s,hidden:!t.visible,lineCap:l.borderCapStyle,lineDash:l.borderDash,lineDashOffset:l.borderDashOffset,lineJoin:l.borderJoinStyle,lineWidth:(d.width+d.height)/4,strokeStyle:l.borderColor,pointStyle:o||l.pointStyle,rotation:l.rotation,textAlign:n||l.textAlign,borderRadius:r&&(a||l.borderRadius),datasetIndex:t.index}},this)}},title:{color:t=>t.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:t=>!t.startsWith("on"),labels:{_scriptable:t=>!["generateLabels","filter","sort"].includes(t)}}};class Vw extends ex{constructor(t){super(),this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e){const i=this.options;if(this.left=0,this.top=0,!i.display)return void(this.width=this.height=this.right=this.bottom=0);this.width=this.right=t,this.height=this.bottom=e;const o=Xg(i.text)?i.text.length:1;this._padding=Uv(i.padding);const n=o*jv(i.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=n:this.width=n}isHorizontal(){const t=this.options.position;return"top"===t||"bottom"===t}_drawArgs(t){const{top:e,left:i,bottom:o,right:n,options:s}=this,r=s.align;let a,l,d,c=0;return this.isHorizontal()?(l=Qf(r,i,n),d=e+t,a=n-i):("left"===s.position?(l=i+t,d=Qf(r,o,e),c=-.5*yf):(l=n-t,d=Qf(r,e,o),c=.5*yf),a=o-e),{titleX:l,titleY:d,maxWidth:a,rotation:c}}draw(){const t=this.ctx,e=this.options;if(!e.display)return;const i=jv(e.font),o=i.lineHeight/2+this._padding.top,{titleX:n,titleY:s,maxWidth:r,rotation:a}=this._drawArgs(o);Iv(t,e.text,0,0,i,{color:e.color,maxWidth:r,rotation:a,textAlign:Xf(e.align),textBaseline:"middle",translation:[n,s]})}}var Zw={id:"title",_element:Vw,start(t,e,i){!function(t,e){const i=new Vw({ctx:t.ctx,options:e,chart:t});Ry.configure(t,i,e),Ry.addBox(t,i),t.titleBlock=i}(t,i)},stop(t){const e=t.titleBlock;Ry.removeBox(t,e),delete t.titleBlock},beforeUpdate(t,e,i){const o=t.titleBlock;Ry.configure(t,o,i),o.options=i},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const Yw=new WeakMap;var Kw={id:"subtitle",start(t,e,i){const o=new Vw({ctx:t.ctx,options:i,chart:t});Ry.configure(t,o,i),Ry.addBox(t,o),Yw.set(t,o)},stop(t){Ry.removeBox(t,Yw.get(t)),Yw.delete(t)},beforeUpdate(t,e,i){const o=Yw.get(t);Ry.configure(t,o,i),o.options=i},defaults:{align:"center",display:!1,font:{weight:"normal"},fullSize:!0,padding:0,position:"top",text:"",weight:1500},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const Gw={average(t){if(!t.length)return!1;let e,i,o=new Set,n=0,s=0;for(e=0,i=t.length;e<i;++e){const i=t[e].element;if(i&&i.hasValue()){const t=i.tooltipPosition();o.add(t.x),n+=t.y,++s}}if(0===s||0===o.size)return!1;const r=[...o].reduce((t,e)=>t+e)/o.size;return{x:r,y:n/s}},nearest(t,e){if(!t.length)return!1;let i,o,n,s=e.x,r=e.y,a=Number.POSITIVE_INFINITY;for(i=0,o=t.length;i<o;++i){const o=t[i].element;if(o&&o.hasValue()){const t=Rf(e,o.getCenterPoint());t<a&&(a=t,n=o)}}if(n){const t=n.tooltipPosition();s=t.x,r=t.y}return{x:s,y:r}}};function Xw(t,e){return e&&(Xg(e)?Array.prototype.push.apply(t,e):t.push(e)),t}function Qw(t){return("string"==typeof t||t instanceof String)&&t.indexOf("\n")>-1?t.split("\n"):t}function Jw(t,e){const{element:i,datasetIndex:o,index:n}=e,s=t.getDatasetMeta(o).controller,{label:r,value:a}=s.getLabelAndValue(n);return{chart:t,label:r,parsed:s.getParsed(n),raw:t.data.datasets[o].data[n],formattedValue:a,dataset:s.getDataset(),dataIndex:n,datasetIndex:o,element:i}}function t_(t,e){const i=t.chart.ctx,{body:o,footer:n,title:s}=t,{boxWidth:r,boxHeight:a}=e,l=jv(e.bodyFont),d=jv(e.titleFont),c=jv(e.footerFont),h=s.length,u=n.length,p=o.length,m=Uv(e.padding);let g=m.height,f=0,v=o.reduce((t,e)=>t+e.before.length+e.lines.length+e.after.length,0);if(v+=t.beforeBody.length+t.afterBody.length,h&&(g+=h*d.lineHeight+(h-1)*e.titleSpacing+e.titleMarginBottom),v){g+=p*(e.displayColors?Math.max(a,l.lineHeight):l.lineHeight)+(v-p)*l.lineHeight+(v-1)*e.bodySpacing}u&&(g+=e.footerMarginTop+u*c.lineHeight+(u-1)*e.footerSpacing);let b=0;const y=function(t){f=Math.max(f,i.measureText(t).width+b)};return i.save(),i.font=d.string,sf(t.title,y),i.font=l.string,sf(t.beforeBody.concat(t.afterBody),y),b=e.displayColors?r+2+e.boxPadding:0,sf(o,t=>{sf(t.before,y),sf(t.lines,y),sf(t.after,y)}),b=0,i.font=c.string,sf(t.footer,y),i.restore(),f+=m.width,{width:f,height:g}}function e_(t,e,i,o){const{x:n,width:s}=i,{width:r,chartArea:{left:a,right:l}}=t;let d="center";return"center"===o?d=n<=(a+l)/2?"left":"right":n<=s/2?d="left":n>=r-s/2&&(d="right"),function(t,e,i,o){const{x:n,width:s}=o,r=i.caretSize+i.caretPadding;return"left"===t&&n+s+r>e.width||"right"===t&&n-s-r<0||void 0}(d,t,e,i)&&(d="center"),d}function i_(t,e,i){const o=i.yAlign||e.yAlign||function(t,e){const{y:i,height:o}=e;return i<o/2?"top":i>t.height-o/2?"bottom":"center"}(t,i);return{xAlign:i.xAlign||e.xAlign||e_(t,e,i,o),yAlign:o}}function o_(t,e,i,o){const{caretSize:n,caretPadding:s,cornerRadius:r}=t,{xAlign:a,yAlign:l}=i,d=n+s,{topLeft:c,topRight:h,bottomLeft:u,bottomRight:p}=qv(r);let m=function(t,e){let{x:i,width:o}=t;return"right"===e?i-=o:"center"===e&&(i-=o/2),i}(e,a);const g=function(t,e,i){let{y:o,height:n}=t;return"top"===e?o+=i:o-="bottom"===e?n+i:n/2,o}(e,l,d);return"center"===l?"left"===a?m+=d:"right"===a&&(m-=d):"left"===a?m-=Math.max(c,u)+n:"right"===a&&(m+=Math.max(h,p)+n),{x:qf(m,0,o.width-e.width),y:qf(g,0,o.height-e.height)}}function n_(t,e,i){const o=Uv(i.padding);return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-o.right:t.x+o.left}function s_(t){return Xw([],Qw(t))}function r_(t,e){const i=e&&e.dataset&&e.dataset.tooltip&&e.dataset.tooltip.callbacks;return i?t.override(i):t}const a_={beforeTitle:Yg,title(t){if(t.length>0){const e=t[0],i=e.chart.data.labels,o=i?i.length:0;if(this&&this.options&&"dataset"===this.options.mode)return e.dataset.label||"";if(e.label)return e.label;if(o>0&&e.dataIndex<o)return i[e.dataIndex]}return""},afterTitle:Yg,beforeBody:Yg,beforeLabel:Yg,label(t){if(this&&this.options&&"dataset"===this.options.mode)return t.label+": "+t.formattedValue||t.formattedValue;let e=t.dataset.label||"";e&&(e+=": ");const i=t.formattedValue;return Gg(i)||(e+=i),e},labelColor(t){const e=t.chart.getDatasetMeta(t.datasetIndex).controller.getStyle(t.dataIndex);return{borderColor:e.borderColor,backgroundColor:e.backgroundColor,borderWidth:e.borderWidth,borderDash:e.borderDash,borderDashOffset:e.borderDashOffset,borderRadius:0}},labelTextColor(){return this.options.bodyColor},labelPointStyle(t){const e=t.chart.getDatasetMeta(t.datasetIndex).controller.getStyle(t.dataIndex);return{pointStyle:e.pointStyle,rotation:e.rotation}},afterLabel:Yg,afterBody:Yg,beforeFooter:Yg,footer:Yg,afterFooter:Yg};function l_(t,e,i,o){const n=t[e].call(i,o);return void 0===n?a_[e].call(i,o):n}class d_ extends ex{static positioners=Gw;constructor(t){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=t.chart,this.options=t.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(t){this.options=t,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const t=this._cachedAnimations;if(t)return t;const e=this.chart,i=this.options.setContext(this.getContext()),o=i.enabled&&e.options.animation&&i.animations,n=new Wb(this.chart,o);return o._cacheable&&(this._cachedAnimations=Object.freeze(n)),n}getContext(){return this.$context||(this.$context=(t=this.chart.getContext(),e=this,i=this._tooltipItems,Wv(t,{tooltip:e,tooltipItems:i,type:"tooltip"})));var t,e,i}getTitle(t,e){const{callbacks:i}=e,o=l_(i,"beforeTitle",this,t),n=l_(i,"title",this,t),s=l_(i,"afterTitle",this,t);let r=[];return r=Xw(r,Qw(o)),r=Xw(r,Qw(n)),r=Xw(r,Qw(s)),r}getBeforeBody(t,e){return s_(l_(e.callbacks,"beforeBody",this,t))}getBody(t,e){const{callbacks:i}=e,o=[];return sf(t,t=>{const e={before:[],lines:[],after:[]},n=r_(i,t);Xw(e.before,Qw(l_(n,"beforeLabel",this,t))),Xw(e.lines,l_(n,"label",this,t)),Xw(e.after,Qw(l_(n,"afterLabel",this,t))),o.push(e)}),o}getAfterBody(t,e){return s_(l_(e.callbacks,"afterBody",this,t))}getFooter(t,e){const{callbacks:i}=e,o=l_(i,"beforeFooter",this,t),n=l_(i,"footer",this,t),s=l_(i,"afterFooter",this,t);let r=[];return r=Xw(r,Qw(o)),r=Xw(r,Qw(n)),r=Xw(r,Qw(s)),r}_createItems(t){const e=this._active,i=this.chart.data,o=[],n=[],s=[];let r,a,l=[];for(r=0,a=e.length;r<a;++r)l.push(Jw(this.chart,e[r]));return t.filter&&(l=l.filter((e,o,n)=>t.filter(e,o,n,i))),t.itemSort&&(l=l.sort((e,o)=>t.itemSort(e,o,i))),sf(l,e=>{const i=r_(t.callbacks,e);o.push(l_(i,"labelColor",this,e)),n.push(l_(i,"labelPointStyle",this,e)),s.push(l_(i,"labelTextColor",this,e))}),this.labelColors=o,this.labelPointStyles=n,this.labelTextColors=s,this.dataPoints=l,l}update(t,e){const i=this.options.setContext(this.getContext()),o=this._active;let n,s=[];if(o.length){const t=Gw[i.position].call(this,o,this._eventPosition);s=this._createItems(i),this.title=this.getTitle(s,i),this.beforeBody=this.getBeforeBody(s,i),this.body=this.getBody(s,i),this.afterBody=this.getAfterBody(s,i),this.footer=this.getFooter(s,i);const e=this._size=t_(this,i),r=Object.assign({},t,e),a=i_(this.chart,i,r),l=o_(i,r,a,this.chart);this.xAlign=a.xAlign,this.yAlign=a.yAlign,n={opacity:1,x:l.x,y:l.y,width:e.width,height:e.height,caretX:t.x,caretY:t.y}}else 0!==this.opacity&&(n={opacity:0});this._tooltipItems=s,this.$context=void 0,n&&this._resolveAnimations().update(this,n),t&&i.external&&i.external.call(this,{chart:this.chart,tooltip:this,replay:e})}drawCaret(t,e,i,o){const n=this.getCaretPosition(t,i,o);e.lineTo(n.x1,n.y1),e.lineTo(n.x2,n.y2),e.lineTo(n.x3,n.y3)}getCaretPosition(t,e,i){const{xAlign:o,yAlign:n}=this,{caretSize:s,cornerRadius:r}=i,{topLeft:a,topRight:l,bottomLeft:d,bottomRight:c}=qv(r),{x:h,y:u}=t,{width:p,height:m}=e;let g,f,v,b,y,x;return"center"===n?(y=u+m/2,"left"===o?(g=h,f=g-s,b=y+s,x=y-s):(g=h+p,f=g+s,b=y-s,x=y+s),v=g):(f="left"===o?h+Math.max(a,d)+s:"right"===o?h+p-Math.max(l,c)-s:this.caretX,"top"===n?(b=u,y=b-s,g=f-s,v=f+s):(b=u+m,y=b+s,g=f+s,v=f-s),x=b),{x1:g,x2:f,x3:v,y1:b,y2:y,y3:x}}drawTitle(t,e,i){const o=this.title,n=o.length;let s,r,a;if(n){const l=Eb(i.rtl,this.x,this.width);for(t.x=n_(this,i.titleAlign,i),e.textAlign=l.textAlign(i.titleAlign),e.textBaseline="middle",s=jv(i.titleFont),r=i.titleSpacing,e.fillStyle=i.titleColor,e.font=s.string,a=0;a<n;++a)e.fillText(o[a],l.x(t.x),t.y+s.lineHeight/2),t.y+=s.lineHeight+r,a+1===n&&(t.y+=i.titleMarginBottom-r)}}_drawColorBox(t,e,i,o,n){const s=this.labelColors[i],r=this.labelPointStyles[i],{boxHeight:a,boxWidth:l}=n,d=jv(n.bodyFont),c=n_(this,"left",n),h=o.x(c),u=a<d.lineHeight?(d.lineHeight-a)/2:0,p=e.y+u;if(n.usePointStyle){const e={radius:Math.min(l,a)/2,pointStyle:r.pointStyle,rotation:r.rotation,borderWidth:1},i=o.leftForLtr(h,l)+l/2,d=p+a/2;t.strokeStyle=n.multiKeyBackground,t.fillStyle=n.multiKeyBackground,Cv(t,e,i,d),t.strokeStyle=s.borderColor,t.fillStyle=s.backgroundColor,Cv(t,e,i,d)}else{t.lineWidth=Qg(s.borderWidth)?Math.max(...Object.values(s.borderWidth)):s.borderWidth||1,t.strokeStyle=s.borderColor,t.setLineDash(s.borderDash||[]),t.lineDashOffset=s.borderDashOffset||0;const e=o.leftForLtr(h,l),i=o.leftForLtr(o.xPlus(h,1),l-2),r=qv(s.borderRadius);Object.values(r).some(t=>0!==t)?(t.beginPath(),t.fillStyle=n.multiKeyBackground,Ov(t,{x:e,y:p,w:l,h:a,radius:r}),t.fill(),t.stroke(),t.fillStyle=s.backgroundColor,t.beginPath(),Ov(t,{x:i,y:p+1,w:l-2,h:a-2,radius:r}),t.fill()):(t.fillStyle=n.multiKeyBackground,t.fillRect(e,p,l,a),t.strokeRect(e,p,l,a),t.fillStyle=s.backgroundColor,t.fillRect(i,p+1,l-2,a-2))}t.fillStyle=this.labelTextColors[i]}drawBody(t,e,i){const{body:o}=this,{bodySpacing:n,bodyAlign:s,displayColors:r,boxHeight:a,boxWidth:l,boxPadding:d}=i,c=jv(i.bodyFont);let h=c.lineHeight,u=0;const p=Eb(i.rtl,this.x,this.width),m=function(i){e.fillText(i,p.x(t.x+u),t.y+h/2),t.y+=h+n},g=p.textAlign(s);let f,v,b,y,x,w,_;for(e.textAlign=s,e.textBaseline="middle",e.font=c.string,t.x=n_(this,g,i),e.fillStyle=i.bodyColor,sf(this.beforeBody,m),u=r&&"right"!==g?"center"===s?l/2+d:l+2+d:0,y=0,w=o.length;y<w;++y){for(f=o[y],v=this.labelTextColors[y],e.fillStyle=v,sf(f.before,m),b=f.lines,r&&b.length&&(this._drawColorBox(e,t,y,p,i),h=Math.max(c.lineHeight,a)),x=0,_=b.length;x<_;++x)m(b[x]),h=c.lineHeight;sf(f.after,m)}u=0,h=c.lineHeight,sf(this.afterBody,m),t.y-=n}drawFooter(t,e,i){const o=this.footer,n=o.length;let s,r;if(n){const a=Eb(i.rtl,this.x,this.width);for(t.x=n_(this,i.footerAlign,i),t.y+=i.footerMarginTop,e.textAlign=a.textAlign(i.footerAlign),e.textBaseline="middle",s=jv(i.footerFont),e.fillStyle=i.footerColor,e.font=s.string,r=0;r<n;++r)e.fillText(o[r],a.x(t.x),t.y+s.lineHeight/2),t.y+=s.lineHeight+i.footerSpacing}}drawBackground(t,e,i,o){const{xAlign:n,yAlign:s}=this,{x:r,y:a}=t,{width:l,height:d}=i,{topLeft:c,topRight:h,bottomLeft:u,bottomRight:p}=qv(o.cornerRadius);e.fillStyle=o.backgroundColor,e.strokeStyle=o.borderColor,e.lineWidth=o.borderWidth,e.beginPath(),e.moveTo(r+c,a),"top"===s&&this.drawCaret(t,e,i,o),e.lineTo(r+l-h,a),e.quadraticCurveTo(r+l,a,r+l,a+h),"center"===s&&"right"===n&&this.drawCaret(t,e,i,o),e.lineTo(r+l,a+d-p),e.quadraticCurveTo(r+l,a+d,r+l-p,a+d),"bottom"===s&&this.drawCaret(t,e,i,o),e.lineTo(r+u,a+d),e.quadraticCurveTo(r,a+d,r,a+d-u),"center"===s&&"left"===n&&this.drawCaret(t,e,i,o),e.lineTo(r,a+c),e.quadraticCurveTo(r,a,r+c,a),e.closePath(),e.fill(),o.borderWidth>0&&e.stroke()}_updateAnimationTarget(t){const e=this.chart,i=this.$animations,o=i&&i.x,n=i&&i.y;if(o||n){const i=Gw[t.position].call(this,this._active,this._eventPosition);if(!i)return;const s=this._size=t_(this,t),r=Object.assign({},i,this._size),a=i_(e,t,r),l=o_(t,r,a,e);o._to===l.x&&n._to===l.y||(this.xAlign=a.xAlign,this.yAlign=a.yAlign,this.width=s.width,this.height=s.height,this.caretX=i.x,this.caretY=i.y,this._resolveAnimations().update(this,l))}}_willRender(){return!!this.opacity}draw(t){const e=this.options.setContext(this.getContext());let i=this.opacity;if(!i)return;this._updateAnimationTarget(e);const o={width:this.width,height:this.height},n={x:this.x,y:this.y};i=Math.abs(i)<.001?0:i;const s=Uv(e.padding),r=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;e.enabled&&r&&(t.save(),t.globalAlpha=i,this.drawBackground(n,t,o,e),Tb(t,e.textDirection),n.y+=s.top,this.drawTitle(n,t,e),this.drawBody(n,t,e),this.drawFooter(n,t,e),Db(t,e.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,e){const i=this._active,o=t.map(({datasetIndex:t,index:e})=>{const i=this.chart.getDatasetMeta(t);if(!i)throw new Error("Cannot find a dataset at index "+t);return{datasetIndex:t,element:i.data[e],index:e}}),n=!rf(i,o),s=this._positionChanged(o,e);(n||s)&&(this._active=o,this._eventPosition=e,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,e,i=!0){if(e&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const o=this.options,n=this._active||[],s=this._getActiveElements(t,n,e,i),r=this._positionChanged(s,t),a=e||!rf(s,n)||r;return a&&(this._active=s,(o.enabled||o.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,e))),a}_getActiveElements(t,e,i,o){const n=this.options;if("mouseout"===t.type)return[];if(!o)return e.filter(t=>this.chart.data.datasets[t.datasetIndex]&&void 0!==this.chart.getDatasetMeta(t.datasetIndex).controller.getParsed(t.index));const s=this.chart.getElementsAtEventForMode(t,n.mode,n,i);return n.reverse&&s.reverse(),s}_positionChanged(t,e){const{caretX:i,caretY:o,options:n}=this,s=Gw[n.position].call(this,t,e);return!1!==s&&(i!==s.x||o!==s.y)}}var c_={id:"tooltip",_element:d_,positioners:Gw,afterInit(t,e,i){i&&(t.tooltip=new d_({chart:t,options:i}))},beforeUpdate(t,e,i){t.tooltip&&t.tooltip.initialize(i)},reset(t,e,i){t.tooltip&&t.tooltip.initialize(i)},afterDraw(t){const e=t.tooltip;if(e&&e._willRender()){const i={tooltip:e};if(!1===t.notifyPlugins("beforeTooltipDraw",{...i,cancelable:!0}))return;e.draw(t.ctx),t.notifyPlugins("afterTooltipDraw",i)}},afterEvent(t,e){if(t.tooltip){const i=e.replay;t.tooltip.handleEvent(e.event,i,e.inChartArea)&&(e.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(t,e)=>e.bodyFont.size,boxWidth:(t,e)=>e.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:a_},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:t=>"filter"!==t&&"itemSort"!==t&&"external"!==t,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]},h_=Object.freeze({__proto__:null,Colors:xw,Decimation:kw,Filler:qw,Legend:Ww,SubTitle:Kw,Title:Zw,Tooltip:c_});function u_(t,e,i,o){const n=t.indexOf(e);if(-1===n)return((t,e,i,o)=>("string"==typeof e?(i=t.push(e)-1,o.unshift({index:i,label:e})):isNaN(e)&&(i=null),i))(t,e,i,o);return n!==t.lastIndexOf(e)?i:n}function p_(t){const e=this.getLabels();return t>=0&&t<e.length?e[t]:t}function m_(t,e){const i=[],{bounds:o,step:n,min:s,max:r,precision:a,count:l,maxTicks:d,maxDigits:c,includeBounds:h}=t,u=n||1,p=d-1,{min:m,max:g}=e,f=!Gg(s),v=!Gg(r),b=!Gg(l),y=(g-m)/(c+1);let x,w,_,k,C=Df((g-m)/p/u)*u;if(C<1e-14&&!f&&!v)return[{value:m},{value:g}];k=Math.ceil(g/C)-Math.floor(m/C),k>p&&(C=Df(k*C/p/u)*u),Gg(a)||(x=Math.pow(10,a),C=Math.ceil(C*x)/x),"ticks"===o?(w=Math.floor(m/C)*C,_=Math.ceil(g/C)*C):(w=m,_=g),f&&v&&n&&function(t,e){const i=Math.round(t);return i-e<=t&&i+e>=t}((r-s)/n,C/1e3)?(k=Math.round(Math.min((r-s)/C,d)),C=(r-s)/k,w=s,_=r):b?(w=f?s:w,_=v?r:_,k=l-1,C=(_-w)/k):(k=(_-w)/C,k=Tf(k,Math.round(k),C/1e3)?Math.round(k):Math.ceil(k));const S=Math.max(Lf(C),Lf(w));x=Math.pow(10,Gg(a)?S:a),w=Math.round(w*x)/x,_=Math.round(_*x)/x;let A=0;for(f&&(h&&w!==s?(i.push({value:s}),w<s&&A++,Tf(Math.round((w+A*C)*x)/x,s,g_(s,y,t))&&A++):w<s&&A++);A<k;++A){const t=Math.round((w+A*C)*x)/x;if(v&&t>r)break;i.push({value:t})}return v&&h&&_!==r?i.length&&Tf(i[i.length-1].value,r,g_(r,y,t))?i[i.length-1].value=r:i.push({value:r}):v&&_!==r||i.push({value:_}),i}function g_(t,e,{horizontal:i,minRotation:o}){const n=If(o),s=(i?Math.sin(n):Math.cos(n))||.001,r=.75*e*(""+t).length;return Math.min(e/s,r)}class f_ extends hx{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(t,e){return Gg(t)||("number"==typeof t||t instanceof Number)&&!isFinite(+t)?null:+t}handleTickRangeOptions(){const{beginAtZero:t}=this.options,{minDefined:e,maxDefined:i}=this.getUserBounds();let{min:o,max:n}=this;const s=t=>o=e?o:t,r=t=>n=i?n:t;if(t){const t=Ef(o),e=Ef(n);t<0&&e<0?r(0):t>0&&e>0&&s(0)}if(o===n){let e=0===n?1:Math.abs(.05*n);r(n+e),t||s(o-e)}this.min=o,this.max=n}getTickLimit(){const t=this.options.ticks;let e,{maxTicksLimit:i,stepSize:o}=t;return o?(e=Math.ceil(this.max/o)-Math.floor(this.min/o)+1,e>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${o} would result generating up to ${e} ticks. Limiting to 1000.`),e=1e3)):(e=this.computeTickLimit(),i=i||11),i&&(e=Math.min(i,e)),e}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const t=this.options,e=t.ticks;let i=this.getTickLimit();i=Math.max(2,i);const o=m_({maxTicks:i,bounds:t.bounds,min:t.min,max:t.max,precision:e.precision,step:e.stepSize,count:e.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:e.minRotation||0,includeBounds:!1!==e.includeBounds},this._range||this);return"ticks"===t.bounds&&zf(o,this,"value"),t.reverse?(o.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),o}configure(){const t=this.ticks;let e=this.min,i=this.max;if(super.configure(),this.options.offset&&t.length){const o=(i-e)/Math.max(t.length-1,1)/2;e-=o,i+=o}this._startValue=e,this._endValue=i,this._valueRange=i-e}getLabelForValue(t){return hv(t,this.chart.options.locale,this.options.ticks.format)}}class v_ extends f_{static id="linear";static defaults={ticks:{callback:pv.formatters.numeric}};determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=Jg(t)?t:0,this.max=Jg(e)?e:1,this.handleTickRangeOptions()}computeTickLimit(){const t=this.isHorizontal(),e=t?this.width:this.height,i=If(this.options.ticks.minRotation),o=(t?Math.sin(i):Math.cos(i))||.001,n=this._resolveTickFontOptions(0);return Math.ceil(e/Math.min(40,n.lineHeight/o))}getPixelForValue(t){return null===t?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getValueForPixel(t){return this._startValue+this.getDecimalForPixel(t)*this._valueRange}}const b_=t=>Math.floor($f(t)),y_=(t,e)=>Math.pow(10,b_(t)+e);function x_(t){return 1===t/Math.pow(10,b_(t))}function w_(t,e,i){const o=Math.pow(10,i),n=Math.floor(t/o);return Math.ceil(e/o)-n}function __(t,{min:e,max:i}){e=tf(t.min,e);const o=[],n=b_(e);let s=function(t,e){let i=b_(e-t);for(;w_(t,e,i)>10;)i++;for(;w_(t,e,i)<10;)i--;return Math.min(i,b_(t))}(e,i),r=s<0?Math.pow(10,Math.abs(s)):1;const a=Math.pow(10,s),l=n>s?Math.pow(10,n):0,d=Math.round((e-l)*r)/r,c=Math.floor((e-l)/a/10)*a*10;let h=Math.floor((d-c)/Math.pow(10,s)),u=tf(t.min,Math.round((l+c+h*Math.pow(10,s))*r)/r);for(;u<i;)o.push({value:u,major:x_(u),significand:h}),h>=10?h=h<15?15:20:h++,h>=20&&(s++,h=2,r=s>=0?1:r),u=Math.round((l+c+h*Math.pow(10,s))*r)/r;const p=tf(t.max,u);return o.push({value:p,major:x_(p),significand:h}),o}class k_ extends hx{static id="logarithmic";static defaults={ticks:{callback:pv.formatters.logarithmic,major:{enabled:!0}}};constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(t,e){const i=f_.prototype.parse.apply(this,[t,e]);if(0!==i)return Jg(i)&&i>0?i:null;this._zero=!0}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=Jg(t)?Math.max(0,t):null,this.max=Jg(e)?Math.max(0,e):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!Jg(this._userMin)&&(this.min=t===y_(this.min,0)?y_(this.min,-1):y_(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let i=this.min,o=this.max;const n=e=>i=t?i:e,s=t=>o=e?o:t;i===o&&(i<=0?(n(1),s(10)):(n(y_(i,-1)),s(y_(o,1)))),i<=0&&n(y_(o,-1)),o<=0&&s(y_(i,1)),this.min=i,this.max=o}buildTicks(){const t=this.options,e=__({min:this._userMin,max:this._userMax},this);return"ticks"===t.bounds&&zf(e,this,"value"),t.reverse?(e.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),e}getLabelForValue(t){return void 0===t?"0":hv(t,this.chart.options.locale,this.options.ticks.format)}configure(){const t=this.min;super.configure(),this._startValue=$f(t),this._valueRange=$f(this.max)-$f(t)}getPixelForValue(t){return void 0!==t&&0!==t||(t=this.min),null===t||isNaN(t)?NaN:this.getPixelForDecimal(t===this.min?0:($f(t)-this._startValue)/this._valueRange)}getValueForPixel(t){const e=this.getDecimalForPixel(t);return Math.pow(10,this._startValue+e*this._valueRange)}}function C_(t){const e=t.ticks;if(e.display&&t.display){const t=Uv(e.backdropPadding);return ef(e.font&&e.font.size,yv.font.size)+t.height}return 0}function S_(t,e,i){return i=Xg(i)?i:[i],{w:wv(t,e.string,i),h:i.length*e.lineHeight}}function A_(t,e,i,o,n){return t===o||t===n?{start:e-i/2,end:e+i/2}:t<o||t>n?{start:e-i,end:e}:{start:e,end:e+i}}function $_(t){const e={l:t.left+t._padding.left,r:t.right-t._padding.right,t:t.top+t._padding.top,b:t.bottom-t._padding.bottom},i=Object.assign({},e),o=[],n=[],s=t._pointLabels.length,r=t.options.pointLabels,a=r.centerPointLabels?yf/s:0;for(let l=0;l<s;l++){const s=r.setContext(t.getPointLabelContext(l));n[l]=s.padding;const d=t.getPointPosition(l,t.drawingArea+n[l],a),c=jv(s.font),h=S_(t.ctx,c,t._pointLabels[l]);o[l]=h;const u=Bf(t.getIndexAngle(l)+a),p=Math.round(Of(u));E_(i,e,u,A_(p,d.x,h.w,0,180),A_(p,d.y,h.h,90,270))}t.setCenterPoint(e.l-i.l,i.r-e.r,e.t-i.t,i.b-e.b),t._pointLabelItems=function(t,e,i){const o=[],n=t._pointLabels.length,s=t.options,{centerPointLabels:r,display:a}=s.pointLabels,l={extra:C_(s)/2,additionalAngle:r?yf/n:0};let d;for(let s=0;s<n;s++){l.padding=i[s],l.size=e[s];const n=T_(t,s,l);o.push(n),"auto"===a&&(n.visible=D_(n,d),n.visible&&(d=n))}return o}(t,o,n)}function E_(t,e,i,o,n){const s=Math.abs(Math.sin(i)),r=Math.abs(Math.cos(i));let a=0,l=0;o.start<e.l?(a=(e.l-o.start)/s,t.l=Math.min(t.l,e.l-a)):o.end>e.r&&(a=(o.end-e.r)/s,t.r=Math.max(t.r,e.r+a)),n.start<e.t?(l=(e.t-n.start)/r,t.t=Math.min(t.t,e.t-l)):n.end>e.b&&(l=(n.end-e.b)/r,t.b=Math.max(t.b,e.b+l))}function T_(t,e,i){const o=t.drawingArea,{extra:n,additionalAngle:s,padding:r,size:a}=i,l=t.getPointPosition(e,o+n+r,s),d=Math.round(Of(Bf(l.angle+Cf))),c=function(t,e,i){90===i||270===i?t-=e/2:(i>270||i<90)&&(t-=e);return t}(l.y,a.h,d),h=function(t){if(0===t||180===t)return"center";if(t<180)return"left";return"right"}(d),u=function(t,e,i){"right"===i?t-=e:"center"===i&&(t-=e/2);return t}(l.x,a.w,h);return{visible:!0,x:l.x,y:c,textAlign:h,left:u,top:c,right:u+a.w,bottom:c+a.h}}function D_(t,e){if(!e)return!0;const{left:i,top:o,right:n,bottom:s}=t;return!(Av({x:i,y:o},e)||Av({x:i,y:s},e)||Av({x:n,y:o},e)||Av({x:n,y:s},e))}function M_(t,e,i){const{left:o,top:n,right:s,bottom:r}=i,{backdropColor:a}=e;if(!Gg(a)){const i=qv(e.borderRadius),l=Uv(e.backdropPadding);t.fillStyle=a;const d=o-l.left,c=n-l.top,h=s-o+l.width,u=r-n+l.height;Object.values(i).some(t=>0!==t)?(t.beginPath(),Ov(t,{x:d,y:c,w:h,h:u,radius:i}),t.fill()):t.fillRect(d,c,h,u)}}function z_(t,e,i,o){const{ctx:n}=t;if(i)n.arc(t.xCenter,t.yCenter,e,0,xf);else{let i=t.getPointPosition(0,e);n.moveTo(i.x,i.y);for(let s=1;s<o;s++)i=t.getPointPosition(s,e),n.lineTo(i.x,i.y)}}class I_ extends f_{static id="radialLinear";static defaults={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:pv.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback:t=>t,padding:5,centerPointLabels:!1}};static defaultRoutes={"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"};static descriptors={angleLines:{_fallback:"grid"}};constructor(t){super(t),this.xCenter=void 0,this.yCenter=void 0,this.drawingArea=void 0,this._pointLabels=[],this._pointLabelItems=[]}setDimensions(){const t=this._padding=Uv(C_(this.options)/2),e=this.width=this.maxWidth-t.width,i=this.height=this.maxHeight-t.height;this.xCenter=Math.floor(this.left+e/2+t.left),this.yCenter=Math.floor(this.top+i/2+t.top),this.drawingArea=Math.floor(Math.min(e,i)/2)}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!1);this.min=Jg(t)&&!isNaN(t)?t:0,this.max=Jg(e)&&!isNaN(e)?e:0,this.handleTickRangeOptions()}computeTickLimit(){return Math.ceil(this.drawingArea/C_(this.options))}generateTickLabels(t){f_.prototype.generateTickLabels.call(this,t),this._pointLabels=this.getLabels().map((t,e)=>{const i=nf(this.options.pointLabels.callback,[t,e],this);return i||0===i?i:""}).filter((t,e)=>this.chart.getDataVisibility(e))}fit(){const t=this.options;t.display&&t.pointLabels.display?$_(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(t,e,i,o){this.xCenter+=Math.floor((t-e)/2),this.yCenter+=Math.floor((i-o)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(t,e,i,o))}getIndexAngle(t){return Bf(t*(xf/(this._pointLabels.length||1))+If(this.options.startAngle||0))}getDistanceFromCenterForValue(t){if(Gg(t))return NaN;const e=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-t)*e:(t-this.min)*e}getValueForDistanceFromCenter(t){if(Gg(t))return NaN;const e=t/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-e:this.min+e}getPointLabelContext(t){const e=this._pointLabels||[];if(t>=0&&t<e.length){const i=e[t];return function(t,e,i){return Wv(t,{label:i,index:e,type:"pointLabel"})}(this.getContext(),t,i)}}getPointPosition(t,e,i=0){const o=this.getIndexAngle(t)-Cf+i;return{x:Math.cos(o)*e+this.xCenter,y:Math.sin(o)*e+this.yCenter,angle:o}}getPointPositionForValue(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))}getBasePosition(t){return this.getPointPositionForValue(t||0,this.getBaseValue())}getPointLabelPosition(t){const{left:e,top:i,right:o,bottom:n}=this._pointLabelItems[t];return{left:e,top:i,right:o,bottom:n}}drawBackground(){const{backgroundColor:t,grid:{circular:e}}=this.options;if(t){const i=this.ctx;i.save(),i.beginPath(),z_(this,this.getDistanceFromCenterForValue(this._endValue),e,this._pointLabels.length),i.closePath(),i.fillStyle=t,i.fill(),i.restore()}}drawGrid(){const t=this.ctx,e=this.options,{angleLines:i,grid:o,border:n}=e,s=this._pointLabels.length;let r,a,l;if(e.pointLabels.display&&function(t,e){const{ctx:i,options:{pointLabels:o}}=t;for(let n=e-1;n>=0;n--){const e=t._pointLabelItems[n];if(!e.visible)continue;const s=o.setContext(t.getPointLabelContext(n));M_(i,s,e);const r=jv(s.font),{x:a,y:l,textAlign:d}=e;Iv(i,t._pointLabels[n],a,l+r.lineHeight/2,r,{color:s.color,textAlign:d,textBaseline:"middle"})}}(this,s),o.display&&this.ticks.forEach((t,e)=>{if(0!==e||0===e&&this.min<0){a=this.getDistanceFromCenterForValue(t.value);const i=this.getContext(e),r=o.setContext(i),l=n.setContext(i);!function(t,e,i,o,n){const s=t.ctx,r=e.circular,{color:a,lineWidth:l}=e;!r&&!o||!a||!l||i<0||(s.save(),s.strokeStyle=a,s.lineWidth=l,s.setLineDash(n.dash||[]),s.lineDashOffset=n.dashOffset,s.beginPath(),z_(t,i,r,o),s.closePath(),s.stroke(),s.restore())}(this,r,a,s,l)}}),i.display){for(t.save(),r=s-1;r>=0;r--){const o=i.setContext(this.getPointLabelContext(r)),{color:n,lineWidth:s}=o;s&&n&&(t.lineWidth=s,t.strokeStyle=n,t.setLineDash(o.borderDash),t.lineDashOffset=o.borderDashOffset,a=this.getDistanceFromCenterForValue(e.reverse?this.min:this.max),l=this.getPointPosition(r,a),t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(l.x,l.y),t.stroke())}t.restore()}}drawBorder(){}drawLabels(){const t=this.ctx,e=this.options,i=e.ticks;if(!i.display)return;const o=this.getIndexAngle(0);let n,s;t.save(),t.translate(this.xCenter,this.yCenter),t.rotate(o),t.textAlign="center",t.textBaseline="middle",this.ticks.forEach((o,r)=>{if(0===r&&this.min>=0&&!e.reverse)return;const a=i.setContext(this.getContext(r)),l=jv(a.font);if(n=this.getDistanceFromCenterForValue(this.ticks[r].value),a.showLabelBackdrop){t.font=l.string,s=t.measureText(o.label).width,t.fillStyle=a.backdropColor;const e=Uv(a.backdropPadding);t.fillRect(-s/2-e.left,-n-l.size/2-e.top,s+e.width,l.size+e.height)}Iv(t,o.label,0,-n,l,{color:a.color,strokeColor:a.textStrokeColor,strokeWidth:a.textStrokeWidth})}),t.restore()}drawTitle(){}}const O_={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},L_=Object.keys(O_);function P_(t,e){return t-e}function R_(t,e){if(Gg(e))return null;const i=t._adapter,{parser:o,round:n,isoWeekday:s}=t._parseOpts;let r=e;return"function"==typeof o&&(r=o(r)),Jg(r)||(r="string"==typeof o?i.parse(r,o):i.parse(r)),null===r?null:(n&&(r="week"!==n||!Mf(s)&&!0!==s?i.startOf(r,n):i.startOf(r,"isoWeek",s)),+r)}function N_(t,e,i,o){const n=L_.length;for(let s=L_.indexOf(t);s<n-1;++s){const t=O_[L_[s]],n=t.steps?t.steps:Number.MAX_SAFE_INTEGER;if(t.common&&Math.ceil((i-e)/(n*t.size))<=o)return L_[s]}return L_[n-1]}function B_(t,e,i){if(i){if(i.length){const{lo:o,hi:n}=jf(i,e);t[i[o]>=e?i[o]:i[n]]=!0}}else t[e]=!0}function F_(t,e,i){const o=[],n={},s=e.length;let r,a;for(r=0;r<s;++r)a=e[r],n[a]=r,o.push({value:a,major:!1});return 0!==s&&i?function(t,e,i,o){const n=t._adapter,s=+n.startOf(e[0].value,o),r=e[e.length-1].value;let a,l;for(a=s;a<=r;a=+n.add(a,1,o))l=i[a],l>=0&&(e[l].major=!0);return e}(t,o,n,i):o}class q_ extends hx{static id="time";static defaults={bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",callback:!1,major:{enabled:!1}}};constructor(t){super(t),this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(t,e={}){const i=t.time||(t.time={}),o=this._adapter=new vy._date(t.adapters.date);o.init(e),hf(i.displayFormats,o.formats()),this._parseOpts={parser:i.parser,round:i.round,isoWeekday:i.isoWeekday},super.init(t),this._normalized=e.normalized}parse(t,e){return void 0===t?null:R_(this,t)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){const t=this.options,e=this._adapter,i=t.time.unit||"day";let{min:o,max:n,minDefined:s,maxDefined:r}=this.getUserBounds();function a(t){s||isNaN(t.min)||(o=Math.min(o,t.min)),r||isNaN(t.max)||(n=Math.max(n,t.max))}s&&r||(a(this._getLabelBounds()),"ticks"===t.bounds&&"labels"===t.ticks.source||a(this.getMinMax(!1))),o=Jg(o)&&!isNaN(o)?o:+e.startOf(Date.now(),i),n=Jg(n)&&!isNaN(n)?n:+e.endOf(Date.now(),i)+1,this.min=Math.min(o,n-1),this.max=Math.max(o+1,n)}_getLabelBounds(){const t=this.getLabelTimestamps();let e=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;return t.length&&(e=t[0],i=t[t.length-1]),{min:e,max:i}}buildTicks(){const t=this.options,e=t.time,i=t.ticks,o="labels"===i.source?this.getLabelTimestamps():this._generate();"ticks"===t.bounds&&o.length&&(this.min=this._userMin||o[0],this.max=this._userMax||o[o.length-1]);const n=this.min,s=function(t,e,i){let o=0,n=t.length;for(;o<n&&t[o]<e;)o++;for(;n>o&&t[n-1]>i;)n--;return o>0||n<t.length?t.slice(o,n):t}(o,n,this.max);return this._unit=e.unit||(i.autoSkip?N_(e.minUnit,this.min,this.max,this._getLabelCapacity(n)):function(t,e,i,o,n){for(let s=L_.length-1;s>=L_.indexOf(i);s--){const i=L_[s];if(O_[i].common&&t._adapter.diff(n,o,i)>=e-1)return i}return L_[i?L_.indexOf(i):0]}(this,s.length,e.minUnit,this.min,this.max)),this._majorUnit=i.major.enabled&&"year"!==this._unit?function(t){for(let e=L_.indexOf(t)+1,i=L_.length;e<i;++e)if(O_[L_[e]].common)return L_[e]}(this._unit):void 0,this.initOffsets(o),t.reverse&&s.reverse(),F_(this,s,this._majorUnit)}afterAutoSkip(){this.options.offsetAfterAutoskip&&this.initOffsets(this.ticks.map(t=>+t.value))}initOffsets(t=[]){let e,i,o=0,n=0;this.options.offset&&t.length&&(e=this.getDecimalForValue(t[0]),o=1===t.length?1-e:(this.getDecimalForValue(t[1])-e)/2,i=this.getDecimalForValue(t[t.length-1]),n=1===t.length?i:(i-this.getDecimalForValue(t[t.length-2]))/2);const s=t.length<3?.5:.25;o=qf(o,0,s),n=qf(n,0,s),this._offsets={start:o,end:n,factor:1/(o+1+n)}}_generate(){const t=this._adapter,e=this.min,i=this.max,o=this.options,n=o.time,s=n.unit||N_(n.minUnit,e,i,this._getLabelCapacity(e)),r=ef(o.ticks.stepSize,1),a="week"===s&&n.isoWeekday,l=Mf(a)||!0===a,d={};let c,h,u=e;if(l&&(u=+t.startOf(u,"isoWeek",a)),u=+t.startOf(u,l?"day":s),t.diff(i,e,s)>1e5*r)throw new Error(e+" and "+i+" are too far apart with stepSize of "+r+" "+s);const p="data"===o.ticks.source&&this.getDataTimestamps();for(c=u,h=0;c<i;c=+t.add(c,r,s),h++)B_(d,c,p);return c!==i&&"ticks"!==o.bounds&&1!==h||B_(d,c,p),Object.keys(d).sort(P_).map(t=>+t)}getLabelForValue(t){const e=this._adapter,i=this.options.time;return i.tooltipFormat?e.format(t,i.tooltipFormat):e.format(t,i.displayFormats.datetime)}format(t,e){const i=this.options.time.displayFormats,o=this._unit,n=e||i[o];return this._adapter.format(t,n)}_tickFormatFunction(t,e,i,o){const n=this.options,s=n.ticks.callback;if(s)return nf(s,[t,e,i],this);const r=n.time.displayFormats,a=this._unit,l=this._majorUnit,d=a&&r[a],c=l&&r[l],h=i[e],u=l&&c&&h&&h.major;return this._adapter.format(t,o||(u?c:d))}generateTickLabels(t){let e,i,o;for(e=0,i=t.length;e<i;++e)o=t[e],o.label=this._tickFormatFunction(o.value,e,t)}getDecimalForValue(t){return null===t?NaN:(t-this.min)/(this.max-this.min)}getPixelForValue(t){const e=this._offsets,i=this.getDecimalForValue(t);return this.getPixelForDecimal((e.start+i)*e.factor)}getValueForPixel(t){const e=this._offsets,i=this.getDecimalForPixel(t)/e.factor-e.end;return this.min+i*(this.max-this.min)}_getLabelSize(t){const e=this.options.ticks,i=this.ctx.measureText(t).width,o=If(this.isHorizontal()?e.maxRotation:e.minRotation),n=Math.cos(o),s=Math.sin(o),r=this._resolveTickFontOptions(0).size;return{w:i*n+r*s,h:i*s+r*n}}_getLabelCapacity(t){const e=this.options.time,i=e.displayFormats,o=i[e.unit]||i.millisecond,n=this._tickFormatFunction(t,0,F_(this,[t],this._majorUnit),o),s=this._getLabelSize(n),r=Math.floor(this.isHorizontal()?this.width/s.w:this.height/s.h)-1;return r>0?r:1}getDataTimestamps(){let t,e,i=this._cache.data||[];if(i.length)return i;const o=this.getMatchingVisibleMetas();if(this._normalized&&o.length)return this._cache.data=o[0].controller.getAllParsedValues(this);for(t=0,e=o.length;t<e;++t)i=i.concat(o[t].controller.getAllParsedValues(this));return this._cache.data=this.normalize(i)}getLabelTimestamps(){const t=this._cache.labels||[];let e,i;if(t.length)return t;const o=this.getLabels();for(e=0,i=o.length;e<i;++e)t.push(R_(this,o[e]));return this._cache.labels=this._normalized?t:this.normalize(t)}normalize(t){return Yf(t.sort(P_))}}function U_(t,e,i){let o,n,s,r,a=0,l=t.length-1;i?(e>=t[a].pos&&e<=t[l].pos&&({lo:a,hi:l}=Hf(t,"pos",e)),({pos:o,time:s}=t[a]),({pos:n,time:r}=t[l])):(e>=t[a].time&&e<=t[l].time&&({lo:a,hi:l}=Hf(t,"time",e)),({time:o,pos:s}=t[a]),({time:n,pos:r}=t[l]));const d=n-o;return d?s+(r-s)*(e-o)/d:s}var j_=Object.freeze({__proto__:null,CategoryScale:class extends hx{static id="category";static defaults={ticks:{callback:p_}};constructor(t){super(t),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(t){const e=this._addedLabels;if(e.length){const t=this.getLabels();for(const{index:i,label:o}of e)t[i]===o&&t.splice(i,1);this._addedLabels=[]}super.init(t)}parse(t,e){if(Gg(t))return null;const i=this.getLabels();return((t,e)=>null===t?null:qf(Math.round(t),0,e))(e=isFinite(e)&&i[e]===t?e:u_(i,t,ef(e,t),this._addedLabels),i.length-1)}determineDataLimits(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let{min:i,max:o}=this.getMinMax(!0);"ticks"===this.options.bounds&&(t||(i=0),e||(o=this.getLabels().length-1)),this.min=i,this.max=o}buildTicks(){const t=this.min,e=this.max,i=this.options.offset,o=[];let n=this.getLabels();n=0===t&&e===n.length-1?n:n.slice(t,e+1),this._valueRange=Math.max(n.length-(i?0:1),1),this._startValue=this.min-(i?.5:0);for(let i=t;i<=e;i++)o.push({value:i});return o}getLabelForValue(t){return p_.call(this,t)}configure(){super.configure(),this.isHorizontal()||(this._reversePixels=!this._reversePixels)}getPixelForValue(t){return"number"!=typeof t&&(t=this.parse(t)),null===t?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}},LinearScale:v_,LogarithmicScale:k_,RadialLinearScale:I_,TimeScale:q_,TimeSeriesScale:class extends q_{static id="timeseries";static defaults=q_.defaults;constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const t=this._getTimestampsForTable(),e=this._table=this.buildLookupTable(t);this._minPos=U_(e,this.min),this._tableRange=U_(e,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){const{min:e,max:i}=this,o=[],n=[];let s,r,a,l,d;for(s=0,r=t.length;s<r;++s)l=t[s],l>=e&&l<=i&&o.push(l);if(o.length<2)return[{time:e,pos:0},{time:i,pos:1}];for(s=0,r=o.length;s<r;++s)d=o[s+1],a=o[s-1],l=o[s],Math.round((d+a)/2)!==l&&n.push({time:l,pos:s/(r-1)});return n}_generate(){const t=this.min,e=this.max;let i=super.getDataTimestamps();return i.includes(t)&&i.length||i.splice(0,0,t),i.includes(e)&&1!==i.length||i.push(e),i.sort((t,e)=>t-e)}_getTimestampsForTable(){let t=this._cache.all||[];if(t.length)return t;const e=this.getDataTimestamps(),i=this.getLabelTimestamps();return t=e.length&&i.length?this.normalize(e.concat(i)):e.length?e:i,t=this._cache.all=t,t}getDecimalForValue(t){return(U_(this._table,t)-this._minPos)/this._tableRange}getValueForPixel(t){const e=this._offsets,i=this.getDecimalForPixel(t)/e.factor-e.end;return U_(this._table,i*this._tableRange+this._minPos,!0)}}});const H_=[my,pw,h_,j_];Ux.register(...H_);
|
|
12246
|
+
*/class Bb{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(t,e,i,o){const n=e.listeners[o],s=e.duration;n.forEach(o=>o({chart:t,initial:e.initial,numSteps:s,currentStep:Math.min(i-e.start,s)}))}_refresh(){this._request||(this._running=!0,this._request=Yf.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(t=Date.now()){let e=0;this._charts.forEach((i,o)=>{if(!i.running||!i.items.length)return;const n=i.items;let s,r=n.length-1,a=!1;for(;r>=0;--r)s=n[r],s._active?(s._total>i.duration&&(i.duration=s._total),s.tick(t),a=!0):(n[r]=n[n.length-1],n.pop());a&&(o.draw(),this._notify(o,i,t,"progress")),n.length||(i.running=!1,this._notify(o,i,t,"complete"),i.initial=!1),e+=n.length}),this._lastDate=t,0===e&&(this._running=!1)}_getAnims(t){const e=this._charts;let i=e.get(t);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},e.set(t,i)),i}listen(t,e,i){this._getAnims(t).listeners[e].push(i)}add(t,e){e&&e.length&&this._getAnims(t).items.push(...e)}has(t){return this._getAnims(t).items.length>0}start(t){const e=this._charts.get(t);e&&(e.running=!0,e.start=Date.now(),e.duration=e.items.reduce((t,e)=>Math.max(t,e._duration),0),this._refresh())}running(t){if(!this._running)return!1;const e=this._charts.get(t);return!!(e&&e.running&&e.items.length)}stop(t){const e=this._charts.get(t);if(!e||!e.items.length)return;const i=e.items;let o=i.length-1;for(;o>=0;--o)i[o].cancel();e.items=[],this._notify(t,e,Date.now(),"complete")}remove(t){return this._charts.delete(t)}}var Fb=new Bb;const qb="transparent",Ub={boolean:(t,e,i)=>i>.5?e:t,color(t,e,i){const o=sv(t||qb),n=o.valid&&sv(e||qb);return n&&n.valid?n.mix(o,i).hexString():e},number:(t,e,i)=>t+(e-t)*i};class jb{constructor(t,e,i,o){const n=e[i];o=jv([t.to,o,n,t.from]);const s=jv([t.from,n,o]);this._active=!0,this._fn=t.fn||Ub[t.type||typeof s],this._easing=ov[t.easing]||ov.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=e,this._prop=i,this._from=s,this._to=o,this._promises=void 0}active(){return this._active}update(t,e,i){if(this._active){this._notify(!1);const o=this._target[this._prop],n=i-this._start,s=this._duration-n;this._start=i,this._duration=Math.floor(Math.max(s,t.duration)),this._total+=n,this._loop=!!t.loop,this._to=jv([t.to,e,o,t.from]),this._from=jv([t.from,o,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){const e=t-this._start,i=this._duration,o=this._prop,n=this._from,s=this._loop,r=this._to;let a;if(this._active=n!==r&&(s||e<i),!this._active)return this._target[o]=r,void this._notify(!0);e<0?this._target[o]=n:(a=e/i%2,a=s&&a>1?2-a:a,a=this._easing(Math.min(1,Math.max(0,a))),this._target[o]=this._fn(n,r,a))}wait(){const t=this._promises||(this._promises=[]);return new Promise((e,i)=>{t.push({res:e,rej:i})})}_notify(t){const e=t?"res":"rej",i=this._promises||[];for(let t=0;t<i.length;t++)i[t][e]()}}class Hb{constructor(t,e){this._chart=t,this._properties=new Map,this.configure(e)}configure(t){if(!Xg(t))return;const e=Object.keys(bv.animation),i=this._properties;Object.getOwnPropertyNames(t).forEach(o=>{const n=t[o];if(!Xg(n))return;const s={};for(const t of e)s[t]=n[t];(Gg(n.properties)&&n.properties||[o]).forEach(t=>{t!==o&&i.has(t)||i.set(t,s)})})}_animateOptions(t,e){const i=e.options,o=function(t,e){if(!e)return;let i=t.options;if(!i)return void(t.options=e);i.$shared&&(t.options=i=Object.assign({},i,{$shared:!1,$animations:{}}));return i}(t,i);if(!o)return[];const n=this._createAnimations(o,i);return i.$shared&&function(t,e){const i=[],o=Object.keys(e);for(let e=0;e<o.length;e++){const n=t[o[e]];n&&n.active()&&i.push(n.wait())}return Promise.all(i)}(t.options.$animations,i).then(()=>{t.options=i},()=>{}),n}_createAnimations(t,e){const i=this._properties,o=[],n=t.$animations||(t.$animations={}),s=Object.keys(e),r=Date.now();let a;for(a=s.length-1;a>=0;--a){const l=s[a];if("$"===l.charAt(0))continue;if("options"===l){o.push(...this._animateOptions(t,e));continue}const d=e[l];let c=n[l];const h=i.get(l);if(c){if(h&&c.active()){c.update(h,d,r);continue}c.cancel()}h&&h.duration?(n[l]=c=new jb(h,t,l,d),o.push(c)):t[l]=d}return o}update(t,e){if(0===this._properties.size)return void Object.assign(t,e);const i=this._createAnimations(t,e);return i.length?(Fb.add(this._chart,i),!0):void 0}}function Wb(t,e){const i=t&&t.options||{},o=i.reverse,n=void 0===i.min?e:0,s=void 0===i.max?e:0;return{start:o?s:n,end:o?n:s}}function Vb(t,e){const i=[],o=t._getSortedDatasetMetas(e);let n,s;for(n=0,s=o.length;n<s;++n)i.push(o[n].index);return i}function Zb(t,e,i,o={}){const n=t.keys,s="single"===o.mode;let r,a,l,d;if(null===e)return;let c=!1;for(r=0,a=n.length;r<a;++r){if(l=+n[r],l===i){if(c=!0,o.all)continue;break}d=t.values[l],Qg(d)&&(s||0===e||$f(e)===$f(d))&&(e+=d)}return c||o.all?e:0}function Yb(t,e){const i=t&&t.options.stacked;return i||void 0===i&&void 0!==e.stack}function Kb(t,e,i){const o=t[e]||(t[e]={});return o[i]||(o[i]={})}function Gb(t,e,i,o){for(const n of e.getMatchingVisibleMetas(o).reverse()){const e=t[n.index];if(i&&e>0||!i&&e<0)return n.index}return null}function Xb(t,e){const{chart:i,_cachedMeta:o}=t,n=i._stacks||(i._stacks={}),{iScale:s,vScale:r,index:a}=o,l=s.axis,d=r.axis,c=function(t,e,i){return`${t.id}.${e.id}.${i.stack||i.type}`}(s,r,o),h=e.length;let u;for(let t=0;t<h;++t){const i=e[t],{[l]:s,[d]:h}=i;u=(i._stacks||(i._stacks={}))[d]=Kb(n,c,s),u[a]=h,u._top=Gb(u,r,!0,o.type),u._bottom=Gb(u,r,!1,o.type);(u._visualValues||(u._visualValues={}))[a]=h}}function Qb(t,e){const i=t.scales;return Object.keys(i).filter(t=>i[t].axis===e).shift()}function Jb(t,e){const i=t.controller.index,o=t.vScale&&t.vScale.axis;if(o){e=e||t._parsed;for(const t of e){const e=t._stacks;if(!e||void 0===e[o]||void 0===e[o][i])return;delete e[o][i],void 0!==e[o]._visualValues&&void 0!==e[o]._visualValues[i]&&delete e[o]._visualValues[i]}}}const ty=t=>"reset"===t||"none"===t,ey=(t,e)=>e?t:Object.assign({},t);class iy{static defaults={};static datasetElementType=null;static dataElementType=null;constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=Yb(t.vScale,t),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(t){this.index!==t&&Jb(this._cachedMeta),this.index=t}linkScales(){const t=this.chart,e=this._cachedMeta,i=this.getDataset(),o=(t,e,i,o)=>"x"===t?e:"r"===t?o:i,n=e.xAxisID=tf(i.xAxisID,Qb(t,"x")),s=e.yAxisID=tf(i.yAxisID,Qb(t,"y")),r=e.rAxisID=tf(i.rAxisID,Qb(t,"r")),a=e.indexAxis,l=e.iAxisID=o(a,n,s,r),d=e.vAxisID=o(a,s,n,r);e.xScale=this.getScaleForId(n),e.yScale=this.getScaleForId(s),e.rScale=this.getScaleForId(r),e.iScale=this.getScaleForId(l),e.vScale=this.getScaleForId(d)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){const e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update("reset")}_destroy(){const t=this._cachedMeta;this._data&&Vf(this._data,this),t._stacked&&Jb(t)}_dataCheck(){const t=this.getDataset(),e=t.data||(t.data=[]),i=this._data;if(Xg(e)){const t=this._cachedMeta;this._data=function(t,e){const{iScale:i,vScale:o}=e,n="x"===i.axis?"x":"y",s="x"===o.axis?"x":"y",r=Object.keys(t),a=new Array(r.length);let l,d,c;for(l=0,d=r.length;l<d;++l)c=r[l],a[l]={[n]:c,[s]:t[c]};return a}(e,t)}else if(i!==e){if(i){Vf(i,this);const t=this._cachedMeta;Jb(t),t._parsed=[]}e&&Object.isExtensible(e)&&(n=this,(o=e)._chartjs?o._chartjs.listeners.push(n):(Object.defineProperty(o,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[n]}}),Wf.forEach(t=>{const e="_onData"+mf(t),i=o[t];Object.defineProperty(o,t,{configurable:!0,enumerable:!1,value(...t){const n=i.apply(this,t);return o._chartjs.listeners.forEach(i=>{"function"==typeof i[e]&&i[e](...t)}),n}})}))),this._syncList=[],this._data=e}var o,n}addElements(){const t=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(t.dataset=new this.datasetElementType)}buildOrUpdateElements(t){const e=this._cachedMeta,i=this.getDataset();let o=!1;this._dataCheck();const n=e._stacked;e._stacked=Yb(e.vScale,e),e.stack!==i.stack&&(o=!0,Jb(e),e.stack=i.stack),this._resyncElements(t),(o||n!==e._stacked)&&(Xb(this,e._parsed),e._stacked=Yb(e.vScale,e))}configure(){const t=this.chart.config,e=t.datasetScopeKeys(this._type),i=t.getOptionScopes(this.getDataset(),e,!0);this.options=t.createResolver(i,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(t,e){const{_cachedMeta:i,_data:o}=this,{iScale:n,_stacked:s}=i,r=n.axis;let a,l,d,c=0===t&&e===o.length||i._sorted,h=t>0&&i._parsed[t-1];if(!1===this._parsing)i._parsed=o,i._sorted=!0,d=o;else{d=Gg(o[t])?this.parseArrayData(i,o,t,e):Xg(o[t])?this.parseObjectData(i,o,t,e):this.parsePrimitiveData(i,o,t,e);const n=()=>null===l[r]||h&&l[r]<h[r];for(a=0;a<e;++a)i._parsed[a+t]=l=d[a],c&&(n()&&(c=!1),h=l);i._sorted=c}s&&Xb(this,d)}parsePrimitiveData(t,e,i,o){const{iScale:n,vScale:s}=t,r=n.axis,a=s.axis,l=n.getLabels(),d=n===s,c=new Array(o);let h,u,p;for(h=0,u=o;h<u;++h)p=h+i,c[h]={[r]:d||n.parse(l[p],p),[a]:s.parse(e[p],p)};return c}parseArrayData(t,e,i,o){const{xScale:n,yScale:s}=t,r=new Array(o);let a,l,d,c;for(a=0,l=o;a<l;++a)d=a+i,c=e[d],r[a]={x:n.parse(c[0],d),y:s.parse(c[1],d)};return r}parseObjectData(t,e,i,o){const{xScale:n,yScale:s}=t,{xAxisKey:r="x",yAxisKey:a="y"}=this._parsing,l=new Array(o);let d,c,h,u;for(d=0,c=o;d<c;++d)h=d+i,u=e[h],l[d]={x:n.parse(pf(u,r),h),y:s.parse(pf(u,a),h)};return l}getParsed(t){return this._cachedMeta._parsed[t]}getDataElement(t){return this._cachedMeta.data[t]}applyStack(t,e,i){const o=this.chart,n=this._cachedMeta,s=e[t.axis];return Zb({keys:Vb(o,!0),values:e._stacks[t.axis]._visualValues},s,n.index,{mode:i})}updateRangeFromParsed(t,e,i,o){const n=i[e.axis];let s=null===n?NaN:n;const r=o&&i._stacks[e.axis];o&&r&&(o.values=r,s=Zb(o,n,this._cachedMeta.index)),t.min=Math.min(t.min,s),t.max=Math.max(t.max,s)}getMinMax(t,e){const i=this._cachedMeta,o=i._parsed,n=i._sorted&&t===i.iScale,s=o.length,r=this._getOtherScale(t),a=((t,e,i)=>t&&!e.hidden&&e._stacked&&{keys:Vb(i,!0),values:null})(e,i,this.chart),l={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY},{min:d,max:c}=function(t){const{min:e,max:i,minDefined:o,maxDefined:n}=t.getUserBounds();return{min:o?e:Number.NEGATIVE_INFINITY,max:n?i:Number.POSITIVE_INFINITY}}(r);let h,u;function p(){u=o[h];const e=u[r.axis];return!Qg(u[t.axis])||d>e||c<e}for(h=0;h<s&&(p()||(this.updateRangeFromParsed(l,t,u,a),!n));++h);if(n)for(h=s-1;h>=0;--h)if(!p()){this.updateRangeFromParsed(l,t,u,a);break}return l}getAllParsedValues(t){const e=this._cachedMeta._parsed,i=[];let o,n,s;for(o=0,n=e.length;o<n;++o)s=e[o][t.axis],Qg(s)&&i.push(s);return i}getMaxOverflow(){return!1}getLabelAndValue(t){const e=this._cachedMeta,i=e.iScale,o=e.vScale,n=this.getParsed(t);return{label:i?""+i.getLabelForValue(n[i.axis]):"",value:o?""+o.getLabelForValue(n[o.axis]):""}}_update(t){const e=this._cachedMeta;this.update(t||"default"),e._clip=function(t){let e,i,o,n;return Xg(t)?(e=t.top,i=t.right,o=t.bottom,n=t.left):e=i=o=n=t,{top:e,right:i,bottom:o,left:n,disabled:!1===t}}(tf(this.options.clip,function(t,e,i){if(!1===i)return!1;const o=Wb(t,i),n=Wb(e,i);return{top:n.end,right:o.end,bottom:n.start,left:o.start}}(e.xScale,e.yScale,this.getMaxOverflow())))}update(t){}draw(){const t=this._ctx,e=this.chart,i=this._cachedMeta,o=i.data||[],n=e.chartArea,s=[],r=this._drawStart||0,a=this._drawCount||o.length-r,l=this.options.drawActiveElementsOnTop;let d;for(i.dataset&&i.dataset.draw(t,n,r,a),d=r;d<r+a;++d){const e=o[d];e.hidden||(e.active&&l?s.push(e):e.draw(t,n))}for(d=0;d<s.length;++d)s[d].draw(t,n)}getStyle(t,e){const i=e?"active":"default";return void 0===t&&this._cachedMeta.dataset?this.resolveDatasetElementOptions(i):this.resolveDataElementOptions(t||0,i)}getContext(t,e,i){const o=this.getDataset();let n;if(t>=0&&t<this._cachedMeta.data.length){const e=this._cachedMeta.data[t];n=e.$context||(e.$context=function(t,e,i){return Hv(t,{active:!1,dataIndex:e,parsed:void 0,raw:void 0,element:i,index:e,mode:"default",type:"data"})}(this.getContext(),t,e)),n.parsed=this.getParsed(t),n.raw=o.data[t],n.index=n.dataIndex=t}else n=this.$context||(this.$context=function(t,e){return Hv(t,{active:!1,dataset:void 0,datasetIndex:e,index:e,mode:"default",type:"dataset"})}(this.chart.getContext(),this.index)),n.dataset=o,n.index=n.datasetIndex=this.index;return n.active=!!e,n.mode=i,n}resolveDatasetElementOptions(t){return this._resolveElementOptions(this.datasetElementType.id,t)}resolveDataElementOptions(t,e){return this._resolveElementOptions(this.dataElementType.id,e,t)}_resolveElementOptions(t,e="default",i){const o="active"===e,n=this._cachedDataOpts,s=t+"-"+e,r=n[s],a=this.enableOptionSharing&&gf(i);if(r)return ey(r,a);const l=this.chart.config,d=l.datasetElementScopeKeys(this._type,t),c=o?[`${t}Hover`,"hover",t,""]:[t,""],h=l.getOptionScopes(this.getDataset(),d),u=Object.keys(bv.elements[t]),p=l.resolveNamedOptions(h,u,()=>this.getContext(i,o,e),c);return p.$shared&&(p.$shared=a,n[s]=Object.freeze(ey(p,a))),p}_resolveAnimations(t,e,i){const o=this.chart,n=this._cachedDataOpts,s=`animation-${e}`,r=n[s];if(r)return r;let a;if(!1!==o.options.animation){const o=this.chart.config,n=o.datasetAnimationScopeKeys(this._type,e),s=o.getOptionScopes(this.getDataset(),n);a=o.createResolver(s,this.getContext(t,i,e))}const l=new Hb(o,a&&a.animations);return a&&a._cacheable&&(n[s]=Object.freeze(l)),l}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,e){return!e||ty(t)||this.chart._animationsDisabled}_getSharedOptions(t,e){const i=this.resolveDataElementOptions(t,e),o=this._sharedOptions,n=this.getSharedOptions(i),s=this.includeOptions(e,n)||n!==o;return this.updateSharedOptions(n,e,i),{sharedOptions:n,includeOptions:s}}updateElement(t,e,i,o){ty(o)?Object.assign(t,i):this._resolveAnimations(e,o).update(t,i)}updateSharedOptions(t,e,i){t&&!ty(e)&&this._resolveAnimations(void 0,e).update(t,i)}_setStyle(t,e,i,o){t.active=o;const n=this.getStyle(e,o);this._resolveAnimations(e,i,o).update(t,{options:!o&&this.getSharedOptions(n)||n})}removeHoverStyle(t,e,i){this._setStyle(t,i,"active",!1)}setHoverStyle(t,e,i){this._setStyle(t,i,"active",!0)}_removeDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){const e=this._data,i=this._cachedMeta.data;for(const[t,e,i]of this._syncList)this[t](e,i);this._syncList=[];const o=i.length,n=e.length,s=Math.min(n,o);s&&this.parse(0,s),n>o?this._insertElements(o,n-o,t):n<o&&this._removeElements(n,o-n)}_insertElements(t,e,i=!0){const o=this._cachedMeta,n=o.data,s=t+e;let r;const a=t=>{for(t.length+=e,r=t.length-1;r>=s;r--)t[r]=t[r-e]};for(a(n),r=t;r<s;++r)n[r]=new this.dataElementType;this._parsing&&a(o._parsed),this.parse(t,e),i&&this.updateElements(n,t,e,"reset")}updateElements(t,e,i,o){}_removeElements(t,e){const i=this._cachedMeta;if(this._parsing){const o=i._parsed.splice(t,e);i._stacked&&Jb(i,o)}i.data.splice(t,e)}_sync(t){if(this._parsing)this._syncList.push(t);else{const[e,i,o]=t;this[e](i,o)}this.chart._dataChanges.push([this.index,...t])}_onDataPush(){const t=arguments.length;this._sync(["_insertElements",this.getDataset().data.length-t,t])}_onDataPop(){this._sync(["_removeElements",this._cachedMeta.data.length-1,1])}_onDataShift(){this._sync(["_removeElements",0,1])}_onDataSplice(t,e){e&&this._sync(["_removeElements",t,e]);const i=arguments.length-2;i&&this._sync(["_insertElements",t,i])}_onDataUnshift(){this._sync(["_insertElements",0,arguments.length])}}function oy(t){const e=t.iScale,i=function(t,e){if(!t._cache.$bar){const i=t.getMatchingVisibleMetas(e);let o=[];for(let e=0,n=i.length;e<n;e++)o=o.concat(i[e].controller.getAllParsedValues(t));t._cache.$bar=Zf(o.sort((t,e)=>t-e))}return t._cache.$bar}(e,t.type);let o,n,s,r,a=e._length;const l=()=>{32767!==s&&-32768!==s&&(gf(r)&&(a=Math.min(a,Math.abs(s-r)||a)),r=s)};for(o=0,n=i.length;o<n;++o)s=e.getPixelForValue(i[o]),l();for(r=void 0,o=0,n=e.ticks.length;o<n;++o)s=e.getPixelForTick(o),l();return a}function ny(t,e,i,o){return Gg(t)?function(t,e,i,o){const n=i.parse(t[0],o),s=i.parse(t[1],o),r=Math.min(n,s),a=Math.max(n,s);let l=r,d=a;Math.abs(r)>Math.abs(a)&&(l=a,d=r),e[i.axis]=d,e._custom={barStart:l,barEnd:d,start:n,end:s,min:r,max:a}}(t,e,i,o):e[i.axis]=i.parse(t,o),e}function sy(t,e,i,o){const n=t.iScale,s=t.vScale,r=n.getLabels(),a=n===s,l=[];let d,c,h,u;for(d=i,c=i+o;d<c;++d)u=e[d],h={},h[n.axis]=a||n.parse(r[d],d),l.push(ny(u,h,s,d));return l}function ry(t){return t&&void 0!==t.barStart&&void 0!==t.barEnd}function ay(t,e,i,o){let n=e.borderSkipped;const s={};if(!n)return void(t.borderSkipped=s);if(!0===n)return void(t.borderSkipped={top:!0,right:!0,bottom:!0,left:!0});const{start:r,end:a,reverse:l,top:d,bottom:c}=function(t){let e,i,o,n,s;return t.horizontal?(e=t.base>t.x,i="left",o="right"):(e=t.base<t.y,i="bottom",o="top"),e?(n="end",s="start"):(n="start",s="end"),{start:i,end:o,reverse:e,top:n,bottom:s}}(t);"middle"===n&&i&&(t.enableBorderRadius=!0,(i._top||0)===o?n=d:(i._bottom||0)===o?n=c:(s[ly(c,r,a,l)]=!0,n=d)),s[ly(n,r,a,l)]=!0,t.borderSkipped=s}function ly(t,e,i,o){var n,s,r;return o?(r=i,t=dy(t=(n=t)===(s=e)?r:n===r?s:n,i,e)):t=dy(t,e,i),t}function dy(t,e,i){return"start"===t?e:"end"===t?i:t}function cy(t,{inflateAmount:e},i){t.inflateAmount="auto"===e?1===i?.33:0:e}class hy extends iy{static id="doughnut";static defaults={datasetElementType:!1,dataElementType:"arc",animation:{animateRotate:!0,animateScale:!1},animations:{numbers:{type:"number",properties:["circumference","endAngle","innerRadius","outerRadius","startAngle","x","y","offset","borderWidth","spacing"]}},cutout:"50%",rotation:0,circumference:360,radius:"100%",spacing:0,indexAxis:"r"};static descriptors={_scriptable:t=>"spacing"!==t,_indexable:t=>"spacing"!==t&&!t.startsWith("borderDash")&&!t.startsWith("hoverBorderDash")};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data,{labels:{pointStyle:i,textAlign:o,color:n,useBorderRadius:s,borderRadius:r}}=t.legend.options;return e.labels.length&&e.datasets.length?e.labels.map((e,a)=>{const l=t.getDatasetMeta(0).controller.getStyle(a);return{text:e,fillStyle:l.backgroundColor,fontColor:n,hidden:!t.getDataVisibility(a),lineDash:l.borderDash,lineDashOffset:l.borderDashOffset,lineJoin:l.borderJoinStyle,lineWidth:l.borderWidth,strokeStyle:l.borderColor,textAlign:o,pointStyle:i,borderRadius:s&&(r||l.borderRadius),index:a}}):[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}}}};constructor(t,e){super(t,e),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(t,e){const i=this.getDataset().data,o=this._cachedMeta;if(!1===this._parsing)o._parsed=i;else{let n,s,r=t=>+i[t];if(Xg(i[t])){const{key:t="value"}=this._parsing;r=e=>+pf(i[e],t)}for(n=t,s=t+e;n<s;++n)o._parsed[n]=r(n)}}_getRotation(){return zf(this.options.rotation-90)}_getCircumference(){return zf(this.options.circumference)}_getRotationExtents(){let t=yf,e=-yf;for(let i=0;i<this.chart.data.datasets.length;++i)if(this.chart.isDatasetVisible(i)&&this.chart.getDatasetMeta(i).type===this._type){const o=this.chart.getDatasetMeta(i).controller,n=o._getRotation(),s=o._getCircumference();t=Math.min(t,n),e=Math.max(e,n+s)}return{rotation:t,circumference:e-t}}update(t){const e=this.chart,{chartArea:i}=e,o=this._cachedMeta,n=o.data,s=this.getMaxBorderWidth()+this.getMaxOffset(n)+this.options.spacing,r=Math.max((Math.min(i.width,i.height)-s)/2,0),a=Math.min((l=this.options.cutout,d=r,"string"==typeof l&&l.endsWith("%")?parseFloat(l)/100:+l/d),1);var l,d;const c=this._getRingWeight(this.index),{circumference:h,rotation:u}=this._getRotationExtents(),{ratioX:p,ratioY:m,offsetX:g,offsetY:f}=function(t,e,i){let o=1,n=1,s=0,r=0;if(e<yf){const a=t,l=a+e,d=Math.cos(a),c=Math.sin(a),h=Math.cos(l),u=Math.sin(l),p=(t,e,o)=>Bf(t,a,l,!0)?1:Math.max(e,e*i,o,o*i),m=(t,e,o)=>Bf(t,a,l,!0)?-1:Math.min(e,e*i,o,o*i),g=p(0,d,h),f=p(kf,c,u),v=m(bf,d,h),b=m(bf+kf,c,u);o=(g-v)/2,n=(f-b)/2,s=-(g+v)/2,r=-(f+b)/2}return{ratioX:o,ratioY:n,offsetX:s,offsetY:r}}(u,h,a),v=(i.width-s)/p,b=(i.height-s)/m,y=Math.max(Math.min(v,b)/2,0),x=ef(this.options.radius,y),w=(x-Math.max(x*a,0))/this._getVisibleDatasetWeightTotal();this.offsetX=g*x,this.offsetY=f*x,o.total=this.calculateTotal(),this.outerRadius=x-w*this._getRingWeightOffset(this.index),this.innerRadius=Math.max(this.outerRadius-w*c,0),this.updateElements(n,0,n.length,t)}_circumference(t,e){const i=this.options,o=this._cachedMeta,n=this._getCircumference();return e&&i.animation.animateRotate||!this.chart.getDataVisibility(t)||null===o._parsed[t]||o.data[t].hidden?0:this.calculateCircumference(o._parsed[t]*n/yf)}updateElements(t,e,i,o){const n="reset"===o,s=this.chart,r=s.chartArea,a=s.options.animation,l=(r.left+r.right)/2,d=(r.top+r.bottom)/2,c=n&&a.animateScale,h=c?0:this.innerRadius,u=c?0:this.outerRadius,{sharedOptions:p,includeOptions:m}=this._getSharedOptions(e,o);let g,f=this._getRotation();for(g=0;g<e;++g)f+=this._circumference(g,n);for(g=e;g<e+i;++g){const e=this._circumference(g,n),i=t[g],s={x:l+this.offsetX,y:d+this.offsetY,startAngle:f,endAngle:f+e,circumference:e,outerRadius:u,innerRadius:h};m&&(s.options=p||this.resolveDataElementOptions(g,i.active?"active":o)),f+=e,this.updateElement(i,g,s,o)}}calculateTotal(){const t=this._cachedMeta,e=t.data;let i,o=0;for(i=0;i<e.length;i++){const n=t._parsed[i];null===n||isNaN(n)||!this.chart.getDataVisibility(i)||e[i].hidden||(o+=Math.abs(n))}return o}calculateCircumference(t){const e=this._cachedMeta.total;return e>0&&!isNaN(t)?yf*(Math.abs(t)/e):0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,o=i.data.labels||[],n=cv(e._parsed[t],i.options.locale);return{label:o[t]||"",value:n}}getMaxBorderWidth(t){let e=0;const i=this.chart;let o,n,s,r,a;if(!t)for(o=0,n=i.data.datasets.length;o<n;++o)if(i.isDatasetVisible(o)){s=i.getDatasetMeta(o),t=s.data,r=s.controller;break}if(!t)return 0;for(o=0,n=t.length;o<n;++o)a=r.resolveDataElementOptions(o),"inner"!==a.borderAlign&&(e=Math.max(e,a.borderWidth||0,a.hoverBorderWidth||0));return e}getMaxOffset(t){let e=0;for(let i=0,o=t.length;i<o;++i){const t=this.resolveDataElementOptions(i);e=Math.max(e,t.offset||0,t.hoverOffset||0)}return e}_getRingWeightOffset(t){let e=0;for(let i=0;i<t;++i)this.chart.isDatasetVisible(i)&&(e+=this._getRingWeight(i));return e}_getRingWeight(t){return Math.max(tf(this.chart.data.datasets[t].weight,1),0)}_getVisibleDatasetWeightTotal(){return this._getRingWeightOffset(this.chart.data.datasets.length)||1}}class uy extends iy{static id="polarArea";static defaults={dataElementType:"arc",animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:"number",properties:["x","y","startAngle","endAngle","innerRadius","outerRadius"]}},indexAxis:"r",startAngle:0};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data;if(e.labels.length&&e.datasets.length){const{labels:{pointStyle:i,color:o}}=t.legend.options;return e.labels.map((e,n)=>{const s=t.getDatasetMeta(0).controller.getStyle(n);return{text:e,fillStyle:s.backgroundColor,strokeStyle:s.borderColor,fontColor:o,lineWidth:s.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(n),index:n}})}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};constructor(t,e){super(t,e),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,o=i.data.labels||[],n=cv(e._parsed[t].r,i.options.locale);return{label:o[t]||"",value:n}}parseObjectData(t,e,i,o){return nb.bind(this)(t,e,i,o)}update(t){const e=this._cachedMeta.data;this._updateRadius(),this.updateElements(e,0,e.length,t)}getMinMax(){const t=this._cachedMeta,e={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY};return t.data.forEach((t,i)=>{const o=this.getParsed(i).r;!isNaN(o)&&this.chart.getDataVisibility(i)&&(o<e.min&&(e.min=o),o>e.max&&(e.max=o))}),e}_updateRadius(){const t=this.chart,e=t.chartArea,i=t.options,o=Math.min(e.right-e.left,e.bottom-e.top),n=Math.max(o/2,0),s=(n-Math.max(i.cutoutPercentage?n/100*i.cutoutPercentage:1,0))/t.getVisibleDatasetCount();this.outerRadius=n-s*this.index,this.innerRadius=this.outerRadius-s}updateElements(t,e,i,o){const n="reset"===o,s=this.chart,r=s.options.animation,a=this._cachedMeta.rScale,l=a.xCenter,d=a.yCenter,c=a.getIndexAngle(0)-.5*bf;let h,u=c;const p=360/this.countVisibleElements();for(h=0;h<e;++h)u+=this._computeAngle(h,o,p);for(h=e;h<e+i;h++){const e=t[h];let i=u,m=u+this._computeAngle(h,o,p),g=s.getDataVisibility(h)?a.getDistanceFromCenterForValue(this.getParsed(h).r):0;u=m,n&&(r.animateScale&&(g=0),r.animateRotate&&(i=m=c));const f={x:l,y:d,innerRadius:0,outerRadius:g,startAngle:i,endAngle:m,options:this.resolveDataElementOptions(h,e.active?"active":o)};this.updateElement(e,h,f,o)}}countVisibleElements(){const t=this._cachedMeta;let e=0;return t.data.forEach((t,i)=>{!isNaN(this.getParsed(i).r)&&this.chart.getDataVisibility(i)&&e++}),e}_computeAngle(t,e,i){return this.chart.getDataVisibility(t)?zf(this.resolveDataElementOptions(t,e).angle||i):0}}var py=Object.freeze({__proto__:null,BarController:class extends iy{static id="bar";static defaults={datasetElementType:!1,dataElementType:"bar",categoryPercentage:.8,barPercentage:.9,grouped:!0,animations:{numbers:{type:"number",properties:["x","y","base","width","height"]}}};static overrides={scales:{_index_:{type:"category",offset:!0,grid:{offset:!0}},_value_:{type:"linear",beginAtZero:!0}}};parsePrimitiveData(t,e,i,o){return sy(t,e,i,o)}parseArrayData(t,e,i,o){return sy(t,e,i,o)}parseObjectData(t,e,i,o){const{iScale:n,vScale:s}=t,{xAxisKey:r="x",yAxisKey:a="y"}=this._parsing,l="x"===n.axis?r:a,d="x"===s.axis?r:a,c=[];let h,u,p,m;for(h=i,u=i+o;h<u;++h)m=e[h],p={},p[n.axis]=n.parse(pf(m,l),h),c.push(ny(pf(m,d),p,s,h));return c}updateRangeFromParsed(t,e,i,o){super.updateRangeFromParsed(t,e,i,o);const n=i._custom;n&&e===this._cachedMeta.vScale&&(t.min=Math.min(t.min,n.min),t.max=Math.max(t.max,n.max))}getMaxOverflow(){return 0}getLabelAndValue(t){const e=this._cachedMeta,{iScale:i,vScale:o}=e,n=this.getParsed(t),s=n._custom,r=ry(s)?"["+s.start+", "+s.end+"]":""+o.getLabelForValue(n[o.axis]);return{label:""+i.getLabelForValue(n[i.axis]),value:r}}initialize(){this.enableOptionSharing=!0,super.initialize();this._cachedMeta.stack=this.getDataset().stack}update(t){const e=this._cachedMeta;this.updateElements(e.data,0,e.data.length,t)}updateElements(t,e,i,o){const n="reset"===o,{index:s,_cachedMeta:{vScale:r}}=this,a=r.getBasePixel(),l=r.isHorizontal(),d=this._getRuler(),{sharedOptions:c,includeOptions:h}=this._getSharedOptions(e,o);for(let u=e;u<e+i;u++){const e=this.getParsed(u),i=n||Kg(e[r.axis])?{base:a,head:a}:this._calculateBarValuePixels(u),p=this._calculateBarIndexPixels(u,d),m=(e._stacks||{})[r.axis],g={horizontal:l,base:i.base,enableBorderRadius:!m||ry(e._custom)||s===m._top||s===m._bottom,x:l?i.head:p.center,y:l?p.center:i.head,height:l?p.size:Math.abs(i.size),width:l?Math.abs(i.size):p.size};h&&(g.options=c||this.resolveDataElementOptions(u,t[u].active?"active":o));const f=g.options||t[u].options;ay(g,f,m,s),cy(g,f,d.ratio),this.updateElement(t[u],u,g,o)}}_getStacks(t,e){const{iScale:i}=this._cachedMeta,o=i.getMatchingVisibleMetas(this._type).filter(t=>t.controller.options.grouped),n=i.options.stacked,s=[],r=this._cachedMeta.controller.getParsed(e),a=r&&r[i.axis],l=t=>{const e=t._parsed.find(t=>t[i.axis]===a),o=e&&e[t.vScale.axis];if(Kg(o)||isNaN(o))return!0};for(const i of o)if((void 0===e||!l(i))&&((!1===n||-1===s.indexOf(i.stack)||void 0===n&&void 0===i.stack)&&s.push(i.stack),i.index===t))break;return s.length||s.push(void 0),s}_getStackCount(t){return this._getStacks(void 0,t).length}_getAxisCount(){return this._getAxis().length}getFirstScaleIdForIndexAxis(){const t=this.chart.scales,e=this.chart.options.indexAxis;return Object.keys(t).filter(i=>t[i].axis===e).shift()}_getAxis(){const t={},e=this.getFirstScaleIdForIndexAxis();for(const i of this.chart.data.datasets)t[tf("x"===this.chart.options.indexAxis?i.xAxisID:i.yAxisID,e)]=!0;return Object.keys(t)}_getStackIndex(t,e,i){const o=this._getStacks(t,i),n=void 0!==e?o.indexOf(e):-1;return-1===n?o.length-1:n}_getRuler(){const t=this.options,e=this._cachedMeta,i=e.iScale,o=[];let n,s;for(n=0,s=e.data.length;n<s;++n)o.push(i.getPixelForValue(this.getParsed(n)[i.axis],n));const r=t.barThickness;return{min:r||oy(e),pixels:o,start:i._startPixel,end:i._endPixel,stackCount:this._getStackCount(),scale:i,grouped:t.grouped,ratio:r?1:t.categoryPercentage*t.barPercentage}}_calculateBarValuePixels(t){const{_cachedMeta:{vScale:e,_stacked:i,index:o},options:{base:n,minBarLength:s}}=this,r=n||0,a=this.getParsed(t),l=a._custom,d=ry(l);let c,h,u=a[e.axis],p=0,m=i?this.applyStack(e,a,i):u;m!==u&&(p=m-u,m=u),d&&(u=l.barStart,m=l.barEnd-l.barStart,0!==u&&$f(u)!==$f(l.barEnd)&&(p=0),p+=u);const g=Kg(n)||d?p:n;let f=e.getPixelForValue(g);if(c=this.chart.getDataVisibility(t)?e.getPixelForValue(p+m):f,h=c-f,Math.abs(h)<s){h=function(t,e,i){return 0!==t?$f(t):(e.isHorizontal()?1:-1)*(e.min>=i?1:-1)}(h,e,r)*s,u===r&&(f-=h/2);const t=e.getPixelForDecimal(0),n=e.getPixelForDecimal(1),l=Math.min(t,n),p=Math.max(t,n);f=Math.max(Math.min(f,p),l),c=f+h,i&&!d&&(a._stacks[e.axis]._visualValues[o]=e.getValueForPixel(c)-e.getValueForPixel(f))}if(f===e.getPixelForValue(r)){const t=$f(h)*e.getLineWidthForValue(r)/2;f+=t,h-=t}return{size:h,base:f,head:c,center:c+h/2}}_calculateBarIndexPixels(t,e){const i=e.scale,o=this.options,n=o.skipNull,s=tf(o.maxBarThickness,1/0);let r,a;const l=this._getAxisCount();if(e.grouped){const i=n?this._getStackCount(t):e.stackCount,d="flex"===o.barThickness?function(t,e,i,o){const n=e.pixels,s=n[t];let r=t>0?n[t-1]:null,a=t<n.length-1?n[t+1]:null;const l=i.categoryPercentage;null===r&&(r=s-(null===a?e.end-e.start:a-s)),null===a&&(a=s+s-r);const d=s-(s-Math.min(r,a))/2*l;return{chunk:Math.abs(a-r)/2*l/o,ratio:i.barPercentage,start:d}}(t,e,o,i*l):function(t,e,i,o){const n=i.barThickness;let s,r;return Kg(n)?(s=e.min*i.categoryPercentage,r=i.barPercentage):(s=n*o,r=1),{chunk:s/o,ratio:r,start:e.pixels[t]-s/2}}(t,e,o,i*l),c="x"===this.chart.options.indexAxis?this.getDataset().xAxisID:this.getDataset().yAxisID,h=this._getAxis().indexOf(tf(c,this.getFirstScaleIdForIndexAxis())),u=this._getStackIndex(this.index,this._cachedMeta.stack,n?t:void 0)+h;r=d.start+d.chunk*u+d.chunk/2,a=Math.min(s,d.chunk*d.ratio)}else r=i.getPixelForValue(this.getParsed(t)[i.axis],t),a=Math.min(s,e.min*e.ratio);return{base:r-a/2,head:r+a/2,center:r,size:a}}draw(){const t=this._cachedMeta,e=t.vScale,i=t.data,o=i.length;let n=0;for(;n<o;++n)null===this.getParsed(n)[e.axis]||i[n].hidden||i[n].draw(this._ctx)}},BubbleController:class extends iy{static id="bubble";static defaults={datasetElementType:!1,dataElementType:"point",animations:{numbers:{type:"number",properties:["x","y","borderWidth","radius"]}}};static overrides={scales:{x:{type:"linear"},y:{type:"linear"}}};initialize(){this.enableOptionSharing=!0,super.initialize()}parsePrimitiveData(t,e,i,o){const n=super.parsePrimitiveData(t,e,i,o);for(let t=0;t<n.length;t++)n[t]._custom=this.resolveDataElementOptions(t+i).radius;return n}parseArrayData(t,e,i,o){const n=super.parseArrayData(t,e,i,o);for(let t=0;t<n.length;t++){const o=e[i+t];n[t]._custom=tf(o[2],this.resolveDataElementOptions(t+i).radius)}return n}parseObjectData(t,e,i,o){const n=super.parseObjectData(t,e,i,o);for(let t=0;t<n.length;t++){const o=e[i+t];n[t]._custom=tf(o&&o.r&&+o.r,this.resolveDataElementOptions(t+i).radius)}return n}getMaxOverflow(){const t=this._cachedMeta.data;let e=0;for(let i=t.length-1;i>=0;--i)e=Math.max(e,t[i].size(this.resolveDataElementOptions(i))/2);return e>0&&e}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart.data.labels||[],{xScale:o,yScale:n}=e,s=this.getParsed(t),r=o.getLabelForValue(s.x),a=n.getLabelForValue(s.y),l=s._custom;return{label:i[t]||"",value:"("+r+", "+a+(l?", "+l:"")+")"}}update(t){const e=this._cachedMeta.data;this.updateElements(e,0,e.length,t)}updateElements(t,e,i,o){const n="reset"===o,{iScale:s,vScale:r}=this._cachedMeta,{sharedOptions:a,includeOptions:l}=this._getSharedOptions(e,o),d=s.axis,c=r.axis;for(let h=e;h<e+i;h++){const e=t[h],i=!n&&this.getParsed(h),u={},p=u[d]=n?s.getPixelForDecimal(.5):s.getPixelForValue(i[d]),m=u[c]=n?r.getBasePixel():r.getPixelForValue(i[c]);u.skip=isNaN(p)||isNaN(m),l&&(u.options=a||this.resolveDataElementOptions(h,e.active?"active":o),n&&(u.options.radius=0)),this.updateElement(e,h,u,o)}}resolveDataElementOptions(t,e){const i=this.getParsed(t);let o=super.resolveDataElementOptions(t,e);o.$shared&&(o=Object.assign({},o,{$shared:!1}));const n=o.radius;return"active"!==e&&(o.radius=0),o.radius+=tf(i&&i._custom,n),o}},DoughnutController:hy,LineController:class extends iy{static id="line";static defaults={datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1};static overrides={scales:{_index_:{type:"category"},_value_:{type:"linear"}}};initialize(){this.enableOptionSharing=!0,this.supportsDecimation=!0,super.initialize()}update(t){const e=this._cachedMeta,{dataset:i,data:o=[],_dataset:n}=e,s=this.chart._animationsDisabled;let{start:r,count:a}=Qf(e,o,s);this._drawStart=r,this._drawCount=a,Jf(e)&&(r=0,a=o.length),i._chart=this.chart,i._datasetIndex=this.index,i._decimated=!!n._decimated,i.points=o;const l=this.resolveDatasetElementOptions(t);this.options.showLine||(l.borderWidth=0),l.segment=this.options.segment,this.updateElement(i,void 0,{animated:!s,options:l},t),this.updateElements(o,r,a,t)}updateElements(t,e,i,o){const n="reset"===o,{iScale:s,vScale:r,_stacked:a,_dataset:l}=this._cachedMeta,{sharedOptions:d,includeOptions:c}=this._getSharedOptions(e,o),h=s.axis,u=r.axis,{spanGaps:p,segment:m}=this.options,g=Df(p)?p:Number.POSITIVE_INFINITY,f=this.chart._animationsDisabled||n||"none"===o,v=e+i,b=t.length;let y=e>0&&this.getParsed(e-1);for(let i=0;i<b;++i){const p=t[i],b=f?p:{};if(i<e||i>=v){b.skip=!0;continue}const x=this.getParsed(i),w=Kg(x[u]),_=b[h]=s.getPixelForValue(x[h],i),k=b[u]=n||w?r.getBasePixel():r.getPixelForValue(a?this.applyStack(r,x,a):x[u],i);b.skip=isNaN(_)||isNaN(k)||w,b.stop=i>0&&Math.abs(x[h]-y[h])>g,m&&(b.parsed=x,b.raw=l.data[i]),c&&(b.options=d||this.resolveDataElementOptions(i,p.active?"active":o)),f||this.updateElement(p,i,b,o),y=x}}getMaxOverflow(){const t=this._cachedMeta,e=t.dataset,i=e.options&&e.options.borderWidth||0,o=t.data||[];if(!o.length)return i;const n=o[0].size(this.resolveDataElementOptions(0)),s=o[o.length-1].size(this.resolveDataElementOptions(o.length-1));return Math.max(i,n,s)/2}draw(){const t=this._cachedMeta;t.dataset.updateControlPoints(this.chart.chartArea,t.iScale.axis),super.draw()}},PieController:class extends hy{static id="pie";static defaults={cutout:0,rotation:0,circumference:360,radius:"100%"}},PolarAreaController:uy,RadarController:class extends iy{static id="radar";static defaults={datasetElementType:"line",dataElementType:"point",indexAxis:"r",showLine:!0,elements:{line:{fill:"start"}}};static overrides={aspectRatio:1,scales:{r:{type:"radialLinear"}}};getLabelAndValue(t){const e=this._cachedMeta.vScale,i=this.getParsed(t);return{label:e.getLabels()[t],value:""+e.getLabelForValue(i[e.axis])}}parseObjectData(t,e,i,o){return nb.bind(this)(t,e,i,o)}update(t){const e=this._cachedMeta,i=e.dataset,o=e.data||[],n=e.iScale.getLabels();if(i.points=o,"resize"!==t){const e=this.resolveDatasetElementOptions(t);this.options.showLine||(e.borderWidth=0);const s={_loop:!0,_fullLoop:n.length===o.length,options:e};this.updateElement(i,void 0,s,t)}this.updateElements(o,0,o.length,t)}updateElements(t,e,i,o){const n=this._cachedMeta.rScale,s="reset"===o;for(let r=e;r<e+i;r++){const e=t[r],i=this.resolveDataElementOptions(r,e.active?"active":o),a=n.getPointPositionForValue(r,this.getParsed(r).r),l=s?n.xCenter:a.x,d=s?n.yCenter:a.y,c={x:l,y:d,angle:a.angle,skip:isNaN(l)||isNaN(d),options:i};this.updateElement(e,r,c,o)}}},ScatterController:class extends iy{static id="scatter";static defaults={datasetElementType:!1,dataElementType:"point",showLine:!1,fill:!1};static overrides={interaction:{mode:"point"},scales:{x:{type:"linear"},y:{type:"linear"}}};getLabelAndValue(t){const e=this._cachedMeta,i=this.chart.data.labels||[],{xScale:o,yScale:n}=e,s=this.getParsed(t),r=o.getLabelForValue(s.x),a=n.getLabelForValue(s.y);return{label:i[t]||"",value:"("+r+", "+a+")"}}update(t){const e=this._cachedMeta,{data:i=[]}=e,o=this.chart._animationsDisabled;let{start:n,count:s}=Qf(e,i,o);if(this._drawStart=n,this._drawCount=s,Jf(e)&&(n=0,s=i.length),this.options.showLine){this.datasetElementType||this.addElements();const{dataset:n,_dataset:s}=e;n._chart=this.chart,n._datasetIndex=this.index,n._decimated=!!s._decimated,n.points=i;const r=this.resolveDatasetElementOptions(t);r.segment=this.options.segment,this.updateElement(n,void 0,{animated:!o,options:r},t)}else this.datasetElementType&&(delete e.dataset,this.datasetElementType=!1);this.updateElements(i,n,s,t)}addElements(){const{showLine:t}=this.options;!this.datasetElementType&&t&&(this.datasetElementType=this.chart.registry.getElement("line")),super.addElements()}updateElements(t,e,i,o){const n="reset"===o,{iScale:s,vScale:r,_stacked:a,_dataset:l}=this._cachedMeta,d=this.resolveDataElementOptions(e,o),c=this.getSharedOptions(d),h=this.includeOptions(o,c),u=s.axis,p=r.axis,{spanGaps:m,segment:g}=this.options,f=Df(m)?m:Number.POSITIVE_INFINITY,v=this.chart._animationsDisabled||n||"none"===o;let b=e>0&&this.getParsed(e-1);for(let d=e;d<e+i;++d){const e=t[d],i=this.getParsed(d),m=v?e:{},y=Kg(i[p]),x=m[u]=s.getPixelForValue(i[u],d),w=m[p]=n||y?r.getBasePixel():r.getPixelForValue(a?this.applyStack(r,i,a):i[p],d);m.skip=isNaN(x)||isNaN(w)||y,m.stop=d>0&&Math.abs(i[u]-b[u])>f,g&&(m.parsed=i,m.raw=l.data[d]),h&&(m.options=c||this.resolveDataElementOptions(d,e.active?"active":o)),v||this.updateElement(e,d,m,o),b=i}this.updateSharedOptions(c,o,d)}getMaxOverflow(){const t=this._cachedMeta,e=t.data||[];if(!this.options.showLine){let t=0;for(let i=e.length-1;i>=0;--i)t=Math.max(t,e[i].size(this.resolveDataElementOptions(i))/2);return t>0&&t}const i=t.dataset,o=i.options&&i.options.borderWidth||0;if(!e.length)return o;const n=e[0].size(this.resolveDataElementOptions(0)),s=e[e.length-1].size(this.resolveDataElementOptions(e.length-1));return Math.max(o,n,s)/2}}});function my(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}class gy{static override(t){Object.assign(gy.prototype,t)}options;constructor(t){this.options=t||{}}init(){}formats(){return my()}parse(){return my()}format(){return my()}add(){return my()}diff(){return my()}startOf(){return my()}endOf(){return my()}}var fy={_date:gy};function vy(t,e,i,o){const{controller:n,data:s,_sorted:r}=t,a=n._cachedMeta.iScale,l=t.dataset&&t.dataset.options?t.dataset.options.spanGaps:null;if(a&&e===a.axis&&"r"!==e&&r&&s.length){const r=a._reversePixels?Hf:jf;if(!o){const o=r(s,e,i);if(l){const{vScale:e}=n._cachedMeta,{_parsed:i}=t,s=i.slice(0,o.lo+1).reverse().findIndex(t=>!Kg(t[e.axis]));o.lo-=Math.max(0,s);const r=i.slice(o.hi).findIndex(t=>!Kg(t[e.axis]));o.hi+=Math.max(0,r)}return o}if(n._sharedOptions){const t=s[0],o="function"==typeof t.getRange&&t.getRange(e);if(o){const t=r(s,e,i-o),n=r(s,e,i+o);return{lo:t.lo,hi:n.hi}}}}return{lo:0,hi:s.length-1}}function by(t,e,i,o,n){const s=t.getSortedVisibleDatasetMetas(),r=i[e];for(let t=0,i=s.length;t<i;++t){const{index:i,data:a}=s[t],{lo:l,hi:d}=vy(s[t],e,r,n);for(let t=l;t<=d;++t){const e=a[t];e.skip||o(e,i,t)}}}function yy(t,e,i,o,n){const s=[];if(!n&&!t.isPointInArea(e))return s;return by(t,i,e,function(i,r,a){(n||Sv(i,t.chartArea,0))&&i.inRange(e.x,e.y,o)&&s.push({element:i,datasetIndex:r,index:a})},!0),s}function xy(t,e,i,o,n,s){let r=[];const a=function(t){const e=-1!==t.indexOf("x"),i=-1!==t.indexOf("y");return function(t,o){const n=e?Math.abs(t.x-o.x):0,s=i?Math.abs(t.y-o.y):0;return Math.sqrt(Math.pow(n,2)+Math.pow(s,2))}}(i);let l=Number.POSITIVE_INFINITY;return by(t,i,e,function(i,d,c){const h=i.inRange(e.x,e.y,n);if(o&&!h)return;const u=i.getCenterPoint(n);if(!(!!s||t.isPointInArea(u))&&!h)return;const p=a(e,u);p<l?(r=[{element:i,datasetIndex:d,index:c}],l=p):p===l&&r.push({element:i,datasetIndex:d,index:c})}),r}function wy(t,e,i,o,n,s){return s||t.isPointInArea(e)?"r"!==i||o?xy(t,e,i,o,n,s):function(t,e,i,o){let n=[];return by(t,i,e,function(t,i,s){const{startAngle:r,endAngle:a}=t.getProps(["startAngle","endAngle"],o),{angle:l}=Lf(t,{x:e.x,y:e.y});Bf(l,r,a)&&n.push({element:t,datasetIndex:i,index:s})}),n}(t,e,i,n):[]}function _y(t,e,i,o,n){const s=[],r="x"===i?"inXRange":"inYRange";let a=!1;return by(t,i,e,(t,o,l)=>{t[r]&&t[r](e[i],n)&&(s.push({element:t,datasetIndex:o,index:l}),a=a||t.inRange(e.x,e.y,n))}),o&&!a?[]:s}var ky={modes:{index(t,e,i,o){const n=bb(e,t),s=i.axis||"x",r=i.includeInvisible||!1,a=i.intersect?yy(t,n,s,o,r):wy(t,n,s,!1,o,r),l=[];return a.length?(t.getSortedVisibleDatasetMetas().forEach(t=>{const e=a[0].index,i=t.data[e];i&&!i.skip&&l.push({element:i,datasetIndex:t.index,index:e})}),l):[]},dataset(t,e,i,o){const n=bb(e,t),s=i.axis||"xy",r=i.includeInvisible||!1;let a=i.intersect?yy(t,n,s,o,r):wy(t,n,s,!1,o,r);if(a.length>0){const e=a[0].datasetIndex,i=t.getDatasetMeta(e).data;a=[];for(let t=0;t<i.length;++t)a.push({element:i[t],datasetIndex:e,index:t})}return a},point:(t,e,i,o)=>yy(t,bb(e,t),i.axis||"xy",o,i.includeInvisible||!1),nearest(t,e,i,o){const n=bb(e,t),s=i.axis||"xy",r=i.includeInvisible||!1;return wy(t,n,s,i.intersect,o,r)},x:(t,e,i,o)=>_y(t,bb(e,t),"x",i.intersect,o),y:(t,e,i,o)=>_y(t,bb(e,t),"y",i.intersect,o)}};const Cy=["left","top","right","bottom"];function Sy(t,e){return t.filter(t=>t.pos===e)}function Ay(t,e){return t.filter(t=>-1===Cy.indexOf(t.pos)&&t.box.axis===e)}function $y(t,e){return t.sort((t,i)=>{const o=e?i:t,n=e?t:i;return o.weight===n.weight?o.index-n.index:o.weight-n.weight})}function Ey(t,e){const i=function(t){const e={};for(const i of t){const{stack:t,pos:o,stackWeight:n}=i;if(!t||!Cy.includes(o))continue;const s=e[t]||(e[t]={count:0,placed:0,weight:0,size:0});s.count++,s.weight+=n}return e}(t),{vBoxMaxWidth:o,hBoxMaxHeight:n}=e;let s,r,a;for(s=0,r=t.length;s<r;++s){a=t[s];const{fullSize:r}=a.box,l=i[a.stack],d=l&&a.stackWeight/l.weight;a.horizontal?(a.width=d?d*o:r&&e.availableWidth,a.height=n):(a.width=o,a.height=d?d*n:r&&e.availableHeight)}return i}function Ty(t,e,i,o){return Math.max(t[i],e[i])+Math.max(t[o],e[o])}function Dy(t,e){t.top=Math.max(t.top,e.top),t.left=Math.max(t.left,e.left),t.bottom=Math.max(t.bottom,e.bottom),t.right=Math.max(t.right,e.right)}function My(t,e,i,o){const{pos:n,box:s}=i,r=t.maxPadding;if(!Xg(n)){i.size&&(t[n]-=i.size);const e=o[i.stack]||{size:0,count:1};e.size=Math.max(e.size,i.horizontal?s.height:s.width),i.size=e.size/e.count,t[n]+=i.size}s.getPadding&&Dy(r,s.getPadding());const a=Math.max(0,e.outerWidth-Ty(r,t,"left","right")),l=Math.max(0,e.outerHeight-Ty(r,t,"top","bottom")),d=a!==t.w,c=l!==t.h;return t.w=a,t.h=l,i.horizontal?{same:d,other:c}:{same:c,other:d}}function zy(t,e){const i=e.maxPadding;function o(t){const o={left:0,top:0,right:0,bottom:0};return t.forEach(t=>{o[t]=Math.max(e[t],i[t])}),o}return o(t?["left","right"]:["top","bottom"])}function Iy(t,e,i,o){const n=[];let s,r,a,l,d,c;for(s=0,r=t.length,d=0;s<r;++s){a=t[s],l=a.box,l.update(a.width||e.w,a.height||e.h,zy(a.horizontal,e));const{same:r,other:h}=My(e,i,a,o);d|=r&&n.length,c=c||h,l.fullSize||n.push(a)}return d&&Iy(n,e,i,o)||c}function Oy(t,e,i,o,n){t.top=i,t.left=e,t.right=e+o,t.bottom=i+n,t.width=o,t.height=n}function Ly(t,e,i,o){const n=i.padding;let{x:s,y:r}=e;for(const a of t){const t=a.box,l=o[a.stack]||{placed:0,weight:1},d=a.stackWeight/l.weight||1;if(a.horizontal){const o=e.w*d,s=l.size||t.height;gf(l.start)&&(r=l.start),t.fullSize?Oy(t,n.left,r,i.outerWidth-n.right-n.left,s):Oy(t,e.left+l.placed,r,o,s),l.start=r,l.placed+=o,r=t.bottom}else{const o=e.h*d,r=l.size||t.width;gf(l.start)&&(s=l.start),t.fullSize?Oy(t,s,n.top,r,i.outerHeight-n.bottom-n.top):Oy(t,s,e.top+l.placed,r,o),l.start=s,l.placed+=o,s=t.right}}e.x=s,e.y=r}var Py={addBox(t,e){t.boxes||(t.boxes=[]),e.fullSize=e.fullSize||!1,e.position=e.position||"top",e.weight=e.weight||0,e._layers=e._layers||function(){return[{z:0,draw(t){e.draw(t)}}]},t.boxes.push(e)},removeBox(t,e){const i=t.boxes?t.boxes.indexOf(e):-1;-1!==i&&t.boxes.splice(i,1)},configure(t,e,i){e.fullSize=i.fullSize,e.position=i.position,e.weight=i.weight},update(t,e,i,o){if(!t)return;const n=qv(t.options.layout.padding),s=Math.max(e-n.width,0),r=Math.max(i-n.height,0),a=function(t){const e=function(t){const e=[];let i,o,n,s,r,a;for(i=0,o=(t||[]).length;i<o;++i)n=t[i],({position:s,options:{stack:r,stackWeight:a=1}}=n),e.push({index:i,box:n,pos:s,horizontal:n.isHorizontal(),weight:n.weight,stack:r&&s+r,stackWeight:a});return e}(t),i=$y(e.filter(t=>t.box.fullSize),!0),o=$y(Sy(e,"left"),!0),n=$y(Sy(e,"right")),s=$y(Sy(e,"top"),!0),r=$y(Sy(e,"bottom")),a=Ay(e,"x"),l=Ay(e,"y");return{fullSize:i,leftAndTop:o.concat(s),rightAndBottom:n.concat(l).concat(r).concat(a),chartArea:Sy(e,"chartArea"),vertical:o.concat(n).concat(l),horizontal:s.concat(r).concat(a)}}(t.boxes),l=a.vertical,d=a.horizontal;nf(t.boxes,t=>{"function"==typeof t.beforeLayout&&t.beforeLayout()});const c=l.reduce((t,e)=>e.box.options&&!1===e.box.options.display?t:t+1,0)||1,h=Object.freeze({outerWidth:e,outerHeight:i,padding:n,availableWidth:s,availableHeight:r,vBoxMaxWidth:s/2/c,hBoxMaxHeight:r/2}),u=Object.assign({},n);Dy(u,qv(o));const p=Object.assign({maxPadding:u,w:s,h:r,x:n.left,y:n.top},n),m=Ey(l.concat(d),h);Iy(a.fullSize,p,h,m),Iy(l,p,h,m),Iy(d,p,h,m)&&Iy(l,p,h,m),function(t){const e=t.maxPadding;function i(i){const o=Math.max(e[i]-t[i],0);return t[i]+=o,o}t.y+=i("top"),t.x+=i("left"),i("right"),i("bottom")}(p),Ly(a.leftAndTop,p,h,m),p.x+=p.w,p.y+=p.h,Ly(a.rightAndBottom,p,h,m),t.chartArea={left:p.left,top:p.top,right:p.left+p.w,bottom:p.top+p.h,height:p.h,width:p.w},nf(a.chartArea,e=>{const i=e.box;Object.assign(i,t.chartArea),i.update(p.w,p.h,{left:0,top:0,right:0,bottom:0})})}};class Ry{acquireContext(t,e){}releaseContext(t){return!1}addEventListener(t,e,i){}removeEventListener(t,e,i){}getDevicePixelRatio(){return 1}getMaximumSize(t,e,i,o){return e=Math.max(0,e||t.width),i=i||t.height,{width:e,height:Math.max(0,o?Math.floor(e/o):i)}}isAttached(t){return!0}updateConfig(t){}}class Ny extends Ry{acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null}updateConfig(t){t.options.animation=!1}}const By="$chartjs",Fy={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},qy=t=>null===t||""===t;const Uy=!!_b&&{passive:!0};function jy(t,e,i){t&&t.canvas&&t.canvas.removeEventListener(e,i,Uy)}function Hy(t,e){for(const i of t)if(i===e||i.contains(e))return!0}function Wy(t,e,i){const o=t.canvas,n=new MutationObserver(t=>{let e=!1;for(const i of t)e=e||Hy(i.addedNodes,o),e=e&&!Hy(i.removedNodes,o);e&&i()});return n.observe(document,{childList:!0,subtree:!0}),n}function Vy(t,e,i){const o=t.canvas,n=new MutationObserver(t=>{let e=!1;for(const i of t)e=e||Hy(i.removedNodes,o),e=e&&!Hy(i.addedNodes,o);e&&i()});return n.observe(document,{childList:!0,subtree:!0}),n}const Zy=new Map;let Yy=0;function Ky(){const t=window.devicePixelRatio;t!==Yy&&(Yy=t,Zy.forEach((e,i)=>{i.currentDevicePixelRatio!==t&&e()}))}function Gy(t,e,i){const o=t.canvas,n=o&&pb(o);if(!n)return;const s=Kf((t,e)=>{const o=n.clientWidth;i(t,e),o<n.clientWidth&&i()},window),r=new ResizeObserver(t=>{const e=t[0],i=e.contentRect.width,o=e.contentRect.height;0===i&&0===o||s(i,o)});return r.observe(n),function(t,e){Zy.size||window.addEventListener("resize",Ky),Zy.set(t,e)}(t,s),r}function Xy(t,e,i){i&&i.disconnect(),"resize"===e&&function(t){Zy.delete(t),Zy.size||window.removeEventListener("resize",Ky)}(t)}function Qy(t,e,i){const o=t.canvas,n=Kf(e=>{null!==t.ctx&&i(function(t,e){const i=Fy[t.type]||t.type,{x:o,y:n}=bb(t,e);return{type:i,chart:e,native:t,x:void 0!==o?o:null,y:void 0!==n?n:null}}(e,t))},t);return function(t,e,i){t&&t.addEventListener(e,i,Uy)}(o,e,n),n}class Jy extends Ry{acquireContext(t,e){const i=t&&t.getContext&&t.getContext("2d");return i&&i.canvas===t?(function(t,e){const i=t.style,o=t.getAttribute("height"),n=t.getAttribute("width");if(t[By]={initial:{height:o,width:n,style:{display:i.display,height:i.height,width:i.width}}},i.display=i.display||"block",i.boxSizing=i.boxSizing||"border-box",qy(n)){const e=kb(t,"width");void 0!==e&&(t.width=e)}if(qy(o))if(""===t.style.height)t.height=t.width/(e||2);else{const e=kb(t,"height");void 0!==e&&(t.height=e)}}(t,e),i):null}releaseContext(t){const e=t.canvas;if(!e[By])return!1;const i=e[By].initial;["height","width"].forEach(t=>{const o=i[t];Kg(o)?e.removeAttribute(t):e.setAttribute(t,o)});const o=i.style||{};return Object.keys(o).forEach(t=>{e.style[t]=o[t]}),e.width=e.width,delete e[By],!0}addEventListener(t,e,i){this.removeEventListener(t,e);const o=t.$proxies||(t.$proxies={}),n={attach:Wy,detach:Vy,resize:Gy}[e]||Qy;o[e]=n(t,e,i)}removeEventListener(t,e){const i=t.$proxies||(t.$proxies={}),o=i[e];if(!o)return;({attach:Xy,detach:Xy,resize:Xy}[e]||jy)(t,e,o),i[e]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,e,i,o){return xb(t,e,i,o)}isAttached(t){const e=t&&pb(t);return!(!e||!e.isConnected)}}let tx=class{static defaults={};static defaultRoutes=void 0;x;y;active=!1;options;$animations;tooltipPosition(t){const{x:e,y:i}=this.getProps(["x","y"],t);return{x:e,y:i}}hasValue(){return Df(this.x)&&Df(this.y)}getProps(t,e){const i=this.$animations;if(!e||!i)return this;const o={};return t.forEach(t=>{o[t]=i[t]&&i[t].active()?i[t]._to:this[t]}),o}};function ex(t,e){const i=t.options.ticks,o=function(t){const e=t.options.offset,i=t._tickSize(),o=t._length/i+(e?0:1),n=t._maxLength/i;return Math.floor(Math.min(o,n))}(t),n=Math.min(i.maxTicksLimit||o,o),s=i.major.enabled?function(t){const e=[];let i,o;for(i=0,o=t.length;i<o;i++)t[i].major&&e.push(i);return e}(e):[],r=s.length,a=s[0],l=s[r-1],d=[];if(r>n)return function(t,e,i,o){let n,s=0,r=i[0];for(o=Math.ceil(o),n=0;n<t.length;n++)n===r&&(e.push(t[n]),s++,r=i[s*o])}(e,d,s,r/n),d;const c=function(t,e,i){const o=function(t){const e=t.length;let i,o;if(e<2)return!1;for(o=t[0],i=1;i<e;++i)if(t[i]-t[i-1]!==o)return!1;return o}(t),n=e.length/i;if(!o)return Math.max(n,1);const s=function(t){const e=[],i=Math.sqrt(t);let o;for(o=1;o<i;o++)t%o===0&&(e.push(o),e.push(t/o));return i===(0|i)&&e.push(i),e.sort((t,e)=>t-e).pop(),e}(o);for(let t=0,e=s.length-1;t<e;t++){const e=s[t];if(e>n)return e}return Math.max(n,1)}(s,e,n);if(r>0){let t,i;const o=r>1?Math.round((l-a)/(r-1)):null;for(ix(e,d,c,Kg(o)?0:a-o,a),t=0,i=r-1;t<i;t++)ix(e,d,c,s[t],s[t+1]);return ix(e,d,c,l,Kg(o)?e.length:l+o),d}return ix(e,d,c),d}function ix(t,e,i,o,n){const s=tf(o,0),r=Math.min(tf(n,t.length),t.length);let a,l,d,c=0;for(i=Math.ceil(i),n&&(a=n-o,i=a/Math.floor(a/i)),d=s;d<0;)c++,d=Math.round(s+c*i);for(l=Math.max(s,0);l<r;l++)l===d&&(e.push(t[l]),c++,d=Math.round(s+c*i))}const ox=(t,e,i)=>"top"===e||"left"===e?t[e]+i:t[e]-i,nx=(t,e)=>Math.min(e||t,t);function sx(t,e){const i=[],o=t.length/e,n=t.length;let s=0;for(;s<n;s+=o)i.push(t[Math.floor(s)]);return i}function rx(t,e,i){const o=t.ticks.length,n=Math.min(e,o-1),s=t._startPixel,r=t._endPixel,a=1e-6;let l,d=t.getPixelForTick(n);if(!(i&&(l=1===o?Math.max(d-s,r-d):0===e?(t.getPixelForTick(1)-d)/2:(d-t.getPixelForTick(n-1))/2,d+=n<e?l:-l,d<s-a||d>r+a)))return d}function ax(t){return t.drawTicks?t.tickLength:0}function lx(t,e){if(!t.display)return 0;const i=Uv(t.font,e),o=qv(t.padding);return(Gg(t.text)?t.text.length:1)*i.lineHeight+o.height}function dx(t,e,i){let o=Gf(t);return(i&&"right"!==e||!i&&"right"===e)&&(o=(t=>"left"===t?"right":"right"===t?"left":t)(o)),o}class cx extends tx{constructor(t){super(),this.id=t.id,this.type=t.type,this.options=void 0,this.ctx=t.ctx,this.chart=t.chart,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this._margins={left:0,right:0,top:0,bottom:0},this.maxWidth=void 0,this.maxHeight=void 0,this.paddingTop=void 0,this.paddingBottom=void 0,this.paddingLeft=void 0,this.paddingRight=void 0,this.axis=void 0,this.labelRotation=void 0,this.min=void 0,this.max=void 0,this._range=void 0,this.ticks=[],this._gridLineItems=null,this._labelItems=null,this._labelSizes=null,this._length=0,this._maxLength=0,this._longestTextCache={},this._startPixel=void 0,this._endPixel=void 0,this._reversePixels=!1,this._userMax=void 0,this._userMin=void 0,this._suggestedMax=void 0,this._suggestedMin=void 0,this._ticksLength=0,this._borderValue=0,this._cache={},this._dataLimitsCached=!1,this.$context=void 0}init(t){this.options=t.setContext(this.getContext()),this.axis=t.axis,this._userMin=this.parse(t.min),this._userMax=this.parse(t.max),this._suggestedMin=this.parse(t.suggestedMin),this._suggestedMax=this.parse(t.suggestedMax)}parse(t,e){return t}getUserBounds(){let{_userMin:t,_userMax:e,_suggestedMin:i,_suggestedMax:o}=this;return t=Jg(t,Number.POSITIVE_INFINITY),e=Jg(e,Number.NEGATIVE_INFINITY),i=Jg(i,Number.POSITIVE_INFINITY),o=Jg(o,Number.NEGATIVE_INFINITY),{min:Jg(t,i),max:Jg(e,o),minDefined:Qg(t),maxDefined:Qg(e)}}getMinMax(t){let e,{min:i,max:o,minDefined:n,maxDefined:s}=this.getUserBounds();if(n&&s)return{min:i,max:o};const r=this.getMatchingVisibleMetas();for(let a=0,l=r.length;a<l;++a)e=r[a].controller.getMinMax(this,t),n||(i=Math.min(i,e.min)),s||(o=Math.max(o,e.max));return i=s&&i>o?o:i,o=n&&i>o?i:o,{min:Jg(i,Jg(o,i)),max:Jg(o,Jg(i,o))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}getLabelItems(t=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(t))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){of(this.options.beforeUpdate,[this])}update(t,e,i){const{beginAtZero:o,grace:n,ticks:s}=this.options,r=s.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this._margins=i=Object.assign({left:0,right:0,top:0,bottom:0},i),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+i.left+i.right:this.height+i.top+i.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=function(t,e,i){const{min:o,max:n}=t,s=ef(e,(n-o)/2),r=(t,e)=>i&&0===t?0:t+e;return{min:r(o,-Math.abs(s)),max:r(n,s)}}(this,n,o),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const a=r<this.ticks.length;this._convertTicksToLabels(a?sx(this.ticks,r):this.ticks),this.configure(),this.beforeCalculateLabelRotation(),this.calculateLabelRotation(),this.afterCalculateLabelRotation(),s.display&&(s.autoSkip||"auto"===s.source)&&(this.ticks=ex(this,this.ticks),this._labelSizes=null,this.afterAutoSkip()),a&&this._convertTicksToLabels(this.ticks),this.beforeFit(),this.fit(),this.afterFit(),this.afterUpdate()}configure(){let t,e,i=this.options.reverse;this.isHorizontal()?(t=this.left,e=this.right):(t=this.top,e=this.bottom,i=!i),this._startPixel=t,this._endPixel=e,this._reversePixels=i,this._length=e-t,this._alignToPixels=this.options.alignToPixels}afterUpdate(){of(this.options.afterUpdate,[this])}beforeSetDimensions(){of(this.options.beforeSetDimensions,[this])}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=0,this.right=this.width):(this.height=this.maxHeight,this.top=0,this.bottom=this.height),this.paddingLeft=0,this.paddingTop=0,this.paddingRight=0,this.paddingBottom=0}afterSetDimensions(){of(this.options.afterSetDimensions,[this])}_callHooks(t){this.chart.notifyPlugins(t,this.getContext()),of(this.options[t],[this])}beforeDataLimits(){this._callHooks("beforeDataLimits")}determineDataLimits(){}afterDataLimits(){this._callHooks("afterDataLimits")}beforeBuildTicks(){this._callHooks("beforeBuildTicks")}buildTicks(){return[]}afterBuildTicks(){this._callHooks("afterBuildTicks")}beforeTickToLabelConversion(){of(this.options.beforeTickToLabelConversion,[this])}generateTickLabels(t){const e=this.options.ticks;let i,o,n;for(i=0,o=t.length;i<o;i++)n=t[i],n.label=of(e.callback,[n.value,i,t],this)}afterTickToLabelConversion(){of(this.options.afterTickToLabelConversion,[this])}beforeCalculateLabelRotation(){of(this.options.beforeCalculateLabelRotation,[this])}calculateLabelRotation(){const t=this.options,e=t.ticks,i=nx(this.ticks.length,t.ticks.maxTicksLimit),o=e.minRotation||0,n=e.maxRotation;let s,r,a,l=o;if(!this._isVisible()||!e.display||o>=n||i<=1||!this.isHorizontal())return void(this.labelRotation=o);const d=this._getLabelSizes(),c=d.widest.width,h=d.highest.height,u=Ff(this.chart.width-c,0,this.maxWidth);s=t.offset?this.maxWidth/i:u/(i-1),c+6>s&&(s=u/(i-(t.offset?.5:1)),r=this.maxHeight-ax(t.grid)-e.padding-lx(t.title,this.chart.options.font),a=Math.sqrt(c*c+h*h),l=If(Math.min(Math.asin(Ff((d.highest.height+6)/s,-1,1)),Math.asin(Ff(r/a,-1,1))-Math.asin(Ff(h/a,-1,1)))),l=Math.max(o,Math.min(n,l))),this.labelRotation=l}afterCalculateLabelRotation(){of(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){of(this.options.beforeFit,[this])}fit(){const t={width:0,height:0},{chart:e,options:{ticks:i,title:o,grid:n}}=this,s=this._isVisible(),r=this.isHorizontal();if(s){const s=lx(o,e.options.font);if(r?(t.width=this.maxWidth,t.height=ax(n)+s):(t.height=this.maxHeight,t.width=ax(n)+s),i.display&&this.ticks.length){const{first:e,last:o,widest:n,highest:s}=this._getLabelSizes(),a=2*i.padding,l=zf(this.labelRotation),d=Math.cos(l),c=Math.sin(l);if(r){const e=i.mirror?0:c*n.width+d*s.height;t.height=Math.min(this.maxHeight,t.height+e+a)}else{const e=i.mirror?0:d*n.width+c*s.height;t.width=Math.min(this.maxWidth,t.width+e+a)}this._calculatePadding(e,o,c,d)}}this._handleMargins(),r?(this.width=this._length=e.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=e.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,e,i,o){const{ticks:{align:n,padding:s},position:r}=this.options,a=0!==this.labelRotation,l="top"!==r&&"x"===this.axis;if(this.isHorizontal()){const r=this.getPixelForTick(0)-this.left,d=this.right-this.getPixelForTick(this.ticks.length-1);let c=0,h=0;a?l?(c=o*t.width,h=i*e.height):(c=i*t.height,h=o*e.width):"start"===n?h=e.width:"end"===n?c=t.width:"inner"!==n&&(c=t.width/2,h=e.width/2),this.paddingLeft=Math.max((c-r+s)*this.width/(this.width-r),0),this.paddingRight=Math.max((h-d+s)*this.width/(this.width-d),0)}else{let i=e.height/2,o=t.height/2;"start"===n?(i=0,o=t.height):"end"===n&&(i=e.height,o=0),this.paddingTop=i+s,this.paddingBottom=o+s}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){of(this.options.afterFit,[this])}isHorizontal(){const{axis:t,position:e}=this.options;return"top"===e||"bottom"===e||"x"===t}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){let e,i;for(this.beforeTickToLabelConversion(),this.generateTickLabels(t),e=0,i=t.length;e<i;e++)Kg(t[e].label)&&(t.splice(e,1),i--,e--);this.afterTickToLabelConversion()}_getLabelSizes(){let t=this._labelSizes;if(!t){const e=this.options.ticks.sampleSize;let i=this.ticks;e<i.length&&(i=sx(i,e)),this._labelSizes=t=this._computeLabelSizes(i,i.length,this.options.ticks.maxTicksLimit)}return t}_computeLabelSizes(t,e,i){const{ctx:o,_longestTextCache:n}=this,s=[],r=[],a=Math.floor(e/nx(e,i));let l,d,c,h,u,p,m,g,f,v,b,y=0,x=0;for(l=0;l<e;l+=a){if(h=t[l].label,u=this._resolveTickFontOptions(l),o.font=p=u.string,m=n[p]=n[p]||{data:{},gc:[]},g=u.lineHeight,f=v=0,Kg(h)||Gg(h)){if(Gg(h))for(d=0,c=h.length;d<c;++d)b=h[d],Kg(b)||Gg(b)||(f=yv(o,m.data,m.gc,f,b),v+=g)}else f=yv(o,m.data,m.gc,f,h),v=g;s.push(f),r.push(v),y=Math.max(f,y),x=Math.max(v,x)}!function(t,e){nf(t,t=>{const i=t.gc,o=i.length/2;let n;if(o>e){for(n=0;n<o;++n)delete t.data[i[n]];i.splice(0,o)}})}(n,e);const w=s.indexOf(y),_=r.indexOf(x),k=t=>({width:s[t]||0,height:r[t]||0});return{first:k(0),last:k(e-1),widest:k(w),highest:k(_),widths:s,heights:r}}getLabelForValue(t){return t}getPixelForValue(t,e){return NaN}getValueForPixel(t){}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);const e=this._startPixel+t*this._length;return Ff(this._alignToPixels?wv(this.chart,e,0):e,-32768,32767)}getDecimalForPixel(t){const e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0}getContext(t){const e=this.ticks||[];if(t>=0&&t<e.length){const i=e[t];return i.$context||(i.$context=function(t,e,i){return Hv(t,{tick:i,index:e,type:"tick"})}(this.getContext(),t,i))}return this.$context||(this.$context=Hv(this.chart.getContext(),{scale:this,type:"scale"}))}_tickSize(){const t=this.options.ticks,e=zf(this.labelRotation),i=Math.abs(Math.cos(e)),o=Math.abs(Math.sin(e)),n=this._getLabelSizes(),s=t.autoSkipPadding||0,r=n?n.widest.width+s:0,a=n?n.highest.height+s:0;return this.isHorizontal()?a*i>r*o?r/i:a/o:a*o<r*i?a/i:r/o}_isVisible(){const t=this.options.display;return"auto"!==t?!!t:this.getMatchingVisibleMetas().length>0}_computeGridLineItems(t){const e=this.axis,i=this.chart,o=this.options,{grid:n,position:s,border:r}=o,a=n.offset,l=this.isHorizontal(),d=this.ticks.length+(a?1:0),c=ax(n),h=[],u=r.setContext(this.getContext()),p=u.display?u.width:0,m=p/2,g=function(t){return wv(i,t,p)};let f,v,b,y,x,w,_,k,C,S,A,$;if("top"===s)f=g(this.bottom),w=this.bottom-c,k=f-m,S=g(t.top)+m,$=t.bottom;else if("bottom"===s)f=g(this.top),S=t.top,$=g(t.bottom)-m,w=f+m,k=this.top+c;else if("left"===s)f=g(this.right),x=this.right-c,_=f-m,C=g(t.left)+m,A=t.right;else if("right"===s)f=g(this.left),C=t.left,A=g(t.right)-m,x=f+m,_=this.left+c;else if("x"===e){if("center"===s)f=g((t.top+t.bottom)/2+.5);else if(Xg(s)){const t=Object.keys(s)[0],e=s[t];f=g(this.chart.scales[t].getPixelForValue(e))}S=t.top,$=t.bottom,w=f+m,k=w+c}else if("y"===e){if("center"===s)f=g((t.left+t.right)/2);else if(Xg(s)){const t=Object.keys(s)[0],e=s[t];f=g(this.chart.scales[t].getPixelForValue(e))}x=f-m,_=x-c,C=t.left,A=t.right}const E=tf(o.ticks.maxTicksLimit,d),T=Math.max(1,Math.ceil(d/E));for(v=0;v<d;v+=T){const t=this.getContext(v),e=n.setContext(t),o=r.setContext(t),s=e.lineWidth,d=e.color,c=o.dash||[],u=o.dashOffset,p=e.tickWidth,m=e.tickColor,g=e.tickBorderDash||[],f=e.tickBorderDashOffset;b=rx(this,v,a),void 0!==b&&(y=wv(i,b,s),l?x=_=C=A=y:w=k=S=$=y,h.push({tx1:x,ty1:w,tx2:_,ty2:k,x1:C,y1:S,x2:A,y2:$,width:s,color:d,borderDash:c,borderDashOffset:u,tickWidth:p,tickColor:m,tickBorderDash:g,tickBorderDashOffset:f}))}return this._ticksLength=d,this._borderValue=f,h}_computeLabelItems(t){const e=this.axis,i=this.options,{position:o,ticks:n}=i,s=this.isHorizontal(),r=this.ticks,{align:a,crossAlign:l,padding:d,mirror:c}=n,h=ax(i.grid),u=h+d,p=c?-d:u,m=-zf(this.labelRotation),g=[];let f,v,b,y,x,w,_,k,C,S,A,$,E="middle";if("top"===o)w=this.bottom-p,_=this._getXAxisLabelAlignment();else if("bottom"===o)w=this.top+p,_=this._getXAxisLabelAlignment();else if("left"===o){const t=this._getYAxisLabelAlignment(h);_=t.textAlign,x=t.x}else if("right"===o){const t=this._getYAxisLabelAlignment(h);_=t.textAlign,x=t.x}else if("x"===e){if("center"===o)w=(t.top+t.bottom)/2+u;else if(Xg(o)){const t=Object.keys(o)[0],e=o[t];w=this.chart.scales[t].getPixelForValue(e)+u}_=this._getXAxisLabelAlignment()}else if("y"===e){if("center"===o)x=(t.left+t.right)/2-u;else if(Xg(o)){const t=Object.keys(o)[0],e=o[t];x=this.chart.scales[t].getPixelForValue(e)}_=this._getYAxisLabelAlignment(h).textAlign}"y"===e&&("start"===a?E="top":"end"===a&&(E="bottom"));const T=this._getLabelSizes();for(f=0,v=r.length;f<v;++f){b=r[f],y=b.label;const t=n.setContext(this.getContext(f));k=this.getPixelForTick(f)+n.labelOffset,C=this._resolveTickFontOptions(f),S=C.lineHeight,A=Gg(y)?y.length:1;const e=A/2,i=t.color,a=t.textStrokeColor,d=t.textStrokeWidth;let h,u=_;if(s?(x=k,"inner"===_&&(u=f===v-1?this.options.reverse?"left":"right":0===f?this.options.reverse?"right":"left":"center"),$="top"===o?"near"===l||0!==m?-A*S+S/2:"center"===l?-T.highest.height/2-e*S+S:-T.highest.height+S/2:"near"===l||0!==m?S/2:"center"===l?T.highest.height/2-e*S:T.highest.height-A*S,c&&($*=-1),0===m||t.showLabelBackdrop||(x+=S/2*Math.sin(m))):(w=k,$=(1-A)*S/2),t.showLabelBackdrop){const e=qv(t.backdropPadding),i=T.heights[f],o=T.widths[f];let n=$-e.top,s=0-e.left;switch(E){case"middle":n-=i/2;break;case"bottom":n-=i}switch(_){case"center":s-=o/2;break;case"right":s-=o;break;case"inner":f===v-1?s-=o:f>0&&(s-=o/2)}h={left:s,top:n,width:o+e.width,height:i+e.height,color:t.backdropColor}}g.push({label:y,font:C,textOffset:$,options:{rotation:m,color:i,strokeColor:a,strokeWidth:d,textAlign:u,textBaseline:E,translation:[x,w],backdrop:h}})}return g}_getXAxisLabelAlignment(){const{position:t,ticks:e}=this.options;if(-zf(this.labelRotation))return"top"===t?"left":"right";let i="center";return"start"===e.align?i="left":"end"===e.align?i="right":"inner"===e.align&&(i="inner"),i}_getYAxisLabelAlignment(t){const{position:e,ticks:{crossAlign:i,mirror:o,padding:n}}=this.options,s=t+n,r=this._getLabelSizes().widest.width;let a,l;return"left"===e?o?(l=this.right+n,"near"===i?a="left":"center"===i?(a="center",l+=r/2):(a="right",l+=r)):(l=this.right-s,"near"===i?a="right":"center"===i?(a="center",l-=r/2):(a="left",l=this.left)):"right"===e?o?(l=this.left+n,"near"===i?a="right":"center"===i?(a="center",l-=r/2):(a="left",l-=r)):(l=this.left+s,"near"===i?a="left":"center"===i?(a="center",l+=r/2):(a="right",l=this.right)):a="right",{textAlign:a,x:l}}_computeLabelArea(){if(this.options.ticks.mirror)return;const t=this.chart,e=this.options.position;return"left"===e||"right"===e?{top:0,left:this.left,bottom:t.height,right:this.right}:"top"===e||"bottom"===e?{top:this.top,left:0,bottom:this.bottom,right:t.width}:void 0}drawBackground(){const{ctx:t,options:{backgroundColor:e},left:i,top:o,width:n,height:s}=this;e&&(t.save(),t.fillStyle=e,t.fillRect(i,o,n,s),t.restore())}getLineWidthForValue(t){const e=this.options.grid;if(!this._isVisible()||!e.display)return 0;const i=this.ticks.findIndex(e=>e.value===t);if(i>=0){return e.setContext(this.getContext(i)).lineWidth}return 0}drawGrid(t){const e=this.options.grid,i=this.ctx,o=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t));let n,s;const r=(t,e,o)=>{o.width&&o.color&&(i.save(),i.lineWidth=o.width,i.strokeStyle=o.color,i.setLineDash(o.borderDash||[]),i.lineDashOffset=o.borderDashOffset,i.beginPath(),i.moveTo(t.x,t.y),i.lineTo(e.x,e.y),i.stroke(),i.restore())};if(e.display)for(n=0,s=o.length;n<s;++n){const t=o[n];e.drawOnChartArea&&r({x:t.x1,y:t.y1},{x:t.x2,y:t.y2},t),e.drawTicks&&r({x:t.tx1,y:t.ty1},{x:t.tx2,y:t.ty2},{color:t.tickColor,width:t.tickWidth,borderDash:t.tickBorderDash,borderDashOffset:t.tickBorderDashOffset})}}drawBorder(){const{chart:t,ctx:e,options:{border:i,grid:o}}=this,n=i.setContext(this.getContext()),s=i.display?n.width:0;if(!s)return;const r=o.setContext(this.getContext(0)).lineWidth,a=this._borderValue;let l,d,c,h;this.isHorizontal()?(l=wv(t,this.left,s)-s/2,d=wv(t,this.right,r)+r/2,c=h=a):(c=wv(t,this.top,s)-s/2,h=wv(t,this.bottom,r)+r/2,l=d=a),e.save(),e.lineWidth=n.width,e.strokeStyle=n.color,e.beginPath(),e.moveTo(l,c),e.lineTo(d,h),e.stroke(),e.restore()}drawLabels(t){if(!this.options.ticks.display)return;const e=this.ctx,i=this._computeLabelArea();i&&Av(e,i);const o=this.getLabelItems(t);for(const t of o){const i=t.options,o=t.font;zv(e,t.label,0,t.textOffset,o,i)}i&&$v(e)}drawTitle(){const{ctx:t,options:{position:e,title:i,reverse:o}}=this;if(!i.display)return;const n=Uv(i.font),s=qv(i.padding),r=i.align;let a=n.lineHeight/2;"bottom"===e||"center"===e||Xg(e)?(a+=s.bottom,Gg(i.text)&&(a+=n.lineHeight*(i.text.length-1))):a+=s.top;const{titleX:l,titleY:d,maxWidth:c,rotation:h}=function(t,e,i,o){const{top:n,left:s,bottom:r,right:a,chart:l}=t,{chartArea:d,scales:c}=l;let h,u,p,m=0;const g=r-n,f=a-s;if(t.isHorizontal()){if(u=Xf(o,s,a),Xg(i)){const t=Object.keys(i)[0],o=i[t];p=c[t].getPixelForValue(o)+g-e}else p="center"===i?(d.bottom+d.top)/2+g-e:ox(t,i,e);h=a-s}else{if(Xg(i)){const t=Object.keys(i)[0],o=i[t];u=c[t].getPixelForValue(o)-f+e}else u="center"===i?(d.left+d.right)/2-f+e:ox(t,i,e);p=Xf(o,r,n),m="left"===i?-kf:kf}return{titleX:u,titleY:p,maxWidth:h,rotation:m}}(this,a,e,r);zv(t,i.text,0,0,n,{color:i.color,maxWidth:c,rotation:h,textAlign:dx(r,e,o),textBaseline:"middle",translation:[l,d]})}draw(t){this._isVisible()&&(this.drawBackground(),this.drawGrid(t),this.drawBorder(),this.drawTitle(),this.drawLabels(t))}_layers(){const t=this.options,e=t.ticks&&t.ticks.z||0,i=tf(t.grid&&t.grid.z,-1),o=tf(t.border&&t.border.z,0);return this._isVisible()&&this.draw===cx.prototype.draw?[{z:i,draw:t=>{this.drawBackground(),this.drawGrid(t),this.drawTitle()}},{z:o,draw:()=>{this.drawBorder()}},{z:e,draw:t=>{this.drawLabels(t)}}]:[{z:e,draw:t=>{this.draw(t)}}]}getMatchingVisibleMetas(t){const e=this.chart.getSortedVisibleDatasetMetas(),i=this.axis+"AxisID",o=[];let n,s;for(n=0,s=e.length;n<s;++n){const s=e[n];s[i]!==this.id||t&&s.type!==t||o.push(s)}return o}_resolveTickFontOptions(t){return Uv(this.options.ticks.setContext(this.getContext(t)).font)}_maxDigits(){const t=this._resolveTickFontOptions(0).lineHeight;return(this.isHorizontal()?this.width:this.height)/t}}class hx{constructor(t,e,i){this.type=t,this.scope=e,this.override=i,this.items=Object.create(null)}isForType(t){return Object.prototype.isPrototypeOf.call(this.type.prototype,t.prototype)}register(t){const e=Object.getPrototypeOf(t);let i;(function(t){return"id"in t&&"defaults"in t})(e)&&(i=this.register(e));const o=this.items,n=t.id,s=this.scope+"."+n;if(!n)throw new Error("class does not have id: "+t);return n in o||(o[n]=t,function(t,e,i){const o=df(Object.create(null),[i?bv.get(i):{},bv.get(e),t.defaults]);bv.set(e,o),t.defaultRoutes&&function(t,e){Object.keys(e).forEach(i=>{const o=i.split("."),n=o.pop(),s=[t].concat(o).join("."),r=e[i].split("."),a=r.pop(),l=r.join(".");bv.route(s,n,l,a)})}(e,t.defaultRoutes);t.descriptors&&bv.describe(e,t.descriptors)}(t,s,i),this.override&&bv.override(t.id,t.overrides)),s}get(t){return this.items[t]}unregister(t){const e=this.items,i=t.id,o=this.scope;i in e&&delete e[i],o&&i in bv[o]&&(delete bv[o][i],this.override&&delete pv[i])}}class ux{constructor(){this.controllers=new hx(iy,"datasets",!0),this.elements=new hx(tx,"elements"),this.plugins=new hx(Object,"plugins"),this.scales=new hx(cx,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each("register",t)}remove(...t){this._each("unregister",t)}addControllers(...t){this._each("register",t,this.controllers)}addElements(...t){this._each("register",t,this.elements)}addPlugins(...t){this._each("register",t,this.plugins)}addScales(...t){this._each("register",t,this.scales)}getController(t){return this._get(t,this.controllers,"controller")}getElement(t){return this._get(t,this.elements,"element")}getPlugin(t){return this._get(t,this.plugins,"plugin")}getScale(t){return this._get(t,this.scales,"scale")}removeControllers(...t){this._each("unregister",t,this.controllers)}removeElements(...t){this._each("unregister",t,this.elements)}removePlugins(...t){this._each("unregister",t,this.plugins)}removeScales(...t){this._each("unregister",t,this.scales)}_each(t,e,i){[...e].forEach(e=>{const o=i||this._getRegistryForType(e);i||o.isForType(e)||o===this.plugins&&e.id?this._exec(t,o,e):nf(e,e=>{const o=i||this._getRegistryForType(e);this._exec(t,o,e)})})}_exec(t,e,i){const o=mf(t);of(i["before"+o],[],i),e[t](i),of(i["after"+o],[],i)}_getRegistryForType(t){for(let e=0;e<this._typedRegistries.length;e++){const i=this._typedRegistries[e];if(i.isForType(t))return i}return this.plugins}_get(t,e,i){const o=e.get(t);if(void 0===o)throw new Error('"'+t+'" is not a registered '+i+".");return o}}var px=new ux;class mx{constructor(){this._init=void 0}notify(t,e,i,o){if("beforeInit"===e&&(this._init=this._createDescriptors(t,!0),this._notify(this._init,t,"install")),void 0===this._init)return;const n=o?this._descriptors(t).filter(o):this._descriptors(t),s=this._notify(n,t,e,i);return"afterDestroy"===e&&(this._notify(n,t,"stop"),this._notify(this._init,t,"uninstall"),this._init=void 0),s}_notify(t,e,i,o){o=o||{};for(const n of t){const t=n.plugin;if(!1===of(t[i],[e,o,n.options],t)&&o.cancelable)return!1}return!0}invalidate(){Kg(this._cache)||(this._oldCache=this._cache,this._cache=void 0)}_descriptors(t){if(this._cache)return this._cache;const e=this._cache=this._createDescriptors(t);return this._notifyStateChanges(t),e}_createDescriptors(t,e){const i=t&&t.config,o=tf(i.options&&i.options.plugins,{}),n=function(t){const e={},i=[],o=Object.keys(px.plugins.items);for(let t=0;t<o.length;t++)i.push(px.getPlugin(o[t]));const n=t.plugins||[];for(let t=0;t<n.length;t++){const o=n[t];-1===i.indexOf(o)&&(i.push(o),e[o.id]=!0)}return{plugins:i,localIds:e}}(i);return!1!==o||e?function(t,{plugins:e,localIds:i},o,n){const s=[],r=t.getContext();for(const a of e){const e=a.id,l=gx(o[e],n);null!==l&&s.push({plugin:a,options:fx(t.config,{plugin:a,local:i[e]},l,r)})}return s}(t,n,o,e):[]}_notifyStateChanges(t){const e=this._oldCache||[],i=this._cache,o=(t,e)=>t.filter(t=>!e.some(e=>t.plugin.id===e.plugin.id));this._notify(o(e,i),t,"stop"),this._notify(o(i,e),t,"start")}}function gx(t,e){return e||!1!==t?!0===t?{}:t:null}function fx(t,{plugin:e,local:i},o,n){const s=t.pluginScopeKeys(e),r=t.getOptionScopes(o,s);return i&&e.defaults&&r.push(e.defaults),t.createResolver(r,n,[""],{scriptable:!1,indexable:!1,allKeys:!0})}function vx(t,e){const i=bv.datasets[t]||{};return((e.datasets||{})[t]||{}).indexAxis||e.indexAxis||i.indexAxis||"x"}function bx(t){if("x"===t||"y"===t||"r"===t)return t}function yx(t){return"top"===t||"bottom"===t?"x":"left"===t||"right"===t?"y":void 0}function xx(t,...e){if(bx(t))return t;for(const i of e){const e=i.axis||yx(i.position)||t.length>1&&bx(t[0].toLowerCase());if(e)return e}throw new Error(`Cannot determine type of '${t}' axis. Please provide 'axis' or 'position' option.`)}function wx(t,e,i){if(i[e+"AxisID"]===t)return{axis:e}}function _x(t,e){const i=pv[t.type]||{scales:{}},o=e.scales||{},n=vx(t.type,e),s=Object.create(null);return Object.keys(o).forEach(e=>{const r=o[e];if(!Xg(r))return console.error(`Invalid scale configuration for scale: ${e}`);if(r._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${e}`);const a=xx(e,r,function(t,e){if(e.data&&e.data.datasets){const i=e.data.datasets.filter(e=>e.xAxisID===t||e.yAxisID===t);if(i.length)return wx(t,"x",i[0])||wx(t,"y",i[0])}return{}}(e,t),bv.scales[r.type]),l=function(t,e){return t===e?"_index_":"_value_"}(a,n),d=i.scales||{};s[e]=cf(Object.create(null),[{axis:a},r,d[a],d[l]])}),t.data.datasets.forEach(i=>{const n=i.type||t.type,r=i.indexAxis||vx(n,e),a=(pv[n]||{}).scales||{};Object.keys(a).forEach(t=>{const e=function(t,e){let i=t;return"_index_"===t?i=e:"_value_"===t&&(i="x"===e?"y":"x"),i}(t,r),n=i[e+"AxisID"]||e;s[n]=s[n]||Object.create(null),cf(s[n],[{axis:e},o[n],a[t]])})}),Object.keys(s).forEach(t=>{const e=s[t];cf(e,[bv.scales[e.type],bv.scale])}),s}function kx(t){const e=t.options||(t.options={});e.plugins=tf(e.plugins,{}),e.scales=_x(t,e)}function Cx(t){return(t=t||{}).datasets=t.datasets||[],t.labels=t.labels||[],t}const Sx=new Map,Ax=new Set;function $x(t,e){let i=Sx.get(t);return i||(i=e(),Sx.set(t,i),Ax.add(i)),i}const Ex=(t,e,i)=>{const o=pf(e,i);void 0!==o&&t.add(o)};class Tx{constructor(t){this._config=function(t){return(t=t||{}).data=Cx(t.data),kx(t),t}(t),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=Cx(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){const t=this._config;this.clearCache(),kx(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return $x(t,()=>[[`datasets.${t}`,""]])}datasetAnimationScopeKeys(t,e){return $x(`${t}.transition.${e}`,()=>[[`datasets.${t}.transitions.${e}`,`transitions.${e}`],[`datasets.${t}`,""]])}datasetElementScopeKeys(t,e){return $x(`${t}-${e}`,()=>[[`datasets.${t}.elements.${e}`,`datasets.${t}`,`elements.${e}`,""]])}pluginScopeKeys(t){const e=t.id;return $x(`${this.type}-plugin-${e}`,()=>[[`plugins.${e}`,...t.additionalOptionScopes||[]]])}_cachedScopes(t,e){const i=this._scopeCache;let o=i.get(t);return o&&!e||(o=new Map,i.set(t,o)),o}getOptionScopes(t,e,i){const{options:o,type:n}=this,s=this._cachedScopes(t,i),r=s.get(e);if(r)return r;const a=new Set;e.forEach(e=>{t&&(a.add(t),e.forEach(e=>Ex(a,t,e))),e.forEach(t=>Ex(a,o,t)),e.forEach(t=>Ex(a,pv[n]||{},t)),e.forEach(t=>Ex(a,bv,t)),e.forEach(t=>Ex(a,mv,t))});const l=Array.from(a);return 0===l.length&&l.push(Object.create(null)),Ax.has(e)&&s.set(e,l),l}chartOptionScopes(){const{options:t,type:e}=this;return[t,pv[e]||{},bv.datasets[e]||{},{type:e},bv,mv]}resolveNamedOptions(t,e,i,o=[""]){const n={$shared:!0},{resolver:s,subPrefixes:r}=Dx(this._resolverCache,t,o);let a=s;if(function(t,e){const{isScriptable:i,isIndexable:o}=Zv(t);for(const n of e){const e=i(n),s=o(n),r=(s||e)&&t[n];if(e&&(ff(r)||Mx(r))||s&&Gg(r))return!0}return!1}(s,e)){n.$shared=!1;a=Vv(s,i=ff(i)?i():i,this.createResolver(t,i,r))}for(const t of e)n[t]=a[t];return n}createResolver(t,e,i=[""],o){const{resolver:n}=Dx(this._resolverCache,t,i);return Xg(e)?Vv(n,e,void 0,o):n}}function Dx(t,e,i){let o=t.get(e);o||(o=new Map,t.set(e,o));const n=i.join();let s=o.get(n);if(!s){s={resolver:Wv(e,i),subPrefixes:i.filter(t=>!t.toLowerCase().includes("hover"))},o.set(n,s)}return s}const Mx=t=>Xg(t)&&Object.getOwnPropertyNames(t).some(e=>ff(t[e]));const zx=["top","bottom","left","right","chartArea"];function Ix(t,e){return"top"===t||"bottom"===t||-1===zx.indexOf(t)&&"x"===e}function Ox(t,e){return function(i,o){return i[t]===o[t]?i[e]-o[e]:i[t]-o[t]}}function Lx(t){const e=t.chart,i=e.options.animation;e.notifyPlugins("afterRender"),of(i&&i.onComplete,[t],e)}function Px(t){const e=t.chart,i=e.options.animation;of(i&&i.onProgress,[t],e)}function Rx(t){return ub()&&"string"==typeof t?t=document.getElementById(t):t&&t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t}const Nx={},Bx=t=>{const e=Rx(t);return Object.values(Nx).filter(t=>t.canvas===e).pop()};function Fx(t,e,i){const o=Object.keys(t);for(const n of o){const o=+n;if(o>=e){const s=t[n];delete t[n],(i>0||o>e)&&(t[o+i]=s)}}}class qx{static defaults=bv;static instances=Nx;static overrides=pv;static registry=px;static version="4.5.1";static getChart=Bx;static register(...t){px.add(...t),Ux()}static unregister(...t){px.remove(...t),Ux()}constructor(t,e){const i=this.config=new Tx(e),o=Rx(t),n=Bx(o);if(n)throw new Error("Canvas is already in use. Chart with ID '"+n.id+"' must be destroyed before the canvas with ID '"+n.canvas.id+"' can be reused.");const s=i.createResolver(i.chartOptionScopes(),this.getContext());this.platform=new(i.platform||function(t){return!ub()||"undefined"!=typeof OffscreenCanvas&&t instanceof OffscreenCanvas?Ny:Jy}(o)),this.platform.updateConfig(i);const r=this.platform.acquireContext(o,s.aspectRatio),a=r&&r.canvas,l=a&&a.height,d=a&&a.width;this.id=Yg(),this.ctx=r,this.canvas=a,this.width=d,this.height=l,this._options=s,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new mx,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=function(t,e){let i;return function(...o){return e?(clearTimeout(i),i=setTimeout(t,e,o)):t.apply(this,o),e}}(t=>this.update(t),s.resizeDelay||0),this._dataChanges=[],Nx[this.id]=this,r&&a?(Fb.listen(this,"complete",Lx),Fb.listen(this,"progress",Px),this._initialize(),this.attached&&this.update()):console.error("Failed to create chart: can't acquire context from the given item")}get aspectRatio(){const{options:{aspectRatio:t,maintainAspectRatio:e},width:i,height:o,_aspectRatio:n}=this;return Kg(t)?e&&n?n:o?i/o:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}get registry(){return px}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():wb(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return _v(this.canvas,this.ctx),this}stop(){return Fb.stop(this),this}resize(t,e){Fb.running(this)?this._resizeBeforeDraw={width:t,height:e}:this._resize(t,e)}_resize(t,e){const i=this.options,o=this.canvas,n=i.maintainAspectRatio&&this.aspectRatio,s=this.platform.getMaximumSize(o,t,e,n),r=i.devicePixelRatio||this.platform.getDevicePixelRatio(),a=this.width?"resize":"attach";this.width=s.width,this.height=s.height,this._aspectRatio=this.aspectRatio,wb(this,r,!0)&&(this.notifyPlugins("resize",{size:s}),of(i.onResize,[this,s],this),this.attached&&this._doResize(a)&&this.render())}ensureScalesHaveIDs(){nf(this.options.scales||{},(t,e)=>{t.id=e})}buildOrUpdateScales(){const t=this.options,e=t.scales,i=this.scales,o=Object.keys(i).reduce((t,e)=>(t[e]=!1,t),{});let n=[];e&&(n=n.concat(Object.keys(e).map(t=>{const i=e[t],o=xx(t,i),n="r"===o,s="x"===o;return{options:i,dposition:n?"chartArea":s?"bottom":"left",dtype:n?"radialLinear":s?"category":"linear"}}))),nf(n,e=>{const n=e.options,s=n.id,r=xx(s,n),a=tf(n.type,e.dtype);void 0!==n.position&&Ix(n.position,r)===Ix(e.dposition)||(n.position=e.dposition),o[s]=!0;let l=null;if(s in i&&i[s].type===a)l=i[s];else{l=new(px.getScale(a))({id:s,type:a,ctx:this.ctx,chart:this}),i[l.id]=l}l.init(n,t)}),nf(o,(t,e)=>{t||delete i[e]}),nf(i,t=>{Py.configure(this,t,t.options),Py.addBox(this,t)})}_updateMetasets(){const t=this._metasets,e=this.data.datasets.length,i=t.length;if(t.sort((t,e)=>t.index-e.index),i>e){for(let t=e;t<i;++t)this._destroyDatasetMeta(t);t.splice(e,i-e)}this._sortedMetasets=t.slice(0).sort(Ox("order","index"))}_removeUnreferencedMetasets(){const{_metasets:t,data:{datasets:e}}=this;t.length>e.length&&delete this._stacks,t.forEach((t,i)=>{0===e.filter(e=>e===t._dataset).length&&this._destroyDatasetMeta(i)})}buildOrUpdateControllers(){const t=[],e=this.data.datasets;let i,o;for(this._removeUnreferencedMetasets(),i=0,o=e.length;i<o;i++){const o=e[i];let n=this.getDatasetMeta(i);const s=o.type||this.config.type;if(n.type&&n.type!==s&&(this._destroyDatasetMeta(i),n=this.getDatasetMeta(i)),n.type=s,n.indexAxis=o.indexAxis||vx(s,this.options),n.order=o.order||0,n.index=i,n.label=""+o.label,n.visible=this.isDatasetVisible(i),n.controller)n.controller.updateIndex(i),n.controller.linkScales();else{const e=px.getController(s),{datasetElementType:o,dataElementType:r}=bv.datasets[s];Object.assign(e,{dataElementType:px.getElement(r),datasetElementType:o&&px.getElement(o)}),n.controller=new e(this,i),t.push(n.controller)}}return this._updateMetasets(),t}_resetElements(){nf(this.data.datasets,(t,e)=>{this.getDatasetMeta(e).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){const e=this.config;e.update();const i=this._options=e.createResolver(e.chartOptionScopes(),this.getContext()),o=this._animationsDisabled=!i.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),!1===this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0}))return;const n=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let s=0;for(let t=0,e=this.data.datasets.length;t<e;t++){const{controller:e}=this.getDatasetMeta(t),i=!o&&-1===n.indexOf(e);e.buildOrUpdateElements(i),s=Math.max(+e.getMaxOverflow(),s)}s=this._minPadding=i.layout.autoPadding?s:0,this._updateLayout(s),o||nf(n,t=>{t.reset()}),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort(Ox("z","_idx"));const{_active:r,_lastEvent:a}=this;a?this._eventHandler(a,!0):r.length&&this._updateHoverStyles(r,r,!0),this.render()}_updateScales(){nf(this.scales,t=>{Py.removeBox(this,t)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const t=this.options,e=new Set(Object.keys(this._listeners)),i=new Set(t.events);vf(e,i)&&!!this._responsiveListeners===t.responsive||(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:t}=this,e=this._getUniformDataChanges()||[];for(const{method:i,start:o,count:n}of e){Fx(t,o,"_removeElements"===i?-n:n)}}_getUniformDataChanges(){const t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];const e=this.data.datasets.length,i=e=>new Set(t.filter(t=>t[0]===e).map((t,e)=>e+","+t.splice(1).join(","))),o=i(0);for(let t=1;t<e;t++)if(!vf(o,i(t)))return;return Array.from(o).map(t=>t.split(",")).map(t=>({method:t[1],start:+t[2],count:+t[3]}))}_updateLayout(t){if(!1===this.notifyPlugins("beforeLayout",{cancelable:!0}))return;Py.update(this,this.width,this.height,t);const e=this.chartArea,i=e.width<=0||e.height<=0;this._layers=[],nf(this.boxes,t=>{i&&"chartArea"===t.position||(t.configure&&t.configure(),this._layers.push(...t._layers()))},this),this._layers.forEach((t,e)=>{t._idx=e}),this.notifyPlugins("afterLayout")}_updateDatasets(t){if(!1!==this.notifyPlugins("beforeDatasetsUpdate",{mode:t,cancelable:!0})){for(let t=0,e=this.data.datasets.length;t<e;++t)this.getDatasetMeta(t).controller.configure();for(let e=0,i=this.data.datasets.length;e<i;++e)this._updateDataset(e,ff(t)?t({datasetIndex:e}):t);this.notifyPlugins("afterDatasetsUpdate",{mode:t})}}_updateDataset(t,e){const i=this.getDatasetMeta(t),o={meta:i,index:t,mode:e,cancelable:!0};!1!==this.notifyPlugins("beforeDatasetUpdate",o)&&(i.controller._update(e),o.cancelable=!1,this.notifyPlugins("afterDatasetUpdate",o))}render(){!1!==this.notifyPlugins("beforeRender",{cancelable:!0})&&(Fb.has(this)?this.attached&&!Fb.running(this)&&Fb.start(this):(this.draw(),Lx({chart:this})))}draw(){let t;if(this._resizeBeforeDraw){const{width:t,height:e}=this._resizeBeforeDraw;this._resizeBeforeDraw=null,this._resize(t,e)}if(this.clear(),this.width<=0||this.height<=0)return;if(!1===this.notifyPlugins("beforeDraw",{cancelable:!0}))return;const e=this._layers;for(t=0;t<e.length&&e[t].z<=0;++t)e[t].draw(this.chartArea);for(this._drawDatasets();t<e.length;++t)e[t].draw(this.chartArea);this.notifyPlugins("afterDraw")}_getSortedDatasetMetas(t){const e=this._sortedMetasets,i=[];let o,n;for(o=0,n=e.length;o<n;++o){const n=e[o];t&&!n.visible||i.push(n)}return i}getSortedVisibleDatasetMetas(){return this._getSortedDatasetMetas(!0)}_drawDatasets(){if(!1===this.notifyPlugins("beforeDatasetsDraw",{cancelable:!0}))return;const t=this.getSortedVisibleDatasetMetas();for(let e=t.length-1;e>=0;--e)this._drawDataset(t[e]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){const e=this.ctx,i={meta:t,index:t.index,cancelable:!0},o=Nb(this,t);!1!==this.notifyPlugins("beforeDatasetDraw",i)&&(o&&Av(e,o),t.controller.draw(),o&&$v(e),i.cancelable=!1,this.notifyPlugins("afterDatasetDraw",i))}isPointInArea(t){return Sv(t,this.chartArea,this._minPadding)}getElementsAtEventForMode(t,e,i,o){const n=ky.modes[e];return"function"==typeof n?n(this,t,i,o):[]}getDatasetMeta(t){const e=this.data.datasets[t],i=this._metasets;let o=i.filter(t=>t&&t._dataset===e).pop();return o||(o={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e&&e.order||0,index:t,_dataset:e,_parsed:[],_sorted:!1},i.push(o)),o}getContext(){return this.$context||(this.$context=Hv(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){const e=this.data.datasets[t];if(!e)return!1;const i=this.getDatasetMeta(t);return"boolean"==typeof i.hidden?!i.hidden:!e.hidden}setDatasetVisibility(t,e){this.getDatasetMeta(t).hidden=!e}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,e,i){const o=i?"show":"hide",n=this.getDatasetMeta(t),s=n.controller._resolveAnimations(void 0,o);gf(e)?(n.data[e].hidden=!i,this.update()):(this.setDatasetVisibility(t,i),s.update(n,{visible:i}),this.update(e=>e.datasetIndex===t?o:void 0))}hide(t,e){this._updateVisibility(t,e,!1)}show(t,e){this._updateVisibility(t,e,!0)}_destroyDatasetMeta(t){const e=this._metasets[t];e&&e.controller&&e.controller._destroy(),delete this._metasets[t]}_stop(){let t,e;for(this.stop(),Fb.remove(this),t=0,e=this.data.datasets.length;t<e;++t)this._destroyDatasetMeta(t)}destroy(){this.notifyPlugins("beforeDestroy");const{canvas:t,ctx:e}=this;this._stop(),this.config.clearCache(),t&&(this.unbindEvents(),_v(t,e),this.platform.releaseContext(e),this.canvas=null,this.ctx=null),delete Nx[this.id],this.notifyPlugins("afterDestroy")}toBase64Image(...t){return this.canvas.toDataURL(...t)}bindEvents(){this.bindUserEvents(),this.options.responsive?this.bindResponsiveEvents():this.attached=!0}bindUserEvents(){const t=this._listeners,e=this.platform,i=(i,o)=>{e.addEventListener(this,i,o),t[i]=o},o=(t,e,i)=>{t.offsetX=e,t.offsetY=i,this._eventHandler(t)};nf(this.options.events,t=>i(t,o))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const t=this._responsiveListeners,e=this.platform,i=(i,o)=>{e.addEventListener(this,i,o),t[i]=o},o=(i,o)=>{t[i]&&(e.removeEventListener(this,i,o),delete t[i])},n=(t,e)=>{this.canvas&&this.resize(t,e)};let s;const r=()=>{o("attach",r),this.attached=!0,this.resize(),i("resize",n),i("detach",s)};s=()=>{this.attached=!1,o("resize",n),this._stop(),this._resize(0,0),i("attach",r)},e.isAttached(this.canvas)?r():s()}unbindEvents(){nf(this._listeners,(t,e)=>{this.platform.removeEventListener(this,e,t)}),this._listeners={},nf(this._responsiveListeners,(t,e)=>{this.platform.removeEventListener(this,e,t)}),this._responsiveListeners=void 0}updateHoverStyle(t,e,i){const o=i?"set":"remove";let n,s,r,a;for("dataset"===e&&(n=this.getDatasetMeta(t[0].datasetIndex),n.controller["_"+o+"DatasetHoverStyle"]()),r=0,a=t.length;r<a;++r){s=t[r];const e=s&&this.getDatasetMeta(s.datasetIndex).controller;e&&e[o+"HoverStyle"](s.element,s.datasetIndex,s.index)}}getActiveElements(){return this._active||[]}setActiveElements(t){const e=this._active||[],i=t.map(({datasetIndex:t,index:e})=>{const i=this.getDatasetMeta(t);if(!i)throw new Error("No dataset found at index "+t);return{datasetIndex:t,element:i.data[e],index:e}});!sf(i,e)&&(this._active=i,this._lastEvent=null,this._updateHoverStyles(i,e))}notifyPlugins(t,e,i){return this._plugins.notify(this,t,e,i)}isPluginEnabled(t){return 1===this._plugins._cache.filter(e=>e.plugin.id===t).length}_updateHoverStyles(t,e,i){const o=this.options.hover,n=(t,e)=>t.filter(t=>!e.some(e=>t.datasetIndex===e.datasetIndex&&t.index===e.index)),s=n(e,t),r=i?t:n(t,e);s.length&&this.updateHoverStyle(s,o.mode,!1),r.length&&o.mode&&this.updateHoverStyle(r,o.mode,!0)}_eventHandler(t,e){const i={event:t,replay:e,cancelable:!0,inChartArea:this.isPointInArea(t)},o=e=>(e.options.events||this.options.events).includes(t.native.type);if(!1===this.notifyPlugins("beforeEvent",i,o))return;const n=this._handleEvent(t,e,i.inChartArea);return i.cancelable=!1,this.notifyPlugins("afterEvent",i,o),(n||i.changed)&&this.render(),this}_handleEvent(t,e,i){const{_active:o=[],options:n}=this,s=e,r=this._getActiveElements(t,o,i,s),a=function(t){return"mouseup"===t.type||"click"===t.type||"contextmenu"===t.type}(t),l=function(t,e,i,o){return i&&"mouseout"!==t.type?o?e:t:null}(t,this._lastEvent,i,a);i&&(this._lastEvent=null,of(n.onHover,[t,r,this],this),a&&of(n.onClick,[t,r,this],this));const d=!sf(r,o);return(d||e)&&(this._active=r,this._updateHoverStyles(r,o,e)),this._lastEvent=l,d}_getActiveElements(t,e,i,o){if("mouseout"===t.type)return[];if(!i)return e;const n=this.options.hover;return this.getElementsAtEventForMode(t,n.mode,n,o)}}function Ux(){return nf(qx.instances,t=>t._plugins.invalidate())}function jx(t,e,i,o){const n=Nv(t.options.borderRadius,["outerStart","outerEnd","innerStart","innerEnd"]);const s=(i-e)/2,r=Math.min(s,o*e/2),a=t=>{const e=(i-Math.min(s,t))*o/2;return Ff(t,0,Math.min(s,e))};return{outerStart:a(n.outerStart),outerEnd:a(n.outerEnd),innerStart:Ff(n.innerStart,0,r),innerEnd:Ff(n.innerEnd,0,r)}}function Hx(t,e,i,o){return{x:i+t*Math.cos(e),y:o+t*Math.sin(e)}}function Wx(t,e,i,o,n,s){const{x:r,y:a,startAngle:l,pixelMargin:d,innerRadius:c}=e,h=Math.max(e.outerRadius+o+i-d,0),u=c>0?c+o+i+d:0;let p=0;const m=n-l;if(o){const t=((c>0?c-o:0)+(h>0?h-o:0))/2;p=(m-(0!==t?m*t/(t+o):m))/2}const g=(m-Math.max(.001,m*h-i/bf)/h)/2,f=l+g+p,v=n-g-p,{outerStart:b,outerEnd:y,innerStart:x,innerEnd:w}=jx(e,u,h,v-f),_=h-b,k=h-y,C=f+b/_,S=v-y/k,A=u+x,$=u+w,E=f+x/A,T=v-w/$;if(t.beginPath(),s){const e=(C+S)/2;if(t.arc(r,a,h,C,e),t.arc(r,a,h,e,S),y>0){const e=Hx(k,S,r,a);t.arc(e.x,e.y,y,S,v+kf)}const i=Hx($,v,r,a);if(t.lineTo(i.x,i.y),w>0){const e=Hx($,T,r,a);t.arc(e.x,e.y,w,v+kf,T+Math.PI)}const o=(v-w/u+(f+x/u))/2;if(t.arc(r,a,u,v-w/u,o,!0),t.arc(r,a,u,o,f+x/u,!0),x>0){const e=Hx(A,E,r,a);t.arc(e.x,e.y,x,E+Math.PI,f-kf)}const n=Hx(_,f,r,a);if(t.lineTo(n.x,n.y),b>0){const e=Hx(_,C,r,a);t.arc(e.x,e.y,b,f-kf,C)}}else{t.moveTo(r,a);const e=Math.cos(C)*h+r,i=Math.sin(C)*h+a;t.lineTo(e,i);const o=Math.cos(S)*h+r,n=Math.sin(S)*h+a;t.lineTo(o,n)}t.closePath()}function Vx(t,e,i,o,n){const{fullCircles:s,startAngle:r,circumference:a,options:l}=e,{borderWidth:d,borderJoinStyle:c,borderDash:h,borderDashOffset:u,borderRadius:p}=l,m="inner"===l.borderAlign;if(!d)return;t.setLineDash(h||[]),t.lineDashOffset=u,m?(t.lineWidth=2*d,t.lineJoin=c||"round"):(t.lineWidth=d,t.lineJoin=c||"bevel");let g=e.endAngle;if(s){Wx(t,e,i,o,g,n);for(let e=0;e<s;++e)t.stroke();isNaN(a)||(g=r+(a%yf||yf))}m&&function(t,e,i){const{startAngle:o,pixelMargin:n,x:s,y:r,outerRadius:a,innerRadius:l}=e;let d=n/a;t.beginPath(),t.arc(s,r,a,o-d,i+d),l>n?(d=n/l,t.arc(s,r,l,i+d,o-d,!0)):t.arc(s,r,n,i+kf,o-kf),t.closePath(),t.clip()}(t,e,g),l.selfJoin&&g-r>=bf&&0===p&&"miter"!==c&&function(t,e,i){const{startAngle:o,x:n,y:s,outerRadius:r,innerRadius:a,options:l}=e,{borderWidth:d,borderJoinStyle:c}=l,h=Math.min(d/r,Nf(o-i));if(t.beginPath(),t.arc(n,s,r-d/2,o+h/2,i-h/2),a>0){const e=Math.min(d/a,Nf(o-i));t.arc(n,s,a+d/2,i-e/2,o+e/2,!0)}else{const e=Math.min(d/2,r*Nf(o-i));if("round"===c)t.arc(n,s,e,i-bf/2,o+bf/2,!0);else if("bevel"===c){const r=2*e*e,a=-r*Math.cos(i+bf/2)+n,l=-r*Math.sin(i+bf/2)+s,d=r*Math.cos(o+bf/2)+n,c=r*Math.sin(o+bf/2)+s;t.lineTo(a,l),t.lineTo(d,c)}}t.closePath(),t.moveTo(0,0),t.rect(0,0,t.canvas.width,t.canvas.height),t.clip("evenodd")}(t,e,g),s||(Wx(t,e,i,o,g,n),t.stroke())}class Zx extends tx{static id="arc";static defaults={borderAlign:"center",borderColor:"#fff",borderDash:[],borderDashOffset:0,borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0,circular:!0,selfJoin:!1};static defaultRoutes={backgroundColor:"backgroundColor"};static descriptors={_scriptable:!0,_indexable:t=>"borderDash"!==t};circumference;endAngle;fullCircles;innerRadius;outerRadius;pixelMargin;startAngle;constructor(t){super(),this.options=void 0,this.circumference=void 0,this.startAngle=void 0,this.endAngle=void 0,this.innerRadius=void 0,this.outerRadius=void 0,this.pixelMargin=0,this.fullCircles=0,t&&Object.assign(this,t)}inRange(t,e,i){const o=this.getProps(["x","y"],i),{angle:n,distance:s}=Lf(o,{x:t,y:e}),{startAngle:r,endAngle:a,innerRadius:l,outerRadius:d,circumference:c}=this.getProps(["startAngle","endAngle","innerRadius","outerRadius","circumference"],i),h=(this.options.spacing+this.options.borderWidth)/2,u=tf(c,a-r),p=Bf(n,r,a)&&r!==a,m=u>=yf||p,g=qf(s,l+h,d+h);return m&&g}getCenterPoint(t){const{x:e,y:i,startAngle:o,endAngle:n,innerRadius:s,outerRadius:r}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius"],t),{offset:a,spacing:l}=this.options,d=(o+n)/2,c=(s+r+l+a)/2;return{x:e+Math.cos(d)*c,y:i+Math.sin(d)*c}}tooltipPosition(t){return this.getCenterPoint(t)}draw(t){const{options:e,circumference:i}=this,o=(e.offset||0)/4,n=(e.spacing||0)/2,s=e.circular;if(this.pixelMargin="inner"===e.borderAlign?.33:0,this.fullCircles=i>yf?Math.floor(i/yf):0,0===i||this.innerRadius<0||this.outerRadius<0)return;t.save();const r=(this.startAngle+this.endAngle)/2;t.translate(Math.cos(r)*o,Math.sin(r)*o);const a=o*(1-Math.sin(Math.min(bf,i||0)));t.fillStyle=e.backgroundColor,t.strokeStyle=e.borderColor,function(t,e,i,o,n){const{fullCircles:s,startAngle:r,circumference:a}=e;let l=e.endAngle;if(s){Wx(t,e,i,o,l,n);for(let e=0;e<s;++e)t.fill();isNaN(a)||(l=r+(a%yf||yf))}Wx(t,e,i,o,l,n),t.fill()}(t,this,a,n,s),Vx(t,this,a,n,s),t.restore()}}function Yx(t,e,i=e){t.lineCap=tf(i.borderCapStyle,e.borderCapStyle),t.setLineDash(tf(i.borderDash,e.borderDash)),t.lineDashOffset=tf(i.borderDashOffset,e.borderDashOffset),t.lineJoin=tf(i.borderJoinStyle,e.borderJoinStyle),t.lineWidth=tf(i.borderWidth,e.borderWidth),t.strokeStyle=tf(i.borderColor,e.borderColor)}function Kx(t,e,i){t.lineTo(i.x,i.y)}function Gx(t,e,i={}){const o=t.length,{start:n=0,end:s=o-1}=i,{start:r,end:a}=e,l=Math.max(n,r),d=Math.min(s,a),c=n<r&&s<r||n>a&&s>a;return{count:o,start:l,loop:e.loop,ilen:d<l&&!c?o+d-l:d-l}}function Xx(t,e,i,o){const{points:n,options:s}=e,{count:r,start:a,loop:l,ilen:d}=Gx(n,i,o),c=function(t){return t.stepped?Ev:t.tension||"monotone"===t.cubicInterpolationMode?Tv:Kx}(s);let h,u,p,{move:m=!0,reverse:g}=o||{};for(h=0;h<=d;++h)u=n[(a+(g?d-h:h))%r],u.skip||(m?(t.moveTo(u.x,u.y),m=!1):c(t,p,u,g,s.stepped),p=u);return l&&(u=n[(a+(g?d:0))%r],c(t,p,u,g,s.stepped)),!!l}function Qx(t,e,i,o){const n=e.points,{count:s,start:r,ilen:a}=Gx(n,i,o),{move:l=!0,reverse:d}=o||{};let c,h,u,p,m,g,f=0,v=0;const b=t=>(r+(d?a-t:t))%s,y=()=>{p!==m&&(t.lineTo(f,m),t.lineTo(f,p),t.lineTo(f,g))};for(l&&(h=n[b(0)],t.moveTo(h.x,h.y)),c=0;c<=a;++c){if(h=n[b(c)],h.skip)continue;const e=h.x,i=h.y,o=0|e;o===u?(i<p?p=i:i>m&&(m=i),f=(v*f+e)/++v):(y(),t.lineTo(e,i),u=o,v=0,p=m=i),g=i}y()}function Jx(t){const e=t.options,i=e.borderDash&&e.borderDash.length;return!(t._decimated||t._loop||e.tension||"monotone"===e.cubicInterpolationMode||e.stepped||i)?Qx:Xx}const tw="function"==typeof Path2D;function ew(t,e,i,o){tw&&!e.options.segment?function(t,e,i,o){let n=e._path;n||(n=e._path=new Path2D,e.path(n,i,o)&&n.closePath()),Yx(t,e.options),t.stroke(n)}(t,e,i,o):function(t,e,i,o){const{segments:n,options:s}=e,r=Jx(e);for(const a of n)Yx(t,s,a.style),t.beginPath(),r(t,e,a,{start:i,end:i+o-1})&&t.closePath(),t.stroke()}(t,e,i,o)}class iw extends tx{static id="line";static defaults={borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:"default",fill:!1,spanGaps:!1,stepped:!1,tension:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};static descriptors={_scriptable:!0,_indexable:t=>"borderDash"!==t&&"fill"!==t};constructor(t){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,t&&Object.assign(this,t)}updateControlPoints(t,e){const i=this.options;if((i.tension||"monotone"===i.cubicInterpolationMode)&&!i.stepped&&!this._pointsUpdated){const o=i.spanGaps?this._loop:this._fullLoop;hb(this._points,i,t,o,e),this._pointsUpdated=!0}}set points(t){this._points=t,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=function(t,e){const i=t.points,o=t.options.spanGaps,n=i.length;if(!n)return[];const s=!!t._loop,{start:r,end:a}=function(t,e,i,o){let n=0,s=e-1;if(i&&!o)for(;n<e&&!t[n].skip;)n++;for(;n<e&&t[n].skip;)n++;for(n%=e,i&&(s+=n);s>n&&t[s%e].skip;)s--;return s%=e,{start:n,end:s}}(i,n,s,o);return Ob(t,!0===o?[{start:r,end:a,loop:s}]:function(t,e,i,o){const n=t.length,s=[];let r,a=e,l=t[e];for(r=e+1;r<=i;++r){const i=t[r%n];i.skip||i.stop?l.skip||(o=!1,s.push({start:e%n,end:(r-1)%n,loop:o}),e=a=i.stop?r:null):(a=r,l.skip&&(e=r)),l=i}return null!==a&&s.push({start:e%n,end:a%n,loop:o}),s}(i,r,a<r?a+n:a,!!t._fullLoop&&0===r&&a===n-1),i,e)}(this,this.options.segment))}first(){const t=this.segments,e=this.points;return t.length&&e[t[0].start]}last(){const t=this.segments,e=this.points,i=t.length;return i&&e[t[i-1].end]}interpolate(t,e){const i=this.options,o=t[e],n=this.points,s=Ib(this,{property:e,start:o,end:o});if(!s.length)return;const r=[],a=function(t){return t.stepped?Sb:t.tension||"monotone"===t.cubicInterpolationMode?Ab:Cb}(i);let l,d;for(l=0,d=s.length;l<d;++l){const{start:d,end:c}=s[l],h=n[d],u=n[c];if(h===u){r.push(h);continue}const p=a(h,u,Math.abs((o-h[e])/(u[e]-h[e])),i.stepped);p[e]=t[e],r.push(p)}return 1===r.length?r[0]:r}pathSegment(t,e,i){return Jx(this)(t,this,e,i)}path(t,e,i){const o=this.segments,n=Jx(this);let s=this._loop;e=e||0,i=i||this.points.length-e;for(const r of o)s&=n(t,this,r,{start:e,end:e+i-1});return!!s}draw(t,e,i,o){const n=this.options||{};(this.points||[]).length&&n.borderWidth&&(t.save(),ew(t,this,i,o),t.restore()),this.animated&&(this._pointsUpdated=!1,this._path=void 0)}}function ow(t,e,i,o){const n=t.options,{[i]:s}=t.getProps([i],o);return Math.abs(e-s)<n.radius+n.hitRadius}class nw extends tx{static id="point";parsed;skip;stop;static defaults={borderWidth:1,hitRadius:1,hoverBorderWidth:1,hoverRadius:4,pointStyle:"circle",radius:3,rotation:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};constructor(t){super(),this.options=void 0,this.parsed=void 0,this.skip=void 0,this.stop=void 0,t&&Object.assign(this,t)}inRange(t,e,i){const o=this.options,{x:n,y:s}=this.getProps(["x","y"],i);return Math.pow(t-n,2)+Math.pow(e-s,2)<Math.pow(o.hitRadius+o.radius,2)}inXRange(t,e){return ow(this,t,"x",e)}inYRange(t,e){return ow(this,t,"y",e)}getCenterPoint(t){const{x:e,y:i}=this.getProps(["x","y"],t);return{x:e,y:i}}size(t){let e=(t=t||this.options||{}).radius||0;e=Math.max(e,e&&t.hoverRadius||0);return 2*(e+(e&&t.borderWidth||0))}draw(t,e){const i=this.options;this.skip||i.radius<.1||!Sv(this,e,this.size(i)/2)||(t.strokeStyle=i.borderColor,t.lineWidth=i.borderWidth,t.fillStyle=i.backgroundColor,kv(t,i,this.x,this.y))}getRange(){const t=this.options||{};return t.radius+t.hitRadius}}function sw(t,e){const{x:i,y:o,base:n,width:s,height:r}=t.getProps(["x","y","base","width","height"],e);let a,l,d,c,h;return t.horizontal?(h=r/2,a=Math.min(i,n),l=Math.max(i,n),d=o-h,c=o+h):(h=s/2,a=i-h,l=i+h,d=Math.min(o,n),c=Math.max(o,n)),{left:a,top:d,right:l,bottom:c}}function rw(t,e,i,o){return t?0:Ff(e,i,o)}function aw(t){const e=sw(t),i=e.right-e.left,o=e.bottom-e.top,n=function(t,e,i){const o=t.options.borderWidth,n=t.borderSkipped,s=Bv(o);return{t:rw(n.top,s.top,0,i),r:rw(n.right,s.right,0,e),b:rw(n.bottom,s.bottom,0,i),l:rw(n.left,s.left,0,e)}}(t,i/2,o/2),s=function(t,e,i){const{enableBorderRadius:o}=t.getProps(["enableBorderRadius"]),n=t.options.borderRadius,s=Fv(n),r=Math.min(e,i),a=t.borderSkipped,l=o||Xg(n);return{topLeft:rw(!l||a.top||a.left,s.topLeft,0,r),topRight:rw(!l||a.top||a.right,s.topRight,0,r),bottomLeft:rw(!l||a.bottom||a.left,s.bottomLeft,0,r),bottomRight:rw(!l||a.bottom||a.right,s.bottomRight,0,r)}}(t,i/2,o/2);return{outer:{x:e.left,y:e.top,w:i,h:o,radius:s},inner:{x:e.left+n.l,y:e.top+n.t,w:i-n.l-n.r,h:o-n.t-n.b,radius:{topLeft:Math.max(0,s.topLeft-Math.max(n.t,n.l)),topRight:Math.max(0,s.topRight-Math.max(n.t,n.r)),bottomLeft:Math.max(0,s.bottomLeft-Math.max(n.b,n.l)),bottomRight:Math.max(0,s.bottomRight-Math.max(n.b,n.r))}}}}function lw(t,e,i,o){const n=null===e,s=null===i,r=t&&!(n&&s)&&sw(t,o);return r&&(n||qf(e,r.left,r.right))&&(s||qf(i,r.top,r.bottom))}function dw(t,e){t.rect(e.x,e.y,e.w,e.h)}function cw(t,e,i={}){const o=t.x!==i.x?-e:0,n=t.y!==i.y?-e:0,s=(t.x+t.w!==i.x+i.w?e:0)-o,r=(t.y+t.h!==i.y+i.h?e:0)-n;return{x:t.x+o,y:t.y+n,w:t.w+s,h:t.h+r,radius:t.radius}}class hw extends tx{static id="bar";static defaults={borderSkipped:"start",borderWidth:0,borderRadius:0,inflateAmount:"auto",pointStyle:void 0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};constructor(t){super(),this.options=void 0,this.horizontal=void 0,this.base=void 0,this.width=void 0,this.height=void 0,this.inflateAmount=void 0,t&&Object.assign(this,t)}draw(t){const{inflateAmount:e,options:{borderColor:i,backgroundColor:o}}=this,{inner:n,outer:s}=aw(this),r=(a=s.radius).topLeft||a.topRight||a.bottomLeft||a.bottomRight?Iv:dw;var a;t.save(),s.w===n.w&&s.h===n.h||(t.beginPath(),r(t,cw(s,e,n)),t.clip(),r(t,cw(n,-e,s)),t.fillStyle=i,t.fill("evenodd")),t.beginPath(),r(t,cw(n,e)),t.fillStyle=o,t.fill(),t.restore()}inRange(t,e,i){return lw(this,t,e,i)}inXRange(t,e){return lw(this,t,null,e)}inYRange(t,e){return lw(this,null,t,e)}getCenterPoint(t){const{x:e,y:i,base:o,horizontal:n}=this.getProps(["x","y","base","horizontal"],t);return{x:n?(e+o)/2:e,y:n?i:(i+o)/2}}getRange(t){return"x"===t?this.width/2:this.height/2}}var uw=Object.freeze({__proto__:null,ArcElement:Zx,BarElement:hw,LineElement:iw,PointElement:nw});const pw=["rgb(54, 162, 235)","rgb(255, 99, 132)","rgb(255, 159, 64)","rgb(255, 205, 86)","rgb(75, 192, 192)","rgb(153, 102, 255)","rgb(201, 203, 207)"],mw=pw.map(t=>t.replace("rgb(","rgba(").replace(")",", 0.5)"));function gw(t){return pw[t%pw.length]}function fw(t){return mw[t%mw.length]}function vw(t){let e=0;return(i,o)=>{const n=t.getDatasetMeta(o).controller;n instanceof hy?e=function(t,e){return t.backgroundColor=t.data.map(()=>gw(e++)),e}(i,e):n instanceof uy?e=function(t,e){return t.backgroundColor=t.data.map(()=>fw(e++)),e}(i,e):n&&(e=function(t,e){return t.borderColor=gw(e),t.backgroundColor=fw(e),++e}(i,e))}}function bw(t){let e;for(e in t)if(t[e].borderColor||t[e].backgroundColor)return!0;return!1}var yw={id:"colors",defaults:{enabled:!0,forceOverride:!1},beforeLayout(t,e,i){if(!i.enabled)return;const{data:{datasets:o},options:n}=t.config,{elements:s}=n,r=bw(o)||(a=n)&&(a.borderColor||a.backgroundColor)||s&&bw(s)||"rgba(0,0,0,0.1)"!==bv.borderColor||"rgba(0,0,0,0.1)"!==bv.backgroundColor;var a;if(!i.forceOverride&&r)return;const l=vw(t);o.forEach(l)}};function xw(t){if(t._decimated){const e=t._data;delete t._decimated,delete t._data,Object.defineProperty(t,"data",{configurable:!0,enumerable:!0,writable:!0,value:e})}}function ww(t){t.data.datasets.forEach(t=>{xw(t)})}var _w={id:"decimation",defaults:{algorithm:"min-max",enabled:!1},beforeElementsUpdate:(t,e,i)=>{if(!i.enabled)return void ww(t);const o=t.width;t.data.datasets.forEach((e,n)=>{const{_data:s,indexAxis:r}=e,a=t.getDatasetMeta(n),l=s||e.data;if("y"===jv([r,t.options.indexAxis]))return;if(!a.controller.supportsDecimation)return;const d=t.scales[a.xAxisID];if("linear"!==d.type&&"time"!==d.type)return;if(t.options.parsing)return;let{start:c,count:h}=function(t,e){const i=e.length;let o,n=0;const{iScale:s}=t,{min:r,max:a,minDefined:l,maxDefined:d}=s.getUserBounds();return l&&(n=Ff(jf(e,s.axis,r).lo,0,i-1)),o=d?Ff(jf(e,s.axis,a).hi+1,n,i)-n:i-n,{start:n,count:o}}(a,l);if(h<=(i.threshold||4*o))return void xw(e);let u;switch(Kg(s)&&(e._data=l,delete e.data,Object.defineProperty(e,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(t){this._data=t}})),i.algorithm){case"lttb":u=function(t,e,i,o,n){const s=n.samples||o;if(s>=i)return t.slice(e,e+i);const r=[],a=(i-2)/(s-2);let l=0;const d=e+i-1;let c,h,u,p,m,g=e;for(r[l++]=t[g],c=0;c<s-2;c++){let o,n=0,s=0;const d=Math.floor((c+1)*a)+1+e,f=Math.min(Math.floor((c+2)*a)+1,i)+e,v=f-d;for(o=d;o<f;o++)n+=t[o].x,s+=t[o].y;n/=v,s/=v;const b=Math.floor(c*a)+1+e,y=Math.min(Math.floor((c+1)*a)+1,i)+e,{x:x,y:w}=t[g];for(u=p=-1,o=b;o<y;o++)p=.5*Math.abs((x-n)*(t[o].y-w)-(x-t[o].x)*(s-w)),p>u&&(u=p,h=t[o],m=o);r[l++]=h,g=m}return r[l++]=t[d],r}(l,c,h,o,i);break;case"min-max":u=function(t,e,i,o){let n,s,r,a,l,d,c,h,u,p,m=0,g=0;const f=[],v=e+i-1,b=t[e].x,y=t[v].x-b;for(n=e;n<e+i;++n){s=t[n],r=(s.x-b)/y*o,a=s.y;const e=0|r;if(e===l)a<u?(u=a,d=n):a>p&&(p=a,c=n),m=(g*m+s.x)/++g;else{const i=n-1;if(!Kg(d)&&!Kg(c)){const e=Math.min(d,c),o=Math.max(d,c);e!==h&&e!==i&&f.push({...t[e],x:m}),o!==h&&o!==i&&f.push({...t[o],x:m})}n>0&&i!==h&&f.push(t[i]),f.push(s),l=e,g=0,u=p=a,d=c=h=n}}return f}(l,c,h,o);break;default:throw new Error(`Unsupported decimation algorithm '${i.algorithm}'`)}e._decimated=u})},destroy(t){ww(t)}};function kw(t,e,i,o){if(o)return;let n=e[t],s=i[t];return"angle"===t&&(n=Nf(n),s=Nf(s)),{property:t,start:n,end:s}}function Cw(t,e,i){for(;e>t;e--){const t=i[e];if(!isNaN(t.x)&&!isNaN(t.y))break}return e}function Sw(t,e,i,o){return t&&e?o(t[i],e[i]):t?t[i]:e?e[i]:0}function Aw(t,e){let i=[],o=!1;return Gg(t)?(o=!0,i=t):i=function(t,e){const{x:i=null,y:o=null}=t||{},n=e.points,s=[];return e.segments.forEach(({start:t,end:e})=>{e=Cw(t,e,n);const r=n[t],a=n[e];null!==o?(s.push({x:r.x,y:o}),s.push({x:a.x,y:o})):null!==i&&(s.push({x:i,y:r.y}),s.push({x:i,y:a.y}))}),s}(t,e),i.length?new iw({points:i,options:{tension:0},_loop:o,_fullLoop:o}):null}function $w(t){return t&&!1!==t.fill}function Ew(t,e,i){let o=t[e].fill;const n=[e];let s;if(!i)return o;for(;!1!==o&&-1===n.indexOf(o);){if(!Qg(o))return o;if(s=t[o],!s)return!1;if(s.visible)return o;n.push(o),o=s.fill}return!1}function Tw(t,e,i){const o=function(t){const e=t.options,i=e.fill;let o=tf(i&&i.target,i);void 0===o&&(o=!!e.backgroundColor);if(!1===o||null===o)return!1;if(!0===o)return"origin";return o}(t);if(Xg(o))return!isNaN(o.value)&&o;let n=parseFloat(o);return Qg(n)&&Math.floor(n)===n?function(t,e,i,o){"-"!==t&&"+"!==t||(i=e+i);if(i===e||i<0||i>=o)return!1;return i}(o[0],e,n,i):["origin","start","end","stack","shape"].indexOf(o)>=0&&o}function Dw(t,e,i){const o=[];for(let n=0;n<i.length;n++){const s=i[n],{first:r,last:a,point:l}=Mw(s,e,"x");if(!(!l||r&&a))if(r)o.unshift(l);else if(t.push(l),!a)break}t.push(...o)}function Mw(t,e,i){const o=t.interpolate(e,i);if(!o)return{};const n=o[i],s=t.segments,r=t.points;let a=!1,l=!1;for(let t=0;t<s.length;t++){const e=s[t],o=r[e.start][i],d=r[e.end][i];if(qf(n,o,d)){a=n===o,l=n===d;break}}return{first:a,last:l,point:o}}class zw{constructor(t){this.x=t.x,this.y=t.y,this.radius=t.radius}pathSegment(t,e,i){const{x:o,y:n,radius:s}=this;return e=e||{start:0,end:yf},t.arc(o,n,s,e.end,e.start,!0),!i.bounds}interpolate(t){const{x:e,y:i,radius:o}=this,n=t.angle;return{x:e+Math.cos(n)*o,y:i+Math.sin(n)*o,angle:n}}}function Iw(t){const{chart:e,fill:i,line:o}=t;if(Qg(i))return function(t,e){const i=t.getDatasetMeta(e),o=i&&t.isDatasetVisible(e);return o?i.dataset:null}(e,i);if("stack"===i)return function(t){const{scale:e,index:i,line:o}=t,n=[],s=o.segments,r=o.points,a=function(t,e){const i=[],o=t.getMatchingVisibleMetas("line");for(let t=0;t<o.length;t++){const n=o[t];if(n.index===e)break;n.hidden||i.unshift(n.dataset)}return i}(e,i);a.push(Aw({x:null,y:e.bottom},o));for(let t=0;t<s.length;t++){const e=s[t];for(let t=e.start;t<=e.end;t++)Dw(n,r[t],a)}return new iw({points:n,options:{}})}(t);if("shape"===i)return!0;const n=function(t){const e=t.scale||{};if(e.getPointPositionForValue)return function(t){const{scale:e,fill:i}=t,o=e.options,n=e.getLabels().length,s=o.reverse?e.max:e.min,r=function(t,e,i){let o;return o="start"===t?i:"end"===t?e.options.reverse?e.min:e.max:Xg(t)?t.value:e.getBaseValue(),o}(i,e,s),a=[];if(o.grid.circular){const t=e.getPointPositionForValue(0,s);return new zw({x:t.x,y:t.y,radius:e.getDistanceFromCenterForValue(r)})}for(let t=0;t<n;++t)a.push(e.getPointPositionForValue(t,r));return a}(t);return function(t){const{scale:e={},fill:i}=t,o=function(t,e){let i=null;return"start"===t?i=e.bottom:"end"===t?i=e.top:Xg(t)?i=e.getPixelForValue(t.value):e.getBasePixel&&(i=e.getBasePixel()),i}(i,e);if(Qg(o)){const t=e.isHorizontal();return{x:t?o:null,y:t?null:o}}return null}(t)}(t);return n instanceof zw?n:Aw(n,o)}function Ow(t,e,i){const o=Iw(e),{chart:n,index:s,line:r,scale:a,axis:l}=e,d=r.options,c=d.fill,h=d.backgroundColor,{above:u=h,below:p=h}=c||{},m=n.getDatasetMeta(s),g=Nb(n,m);o&&r.points.length&&(Av(t,i),function(t,e){const{line:i,target:o,above:n,below:s,area:r,scale:a,clip:l}=e,d=i._loop?"angle":e.axis;t.save();let c=s;s!==n&&("x"===d?(Lw(t,o,r.top),Rw(t,{line:i,target:o,color:n,scale:a,property:d,clip:l}),t.restore(),t.save(),Lw(t,o,r.bottom)):"y"===d&&(Pw(t,o,r.left),Rw(t,{line:i,target:o,color:s,scale:a,property:d,clip:l}),t.restore(),t.save(),Pw(t,o,r.right),c=n));Rw(t,{line:i,target:o,color:c,scale:a,property:d,clip:l}),t.restore()}(t,{line:r,target:o,above:u,below:p,area:i,scale:a,axis:l,clip:g}),$v(t))}function Lw(t,e,i){const{segments:o,points:n}=e;let s=!0,r=!1;t.beginPath();for(const a of o){const{start:o,end:l}=a,d=n[o],c=n[Cw(o,l,n)];s?(t.moveTo(d.x,d.y),s=!1):(t.lineTo(d.x,i),t.lineTo(d.x,d.y)),r=!!e.pathSegment(t,a,{move:r}),r?t.closePath():t.lineTo(c.x,i)}t.lineTo(e.first().x,i),t.closePath(),t.clip()}function Pw(t,e,i){const{segments:o,points:n}=e;let s=!0,r=!1;t.beginPath();for(const a of o){const{start:o,end:l}=a,d=n[o],c=n[Cw(o,l,n)];s?(t.moveTo(d.x,d.y),s=!1):(t.lineTo(i,d.y),t.lineTo(d.x,d.y)),r=!!e.pathSegment(t,a,{move:r}),r?t.closePath():t.lineTo(i,c.y)}t.lineTo(i,e.first().y),t.closePath(),t.clip()}function Rw(t,e){const{line:i,target:o,property:n,color:s,scale:r,clip:a}=e,l=function(t,e,i){const o=t.segments,n=t.points,s=e.points,r=[];for(const t of o){let{start:o,end:a}=t;a=Cw(o,a,n);const l=kw(i,n[o],n[a],t.loop);if(!e.segments){r.push({source:t,target:l,start:n[o],end:n[a]});continue}const d=Ib(e,l);for(const e of d){const o=kw(i,s[e.start],s[e.end],e.loop),a=zb(t,n,o);for(const t of a)r.push({source:t,target:e,start:{[i]:Sw(l,o,"start",Math.max)},end:{[i]:Sw(l,o,"end",Math.min)}})}}return r}(i,o,n);for(const{source:e,target:d,start:c,end:h}of l){const{style:{backgroundColor:l=s}={}}=e,u=!0!==o;t.save(),t.fillStyle=l,Nw(t,r,a,u&&kw(n,c,h)),t.beginPath();const p=!!i.pathSegment(t,e);let m;if(u){p?t.closePath():Bw(t,o,h,n);const e=!!o.pathSegment(t,d,{move:p,reverse:!0});m=p&&e,m||Bw(t,o,c,n)}t.closePath(),t.fill(m?"evenodd":"nonzero"),t.restore()}}function Nw(t,e,i,o){const n=e.chart.chartArea,{property:s,start:r,end:a}=o||{};if("x"===s||"y"===s){let e,o,l,d;"x"===s?(e=r,o=n.top,l=a,d=n.bottom):(e=n.left,o=r,l=n.right,d=a),t.beginPath(),i&&(e=Math.max(e,i.left),l=Math.min(l,i.right),o=Math.max(o,i.top),d=Math.min(d,i.bottom)),t.rect(e,o,l-e,d-o),t.clip()}}function Bw(t,e,i,o){const n=e.interpolate(i,o);n&&t.lineTo(n.x,n.y)}var Fw={id:"filler",afterDatasetsUpdate(t,e,i){const o=(t.data.datasets||[]).length,n=[];let s,r,a,l;for(r=0;r<o;++r)s=t.getDatasetMeta(r),a=s.dataset,l=null,a&&a.options&&a instanceof iw&&(l={visible:t.isDatasetVisible(r),index:r,fill:Tw(a,r,o),chart:t,axis:s.controller.options.indexAxis,scale:s.vScale,line:a}),s.$filler=l,n.push(l);for(r=0;r<o;++r)l=n[r],l&&!1!==l.fill&&(l.fill=Ew(n,r,i.propagate))},beforeDraw(t,e,i){const o="beforeDraw"===i.drawTime,n=t.getSortedVisibleDatasetMetas(),s=t.chartArea;for(let e=n.length-1;e>=0;--e){const i=n[e].$filler;i&&(i.line.updateControlPoints(s,i.axis),o&&i.fill&&Ow(t.ctx,i,s))}},beforeDatasetsDraw(t,e,i){if("beforeDatasetsDraw"!==i.drawTime)return;const o=t.getSortedVisibleDatasetMetas();for(let e=o.length-1;e>=0;--e){const i=o[e].$filler;$w(i)&&Ow(t.ctx,i,t.chartArea)}},beforeDatasetDraw(t,e,i){const o=e.meta.$filler;$w(o)&&"beforeDatasetDraw"===i.drawTime&&Ow(t.ctx,o,t.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};const qw=(t,e)=>{let{boxHeight:i=e,boxWidth:o=e}=t;return t.usePointStyle&&(i=Math.min(i,e),o=t.pointStyleWidth||Math.min(o,e)),{boxWidth:o,boxHeight:i,itemHeight:Math.max(e,i)}};class Uw extends tx{constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e,i){this.maxWidth=t,this.maxHeight=e,this._margins=i,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const t=this.options.labels||{};let e=of(t.generateLabels,[this.chart],this)||[];t.filter&&(e=e.filter(e=>t.filter(e,this.chart.data))),t.sort&&(e=e.sort((e,i)=>t.sort(e,i,this.chart.data))),this.options.reverse&&e.reverse(),this.legendItems=e}fit(){const{options:t,ctx:e}=this;if(!t.display)return void(this.width=this.height=0);const i=t.labels,o=Uv(i.font),n=o.size,s=this._computeTitleHeight(),{boxWidth:r,itemHeight:a}=qw(i,n);let l,d;e.font=o.string,this.isHorizontal()?(l=this.maxWidth,d=this._fitRows(s,n,r,a)+10):(d=this.maxHeight,l=this._fitCols(s,o,r,a)+10),this.width=Math.min(l,t.maxWidth||this.maxWidth),this.height=Math.min(d,t.maxHeight||this.maxHeight)}_fitRows(t,e,i,o){const{ctx:n,maxWidth:s,options:{labels:{padding:r}}}=this,a=this.legendHitBoxes=[],l=this.lineWidths=[0],d=o+r;let c=t;n.textAlign="left",n.textBaseline="middle";let h=-1,u=-d;return this.legendItems.forEach((t,p)=>{const m=i+e/2+n.measureText(t.text).width;(0===p||l[l.length-1]+m+2*r>s)&&(c+=d,l[l.length-(p>0?0:1)]=0,u+=d,h++),a[p]={left:0,top:u,row:h,width:m,height:o},l[l.length-1]+=m+r}),c}_fitCols(t,e,i,o){const{ctx:n,maxHeight:s,options:{labels:{padding:r}}}=this,a=this.legendHitBoxes=[],l=this.columnSizes=[],d=s-t;let c=r,h=0,u=0,p=0,m=0;return this.legendItems.forEach((t,s)=>{const{itemWidth:g,itemHeight:f}=function(t,e,i,o,n){const s=function(t,e,i,o){let n=t.text;n&&"string"!=typeof n&&(n=n.reduce((t,e)=>t.length>e.length?t:e));return e+i.size/2+o.measureText(n).width}(o,t,e,i),r=function(t,e,i){let o=t;"string"!=typeof e.text&&(o=jw(e,i));return o}(n,o,e.lineHeight);return{itemWidth:s,itemHeight:r}}(i,e,n,t,o);s>0&&u+f+2*r>d&&(c+=h+r,l.push({width:h,height:u}),p+=h+r,m++,h=u=0),a[s]={left:p,top:u,col:m,width:g,height:f},h=Math.max(h,g),u+=f+r}),c+=h,l.push({width:h,height:u}),c}adjustHitBoxes(){if(!this.options.display)return;const t=this._computeTitleHeight(),{legendHitBoxes:e,options:{align:i,labels:{padding:o},rtl:n}}=this,s=$b(n,this.left,this.width);if(this.isHorizontal()){let n=0,r=Xf(i,this.left+o,this.right-this.lineWidths[n]);for(const a of e)n!==a.row&&(n=a.row,r=Xf(i,this.left+o,this.right-this.lineWidths[n])),a.top+=this.top+t+o,a.left=s.leftForLtr(s.x(r),a.width),r+=a.width+o}else{let n=0,r=Xf(i,this.top+t+o,this.bottom-this.columnSizes[n].height);for(const a of e)a.col!==n&&(n=a.col,r=Xf(i,this.top+t+o,this.bottom-this.columnSizes[n].height)),a.top=r,a.left+=this.left+o,a.left=s.leftForLtr(s.x(a.left),a.width),r+=a.height+o}}isHorizontal(){return"top"===this.options.position||"bottom"===this.options.position}draw(){if(this.options.display){const t=this.ctx;Av(t,this),this._draw(),$v(t)}}_draw(){const{options:t,columnSizes:e,lineWidths:i,ctx:o}=this,{align:n,labels:s}=t,r=bv.color,a=$b(t.rtl,this.left,this.width),l=Uv(s.font),{padding:d}=s,c=l.size,h=c/2;let u;this.drawTitle(),o.textAlign=a.textAlign("left"),o.textBaseline="middle",o.lineWidth=.5,o.font=l.string;const{boxWidth:p,boxHeight:m,itemHeight:g}=qw(s,c),f=this.isHorizontal(),v=this._computeTitleHeight();u=f?{x:Xf(n,this.left+d,this.right-i[0]),y:this.top+d+v,line:0}:{x:this.left+d,y:Xf(n,this.top+v+d,this.bottom-e[0].height),line:0},Eb(this.ctx,t.textDirection);const b=g+d;this.legendItems.forEach((y,x)=>{o.strokeStyle=y.fontColor,o.fillStyle=y.fontColor;const w=o.measureText(y.text).width,_=a.textAlign(y.textAlign||(y.textAlign=s.textAlign)),k=p+h+w;let C=u.x,S=u.y;a.setWidth(this.width),f?x>0&&C+k+d>this.right&&(S=u.y+=b,u.line++,C=u.x=Xf(n,this.left+d,this.right-i[u.line])):x>0&&S+b>this.bottom&&(C=u.x=C+e[u.line].width+d,u.line++,S=u.y=Xf(n,this.top+v+d,this.bottom-e[u.line].height));if(function(t,e,i){if(isNaN(p)||p<=0||isNaN(m)||m<0)return;o.save();const n=tf(i.lineWidth,1);if(o.fillStyle=tf(i.fillStyle,r),o.lineCap=tf(i.lineCap,"butt"),o.lineDashOffset=tf(i.lineDashOffset,0),o.lineJoin=tf(i.lineJoin,"miter"),o.lineWidth=n,o.strokeStyle=tf(i.strokeStyle,r),o.setLineDash(tf(i.lineDash,[])),s.usePointStyle){const r={radius:m*Math.SQRT2/2,pointStyle:i.pointStyle,rotation:i.rotation,borderWidth:n},l=a.xPlus(t,p/2);Cv(o,r,l,e+h,s.pointStyleWidth&&p)}else{const s=e+Math.max((c-m)/2,0),r=a.leftForLtr(t,p),l=Fv(i.borderRadius);o.beginPath(),Object.values(l).some(t=>0!==t)?Iv(o,{x:r,y:s,w:p,h:m,radius:l}):o.rect(r,s,p,m),o.fill(),0!==n&&o.stroke()}o.restore()}(a.x(C),S,y),C=((t,e,i,o)=>t===(o?"left":"right")?i:"center"===t?(e+i)/2:e)(_,C+p+h,f?C+k:this.right,t.rtl),function(t,e,i){zv(o,i.text,t,e+g/2,l,{strikethrough:i.hidden,textAlign:a.textAlign(i.textAlign)})}(a.x(C),S,y),f)u.x+=k+d;else if("string"!=typeof y.text){const t=l.lineHeight;u.y+=jw(y,t)+d}else u.y+=b}),Tb(this.ctx,t.textDirection)}drawTitle(){const t=this.options,e=t.title,i=Uv(e.font),o=qv(e.padding);if(!e.display)return;const n=$b(t.rtl,this.left,this.width),s=this.ctx,r=e.position,a=i.size/2,l=o.top+a;let d,c=this.left,h=this.width;if(this.isHorizontal())h=Math.max(...this.lineWidths),d=this.top+l,c=Xf(t.align,c,this.right-h);else{const e=this.columnSizes.reduce((t,e)=>Math.max(t,e.height),0);d=l+Xf(t.align,this.top,this.bottom-e-t.labels.padding-this._computeTitleHeight())}const u=Xf(r,c,c+h);s.textAlign=n.textAlign(Gf(r)),s.textBaseline="middle",s.strokeStyle=e.color,s.fillStyle=e.color,s.font=i.string,zv(s,e.text,u,d,i)}_computeTitleHeight(){const t=this.options.title,e=Uv(t.font),i=qv(t.padding);return t.display?e.lineHeight+i.height:0}_getLegendItemAt(t,e){let i,o,n;if(qf(t,this.left,this.right)&&qf(e,this.top,this.bottom))for(n=this.legendHitBoxes,i=0;i<n.length;++i)if(o=n[i],qf(t,o.left,o.left+o.width)&&qf(e,o.top,o.top+o.height))return this.legendItems[i];return null}handleEvent(t){const e=this.options;if(!function(t,e){if(("mousemove"===t||"mouseout"===t)&&(e.onHover||e.onLeave))return!0;if(e.onClick&&("click"===t||"mouseup"===t))return!0;return!1}(t.type,e))return;const i=this._getLegendItemAt(t.x,t.y);if("mousemove"===t.type||"mouseout"===t.type){const o=this._hoveredItem,n=((t,e)=>null!==t&&null!==e&&t.datasetIndex===e.datasetIndex&&t.index===e.index)(o,i);o&&!n&&of(e.onLeave,[t,o,this],this),this._hoveredItem=i,i&&!n&&of(e.onHover,[t,i,this],this)}else i&&of(e.onClick,[t,i,this],this)}}function jw(t,e){return e*(t.text?t.text.length:0)}var Hw={id:"legend",_element:Uw,start(t,e,i){const o=t.legend=new Uw({ctx:t.ctx,options:i,chart:t});Py.configure(t,o,i),Py.addBox(t,o)},stop(t){Py.removeBox(t,t.legend),delete t.legend},beforeUpdate(t,e,i){const o=t.legend;Py.configure(t,o,i),o.options=i},afterUpdate(t){const e=t.legend;e.buildLabels(),e.adjustHitBoxes()},afterEvent(t,e){e.replay||t.legend.handleEvent(e.event)},defaults:{display:!0,position:"top",align:"center",fullSize:!0,reverse:!1,weight:1e3,onClick(t,e,i){const o=e.datasetIndex,n=i.chart;n.isDatasetVisible(o)?(n.hide(o),e.hidden=!0):(n.show(o),e.hidden=!1)},onHover:null,onLeave:null,labels:{color:t=>t.chart.options.color,boxWidth:40,padding:10,generateLabels(t){const e=t.data.datasets,{labels:{usePointStyle:i,pointStyle:o,textAlign:n,color:s,useBorderRadius:r,borderRadius:a}}=t.legend.options;return t._getSortedDatasetMetas().map(t=>{const l=t.controller.getStyle(i?0:void 0),d=qv(l.borderWidth);return{text:e[t.index].label,fillStyle:l.backgroundColor,fontColor:s,hidden:!t.visible,lineCap:l.borderCapStyle,lineDash:l.borderDash,lineDashOffset:l.borderDashOffset,lineJoin:l.borderJoinStyle,lineWidth:(d.width+d.height)/4,strokeStyle:l.borderColor,pointStyle:o||l.pointStyle,rotation:l.rotation,textAlign:n||l.textAlign,borderRadius:r&&(a||l.borderRadius),datasetIndex:t.index}},this)}},title:{color:t=>t.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:t=>!t.startsWith("on"),labels:{_scriptable:t=>!["generateLabels","filter","sort"].includes(t)}}};class Ww extends tx{constructor(t){super(),this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e){const i=this.options;if(this.left=0,this.top=0,!i.display)return void(this.width=this.height=this.right=this.bottom=0);this.width=this.right=t,this.height=this.bottom=e;const o=Gg(i.text)?i.text.length:1;this._padding=qv(i.padding);const n=o*Uv(i.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=n:this.width=n}isHorizontal(){const t=this.options.position;return"top"===t||"bottom"===t}_drawArgs(t){const{top:e,left:i,bottom:o,right:n,options:s}=this,r=s.align;let a,l,d,c=0;return this.isHorizontal()?(l=Xf(r,i,n),d=e+t,a=n-i):("left"===s.position?(l=i+t,d=Xf(r,o,e),c=-.5*bf):(l=n-t,d=Xf(r,e,o),c=.5*bf),a=o-e),{titleX:l,titleY:d,maxWidth:a,rotation:c}}draw(){const t=this.ctx,e=this.options;if(!e.display)return;const i=Uv(e.font),o=i.lineHeight/2+this._padding.top,{titleX:n,titleY:s,maxWidth:r,rotation:a}=this._drawArgs(o);zv(t,e.text,0,0,i,{color:e.color,maxWidth:r,rotation:a,textAlign:Gf(e.align),textBaseline:"middle",translation:[n,s]})}}var Vw={id:"title",_element:Ww,start(t,e,i){!function(t,e){const i=new Ww({ctx:t.ctx,options:e,chart:t});Py.configure(t,i,e),Py.addBox(t,i),t.titleBlock=i}(t,i)},stop(t){const e=t.titleBlock;Py.removeBox(t,e),delete t.titleBlock},beforeUpdate(t,e,i){const o=t.titleBlock;Py.configure(t,o,i),o.options=i},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const Zw=new WeakMap;var Yw={id:"subtitle",start(t,e,i){const o=new Ww({ctx:t.ctx,options:i,chart:t});Py.configure(t,o,i),Py.addBox(t,o),Zw.set(t,o)},stop(t){Py.removeBox(t,Zw.get(t)),Zw.delete(t)},beforeUpdate(t,e,i){const o=Zw.get(t);Py.configure(t,o,i),o.options=i},defaults:{align:"center",display:!1,font:{weight:"normal"},fullSize:!0,padding:0,position:"top",text:"",weight:1500},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const Kw={average(t){if(!t.length)return!1;let e,i,o=new Set,n=0,s=0;for(e=0,i=t.length;e<i;++e){const i=t[e].element;if(i&&i.hasValue()){const t=i.tooltipPosition();o.add(t.x),n+=t.y,++s}}if(0===s||0===o.size)return!1;const r=[...o].reduce((t,e)=>t+e)/o.size;return{x:r,y:n/s}},nearest(t,e){if(!t.length)return!1;let i,o,n,s=e.x,r=e.y,a=Number.POSITIVE_INFINITY;for(i=0,o=t.length;i<o;++i){const o=t[i].element;if(o&&o.hasValue()){const t=Pf(e,o.getCenterPoint());t<a&&(a=t,n=o)}}if(n){const t=n.tooltipPosition();s=t.x,r=t.y}return{x:s,y:r}}};function Gw(t,e){return e&&(Gg(e)?Array.prototype.push.apply(t,e):t.push(e)),t}function Xw(t){return("string"==typeof t||t instanceof String)&&t.indexOf("\n")>-1?t.split("\n"):t}function Qw(t,e){const{element:i,datasetIndex:o,index:n}=e,s=t.getDatasetMeta(o).controller,{label:r,value:a}=s.getLabelAndValue(n);return{chart:t,label:r,parsed:s.getParsed(n),raw:t.data.datasets[o].data[n],formattedValue:a,dataset:s.getDataset(),dataIndex:n,datasetIndex:o,element:i}}function Jw(t,e){const i=t.chart.ctx,{body:o,footer:n,title:s}=t,{boxWidth:r,boxHeight:a}=e,l=Uv(e.bodyFont),d=Uv(e.titleFont),c=Uv(e.footerFont),h=s.length,u=n.length,p=o.length,m=qv(e.padding);let g=m.height,f=0,v=o.reduce((t,e)=>t+e.before.length+e.lines.length+e.after.length,0);if(v+=t.beforeBody.length+t.afterBody.length,h&&(g+=h*d.lineHeight+(h-1)*e.titleSpacing+e.titleMarginBottom),v){g+=p*(e.displayColors?Math.max(a,l.lineHeight):l.lineHeight)+(v-p)*l.lineHeight+(v-1)*e.bodySpacing}u&&(g+=e.footerMarginTop+u*c.lineHeight+(u-1)*e.footerSpacing);let b=0;const y=function(t){f=Math.max(f,i.measureText(t).width+b)};return i.save(),i.font=d.string,nf(t.title,y),i.font=l.string,nf(t.beforeBody.concat(t.afterBody),y),b=e.displayColors?r+2+e.boxPadding:0,nf(o,t=>{nf(t.before,y),nf(t.lines,y),nf(t.after,y)}),b=0,i.font=c.string,nf(t.footer,y),i.restore(),f+=m.width,{width:f,height:g}}function t_(t,e,i,o){const{x:n,width:s}=i,{width:r,chartArea:{left:a,right:l}}=t;let d="center";return"center"===o?d=n<=(a+l)/2?"left":"right":n<=s/2?d="left":n>=r-s/2&&(d="right"),function(t,e,i,o){const{x:n,width:s}=o,r=i.caretSize+i.caretPadding;return"left"===t&&n+s+r>e.width||"right"===t&&n-s-r<0||void 0}(d,t,e,i)&&(d="center"),d}function e_(t,e,i){const o=i.yAlign||e.yAlign||function(t,e){const{y:i,height:o}=e;return i<o/2?"top":i>t.height-o/2?"bottom":"center"}(t,i);return{xAlign:i.xAlign||e.xAlign||t_(t,e,i,o),yAlign:o}}function i_(t,e,i,o){const{caretSize:n,caretPadding:s,cornerRadius:r}=t,{xAlign:a,yAlign:l}=i,d=n+s,{topLeft:c,topRight:h,bottomLeft:u,bottomRight:p}=Fv(r);let m=function(t,e){let{x:i,width:o}=t;return"right"===e?i-=o:"center"===e&&(i-=o/2),i}(e,a);const g=function(t,e,i){let{y:o,height:n}=t;return"top"===e?o+=i:o-="bottom"===e?n+i:n/2,o}(e,l,d);return"center"===l?"left"===a?m+=d:"right"===a&&(m-=d):"left"===a?m-=Math.max(c,u)+n:"right"===a&&(m+=Math.max(h,p)+n),{x:Ff(m,0,o.width-e.width),y:Ff(g,0,o.height-e.height)}}function o_(t,e,i){const o=qv(i.padding);return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-o.right:t.x+o.left}function n_(t){return Gw([],Xw(t))}function s_(t,e){const i=e&&e.dataset&&e.dataset.tooltip&&e.dataset.tooltip.callbacks;return i?t.override(i):t}const r_={beforeTitle:Zg,title(t){if(t.length>0){const e=t[0],i=e.chart.data.labels,o=i?i.length:0;if(this&&this.options&&"dataset"===this.options.mode)return e.dataset.label||"";if(e.label)return e.label;if(o>0&&e.dataIndex<o)return i[e.dataIndex]}return""},afterTitle:Zg,beforeBody:Zg,beforeLabel:Zg,label(t){if(this&&this.options&&"dataset"===this.options.mode)return t.label+": "+t.formattedValue||t.formattedValue;let e=t.dataset.label||"";e&&(e+=": ");const i=t.formattedValue;return Kg(i)||(e+=i),e},labelColor(t){const e=t.chart.getDatasetMeta(t.datasetIndex).controller.getStyle(t.dataIndex);return{borderColor:e.borderColor,backgroundColor:e.backgroundColor,borderWidth:e.borderWidth,borderDash:e.borderDash,borderDashOffset:e.borderDashOffset,borderRadius:0}},labelTextColor(){return this.options.bodyColor},labelPointStyle(t){const e=t.chart.getDatasetMeta(t.datasetIndex).controller.getStyle(t.dataIndex);return{pointStyle:e.pointStyle,rotation:e.rotation}},afterLabel:Zg,afterBody:Zg,beforeFooter:Zg,footer:Zg,afterFooter:Zg};function a_(t,e,i,o){const n=t[e].call(i,o);return void 0===n?r_[e].call(i,o):n}class l_ extends tx{static positioners=Kw;constructor(t){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=t.chart,this.options=t.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(t){this.options=t,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const t=this._cachedAnimations;if(t)return t;const e=this.chart,i=this.options.setContext(this.getContext()),o=i.enabled&&e.options.animation&&i.animations,n=new Hb(this.chart,o);return o._cacheable&&(this._cachedAnimations=Object.freeze(n)),n}getContext(){return this.$context||(this.$context=(t=this.chart.getContext(),e=this,i=this._tooltipItems,Hv(t,{tooltip:e,tooltipItems:i,type:"tooltip"})));var t,e,i}getTitle(t,e){const{callbacks:i}=e,o=a_(i,"beforeTitle",this,t),n=a_(i,"title",this,t),s=a_(i,"afterTitle",this,t);let r=[];return r=Gw(r,Xw(o)),r=Gw(r,Xw(n)),r=Gw(r,Xw(s)),r}getBeforeBody(t,e){return n_(a_(e.callbacks,"beforeBody",this,t))}getBody(t,e){const{callbacks:i}=e,o=[];return nf(t,t=>{const e={before:[],lines:[],after:[]},n=s_(i,t);Gw(e.before,Xw(a_(n,"beforeLabel",this,t))),Gw(e.lines,a_(n,"label",this,t)),Gw(e.after,Xw(a_(n,"afterLabel",this,t))),o.push(e)}),o}getAfterBody(t,e){return n_(a_(e.callbacks,"afterBody",this,t))}getFooter(t,e){const{callbacks:i}=e,o=a_(i,"beforeFooter",this,t),n=a_(i,"footer",this,t),s=a_(i,"afterFooter",this,t);let r=[];return r=Gw(r,Xw(o)),r=Gw(r,Xw(n)),r=Gw(r,Xw(s)),r}_createItems(t){const e=this._active,i=this.chart.data,o=[],n=[],s=[];let r,a,l=[];for(r=0,a=e.length;r<a;++r)l.push(Qw(this.chart,e[r]));return t.filter&&(l=l.filter((e,o,n)=>t.filter(e,o,n,i))),t.itemSort&&(l=l.sort((e,o)=>t.itemSort(e,o,i))),nf(l,e=>{const i=s_(t.callbacks,e);o.push(a_(i,"labelColor",this,e)),n.push(a_(i,"labelPointStyle",this,e)),s.push(a_(i,"labelTextColor",this,e))}),this.labelColors=o,this.labelPointStyles=n,this.labelTextColors=s,this.dataPoints=l,l}update(t,e){const i=this.options.setContext(this.getContext()),o=this._active;let n,s=[];if(o.length){const t=Kw[i.position].call(this,o,this._eventPosition);s=this._createItems(i),this.title=this.getTitle(s,i),this.beforeBody=this.getBeforeBody(s,i),this.body=this.getBody(s,i),this.afterBody=this.getAfterBody(s,i),this.footer=this.getFooter(s,i);const e=this._size=Jw(this,i),r=Object.assign({},t,e),a=e_(this.chart,i,r),l=i_(i,r,a,this.chart);this.xAlign=a.xAlign,this.yAlign=a.yAlign,n={opacity:1,x:l.x,y:l.y,width:e.width,height:e.height,caretX:t.x,caretY:t.y}}else 0!==this.opacity&&(n={opacity:0});this._tooltipItems=s,this.$context=void 0,n&&this._resolveAnimations().update(this,n),t&&i.external&&i.external.call(this,{chart:this.chart,tooltip:this,replay:e})}drawCaret(t,e,i,o){const n=this.getCaretPosition(t,i,o);e.lineTo(n.x1,n.y1),e.lineTo(n.x2,n.y2),e.lineTo(n.x3,n.y3)}getCaretPosition(t,e,i){const{xAlign:o,yAlign:n}=this,{caretSize:s,cornerRadius:r}=i,{topLeft:a,topRight:l,bottomLeft:d,bottomRight:c}=Fv(r),{x:h,y:u}=t,{width:p,height:m}=e;let g,f,v,b,y,x;return"center"===n?(y=u+m/2,"left"===o?(g=h,f=g-s,b=y+s,x=y-s):(g=h+p,f=g+s,b=y-s,x=y+s),v=g):(f="left"===o?h+Math.max(a,d)+s:"right"===o?h+p-Math.max(l,c)-s:this.caretX,"top"===n?(b=u,y=b-s,g=f-s,v=f+s):(b=u+m,y=b+s,g=f+s,v=f-s),x=b),{x1:g,x2:f,x3:v,y1:b,y2:y,y3:x}}drawTitle(t,e,i){const o=this.title,n=o.length;let s,r,a;if(n){const l=$b(i.rtl,this.x,this.width);for(t.x=o_(this,i.titleAlign,i),e.textAlign=l.textAlign(i.titleAlign),e.textBaseline="middle",s=Uv(i.titleFont),r=i.titleSpacing,e.fillStyle=i.titleColor,e.font=s.string,a=0;a<n;++a)e.fillText(o[a],l.x(t.x),t.y+s.lineHeight/2),t.y+=s.lineHeight+r,a+1===n&&(t.y+=i.titleMarginBottom-r)}}_drawColorBox(t,e,i,o,n){const s=this.labelColors[i],r=this.labelPointStyles[i],{boxHeight:a,boxWidth:l}=n,d=Uv(n.bodyFont),c=o_(this,"left",n),h=o.x(c),u=a<d.lineHeight?(d.lineHeight-a)/2:0,p=e.y+u;if(n.usePointStyle){const e={radius:Math.min(l,a)/2,pointStyle:r.pointStyle,rotation:r.rotation,borderWidth:1},i=o.leftForLtr(h,l)+l/2,d=p+a/2;t.strokeStyle=n.multiKeyBackground,t.fillStyle=n.multiKeyBackground,kv(t,e,i,d),t.strokeStyle=s.borderColor,t.fillStyle=s.backgroundColor,kv(t,e,i,d)}else{t.lineWidth=Xg(s.borderWidth)?Math.max(...Object.values(s.borderWidth)):s.borderWidth||1,t.strokeStyle=s.borderColor,t.setLineDash(s.borderDash||[]),t.lineDashOffset=s.borderDashOffset||0;const e=o.leftForLtr(h,l),i=o.leftForLtr(o.xPlus(h,1),l-2),r=Fv(s.borderRadius);Object.values(r).some(t=>0!==t)?(t.beginPath(),t.fillStyle=n.multiKeyBackground,Iv(t,{x:e,y:p,w:l,h:a,radius:r}),t.fill(),t.stroke(),t.fillStyle=s.backgroundColor,t.beginPath(),Iv(t,{x:i,y:p+1,w:l-2,h:a-2,radius:r}),t.fill()):(t.fillStyle=n.multiKeyBackground,t.fillRect(e,p,l,a),t.strokeRect(e,p,l,a),t.fillStyle=s.backgroundColor,t.fillRect(i,p+1,l-2,a-2))}t.fillStyle=this.labelTextColors[i]}drawBody(t,e,i){const{body:o}=this,{bodySpacing:n,bodyAlign:s,displayColors:r,boxHeight:a,boxWidth:l,boxPadding:d}=i,c=Uv(i.bodyFont);let h=c.lineHeight,u=0;const p=$b(i.rtl,this.x,this.width),m=function(i){e.fillText(i,p.x(t.x+u),t.y+h/2),t.y+=h+n},g=p.textAlign(s);let f,v,b,y,x,w,_;for(e.textAlign=s,e.textBaseline="middle",e.font=c.string,t.x=o_(this,g,i),e.fillStyle=i.bodyColor,nf(this.beforeBody,m),u=r&&"right"!==g?"center"===s?l/2+d:l+2+d:0,y=0,w=o.length;y<w;++y){for(f=o[y],v=this.labelTextColors[y],e.fillStyle=v,nf(f.before,m),b=f.lines,r&&b.length&&(this._drawColorBox(e,t,y,p,i),h=Math.max(c.lineHeight,a)),x=0,_=b.length;x<_;++x)m(b[x]),h=c.lineHeight;nf(f.after,m)}u=0,h=c.lineHeight,nf(this.afterBody,m),t.y-=n}drawFooter(t,e,i){const o=this.footer,n=o.length;let s,r;if(n){const a=$b(i.rtl,this.x,this.width);for(t.x=o_(this,i.footerAlign,i),t.y+=i.footerMarginTop,e.textAlign=a.textAlign(i.footerAlign),e.textBaseline="middle",s=Uv(i.footerFont),e.fillStyle=i.footerColor,e.font=s.string,r=0;r<n;++r)e.fillText(o[r],a.x(t.x),t.y+s.lineHeight/2),t.y+=s.lineHeight+i.footerSpacing}}drawBackground(t,e,i,o){const{xAlign:n,yAlign:s}=this,{x:r,y:a}=t,{width:l,height:d}=i,{topLeft:c,topRight:h,bottomLeft:u,bottomRight:p}=Fv(o.cornerRadius);e.fillStyle=o.backgroundColor,e.strokeStyle=o.borderColor,e.lineWidth=o.borderWidth,e.beginPath(),e.moveTo(r+c,a),"top"===s&&this.drawCaret(t,e,i,o),e.lineTo(r+l-h,a),e.quadraticCurveTo(r+l,a,r+l,a+h),"center"===s&&"right"===n&&this.drawCaret(t,e,i,o),e.lineTo(r+l,a+d-p),e.quadraticCurveTo(r+l,a+d,r+l-p,a+d),"bottom"===s&&this.drawCaret(t,e,i,o),e.lineTo(r+u,a+d),e.quadraticCurveTo(r,a+d,r,a+d-u),"center"===s&&"left"===n&&this.drawCaret(t,e,i,o),e.lineTo(r,a+c),e.quadraticCurveTo(r,a,r+c,a),e.closePath(),e.fill(),o.borderWidth>0&&e.stroke()}_updateAnimationTarget(t){const e=this.chart,i=this.$animations,o=i&&i.x,n=i&&i.y;if(o||n){const i=Kw[t.position].call(this,this._active,this._eventPosition);if(!i)return;const s=this._size=Jw(this,t),r=Object.assign({},i,this._size),a=e_(e,t,r),l=i_(t,r,a,e);o._to===l.x&&n._to===l.y||(this.xAlign=a.xAlign,this.yAlign=a.yAlign,this.width=s.width,this.height=s.height,this.caretX=i.x,this.caretY=i.y,this._resolveAnimations().update(this,l))}}_willRender(){return!!this.opacity}draw(t){const e=this.options.setContext(this.getContext());let i=this.opacity;if(!i)return;this._updateAnimationTarget(e);const o={width:this.width,height:this.height},n={x:this.x,y:this.y};i=Math.abs(i)<.001?0:i;const s=qv(e.padding),r=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;e.enabled&&r&&(t.save(),t.globalAlpha=i,this.drawBackground(n,t,o,e),Eb(t,e.textDirection),n.y+=s.top,this.drawTitle(n,t,e),this.drawBody(n,t,e),this.drawFooter(n,t,e),Tb(t,e.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,e){const i=this._active,o=t.map(({datasetIndex:t,index:e})=>{const i=this.chart.getDatasetMeta(t);if(!i)throw new Error("Cannot find a dataset at index "+t);return{datasetIndex:t,element:i.data[e],index:e}}),n=!sf(i,o),s=this._positionChanged(o,e);(n||s)&&(this._active=o,this._eventPosition=e,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,e,i=!0){if(e&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const o=this.options,n=this._active||[],s=this._getActiveElements(t,n,e,i),r=this._positionChanged(s,t),a=e||!sf(s,n)||r;return a&&(this._active=s,(o.enabled||o.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,e))),a}_getActiveElements(t,e,i,o){const n=this.options;if("mouseout"===t.type)return[];if(!o)return e.filter(t=>this.chart.data.datasets[t.datasetIndex]&&void 0!==this.chart.getDatasetMeta(t.datasetIndex).controller.getParsed(t.index));const s=this.chart.getElementsAtEventForMode(t,n.mode,n,i);return n.reverse&&s.reverse(),s}_positionChanged(t,e){const{caretX:i,caretY:o,options:n}=this,s=Kw[n.position].call(this,t,e);return!1!==s&&(i!==s.x||o!==s.y)}}var d_={id:"tooltip",_element:l_,positioners:Kw,afterInit(t,e,i){i&&(t.tooltip=new l_({chart:t,options:i}))},beforeUpdate(t,e,i){t.tooltip&&t.tooltip.initialize(i)},reset(t,e,i){t.tooltip&&t.tooltip.initialize(i)},afterDraw(t){const e=t.tooltip;if(e&&e._willRender()){const i={tooltip:e};if(!1===t.notifyPlugins("beforeTooltipDraw",{...i,cancelable:!0}))return;e.draw(t.ctx),t.notifyPlugins("afterTooltipDraw",i)}},afterEvent(t,e){if(t.tooltip){const i=e.replay;t.tooltip.handleEvent(e.event,i,e.inChartArea)&&(e.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(t,e)=>e.bodyFont.size,boxWidth:(t,e)=>e.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:r_},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:t=>"filter"!==t&&"itemSort"!==t&&"external"!==t,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]},c_=Object.freeze({__proto__:null,Colors:yw,Decimation:_w,Filler:Fw,Legend:Hw,SubTitle:Yw,Title:Vw,Tooltip:d_});function h_(t,e,i,o){const n=t.indexOf(e);if(-1===n)return((t,e,i,o)=>("string"==typeof e?(i=t.push(e)-1,o.unshift({index:i,label:e})):isNaN(e)&&(i=null),i))(t,e,i,o);return n!==t.lastIndexOf(e)?i:n}function u_(t){const e=this.getLabels();return t>=0&&t<e.length?e[t]:t}function p_(t,e){const i=[],{bounds:o,step:n,min:s,max:r,precision:a,count:l,maxTicks:d,maxDigits:c,includeBounds:h}=t,u=n||1,p=d-1,{min:m,max:g}=e,f=!Kg(s),v=!Kg(r),b=!Kg(l),y=(g-m)/(c+1);let x,w,_,k,C=Tf((g-m)/p/u)*u;if(C<1e-14&&!f&&!v)return[{value:m},{value:g}];k=Math.ceil(g/C)-Math.floor(m/C),k>p&&(C=Tf(k*C/p/u)*u),Kg(a)||(x=Math.pow(10,a),C=Math.ceil(C*x)/x),"ticks"===o?(w=Math.floor(m/C)*C,_=Math.ceil(g/C)*C):(w=m,_=g),f&&v&&n&&function(t,e){const i=Math.round(t);return i-e<=t&&i+e>=t}((r-s)/n,C/1e3)?(k=Math.round(Math.min((r-s)/C,d)),C=(r-s)/k,w=s,_=r):b?(w=f?s:w,_=v?r:_,k=l-1,C=(_-w)/k):(k=(_-w)/C,k=Ef(k,Math.round(k),C/1e3)?Math.round(k):Math.ceil(k));const S=Math.max(Of(C),Of(w));x=Math.pow(10,Kg(a)?S:a),w=Math.round(w*x)/x,_=Math.round(_*x)/x;let A=0;for(f&&(h&&w!==s?(i.push({value:s}),w<s&&A++,Ef(Math.round((w+A*C)*x)/x,s,m_(s,y,t))&&A++):w<s&&A++);A<k;++A){const t=Math.round((w+A*C)*x)/x;if(v&&t>r)break;i.push({value:t})}return v&&h&&_!==r?i.length&&Ef(i[i.length-1].value,r,m_(r,y,t))?i[i.length-1].value=r:i.push({value:r}):v&&_!==r||i.push({value:_}),i}function m_(t,e,{horizontal:i,minRotation:o}){const n=zf(o),s=(i?Math.sin(n):Math.cos(n))||.001,r=.75*e*(""+t).length;return Math.min(e/s,r)}class g_ extends cx{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(t,e){return Kg(t)||("number"==typeof t||t instanceof Number)&&!isFinite(+t)?null:+t}handleTickRangeOptions(){const{beginAtZero:t}=this.options,{minDefined:e,maxDefined:i}=this.getUserBounds();let{min:o,max:n}=this;const s=t=>o=e?o:t,r=t=>n=i?n:t;if(t){const t=$f(o),e=$f(n);t<0&&e<0?r(0):t>0&&e>0&&s(0)}if(o===n){let e=0===n?1:Math.abs(.05*n);r(n+e),t||s(o-e)}this.min=o,this.max=n}getTickLimit(){const t=this.options.ticks;let e,{maxTicksLimit:i,stepSize:o}=t;return o?(e=Math.ceil(this.max/o)-Math.floor(this.min/o)+1,e>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${o} would result generating up to ${e} ticks. Limiting to 1000.`),e=1e3)):(e=this.computeTickLimit(),i=i||11),i&&(e=Math.min(i,e)),e}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const t=this.options,e=t.ticks;let i=this.getTickLimit();i=Math.max(2,i);const o=p_({maxTicks:i,bounds:t.bounds,min:t.min,max:t.max,precision:e.precision,step:e.stepSize,count:e.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:e.minRotation||0,includeBounds:!1!==e.includeBounds},this._range||this);return"ticks"===t.bounds&&Mf(o,this,"value"),t.reverse?(o.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),o}configure(){const t=this.ticks;let e=this.min,i=this.max;if(super.configure(),this.options.offset&&t.length){const o=(i-e)/Math.max(t.length-1,1)/2;e-=o,i+=o}this._startValue=e,this._endValue=i,this._valueRange=i-e}getLabelForValue(t){return cv(t,this.chart.options.locale,this.options.ticks.format)}}class f_ extends g_{static id="linear";static defaults={ticks:{callback:uv.formatters.numeric}};determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=Qg(t)?t:0,this.max=Qg(e)?e:1,this.handleTickRangeOptions()}computeTickLimit(){const t=this.isHorizontal(),e=t?this.width:this.height,i=zf(this.options.ticks.minRotation),o=(t?Math.sin(i):Math.cos(i))||.001,n=this._resolveTickFontOptions(0);return Math.ceil(e/Math.min(40,n.lineHeight/o))}getPixelForValue(t){return null===t?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getValueForPixel(t){return this._startValue+this.getDecimalForPixel(t)*this._valueRange}}const v_=t=>Math.floor(Af(t)),b_=(t,e)=>Math.pow(10,v_(t)+e);function y_(t){return 1===t/Math.pow(10,v_(t))}function x_(t,e,i){const o=Math.pow(10,i),n=Math.floor(t/o);return Math.ceil(e/o)-n}function w_(t,{min:e,max:i}){e=Jg(t.min,e);const o=[],n=v_(e);let s=function(t,e){let i=v_(e-t);for(;x_(t,e,i)>10;)i++;for(;x_(t,e,i)<10;)i--;return Math.min(i,v_(t))}(e,i),r=s<0?Math.pow(10,Math.abs(s)):1;const a=Math.pow(10,s),l=n>s?Math.pow(10,n):0,d=Math.round((e-l)*r)/r,c=Math.floor((e-l)/a/10)*a*10;let h=Math.floor((d-c)/Math.pow(10,s)),u=Jg(t.min,Math.round((l+c+h*Math.pow(10,s))*r)/r);for(;u<i;)o.push({value:u,major:y_(u),significand:h}),h>=10?h=h<15?15:20:h++,h>=20&&(s++,h=2,r=s>=0?1:r),u=Math.round((l+c+h*Math.pow(10,s))*r)/r;const p=Jg(t.max,u);return o.push({value:p,major:y_(p),significand:h}),o}class __ extends cx{static id="logarithmic";static defaults={ticks:{callback:uv.formatters.logarithmic,major:{enabled:!0}}};constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(t,e){const i=g_.prototype.parse.apply(this,[t,e]);if(0!==i)return Qg(i)&&i>0?i:null;this._zero=!0}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=Qg(t)?Math.max(0,t):null,this.max=Qg(e)?Math.max(0,e):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!Qg(this._userMin)&&(this.min=t===b_(this.min,0)?b_(this.min,-1):b_(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let i=this.min,o=this.max;const n=e=>i=t?i:e,s=t=>o=e?o:t;i===o&&(i<=0?(n(1),s(10)):(n(b_(i,-1)),s(b_(o,1)))),i<=0&&n(b_(o,-1)),o<=0&&s(b_(i,1)),this.min=i,this.max=o}buildTicks(){const t=this.options,e=w_({min:this._userMin,max:this._userMax},this);return"ticks"===t.bounds&&Mf(e,this,"value"),t.reverse?(e.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),e}getLabelForValue(t){return void 0===t?"0":cv(t,this.chart.options.locale,this.options.ticks.format)}configure(){const t=this.min;super.configure(),this._startValue=Af(t),this._valueRange=Af(this.max)-Af(t)}getPixelForValue(t){return void 0!==t&&0!==t||(t=this.min),null===t||isNaN(t)?NaN:this.getPixelForDecimal(t===this.min?0:(Af(t)-this._startValue)/this._valueRange)}getValueForPixel(t){const e=this.getDecimalForPixel(t);return Math.pow(10,this._startValue+e*this._valueRange)}}function k_(t){const e=t.ticks;if(e.display&&t.display){const t=qv(e.backdropPadding);return tf(e.font&&e.font.size,bv.font.size)+t.height}return 0}function C_(t,e,i){return i=Gg(i)?i:[i],{w:xv(t,e.string,i),h:i.length*e.lineHeight}}function S_(t,e,i,o,n){return t===o||t===n?{start:e-i/2,end:e+i/2}:t<o||t>n?{start:e-i,end:e}:{start:e,end:e+i}}function A_(t){const e={l:t.left+t._padding.left,r:t.right-t._padding.right,t:t.top+t._padding.top,b:t.bottom-t._padding.bottom},i=Object.assign({},e),o=[],n=[],s=t._pointLabels.length,r=t.options.pointLabels,a=r.centerPointLabels?bf/s:0;for(let l=0;l<s;l++){const s=r.setContext(t.getPointLabelContext(l));n[l]=s.padding;const d=t.getPointPosition(l,t.drawingArea+n[l],a),c=Uv(s.font),h=C_(t.ctx,c,t._pointLabels[l]);o[l]=h;const u=Nf(t.getIndexAngle(l)+a),p=Math.round(If(u));$_(i,e,u,S_(p,d.x,h.w,0,180),S_(p,d.y,h.h,90,270))}t.setCenterPoint(e.l-i.l,i.r-e.r,e.t-i.t,i.b-e.b),t._pointLabelItems=function(t,e,i){const o=[],n=t._pointLabels.length,s=t.options,{centerPointLabels:r,display:a}=s.pointLabels,l={extra:k_(s)/2,additionalAngle:r?bf/n:0};let d;for(let s=0;s<n;s++){l.padding=i[s],l.size=e[s];const n=E_(t,s,l);o.push(n),"auto"===a&&(n.visible=T_(n,d),n.visible&&(d=n))}return o}(t,o,n)}function $_(t,e,i,o,n){const s=Math.abs(Math.sin(i)),r=Math.abs(Math.cos(i));let a=0,l=0;o.start<e.l?(a=(e.l-o.start)/s,t.l=Math.min(t.l,e.l-a)):o.end>e.r&&(a=(o.end-e.r)/s,t.r=Math.max(t.r,e.r+a)),n.start<e.t?(l=(e.t-n.start)/r,t.t=Math.min(t.t,e.t-l)):n.end>e.b&&(l=(n.end-e.b)/r,t.b=Math.max(t.b,e.b+l))}function E_(t,e,i){const o=t.drawingArea,{extra:n,additionalAngle:s,padding:r,size:a}=i,l=t.getPointPosition(e,o+n+r,s),d=Math.round(If(Nf(l.angle+kf))),c=function(t,e,i){90===i||270===i?t-=e/2:(i>270||i<90)&&(t-=e);return t}(l.y,a.h,d),h=function(t){if(0===t||180===t)return"center";if(t<180)return"left";return"right"}(d),u=function(t,e,i){"right"===i?t-=e:"center"===i&&(t-=e/2);return t}(l.x,a.w,h);return{visible:!0,x:l.x,y:c,textAlign:h,left:u,top:c,right:u+a.w,bottom:c+a.h}}function T_(t,e){if(!e)return!0;const{left:i,top:o,right:n,bottom:s}=t;return!(Sv({x:i,y:o},e)||Sv({x:i,y:s},e)||Sv({x:n,y:o},e)||Sv({x:n,y:s},e))}function D_(t,e,i){const{left:o,top:n,right:s,bottom:r}=i,{backdropColor:a}=e;if(!Kg(a)){const i=Fv(e.borderRadius),l=qv(e.backdropPadding);t.fillStyle=a;const d=o-l.left,c=n-l.top,h=s-o+l.width,u=r-n+l.height;Object.values(i).some(t=>0!==t)?(t.beginPath(),Iv(t,{x:d,y:c,w:h,h:u,radius:i}),t.fill()):t.fillRect(d,c,h,u)}}function M_(t,e,i,o){const{ctx:n}=t;if(i)n.arc(t.xCenter,t.yCenter,e,0,yf);else{let i=t.getPointPosition(0,e);n.moveTo(i.x,i.y);for(let s=1;s<o;s++)i=t.getPointPosition(s,e),n.lineTo(i.x,i.y)}}class z_ extends g_{static id="radialLinear";static defaults={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:uv.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback:t=>t,padding:5,centerPointLabels:!1}};static defaultRoutes={"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"};static descriptors={angleLines:{_fallback:"grid"}};constructor(t){super(t),this.xCenter=void 0,this.yCenter=void 0,this.drawingArea=void 0,this._pointLabels=[],this._pointLabelItems=[]}setDimensions(){const t=this._padding=qv(k_(this.options)/2),e=this.width=this.maxWidth-t.width,i=this.height=this.maxHeight-t.height;this.xCenter=Math.floor(this.left+e/2+t.left),this.yCenter=Math.floor(this.top+i/2+t.top),this.drawingArea=Math.floor(Math.min(e,i)/2)}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!1);this.min=Qg(t)&&!isNaN(t)?t:0,this.max=Qg(e)&&!isNaN(e)?e:0,this.handleTickRangeOptions()}computeTickLimit(){return Math.ceil(this.drawingArea/k_(this.options))}generateTickLabels(t){g_.prototype.generateTickLabels.call(this,t),this._pointLabels=this.getLabels().map((t,e)=>{const i=of(this.options.pointLabels.callback,[t,e],this);return i||0===i?i:""}).filter((t,e)=>this.chart.getDataVisibility(e))}fit(){const t=this.options;t.display&&t.pointLabels.display?A_(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(t,e,i,o){this.xCenter+=Math.floor((t-e)/2),this.yCenter+=Math.floor((i-o)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(t,e,i,o))}getIndexAngle(t){return Nf(t*(yf/(this._pointLabels.length||1))+zf(this.options.startAngle||0))}getDistanceFromCenterForValue(t){if(Kg(t))return NaN;const e=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-t)*e:(t-this.min)*e}getValueForDistanceFromCenter(t){if(Kg(t))return NaN;const e=t/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-e:this.min+e}getPointLabelContext(t){const e=this._pointLabels||[];if(t>=0&&t<e.length){const i=e[t];return function(t,e,i){return Hv(t,{label:i,index:e,type:"pointLabel"})}(this.getContext(),t,i)}}getPointPosition(t,e,i=0){const o=this.getIndexAngle(t)-kf+i;return{x:Math.cos(o)*e+this.xCenter,y:Math.sin(o)*e+this.yCenter,angle:o}}getPointPositionForValue(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))}getBasePosition(t){return this.getPointPositionForValue(t||0,this.getBaseValue())}getPointLabelPosition(t){const{left:e,top:i,right:o,bottom:n}=this._pointLabelItems[t];return{left:e,top:i,right:o,bottom:n}}drawBackground(){const{backgroundColor:t,grid:{circular:e}}=this.options;if(t){const i=this.ctx;i.save(),i.beginPath(),M_(this,this.getDistanceFromCenterForValue(this._endValue),e,this._pointLabels.length),i.closePath(),i.fillStyle=t,i.fill(),i.restore()}}drawGrid(){const t=this.ctx,e=this.options,{angleLines:i,grid:o,border:n}=e,s=this._pointLabels.length;let r,a,l;if(e.pointLabels.display&&function(t,e){const{ctx:i,options:{pointLabels:o}}=t;for(let n=e-1;n>=0;n--){const e=t._pointLabelItems[n];if(!e.visible)continue;const s=o.setContext(t.getPointLabelContext(n));D_(i,s,e);const r=Uv(s.font),{x:a,y:l,textAlign:d}=e;zv(i,t._pointLabels[n],a,l+r.lineHeight/2,r,{color:s.color,textAlign:d,textBaseline:"middle"})}}(this,s),o.display&&this.ticks.forEach((t,e)=>{if(0!==e||0===e&&this.min<0){a=this.getDistanceFromCenterForValue(t.value);const i=this.getContext(e),r=o.setContext(i),l=n.setContext(i);!function(t,e,i,o,n){const s=t.ctx,r=e.circular,{color:a,lineWidth:l}=e;!r&&!o||!a||!l||i<0||(s.save(),s.strokeStyle=a,s.lineWidth=l,s.setLineDash(n.dash||[]),s.lineDashOffset=n.dashOffset,s.beginPath(),M_(t,i,r,o),s.closePath(),s.stroke(),s.restore())}(this,r,a,s,l)}}),i.display){for(t.save(),r=s-1;r>=0;r--){const o=i.setContext(this.getPointLabelContext(r)),{color:n,lineWidth:s}=o;s&&n&&(t.lineWidth=s,t.strokeStyle=n,t.setLineDash(o.borderDash),t.lineDashOffset=o.borderDashOffset,a=this.getDistanceFromCenterForValue(e.reverse?this.min:this.max),l=this.getPointPosition(r,a),t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(l.x,l.y),t.stroke())}t.restore()}}drawBorder(){}drawLabels(){const t=this.ctx,e=this.options,i=e.ticks;if(!i.display)return;const o=this.getIndexAngle(0);let n,s;t.save(),t.translate(this.xCenter,this.yCenter),t.rotate(o),t.textAlign="center",t.textBaseline="middle",this.ticks.forEach((o,r)=>{if(0===r&&this.min>=0&&!e.reverse)return;const a=i.setContext(this.getContext(r)),l=Uv(a.font);if(n=this.getDistanceFromCenterForValue(this.ticks[r].value),a.showLabelBackdrop){t.font=l.string,s=t.measureText(o.label).width,t.fillStyle=a.backdropColor;const e=qv(a.backdropPadding);t.fillRect(-s/2-e.left,-n-l.size/2-e.top,s+e.width,l.size+e.height)}zv(t,o.label,0,-n,l,{color:a.color,strokeColor:a.textStrokeColor,strokeWidth:a.textStrokeWidth})}),t.restore()}drawTitle(){}}const I_={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},O_=Object.keys(I_);function L_(t,e){return t-e}function P_(t,e){if(Kg(e))return null;const i=t._adapter,{parser:o,round:n,isoWeekday:s}=t._parseOpts;let r=e;return"function"==typeof o&&(r=o(r)),Qg(r)||(r="string"==typeof o?i.parse(r,o):i.parse(r)),null===r?null:(n&&(r="week"!==n||!Df(s)&&!0!==s?i.startOf(r,n):i.startOf(r,"isoWeek",s)),+r)}function R_(t,e,i,o){const n=O_.length;for(let s=O_.indexOf(t);s<n-1;++s){const t=I_[O_[s]],n=t.steps?t.steps:Number.MAX_SAFE_INTEGER;if(t.common&&Math.ceil((i-e)/(n*t.size))<=o)return O_[s]}return O_[n-1]}function N_(t,e,i){if(i){if(i.length){const{lo:o,hi:n}=Uf(i,e);t[i[o]>=e?i[o]:i[n]]=!0}}else t[e]=!0}function B_(t,e,i){const o=[],n={},s=e.length;let r,a;for(r=0;r<s;++r)a=e[r],n[a]=r,o.push({value:a,major:!1});return 0!==s&&i?function(t,e,i,o){const n=t._adapter,s=+n.startOf(e[0].value,o),r=e[e.length-1].value;let a,l;for(a=s;a<=r;a=+n.add(a,1,o))l=i[a],l>=0&&(e[l].major=!0);return e}(t,o,n,i):o}class F_ extends cx{static id="time";static defaults={bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",callback:!1,major:{enabled:!1}}};constructor(t){super(t),this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(t,e={}){const i=t.time||(t.time={}),o=this._adapter=new fy._date(t.adapters.date);o.init(e),cf(i.displayFormats,o.formats()),this._parseOpts={parser:i.parser,round:i.round,isoWeekday:i.isoWeekday},super.init(t),this._normalized=e.normalized}parse(t,e){return void 0===t?null:P_(this,t)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){const t=this.options,e=this._adapter,i=t.time.unit||"day";let{min:o,max:n,minDefined:s,maxDefined:r}=this.getUserBounds();function a(t){s||isNaN(t.min)||(o=Math.min(o,t.min)),r||isNaN(t.max)||(n=Math.max(n,t.max))}s&&r||(a(this._getLabelBounds()),"ticks"===t.bounds&&"labels"===t.ticks.source||a(this.getMinMax(!1))),o=Qg(o)&&!isNaN(o)?o:+e.startOf(Date.now(),i),n=Qg(n)&&!isNaN(n)?n:+e.endOf(Date.now(),i)+1,this.min=Math.min(o,n-1),this.max=Math.max(o+1,n)}_getLabelBounds(){const t=this.getLabelTimestamps();let e=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;return t.length&&(e=t[0],i=t[t.length-1]),{min:e,max:i}}buildTicks(){const t=this.options,e=t.time,i=t.ticks,o="labels"===i.source?this.getLabelTimestamps():this._generate();"ticks"===t.bounds&&o.length&&(this.min=this._userMin||o[0],this.max=this._userMax||o[o.length-1]);const n=this.min,s=function(t,e,i){let o=0,n=t.length;for(;o<n&&t[o]<e;)o++;for(;n>o&&t[n-1]>i;)n--;return o>0||n<t.length?t.slice(o,n):t}(o,n,this.max);return this._unit=e.unit||(i.autoSkip?R_(e.minUnit,this.min,this.max,this._getLabelCapacity(n)):function(t,e,i,o,n){for(let s=O_.length-1;s>=O_.indexOf(i);s--){const i=O_[s];if(I_[i].common&&t._adapter.diff(n,o,i)>=e-1)return i}return O_[i?O_.indexOf(i):0]}(this,s.length,e.minUnit,this.min,this.max)),this._majorUnit=i.major.enabled&&"year"!==this._unit?function(t){for(let e=O_.indexOf(t)+1,i=O_.length;e<i;++e)if(I_[O_[e]].common)return O_[e]}(this._unit):void 0,this.initOffsets(o),t.reverse&&s.reverse(),B_(this,s,this._majorUnit)}afterAutoSkip(){this.options.offsetAfterAutoskip&&this.initOffsets(this.ticks.map(t=>+t.value))}initOffsets(t=[]){let e,i,o=0,n=0;this.options.offset&&t.length&&(e=this.getDecimalForValue(t[0]),o=1===t.length?1-e:(this.getDecimalForValue(t[1])-e)/2,i=this.getDecimalForValue(t[t.length-1]),n=1===t.length?i:(i-this.getDecimalForValue(t[t.length-2]))/2);const s=t.length<3?.5:.25;o=Ff(o,0,s),n=Ff(n,0,s),this._offsets={start:o,end:n,factor:1/(o+1+n)}}_generate(){const t=this._adapter,e=this.min,i=this.max,o=this.options,n=o.time,s=n.unit||R_(n.minUnit,e,i,this._getLabelCapacity(e)),r=tf(o.ticks.stepSize,1),a="week"===s&&n.isoWeekday,l=Df(a)||!0===a,d={};let c,h,u=e;if(l&&(u=+t.startOf(u,"isoWeek",a)),u=+t.startOf(u,l?"day":s),t.diff(i,e,s)>1e5*r)throw new Error(e+" and "+i+" are too far apart with stepSize of "+r+" "+s);const p="data"===o.ticks.source&&this.getDataTimestamps();for(c=u,h=0;c<i;c=+t.add(c,r,s),h++)N_(d,c,p);return c!==i&&"ticks"!==o.bounds&&1!==h||N_(d,c,p),Object.keys(d).sort(L_).map(t=>+t)}getLabelForValue(t){const e=this._adapter,i=this.options.time;return i.tooltipFormat?e.format(t,i.tooltipFormat):e.format(t,i.displayFormats.datetime)}format(t,e){const i=this.options.time.displayFormats,o=this._unit,n=e||i[o];return this._adapter.format(t,n)}_tickFormatFunction(t,e,i,o){const n=this.options,s=n.ticks.callback;if(s)return of(s,[t,e,i],this);const r=n.time.displayFormats,a=this._unit,l=this._majorUnit,d=a&&r[a],c=l&&r[l],h=i[e],u=l&&c&&h&&h.major;return this._adapter.format(t,o||(u?c:d))}generateTickLabels(t){let e,i,o;for(e=0,i=t.length;e<i;++e)o=t[e],o.label=this._tickFormatFunction(o.value,e,t)}getDecimalForValue(t){return null===t?NaN:(t-this.min)/(this.max-this.min)}getPixelForValue(t){const e=this._offsets,i=this.getDecimalForValue(t);return this.getPixelForDecimal((e.start+i)*e.factor)}getValueForPixel(t){const e=this._offsets,i=this.getDecimalForPixel(t)/e.factor-e.end;return this.min+i*(this.max-this.min)}_getLabelSize(t){const e=this.options.ticks,i=this.ctx.measureText(t).width,o=zf(this.isHorizontal()?e.maxRotation:e.minRotation),n=Math.cos(o),s=Math.sin(o),r=this._resolveTickFontOptions(0).size;return{w:i*n+r*s,h:i*s+r*n}}_getLabelCapacity(t){const e=this.options.time,i=e.displayFormats,o=i[e.unit]||i.millisecond,n=this._tickFormatFunction(t,0,B_(this,[t],this._majorUnit),o),s=this._getLabelSize(n),r=Math.floor(this.isHorizontal()?this.width/s.w:this.height/s.h)-1;return r>0?r:1}getDataTimestamps(){let t,e,i=this._cache.data||[];if(i.length)return i;const o=this.getMatchingVisibleMetas();if(this._normalized&&o.length)return this._cache.data=o[0].controller.getAllParsedValues(this);for(t=0,e=o.length;t<e;++t)i=i.concat(o[t].controller.getAllParsedValues(this));return this._cache.data=this.normalize(i)}getLabelTimestamps(){const t=this._cache.labels||[];let e,i;if(t.length)return t;const o=this.getLabels();for(e=0,i=o.length;e<i;++e)t.push(P_(this,o[e]));return this._cache.labels=this._normalized?t:this.normalize(t)}normalize(t){return Zf(t.sort(L_))}}function q_(t,e,i){let o,n,s,r,a=0,l=t.length-1;i?(e>=t[a].pos&&e<=t[l].pos&&({lo:a,hi:l}=jf(t,"pos",e)),({pos:o,time:s}=t[a]),({pos:n,time:r}=t[l])):(e>=t[a].time&&e<=t[l].time&&({lo:a,hi:l}=jf(t,"time",e)),({time:o,pos:s}=t[a]),({time:n,pos:r}=t[l]));const d=n-o;return d?s+(r-s)*(e-o)/d:s}var U_=Object.freeze({__proto__:null,CategoryScale:class extends cx{static id="category";static defaults={ticks:{callback:u_}};constructor(t){super(t),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(t){const e=this._addedLabels;if(e.length){const t=this.getLabels();for(const{index:i,label:o}of e)t[i]===o&&t.splice(i,1);this._addedLabels=[]}super.init(t)}parse(t,e){if(Kg(t))return null;const i=this.getLabels();return((t,e)=>null===t?null:Ff(Math.round(t),0,e))(e=isFinite(e)&&i[e]===t?e:h_(i,t,tf(e,t),this._addedLabels),i.length-1)}determineDataLimits(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let{min:i,max:o}=this.getMinMax(!0);"ticks"===this.options.bounds&&(t||(i=0),e||(o=this.getLabels().length-1)),this.min=i,this.max=o}buildTicks(){const t=this.min,e=this.max,i=this.options.offset,o=[];let n=this.getLabels();n=0===t&&e===n.length-1?n:n.slice(t,e+1),this._valueRange=Math.max(n.length-(i?0:1),1),this._startValue=this.min-(i?.5:0);for(let i=t;i<=e;i++)o.push({value:i});return o}getLabelForValue(t){return u_.call(this,t)}configure(){super.configure(),this.isHorizontal()||(this._reversePixels=!this._reversePixels)}getPixelForValue(t){return"number"!=typeof t&&(t=this.parse(t)),null===t?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}},LinearScale:f_,LogarithmicScale:__,RadialLinearScale:z_,TimeScale:F_,TimeSeriesScale:class extends F_{static id="timeseries";static defaults=F_.defaults;constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const t=this._getTimestampsForTable(),e=this._table=this.buildLookupTable(t);this._minPos=q_(e,this.min),this._tableRange=q_(e,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){const{min:e,max:i}=this,o=[],n=[];let s,r,a,l,d;for(s=0,r=t.length;s<r;++s)l=t[s],l>=e&&l<=i&&o.push(l);if(o.length<2)return[{time:e,pos:0},{time:i,pos:1}];for(s=0,r=o.length;s<r;++s)d=o[s+1],a=o[s-1],l=o[s],Math.round((d+a)/2)!==l&&n.push({time:l,pos:s/(r-1)});return n}_generate(){const t=this.min,e=this.max;let i=super.getDataTimestamps();return i.includes(t)&&i.length||i.splice(0,0,t),i.includes(e)&&1!==i.length||i.push(e),i.sort((t,e)=>t-e)}_getTimestampsForTable(){let t=this._cache.all||[];if(t.length)return t;const e=this.getDataTimestamps(),i=this.getLabelTimestamps();return t=e.length&&i.length?this.normalize(e.concat(i)):e.length?e:i,t=this._cache.all=t,t}getDecimalForValue(t){return(q_(this._table,t)-this._minPos)/this._tableRange}getValueForPixel(t){const e=this._offsets,i=this.getDecimalForPixel(t)/e.factor-e.end;return q_(this._table,i*this._tableRange+this._minPos,!0)}}});const j_=[py,uw,c_,U_];qx.register(...j_);
|
|
12250
12247
|
/*!
|
|
12251
12248
|
* chartjs-adapter-luxon v1.3.1
|
|
12252
12249
|
* https://www.chartjs.org
|
|
12253
12250
|
* (c) 2023 chartjs-adapter-luxon Contributors
|
|
12254
12251
|
* Released under the MIT license
|
|
12255
12252
|
*/
|
|
12256
|
-
const
|
|
12253
|
+
const H_={datetime:rl.DATETIME_MED_WITH_SECONDS,millisecond:"h:mm:ss.SSS a",second:rl.TIME_WITH_SECONDS,minute:rl.TIME_SIMPLE,hour:{hour:"numeric"},day:{day:"numeric",month:"short"},week:"DD",month:{month:"short",year:"numeric"},quarter:"'Q'q - yyyy",year:{year:"numeric"}};fy._date.override({_id:"luxon",_create:function(t){return rl.fromMillis(t,this.options)},init(t){this.options.locale||(this.options.locale=t.locale)},formats:function(){return H_},parse:function(t,e){const i=this.options,o=typeof t;return null===t||"undefined"===o?null:("number"===o?t=this._create(t):"string"===o?t="string"==typeof e?rl.fromFormat(t,e,i):rl.fromISO(t,i):t instanceof Date?t=rl.fromJSDate(t,i):"object"!==o||t instanceof rl||(t=rl.fromObject(t,i)),t.isValid?t.valueOf():null)},format:function(t,e){const i=this._create(t);return"string"==typeof e?i.toFormat(e):i.toLocaleString(e)},add:function(t,e,i){const o={};return o[i]=e,this._create(t).plus(o).valueOf()},diff:function(t,e,i){return this._create(t).diff(this._create(e)).as(i).valueOf()},startOf:function(t,e,i){if("isoWeek"===e){i=Math.trunc(Math.min(Math.max(0,i),6));const e=this._create(t);return e.minus({days:(e.weekday-i+7)%7}).startOf("day").valueOf()}return e?this._create(t).startOf(e).valueOf():t},endOf:function(t,e){return this._create(t).endOf(e).valueOf()}});
|
|
12257
12254
|
/*!
|
|
12258
12255
|
* chartjs-plugin-datalabels v2.2.0
|
|
12259
12256
|
* https://chartjs-plugin-datalabels.netlify.app
|
|
12260
12257
|
* (c) 2017-2022 chartjs-plugin-datalabels contributors
|
|
12261
12258
|
* Released under the MIT license
|
|
12262
12259
|
*/
|
|
12263
|
-
var V_=function(){if("undefined"!=typeof window){if(window.devicePixelRatio)return window.devicePixelRatio;var t=window.screen;if(t)return(t.deviceXDPI||1)/(t.logicalXDPI||1)}return 1}(),Z_=function(t){var e,i=[];for(t=[].concat(t);t.length;)"string"==typeof(e=t.pop())?i.unshift.apply(i,e.split("\n")):Array.isArray(e)?t.push.apply(t,e):Gg(t)||i.unshift(""+e);return i},Y_=function(t,e,i){var o,n=[].concat(e),s=n.length,r=t.font,a=0;for(t.font=i.string,o=0;o<s;++o)a=Math.max(t.measureText(n[o]).width,a);return t.font=r,{height:s*i.lineHeight,width:a}},K_=function(t,e,i){return Math.max(t,Math.min(e,i))},G_=function(t,e){var i,o,n,s,r=t.slice(),a=[];for(i=0,n=e.length;i<n;++i)s=e[i],-1===(o=r.indexOf(s))?a.push([s,1]):r.splice(o,1);for(i=0,n=r.length;i<n;++i)a.push([r[i],-1]);return a},X_=function(t){return Math.round(t*V_)/V_};function Q_(t,e){var i=e.x,o=e.y;if(null===i)return{x:0,y:-1};if(null===o)return{x:1,y:0};var n=t.x-i,s=t.y-o,r=Math.sqrt(n*n+s*s);return{x:r?n/r:0,y:r?s/r:-1}}function J_(t,e,i){var o=0;return t<i.left?o|=1:t>i.right&&(o|=2),e<i.top?o|=8:e>i.bottom&&(o|=4),o}function tk(t,e){var i,o,n=e.anchor,s=t;return e.clamp&&(s=function(t,e){for(var i,o,n,s=t.x0,r=t.y0,a=t.x1,l=t.y1,d=J_(s,r,e),c=J_(a,l,e);d|c&&!(d&c);)8&(i=d||c)?(o=s+(a-s)*(e.top-r)/(l-r),n=e.top):4&i?(o=s+(a-s)*(e.bottom-r)/(l-r),n=e.bottom):2&i?(n=r+(l-r)*(e.right-s)/(a-s),o=e.right):1&i&&(n=r+(l-r)*(e.left-s)/(a-s),o=e.left),i===d?d=J_(s=o,r=n,e):c=J_(a=o,l=n,e);return{x0:s,x1:a,y0:r,y1:l}}(s,e.area)),"start"===n?(i=s.x0,o=s.y0):"end"===n?(i=s.x1,o=s.y1):(i=(s.x0+s.x1)/2,o=(s.y0+s.y1)/2),function(t,e,i,o,n){switch(n){case"center":i=o=0;break;case"bottom":i=0,o=1;break;case"right":i=1,o=0;break;case"left":i=-1,o=0;break;case"top":i=0,o=-1;break;case"start":i=-i,o=-o;break;case"end":break;default:n*=Math.PI/180,i=Math.cos(n),o=Math.sin(n)}return{x:t,y:e,vx:i,vy:o}}(i,o,t.vx,t.vy,e.align)}var ek=function(t,e){var i=(t.startAngle+t.endAngle)/2,o=Math.cos(i),n=Math.sin(i),s=t.innerRadius,r=t.outerRadius;return tk({x0:t.x+o*s,y0:t.y+n*s,x1:t.x+o*r,y1:t.y+n*r,vx:o,vy:n},e)},ik=function(t,e){var i=Q_(t,e.origin),o=i.x*t.options.radius,n=i.y*t.options.radius;return tk({x0:t.x-o,y0:t.y-n,x1:t.x+o,y1:t.y+n,vx:i.x,vy:i.y},e)},ok=function(t,e){var i=Q_(t,e.origin),o=t.x,n=t.y,s=0,r=0;return t.horizontal?(o=Math.min(t.x,t.base),s=Math.abs(t.base-t.x)):(n=Math.min(t.y,t.base),r=Math.abs(t.base-t.y)),tk({x0:o,y0:n+r,x1:o+s,y1:n,vx:i.x,vy:i.y},e)},nk=function(t,e){var i=Q_(t,e.origin);return tk({x0:t.x,y0:t.y,x1:t.x+(t.width||0),y1:t.y+(t.height||0),vx:i.x,vy:i.y},e)},sk=X_;function rk(t,e){var i=e.chart.getDatasetMeta(e.datasetIndex).vScale;if(!i)return null;if(void 0!==i.xCenter&&void 0!==i.yCenter)return{x:i.xCenter,y:i.yCenter};var o=i.getBasePixel();return t.horizontal?{x:o,y:null}:{x:null,y:o}}function ak(t,e,i){var o=i.backgroundColor,n=i.borderColor,s=i.borderWidth;(o||n&&s)&&(t.beginPath(),function(t,e,i,o,n,s){var r=Math.PI/2;if(s){var a=Math.min(s,n/2,o/2),l=e+a,d=i+a,c=e+o-a,h=i+n-a;t.moveTo(e,d),l<c&&d<h?(t.arc(l,d,a,-Math.PI,-r),t.arc(c,d,a,-r,0),t.arc(c,h,a,0,r),t.arc(l,h,a,r,Math.PI)):l<c?(t.moveTo(l,i),t.arc(c,d,a,-r,r),t.arc(l,d,a,r,Math.PI+r)):d<h?(t.arc(l,d,a,-Math.PI,0),t.arc(l,h,a,0,Math.PI)):t.arc(l,d,a,-Math.PI,Math.PI),t.closePath(),t.moveTo(e,i)}else t.rect(e,i,o,n)}(t,sk(e.x)+s/2,sk(e.y)+s/2,sk(e.w)-s,sk(e.h)-s,i.borderRadius),t.closePath(),o&&(t.fillStyle=o,t.fill()),n&&s&&(t.strokeStyle=n,t.lineWidth=s,t.lineJoin="miter",t.stroke()))}function lk(t,e,i){var o=t.shadowBlur,n=i.stroked,s=sk(i.x),r=sk(i.y),a=sk(i.w);n&&t.strokeText(e,s,r,a),i.filled&&(o&&n&&(t.shadowBlur=0),t.fillText(e,s,r,a),o&&n&&(t.shadowBlur=o))}var dk=function(t,e,i,o){var n=this;n._config=t,n._index=o,n._model=null,n._rects=null,n._ctx=e,n._el=i};cf(dk.prototype,{_modelize:function(t,e,i,o){var n,s=this,r=s._index,a=jv(Hv([i.font,{}],o,r)),l=Hv([i.color,yv.color],o,r);return{align:Hv([i.align,"center"],o,r),anchor:Hv([i.anchor,"center"],o,r),area:o.chart.chartArea,backgroundColor:Hv([i.backgroundColor,null],o,r),borderColor:Hv([i.borderColor,null],o,r),borderRadius:Hv([i.borderRadius,0],o,r),borderWidth:Hv([i.borderWidth,0],o,r),clamp:Hv([i.clamp,!1],o,r),clip:Hv([i.clip,!1],o,r),color:l,display:t,font:a,lines:e,offset:Hv([i.offset,4],o,r),opacity:Hv([i.opacity,1],o,r),origin:rk(s._el,o),padding:Uv(Hv([i.padding,4],o,r)),positioner:(n=s._el,n instanceof Yx?ek:n instanceof sw?ik:n instanceof uw?ok:nk),rotation:Hv([i.rotation,0],o,r)*(Math.PI/180),size:Y_(s._ctx,e,a),textAlign:Hv([i.textAlign,"start"],o,r),textShadowBlur:Hv([i.textShadowBlur,0],o,r),textShadowColor:Hv([i.textShadowColor,l],o,r),textStrokeColor:Hv([i.textStrokeColor,l],o,r),textStrokeWidth:Hv([i.textStrokeWidth,0],o,r)}},update:function(t){var e,i,o,n=this,s=null,r=null,a=n._index,l=n._config,d=Hv([l.display,!0],t,a);d&&(e=t.dataset.data[a],(o=Gg(i=ef(nf(l.formatter,[e,t]),e))?[]:Z_(i)).length&&(r=function(t){var e=t.borderWidth||0,i=t.padding,o=t.size.height,n=t.size.width,s=-n/2,r=-o/2;return{frame:{x:s-i.left-e,y:r-i.top-e,w:n+i.width+2*e,h:o+i.height+2*e},text:{x:s,y:r,w:n,h:o}}}(s=n._modelize(d,o,l,t)))),n._model=s,n._rects=r},geometry:function(){return this._rects?this._rects.frame:{}},rotation:function(){return this._model?this._model.rotation:0},visible:function(){return this._model&&this._model.opacity},model:function(){return this._model},draw:function(t,e){var i,o=t.ctx,n=this._model,s=this._rects;this.visible()&&(o.save(),n.clip&&(i=n.area,o.beginPath(),o.rect(i.left,i.top,i.right-i.left,i.bottom-i.top),o.clip()),o.globalAlpha=K_(0,n.opacity,1),o.translate(sk(e.x),sk(e.y)),o.rotate(n.rotation),ak(o,s.frame,n),function(t,e,i,o){var n,s=o.textAlign,r=o.color,a=!!r,l=o.font,d=e.length,c=o.textStrokeColor,h=o.textStrokeWidth,u=c&&h;if(d&&(a||u))for(i=function(t,e,i){var o=i.lineHeight,n=t.w,s=t.x;return"center"===e?s+=n/2:"end"!==e&&"right"!==e||(s+=n),{h:o,w:n,x:s,y:t.y+o/2}}(i,s,l),t.font=l.string,t.textAlign=s,t.textBaseline="middle",t.shadowBlur=o.textShadowBlur,t.shadowColor=o.textShadowColor,a&&(t.fillStyle=r),u&&(t.lineJoin="round",t.lineWidth=h,t.strokeStyle=c),n=0,d=e.length;n<d;++n)lk(t,e[n],{stroked:u,filled:a,w:i.w,x:i.x,y:i.y+i.h*n})}(o,n.lines,s.text,n),o.restore())}});var ck=Number.MIN_SAFE_INTEGER||-9007199254740991,hk=Number.MAX_SAFE_INTEGER||9007199254740991;function uk(t,e,i){var o=Math.cos(i),n=Math.sin(i),s=e.x,r=e.y;return{x:s+o*(t.x-s)-n*(t.y-r),y:r+n*(t.x-s)+o*(t.y-r)}}function pk(t,e){var i,o,n,s,r,a=hk,l=ck,d=e.origin;for(i=0;i<t.length;++i)n=(o=t[i]).x-d.x,s=o.y-d.y,r=e.vx*n+e.vy*s,a=Math.min(a,r),l=Math.max(l,r);return{min:a,max:l}}function mk(t,e){var i=e.x-t.x,o=e.y-t.y,n=Math.sqrt(i*i+o*o);return{vx:(e.x-t.x)/n,vy:(e.y-t.y)/n,origin:t,ln:n}}var gk=function(){this._rotation=0,this._rect={x:0,y:0,w:0,h:0}};function fk(t,e,i){var o=e.positioner(t,e),n=o.vx,s=o.vy;if(!n&&!s)return{x:o.x,y:o.y};var r=i.w,a=i.h,l=e.rotation,d=Math.abs(r/2*Math.cos(l))+Math.abs(a/2*Math.sin(l)),c=Math.abs(r/2*Math.sin(l))+Math.abs(a/2*Math.cos(l)),h=1/Math.max(Math.abs(n),Math.abs(s));return d*=n*h,c*=s*h,d+=e.offset*n,c+=e.offset*s,{x:o.x+d,y:o.y+c}}cf(gk.prototype,{center:function(){var t=this._rect;return{x:t.x+t.w/2,y:t.y+t.h/2}},update:function(t,e,i){this._rotation=i,this._rect={x:e.x+t.x,y:e.y+t.y,w:e.w,h:e.h}},contains:function(t){var e=this,i=e._rect;return!((t=uk(t,e.center(),-e._rotation)).x<i.x-1||t.y<i.y-1||t.x>i.x+i.w+2||t.y>i.y+i.h+2)},intersects:function(t){var e,i,o,n=this._points(),s=t._points(),r=[mk(n[0],n[1]),mk(n[0],n[3])];for(this._rotation!==t._rotation&&r.push(mk(s[0],s[1]),mk(s[0],s[3])),e=0;e<r.length;++e)if(i=pk(n,r[e]),o=pk(s,r[e]),i.max<o.min||o.max<i.min)return!1;return!0},_points:function(){var t=this,e=t._rect,i=t._rotation,o=t.center();return[uk({x:e.x,y:e.y},o,i),uk({x:e.x+e.w,y:e.y},o,i),uk({x:e.x+e.w,y:e.y+e.h},o,i),uk({x:e.x,y:e.y+e.h},o,i)]}});var vk={prepare:function(t){var e,i,o,n,s,r=[];for(e=0,o=t.length;e<o;++e)for(i=0,n=t[e].length;i<n;++i)s=t[e][i],r.push(s),s.$layout={_box:new gk,_hidable:!1,_visible:!0,_set:e,_idx:s._index};return r.sort(function(t,e){var i=t.$layout,o=e.$layout;return i._idx===o._idx?o._set-i._set:o._idx-i._idx}),this.update(r),r},update:function(t){var e,i,o,n,s,r=!1;for(e=0,i=t.length;e<i;++e)n=(o=t[e]).model(),(s=o.$layout)._hidable=n&&"auto"===n.display,s._visible=o.visible(),r|=s._hidable;r&&function(t){var e,i,o,n,s,r,a;for(e=0,i=t.length;e<i;++e)(n=(o=t[e]).$layout)._visible&&(a=new Proxy(o._el,{get:(t,e)=>t.getProps([e],!0)[e]}),s=o.geometry(),r=fk(a,o.model(),s),n._box.update(r,s,o.rotation()));(function(t,e){var i,o,n,s;for(i=t.length-1;i>=0;--i)for(n=t[i].$layout,o=i-1;o>=0&&n._visible;--o)(s=t[o].$layout)._visible&&n._box.intersects(s._box)&&e(n,s)})(t,function(t,e){var i=t._hidable,o=e._hidable;i&&o||o?e._visible=!1:i&&(t._visible=!1)})}(t)},lookup:function(t,e){var i,o;for(i=t.length-1;i>=0;--i)if((o=t[i].$layout)&&o._visible&&o._box.contains(e))return t[i];return null},draw:function(t,e){var i,o,n,s,r,a;for(i=0,o=e.length;i<o;++i)(s=(n=e[i]).$layout)._visible&&(r=n.geometry(),a=fk(n._el,n.model(),r),s._box.update(a,r,n.rotation()),n.draw(t,a))}},bk={align:"center",anchor:"center",backgroundColor:null,borderColor:null,borderRadius:0,borderWidth:0,clamp:!1,clip:!1,color:void 0,display:!0,font:{family:void 0,lineHeight:1.2,size:void 0,style:void 0,weight:null},formatter:function(t){if(Gg(t))return null;var e,i,o,n=t;if(Qg(t))if(Gg(t.label))if(Gg(t.r))for(n="",o=0,i=(e=Object.keys(t)).length;o<i;++o)n+=(0!==o?", ":"")+e[o]+": "+t[e[o]];else n=t.r;else n=t.label;return""+n},labels:void 0,listeners:{},offset:4,opacity:1,padding:{top:4,right:4,bottom:4,left:4},rotation:0,textAlign:"start",textStrokeColor:void 0,textStrokeWidth:0,textShadowBlur:0,textShadowColor:void 0},yk="$datalabels",xk="$default";function wk(t,e,i,o){if(e){var n,s=i.$context,r=i.$groups;e[r._set]&&(n=e[r._set][r._key])&&!0===nf(n,[s,o])&&(t[yk]._dirty=!0,i.update(s))}}function _k(t,e){var i,o,n=t[yk],s=n._listeners;if(s.enter||s.leave){if("mousemove"===e.type)o=vk.lookup(n._labels,e);else if("mouseout"!==e.type)return;i=n._hovered,n._hovered=o,function(t,e,i,o,n){var s,r;(i||o)&&(i?o?i!==o&&(r=s=!0):r=!0:s=!0,r&&wk(t,e.leave,i,n),s&&wk(t,e.enter,o,n))}(t,s,i,o,e)}}var kk={id:"datalabels",defaults:bk,beforeInit:function(t){t[yk]={_actives:[]}},beforeUpdate:function(t){var e=t[yk];e._listened=!1,e._listeners={},e._datasets=[],e._labels=[]},afterDatasetUpdate:function(t,e,i){var o,n,s,r,a,l,d,c,h=e.index,u=t[yk],p=u._datasets[h]=[],m=t.isDatasetVisible(h),g=t.data.datasets[h],f=function(t,e){var i,o,n,s=t.datalabels,r=[];return!1===s?null:(!0===s&&(s={}),e=cf({},[e,s]),o=e.labels||{},n=Object.keys(o),delete e.labels,n.length?n.forEach(function(t){o[t]&&r.push(cf({},[e,o[t],{_key:t}]))}):r.push(e),i=r.reduce(function(t,e){return sf(e.listeners||{},function(i,o){t[o]=t[o]||{},t[o][e._key||xk]=i}),delete e.listeners,t},{}),{labels:r,listeners:i})}(g,i),v=e.meta.data||[],b=t.ctx;for(b.save(),o=0,s=v.length;o<s;++o)if((d=v[o])[yk]=[],m&&d&&t.getDataVisibility(o)&&!d.skip)for(n=0,r=f.labels.length;n<r;++n)l=(a=f.labels[n])._key,(c=new dk(a,b,d,o)).$groups={_set:h,_key:l||xk},c.$context={active:!1,chart:t,dataIndex:o,dataset:g,datasetIndex:h},c.update(c.$context),d[yk].push(c),p.push(c);b.restore(),cf(u._listeners,f.listeners,{merger:function(t,i,o){i[t]=i[t]||{},i[t][e.index]=o[t],u._listened=!0}})},afterUpdate:function(t){t[yk]._labels=vk.prepare(t[yk]._datasets)},afterDatasetsDraw:function(t){vk.draw(t,t[yk]._labels)},beforeEvent:function(t,e){if(t[yk]._listened){var i=e.event;switch(i.type){case"mousemove":case"mouseout":_k(t,i);break;case"click":!function(t,e){var i=t[yk],o=i._listeners.click,n=o&&vk.lookup(i._labels,e);n&&wk(t,o,n,e)}(t,i)}}},afterEvent:function(t){var e,i,o,n,s,r,a,l=t[yk],d=l._actives,c=l._actives=t.getActiveElements(),h=G_(d,c);for(e=0,i=h.length;e<i;++e)if((s=h[e])[1])for(o=0,n=(a=s[0].element[yk]||[]).length;o<n;++o)(r=a[o]).$context.active=1===s[1],r.update(r.$context);(l._dirty||h.length)&&(vk.update(l._labels),t.render()),delete l._dirty}};Ux.register(kk);const Ck={"qualitative-set1":["#5ea3db","#c186e3","#66c2a5","#fc8d62","#a6d854","#ffd92f","#e5c494","#b3b3b3"],"qualitative-set2":["#377eb8","#984ea3","#4daf4a","#ff7f00","#e41a1c","#a65628","#f781bf","#ffff33"],"qualitative-set3":["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d"],"qualitative-paired":["#1f78b4","#a6cee3","#6a3d9a","#cab2d6","#33a02c","#b2df8a","#e31a1c","#fb9a99","#ff7f00","#fdbf6f"],"qualitative-accent":["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],"qualitative-pastel1":["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","#fddaec"],"qualitative-pastel2":["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc"],"diverging-prgn":["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],"diverging-spectral":["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],"diverging-piyg":["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],"diverging-rdylgn":["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],"diverging-brbg":["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#01665e","#003c30"],"sequential-blues":["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#08519c","#08306b"],"sequential-greens":["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],"sequential-oranges":["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],"sequential-purples":["#fcfbfd","#efedf5","#dadaeb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],"sequential-reds":["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],"sequential-ylgnbu":["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"]},Sk="rgba(212, 212, 212, 0.5)";function Ak(t){if(0===t)return"0s";const e=Math.floor(t/86400),i=t%86400,o=Math.floor(i/3600),n=i%3600,s=Math.floor(n/60),r=n%60,a=[];return e>0&&a.push(`${e}d`),o>0&&a.push(`${o}h`),s>0&&a.length<2&&a.push(`${s}m`),r>0&&a.length<2&&a.push(`${r}s`),a.slice(0,2).join(" ")}class $k extends Ve{getInflatedMax(){if(!this.showPercent||!this.data)return;const t=Array(this.data.labels.length).fill(0);for(const e of this.datasets)e.data.forEach((e,i)=>t[i]+=e);const e=Math.max(...t);return e>0?1.15*e:void 0}static get styles(){return a`
|
|
12260
|
+
var W_=function(){if("undefined"!=typeof window){if(window.devicePixelRatio)return window.devicePixelRatio;var t=window.screen;if(t)return(t.deviceXDPI||1)/(t.logicalXDPI||1)}return 1}(),V_=function(t){var e,i=[];for(t=[].concat(t);t.length;)"string"==typeof(e=t.pop())?i.unshift.apply(i,e.split("\n")):Array.isArray(e)?t.push.apply(t,e):Kg(t)||i.unshift(""+e);return i},Z_=function(t,e,i){var o,n=[].concat(e),s=n.length,r=t.font,a=0;for(t.font=i.string,o=0;o<s;++o)a=Math.max(t.measureText(n[o]).width,a);return t.font=r,{height:s*i.lineHeight,width:a}},Y_=function(t,e,i){return Math.max(t,Math.min(e,i))},K_=function(t,e){var i,o,n,s,r=t.slice(),a=[];for(i=0,n=e.length;i<n;++i)s=e[i],-1===(o=r.indexOf(s))?a.push([s,1]):r.splice(o,1);for(i=0,n=r.length;i<n;++i)a.push([r[i],-1]);return a},G_=function(t){return Math.round(t*W_)/W_};function X_(t,e){var i=e.x,o=e.y;if(null===i)return{x:0,y:-1};if(null===o)return{x:1,y:0};var n=t.x-i,s=t.y-o,r=Math.sqrt(n*n+s*s);return{x:r?n/r:0,y:r?s/r:-1}}function Q_(t,e,i){var o=0;return t<i.left?o|=1:t>i.right&&(o|=2),e<i.top?o|=8:e>i.bottom&&(o|=4),o}function J_(t,e){var i,o,n=e.anchor,s=t;return e.clamp&&(s=function(t,e){for(var i,o,n,s=t.x0,r=t.y0,a=t.x1,l=t.y1,d=Q_(s,r,e),c=Q_(a,l,e);d|c&&!(d&c);)8&(i=d||c)?(o=s+(a-s)*(e.top-r)/(l-r),n=e.top):4&i?(o=s+(a-s)*(e.bottom-r)/(l-r),n=e.bottom):2&i?(n=r+(l-r)*(e.right-s)/(a-s),o=e.right):1&i&&(n=r+(l-r)*(e.left-s)/(a-s),o=e.left),i===d?d=Q_(s=o,r=n,e):c=Q_(a=o,l=n,e);return{x0:s,x1:a,y0:r,y1:l}}(s,e.area)),"start"===n?(i=s.x0,o=s.y0):"end"===n?(i=s.x1,o=s.y1):(i=(s.x0+s.x1)/2,o=(s.y0+s.y1)/2),function(t,e,i,o,n){switch(n){case"center":i=o=0;break;case"bottom":i=0,o=1;break;case"right":i=1,o=0;break;case"left":i=-1,o=0;break;case"top":i=0,o=-1;break;case"start":i=-i,o=-o;break;case"end":break;default:n*=Math.PI/180,i=Math.cos(n),o=Math.sin(n)}return{x:t,y:e,vx:i,vy:o}}(i,o,t.vx,t.vy,e.align)}var tk=function(t,e){var i=(t.startAngle+t.endAngle)/2,o=Math.cos(i),n=Math.sin(i),s=t.innerRadius,r=t.outerRadius;return J_({x0:t.x+o*s,y0:t.y+n*s,x1:t.x+o*r,y1:t.y+n*r,vx:o,vy:n},e)},ek=function(t,e){var i=X_(t,e.origin),o=i.x*t.options.radius,n=i.y*t.options.radius;return J_({x0:t.x-o,y0:t.y-n,x1:t.x+o,y1:t.y+n,vx:i.x,vy:i.y},e)},ik=function(t,e){var i=X_(t,e.origin),o=t.x,n=t.y,s=0,r=0;return t.horizontal?(o=Math.min(t.x,t.base),s=Math.abs(t.base-t.x)):(n=Math.min(t.y,t.base),r=Math.abs(t.base-t.y)),J_({x0:o,y0:n+r,x1:o+s,y1:n,vx:i.x,vy:i.y},e)},ok=function(t,e){var i=X_(t,e.origin);return J_({x0:t.x,y0:t.y,x1:t.x+(t.width||0),y1:t.y+(t.height||0),vx:i.x,vy:i.y},e)},nk=G_;function sk(t,e){var i=e.chart.getDatasetMeta(e.datasetIndex).vScale;if(!i)return null;if(void 0!==i.xCenter&&void 0!==i.yCenter)return{x:i.xCenter,y:i.yCenter};var o=i.getBasePixel();return t.horizontal?{x:o,y:null}:{x:null,y:o}}function rk(t,e,i){var o=i.backgroundColor,n=i.borderColor,s=i.borderWidth;(o||n&&s)&&(t.beginPath(),function(t,e,i,o,n,s){var r=Math.PI/2;if(s){var a=Math.min(s,n/2,o/2),l=e+a,d=i+a,c=e+o-a,h=i+n-a;t.moveTo(e,d),l<c&&d<h?(t.arc(l,d,a,-Math.PI,-r),t.arc(c,d,a,-r,0),t.arc(c,h,a,0,r),t.arc(l,h,a,r,Math.PI)):l<c?(t.moveTo(l,i),t.arc(c,d,a,-r,r),t.arc(l,d,a,r,Math.PI+r)):d<h?(t.arc(l,d,a,-Math.PI,0),t.arc(l,h,a,0,Math.PI)):t.arc(l,d,a,-Math.PI,Math.PI),t.closePath(),t.moveTo(e,i)}else t.rect(e,i,o,n)}(t,nk(e.x)+s/2,nk(e.y)+s/2,nk(e.w)-s,nk(e.h)-s,i.borderRadius),t.closePath(),o&&(t.fillStyle=o,t.fill()),n&&s&&(t.strokeStyle=n,t.lineWidth=s,t.lineJoin="miter",t.stroke()))}function ak(t,e,i){var o=t.shadowBlur,n=i.stroked,s=nk(i.x),r=nk(i.y),a=nk(i.w);n&&t.strokeText(e,s,r,a),i.filled&&(o&&n&&(t.shadowBlur=0),t.fillText(e,s,r,a),o&&n&&(t.shadowBlur=o))}var lk=function(t,e,i,o){var n=this;n._config=t,n._index=o,n._model=null,n._rects=null,n._ctx=e,n._el=i};df(lk.prototype,{_modelize:function(t,e,i,o){var n,s=this,r=s._index,a=Uv(jv([i.font,{}],o,r)),l=jv([i.color,bv.color],o,r);return{align:jv([i.align,"center"],o,r),anchor:jv([i.anchor,"center"],o,r),area:o.chart.chartArea,backgroundColor:jv([i.backgroundColor,null],o,r),borderColor:jv([i.borderColor,null],o,r),borderRadius:jv([i.borderRadius,0],o,r),borderWidth:jv([i.borderWidth,0],o,r),clamp:jv([i.clamp,!1],o,r),clip:jv([i.clip,!1],o,r),color:l,display:t,font:a,lines:e,offset:jv([i.offset,4],o,r),opacity:jv([i.opacity,1],o,r),origin:sk(s._el,o),padding:qv(jv([i.padding,4],o,r)),positioner:(n=s._el,n instanceof Zx?tk:n instanceof nw?ek:n instanceof hw?ik:ok),rotation:jv([i.rotation,0],o,r)*(Math.PI/180),size:Z_(s._ctx,e,a),textAlign:jv([i.textAlign,"start"],o,r),textShadowBlur:jv([i.textShadowBlur,0],o,r),textShadowColor:jv([i.textShadowColor,l],o,r),textStrokeColor:jv([i.textStrokeColor,l],o,r),textStrokeWidth:jv([i.textStrokeWidth,0],o,r)}},update:function(t){var e,i,o,n=this,s=null,r=null,a=n._index,l=n._config,d=jv([l.display,!0],t,a);d&&(e=t.dataset.data[a],(o=Kg(i=tf(of(l.formatter,[e,t]),e))?[]:V_(i)).length&&(r=function(t){var e=t.borderWidth||0,i=t.padding,o=t.size.height,n=t.size.width,s=-n/2,r=-o/2;return{frame:{x:s-i.left-e,y:r-i.top-e,w:n+i.width+2*e,h:o+i.height+2*e},text:{x:s,y:r,w:n,h:o}}}(s=n._modelize(d,o,l,t)))),n._model=s,n._rects=r},geometry:function(){return this._rects?this._rects.frame:{}},rotation:function(){return this._model?this._model.rotation:0},visible:function(){return this._model&&this._model.opacity},model:function(){return this._model},draw:function(t,e){var i,o=t.ctx,n=this._model,s=this._rects;this.visible()&&(o.save(),n.clip&&(i=n.area,o.beginPath(),o.rect(i.left,i.top,i.right-i.left,i.bottom-i.top),o.clip()),o.globalAlpha=Y_(0,n.opacity,1),o.translate(nk(e.x),nk(e.y)),o.rotate(n.rotation),rk(o,s.frame,n),function(t,e,i,o){var n,s=o.textAlign,r=o.color,a=!!r,l=o.font,d=e.length,c=o.textStrokeColor,h=o.textStrokeWidth,u=c&&h;if(d&&(a||u))for(i=function(t,e,i){var o=i.lineHeight,n=t.w,s=t.x;return"center"===e?s+=n/2:"end"!==e&&"right"!==e||(s+=n),{h:o,w:n,x:s,y:t.y+o/2}}(i,s,l),t.font=l.string,t.textAlign=s,t.textBaseline="middle",t.shadowBlur=o.textShadowBlur,t.shadowColor=o.textShadowColor,a&&(t.fillStyle=r),u&&(t.lineJoin="round",t.lineWidth=h,t.strokeStyle=c),n=0,d=e.length;n<d;++n)ak(t,e[n],{stroked:u,filled:a,w:i.w,x:i.x,y:i.y+i.h*n})}(o,n.lines,s.text,n),o.restore())}});var dk=Number.MIN_SAFE_INTEGER||-9007199254740991,ck=Number.MAX_SAFE_INTEGER||9007199254740991;function hk(t,e,i){var o=Math.cos(i),n=Math.sin(i),s=e.x,r=e.y;return{x:s+o*(t.x-s)-n*(t.y-r),y:r+n*(t.x-s)+o*(t.y-r)}}function uk(t,e){var i,o,n,s,r,a=ck,l=dk,d=e.origin;for(i=0;i<t.length;++i)n=(o=t[i]).x-d.x,s=o.y-d.y,r=e.vx*n+e.vy*s,a=Math.min(a,r),l=Math.max(l,r);return{min:a,max:l}}function pk(t,e){var i=e.x-t.x,o=e.y-t.y,n=Math.sqrt(i*i+o*o);return{vx:(e.x-t.x)/n,vy:(e.y-t.y)/n,origin:t,ln:n}}var mk=function(){this._rotation=0,this._rect={x:0,y:0,w:0,h:0}};function gk(t,e,i){var o=e.positioner(t,e),n=o.vx,s=o.vy;if(!n&&!s)return{x:o.x,y:o.y};var r=i.w,a=i.h,l=e.rotation,d=Math.abs(r/2*Math.cos(l))+Math.abs(a/2*Math.sin(l)),c=Math.abs(r/2*Math.sin(l))+Math.abs(a/2*Math.cos(l)),h=1/Math.max(Math.abs(n),Math.abs(s));return d*=n*h,c*=s*h,d+=e.offset*n,c+=e.offset*s,{x:o.x+d,y:o.y+c}}df(mk.prototype,{center:function(){var t=this._rect;return{x:t.x+t.w/2,y:t.y+t.h/2}},update:function(t,e,i){this._rotation=i,this._rect={x:e.x+t.x,y:e.y+t.y,w:e.w,h:e.h}},contains:function(t){var e=this,i=e._rect;return!((t=hk(t,e.center(),-e._rotation)).x<i.x-1||t.y<i.y-1||t.x>i.x+i.w+2||t.y>i.y+i.h+2)},intersects:function(t){var e,i,o,n=this._points(),s=t._points(),r=[pk(n[0],n[1]),pk(n[0],n[3])];for(this._rotation!==t._rotation&&r.push(pk(s[0],s[1]),pk(s[0],s[3])),e=0;e<r.length;++e)if(i=uk(n,r[e]),o=uk(s,r[e]),i.max<o.min||o.max<i.min)return!1;return!0},_points:function(){var t=this,e=t._rect,i=t._rotation,o=t.center();return[hk({x:e.x,y:e.y},o,i),hk({x:e.x+e.w,y:e.y},o,i),hk({x:e.x+e.w,y:e.y+e.h},o,i),hk({x:e.x,y:e.y+e.h},o,i)]}});var fk={prepare:function(t){var e,i,o,n,s,r=[];for(e=0,o=t.length;e<o;++e)for(i=0,n=t[e].length;i<n;++i)s=t[e][i],r.push(s),s.$layout={_box:new mk,_hidable:!1,_visible:!0,_set:e,_idx:s._index};return r.sort(function(t,e){var i=t.$layout,o=e.$layout;return i._idx===o._idx?o._set-i._set:o._idx-i._idx}),this.update(r),r},update:function(t){var e,i,o,n,s,r=!1;for(e=0,i=t.length;e<i;++e)n=(o=t[e]).model(),(s=o.$layout)._hidable=n&&"auto"===n.display,s._visible=o.visible(),r|=s._hidable;r&&function(t){var e,i,o,n,s,r,a;for(e=0,i=t.length;e<i;++e)(n=(o=t[e]).$layout)._visible&&(a=new Proxy(o._el,{get:(t,e)=>t.getProps([e],!0)[e]}),s=o.geometry(),r=gk(a,o.model(),s),n._box.update(r,s,o.rotation()));(function(t,e){var i,o,n,s;for(i=t.length-1;i>=0;--i)for(n=t[i].$layout,o=i-1;o>=0&&n._visible;--o)(s=t[o].$layout)._visible&&n._box.intersects(s._box)&&e(n,s)})(t,function(t,e){var i=t._hidable,o=e._hidable;i&&o||o?e._visible=!1:i&&(t._visible=!1)})}(t)},lookup:function(t,e){var i,o;for(i=t.length-1;i>=0;--i)if((o=t[i].$layout)&&o._visible&&o._box.contains(e))return t[i];return null},draw:function(t,e){var i,o,n,s,r,a;for(i=0,o=e.length;i<o;++i)(s=(n=e[i]).$layout)._visible&&(r=n.geometry(),a=gk(n._el,n.model(),r),s._box.update(a,r,n.rotation()),n.draw(t,a))}},vk={align:"center",anchor:"center",backgroundColor:null,borderColor:null,borderRadius:0,borderWidth:0,clamp:!1,clip:!1,color:void 0,display:!0,font:{family:void 0,lineHeight:1.2,size:void 0,style:void 0,weight:null},formatter:function(t){if(Kg(t))return null;var e,i,o,n=t;if(Xg(t))if(Kg(t.label))if(Kg(t.r))for(n="",o=0,i=(e=Object.keys(t)).length;o<i;++o)n+=(0!==o?", ":"")+e[o]+": "+t[e[o]];else n=t.r;else n=t.label;return""+n},labels:void 0,listeners:{},offset:4,opacity:1,padding:{top:4,right:4,bottom:4,left:4},rotation:0,textAlign:"start",textStrokeColor:void 0,textStrokeWidth:0,textShadowBlur:0,textShadowColor:void 0},bk="$datalabels",yk="$default";function xk(t,e,i,o){if(e){var n,s=i.$context,r=i.$groups;e[r._set]&&(n=e[r._set][r._key])&&!0===of(n,[s,o])&&(t[bk]._dirty=!0,i.update(s))}}function wk(t,e){var i,o,n=t[bk],s=n._listeners;if(s.enter||s.leave){if("mousemove"===e.type)o=fk.lookup(n._labels,e);else if("mouseout"!==e.type)return;i=n._hovered,n._hovered=o,function(t,e,i,o,n){var s,r;(i||o)&&(i?o?i!==o&&(r=s=!0):r=!0:s=!0,r&&xk(t,e.leave,i,n),s&&xk(t,e.enter,o,n))}(t,s,i,o,e)}}var _k={id:"datalabels",defaults:vk,beforeInit:function(t){t[bk]={_actives:[]}},beforeUpdate:function(t){var e=t[bk];e._listened=!1,e._listeners={},e._datasets=[],e._labels=[]},afterDatasetUpdate:function(t,e,i){var o,n,s,r,a,l,d,c,h=e.index,u=t[bk],p=u._datasets[h]=[],m=t.isDatasetVisible(h),g=t.data.datasets[h],f=function(t,e){var i,o,n,s=t.datalabels,r=[];return!1===s?null:(!0===s&&(s={}),e=df({},[e,s]),o=e.labels||{},n=Object.keys(o),delete e.labels,n.length?n.forEach(function(t){o[t]&&r.push(df({},[e,o[t],{_key:t}]))}):r.push(e),i=r.reduce(function(t,e){return nf(e.listeners||{},function(i,o){t[o]=t[o]||{},t[o][e._key||yk]=i}),delete e.listeners,t},{}),{labels:r,listeners:i})}(g,i),v=e.meta.data||[],b=t.ctx;for(b.save(),o=0,s=v.length;o<s;++o)if((d=v[o])[bk]=[],m&&d&&t.getDataVisibility(o)&&!d.skip)for(n=0,r=f.labels.length;n<r;++n)l=(a=f.labels[n])._key,(c=new lk(a,b,d,o)).$groups={_set:h,_key:l||yk},c.$context={active:!1,chart:t,dataIndex:o,dataset:g,datasetIndex:h},c.update(c.$context),d[bk].push(c),p.push(c);b.restore(),df(u._listeners,f.listeners,{merger:function(t,i,o){i[t]=i[t]||{},i[t][e.index]=o[t],u._listened=!0}})},afterUpdate:function(t){t[bk]._labels=fk.prepare(t[bk]._datasets)},afterDatasetsDraw:function(t){fk.draw(t,t[bk]._labels)},beforeEvent:function(t,e){if(t[bk]._listened){var i=e.event;switch(i.type){case"mousemove":case"mouseout":wk(t,i);break;case"click":!function(t,e){var i=t[bk],o=i._listeners.click,n=o&&fk.lookup(i._labels,e);n&&xk(t,o,n,e)}(t,i)}}},afterEvent:function(t){var e,i,o,n,s,r,a,l=t[bk],d=l._actives,c=l._actives=t.getActiveElements(),h=K_(d,c);for(e=0,i=h.length;e<i;++e)if((s=h[e])[1])for(o=0,n=(a=s[0].element[bk]||[]).length;o<n;++o)(r=a[o]).$context.active=1===s[1],r.update(r.$context);(l._dirty||h.length)&&(fk.update(l._labels),t.render()),delete l._dirty}};qx.register(_k);const kk={"qualitative-set1":["#5ea3db","#c186e3","#66c2a5","#fc8d62","#a6d854","#ffd92f","#e5c494","#b3b3b3"],"qualitative-set2":["#377eb8","#984ea3","#4daf4a","#ff7f00","#e41a1c","#a65628","#f781bf","#ffff33"],"qualitative-set3":["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d"],"qualitative-paired":["#1f78b4","#a6cee3","#6a3d9a","#cab2d6","#33a02c","#b2df8a","#e31a1c","#fb9a99","#ff7f00","#fdbf6f"],"qualitative-accent":["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],"qualitative-pastel1":["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","#fddaec"],"qualitative-pastel2":["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc"],"diverging-prgn":["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],"diverging-spectral":["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],"diverging-piyg":["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],"diverging-rdylgn":["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],"diverging-brbg":["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#01665e","#003c30"],"sequential-blues":["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#08519c","#08306b"],"sequential-greens":["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],"sequential-oranges":["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],"sequential-purples":["#fcfbfd","#efedf5","#dadaeb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],"sequential-reds":["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],"sequential-ylgnbu":["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"]},Ck="rgba(212, 212, 212, 0.5)";function Sk(t){if(0===t)return"0s";const e=Math.floor(t/86400),i=t%86400,o=Math.floor(i/3600),n=i%3600,s=Math.floor(n/60),r=n%60,a=[];return e>0&&a.push(`${e}d`),o>0&&a.push(`${o}h`),s>0&&a.length<2&&a.push(`${s}m`),r>0&&a.length<2&&a.push(`${r}s`),a.slice(0,2).join(" ")}class Ak extends Ve{getInflatedMax(){if(!this.showPercent||!this.data)return;const t=Array(this.data.labels.length).fill(0);for(const e of this.datasets)e.data.forEach((e,i)=>t[i]+=e);const e=Math.max(...t);return e>0?1.15*e:void 0}static get styles(){return a`
|
|
12264
12261
|
.chart-title {
|
|
12265
12262
|
font-size: 1.2em;
|
|
12266
12263
|
font-weight: 600;
|
|
@@ -12301,7 +12298,7 @@ var V_=function(){if("undefined"!=typeof window){if(window.devicePixelRatio)retu
|
|
|
12301
12298
|
padding: 2em 1em 1.5em 1em;
|
|
12302
12299
|
max-height: 50px;
|
|
12303
12300
|
}
|
|
12304
|
-
`}constructor(){super(),this.chartType="bar",this.horizontal=!1,this.header="",this.other=!1,this.datasets=[],this.maxSplits=2,this.xType="category",this.xMaxTicks=10,this.yType="count",this.xFormat="auto",this.maxChartHeight=250,this.hideOther=!1,this.splits=[],this.dataname="Counts",this.single=!1,this.legend=!1,this.config=!1,this.showAll=!1,this.requireWindow=!1,this.colorIndex=0,this.showConfig=!1,this.opacity=1,this.seriesBorderRadius=2,this.seriesBorderWidth=1,this.showPercent=!1}firstUpdated(t){super.firstUpdated(t);const e=this.shadowRoot.querySelector("#canvas-wrapper");this.canvas=document.createElement("canvas"),this.canvas.setAttribute("height","300px"),e.appendChild(this.canvas),this.ctx=this.canvas.getContext("2d")}willUpdate(t){super.willUpdate(t),t.has("splitNames")&&(this.splits=this.splitNames.split(",").map(t=>t.trim())),(t.has("data")||t.has("splits"))&&this.calculateSplits()}updated(t){if(super.updated(t),t.has("datasets")&&this.updateChart(),t.has("horizontal")&&this.updateChart(),(t.has("url")||t.has("start")||t.has("end"))&&this.url&&(!this.requireWindow||this.start&&this.end)){const t=Qc();let e=this.url;const i=new URLSearchParams;if(this.start&&i.append("since",this.start),this.end&&i.append("until",this.end),i.toString()){const t=this.url.includes("?")?"&":"?";e=`${this.url}${t}${i.toString()}`}t.getUrl(e,{skipCache:!0}).then(t=>{this.data=t.json.data})}if(t.has("chartType")&&"line"===this.chartType&&(this.seriesBorderWidth=Math.max(1,this.seriesBorderWidth)),t.has("showPercent")&&this.chart){const t=this.horizontal?this.chart.options.scales.x:this.chart.options.scales.y;t.ticks.display=!this.showPercent,t.grid.display=!this.showPercent,t.border.display=!this.showPercent,t.max=this.showPercent?this.getInflatedMax():void 0,this.chart.update()}}get colors(){const t=
|
|
12301
|
+
`}constructor(){super(),this.chartType="bar",this.horizontal=!1,this.header="",this.other=!1,this.datasets=[],this.maxSplits=2,this.xType="category",this.xMaxTicks=10,this.yType="count",this.xFormat="auto",this.maxChartHeight=250,this.hideOther=!1,this.splits=[],this.dataname="Counts",this.single=!1,this.legend=!1,this.config=!1,this.showAll=!1,this.requireWindow=!1,this.colorIndex=0,this.showConfig=!1,this.opacity=1,this.seriesBorderRadius=2,this.seriesBorderWidth=1,this.showPercent=!1}firstUpdated(t){super.firstUpdated(t);const e=this.shadowRoot.querySelector("#canvas-wrapper");this.canvas=document.createElement("canvas"),this.canvas.setAttribute("height","300px"),e.appendChild(this.canvas),this.ctx=this.canvas.getContext("2d")}willUpdate(t){super.willUpdate(t),t.has("splitNames")&&(this.splits=this.splitNames.split(",").map(t=>t.trim())),(t.has("data")||t.has("splits"))&&this.calculateSplits()}updated(t){if(super.updated(t),t.has("datasets")&&this.updateChart(),t.has("horizontal")&&this.updateChart(),(t.has("url")||t.has("start")||t.has("end"))&&this.url&&(!this.requireWindow||this.start&&this.end)){const t=Qc();let e=this.url;const i=new URLSearchParams;if(this.start&&i.append("since",this.start),this.end&&i.append("until",this.end),i.toString()){const t=this.url.includes("?")?"&":"?";e=`${this.url}${t}${i.toString()}`}t.getUrl(e,{skipCache:!0}).then(t=>{this.data=t.json.data})}if(t.has("chartType")&&"line"===this.chartType&&(this.seriesBorderWidth=Math.max(1,this.seriesBorderWidth)),t.has("showPercent")&&this.chart){const t=this.horizontal?this.chart.options.scales.x:this.chart.options.scales.y;t.ticks.display=!this.showPercent,t.grid.display=!this.showPercent,t.border.display=!this.showPercent,t.max=this.showPercent?this.getInflatedMax():void 0,this.chart.update()}}get colors(){const t=kk[this.palette]||kk["qualitative-set1"],e=Math.max(0,Math.min(1,this.opacity)),i=t.map(t=>Le(t,.25)),o=t.map(t=>{if(t.startsWith("rgba"))return t.replace(/rgba\(([^,]+),([^,]+),([^,]+),([^)]+)\)/,(t,i,o,n)=>`rgba(${i},${o},${n},${e})`);if(t.startsWith("rgb("))return t.replace(/rgb\(([^,]+),([^,]+),([^,]+)\)/,(t,i,o,n)=>`rgba(${i},${o},${n},${e})`);if(t.startsWith("#")){let i=t.replace("#","");3===i.length&&(i=i.split("").map(t=>t+t).join(""));const o=parseInt(i,16);return`rgba(${o>>16&255},${o>>8&255},${255&o},${e})`}return t});return[o,i]}handleResize(){if(this.chart){const t=this.shadowRoot.querySelector("#canvas-wrapper");t&&t.clientHeight>this.maxChartHeight&&(this.canvas.style.height=`${this.maxChartHeight}px`,this.chart.resize())}}calculateSplits(){if(this.data){const t=[],e=[],[i,o]=this.colors;for(const n of this.data.datasets)if(this.showAll||void 0!==this.splits.find(t=>t===n.label)){const e=(t.length+this.colorIndex)%i.length,s=i[e],r=o[e];t.push({...n,backgroundColor:s,borderColor:r,borderWidth:this.seriesBorderWidth,borderRadius:this.seriesBorderRadius})}else for(let t=0;t<n.data.length;t++)void 0===e[t]?e[t]=n.data[t]:e[t]+=n.data[t];if(0===t.length){const n=this.colorIndex%i.length;t.push({label:this.single?this.dataname:`All ${this.dataname}`,data:e,backgroundColor:i[n],borderColor:o[n],borderWidth:this.seriesBorderWidth,borderRadius:this.seriesBorderRadius})}else this.hideOther||this.showAll||t.push({label:"Other",data:e,backgroundColor:Ck,borderColor:Le(Ck,.05),borderWidth:1,borderRadius:this.seriesBorderRadius});this.datasets=t}}updateChart(){var t;if((null===(t=this.datasets)||void 0===t?void 0:t.length)>0){const t=this.datasets.reduce((t,e)=>t+e.data.reduce((t,e)=>t+(null!=e?e:0),0),0)||void 0,e=e=>{const i=t?e/t*100:0;return 0===i?"":`${Math.round(i)}%`};if(this.chart){this.chart.data.labels=this.data.labels,this.chart.data.datasets=this.datasets,this.showPercent&&(this.chart.options.scales.y.max=this.getInflatedMax());const t=this.chart.options.plugins.datalabels||{};t.display=this.showPercent,this.showPercent?t.formatter=e:delete t.formatter,this.chart.options.plugins.datalabels=t,this.horizontal?(this.chart.options.scales.x=this.getValueAxisConfig(),this.chart.options.scales.y=this.getCategoryAxisConfig()):(this.chart.options.scales.x=this.getCategoryAxisConfig(),this.chart.options.scales.y=this.getValueAxisConfig()),this.chart.update()}else{const t={type:this.chartType,data:{labels:this.data.labels,datasets:this.datasets},options:{...this.horizontal&&{indexAxis:"y"},maxBarThickness:80,plugins:{legend:{display:this.legend},tooltip:{callbacks:{label:t=>{const e=t.dataset.label||"",i=this.horizontal?t.parsed.x:t.parsed.y;return"duration"===this.yType?`${e}: ${Sk(i)}`:`${e}: ${i}`}}},datalabels:{display:this.showPercent,anchor:"end",align:"end",offset:-3,clamp:!0,...this.showPercent&&{formatter:e},color:"#666",font:{weight:"600"}}},responsive:!0,aspectRatio:2,onResize:this.handleResize.bind(this),maintainAspectRatio:!1,animation:!1,animations:{x:{duration:0},y:{duration:0}},scales:this.horizontal?{x:this.getValueAxisConfig(),y:this.getCategoryAxisConfig()}:{y:this.getValueAxisConfig(),x:this.getCategoryAxisConfig()}}};this.chart=new qx(this.ctx,t)}}}handleSplitsChanged(t){const e=t.target;this.splits=e.values.map(t=>t.value)}handleToggleConfig(){this.showConfig=!this.showConfig,this.showConfig||(this.splits=[])}getValueAxisConfig(){return{min:0,...this.showPercent&&{max:this.getInflatedMax()},stacked:!0,grid:{color:"rgba(0,0,0,0.04)",display:!this.showPercent,drawBorder:!this.showPercent},border:{display:!this.showPercent},ticks:{display:!this.showPercent,..."duration"===this.yType&&!this.showPercent&&{callback:t=>Sk(t)}}}}getCategoryAxisConfig(){let t=this.xFormat;if("time"===this.xType&&"auto"===this.xFormat){const e=this.data.labels[0],i=this.data.labels[this.data.labels.length-1],o=Date.parse(e),n=Date.parse(i);t="MMM dd",Math.ceil((n-o)/864e5)>365&&(t="MMM yyyy")}return{max:"time"===this.xType?this.end:this.xMaxTicks,min:"time"===this.xType?this.start:0,type:this.xType,grid:{display:!1},stacked:!0,ticks:{maxTicksLimit:this.xMaxTicks},..."time"===this.xType&&{time:{unit:"day",tooltipFormat:"DDD",displayFormats:{day:t}}}}}render(){var t,e,i;return W`<div>
|
|
12305
12302
|
${this.header?W`<div class="chart-title">${this.header}</div>`:null}
|
|
12306
12303
|
<div id="canvas-wrapper"></div>
|
|
12307
12304
|
${this.config&&this.data?W`
|
|
@@ -12333,7 +12330,7 @@ var V_=function(){if("undefined"!=typeof window){if(window.devicePixelRatio)retu
|
|
|
12333
12330
|
</temba-select>
|
|
12334
12331
|
<div></div>
|
|
12335
12332
|
</div>
|
|
12336
|
-
</div>`}}t([mt({type:String})]
|
|
12333
|
+
</div>`}}t([mt({type:String})],Ak.prototype,"chartType",void 0),t([mt({type:Boolean})],Ak.prototype,"horizontal",void 0),t([mt({type:String})],Ak.prototype,"url",void 0),t([mt({type:String})],Ak.prototype,"start",void 0),t([mt({type:String})],Ak.prototype,"end",void 0),t([mt({type:String})],Ak.prototype,"header",void 0),t([mt({type:Boolean})],Ak.prototype,"other",void 0),t([mt({type:Object})],Ak.prototype,"data",void 0),t([gt()],Ak.prototype,"datasets",void 0),t([mt({type:Number})],Ak.prototype,"maxSplits",void 0),t([mt({type:String,attribute:"splits"})],Ak.prototype,"splitNames",void 0),t([mt({type:String})],Ak.prototype,"xType",void 0),t([mt({type:Number})],Ak.prototype,"xMaxTicks",void 0),t([mt({type:String})],Ak.prototype,"yType",void 0),t([mt({type:String})],Ak.prototype,"xFormat",void 0),t([mt({type:Number})],Ak.prototype,"maxChartHeight",void 0),t([mt({type:Boolean})],Ak.prototype,"hideOther",void 0),t([gt()],Ak.prototype,"splits",void 0),t([mt({type:String})],Ak.prototype,"dataname",void 0),t([mt({type:Boolean})],Ak.prototype,"single",void 0),t([mt({type:Boolean})],Ak.prototype,"legend",void 0),t([mt({type:Boolean})],Ak.prototype,"config",void 0),t([mt({type:Boolean})],Ak.prototype,"showAll",void 0),t([mt({type:Boolean})],Ak.prototype,"requireWindow",void 0),t([mt({type:Number})],Ak.prototype,"colorIndex",void 0),t([gt()],Ak.prototype,"showConfig",void 0),t([mt({type:String})],Ak.prototype,"palette",void 0),t([mt({type:Number})],Ak.prototype,"opacity",void 0),t([mt({type:Number})],Ak.prototype,"seriesBorderRadius",void 0),t([mt({type:Number})],Ak.prototype,"seriesBorderWidth",void 0),t([mt({type:Boolean,attribute:"percent"})],Ak.prototype,"showPercent",void 0);class $k extends Ve{constructor(){super(...arguments),this.startDate="",this.endDate="",this.editingStart=!1,this.editingEnd=!1,this.selectedRange="",this.minDate="2012-01-01",this.maxDate=rl.now().toISODate()}handleStartClick(){this.editingStart=!0}handleEndClick(){this.editingEnd=!0}setRange(t){const e=rl.now().toISODate();let i="";"W"===t?i=rl.now().minus({days:6}).toISODate():"M"===t?i=rl.now().minus({months:1}).plus({days:1}).toISODate():"Y"===t?i=rl.now().minus({years:1}).plus({days:1}).toISODate():"ALL"===t&&(i=this.minDate||"2012-01-01"),this.startDate=i,this.endDate=e,this.selectedRange=t,this.editingStart=!1,this.editingEnd=!1,this.fireCustomEvent(Fo.DateRangeChanged,{start:this.startDate,end:this.endDate,range:this.selectedRange})}setValidRange(t,e){let i=e;i<this.minDate&&(i=this.minDate),i>this.maxDate&&(i=this.maxDate);const o=rl.fromISO("start"===t?i:this.startDate),n=rl.fromISO("end"===t?i:this.endDate);o.isValid&&n.isValid&&(o>n?"start"===t?(this.startDate=i,this.endDate=o.toISODate()):(this.endDate=i,this.startDate=n.toISODate()):"start"===t?this.startDate=i:this.endDate=i,this.fireCustomEvent(Fo.DateRangeChanged,{start:this.startDate,end:this.endDate,range:this.selectedRange}))}canNavigatePrevious(){if("ALL"===this.selectedRange)return!1;const t=rl.fromISO(this.startDate);let e;if("W"===this.selectedRange)e=t.minus({weeks:1});else if("M"===this.selectedRange)e=t.minus({months:1});else if("Y"===this.selectedRange)e=t.minus({years:1});else{if(""!==this.selectedRange)return!1;{const i=this.getCustomRangeInterval();if("days"===i.type)e=t.minus({days:i.amount});else if("months"===i.type)e=t.minus({months:i.amount});else{if("years"!==i.type)return!1;e=t.minus({years:i.amount})}}}return e.toISODate()>=this.minDate}canNavigateNext(){if("ALL"===this.selectedRange)return!1;const t=rl.fromISO(this.endDate);let e;if("W"===this.selectedRange)e=t.plus({weeks:1});else if("M"===this.selectedRange)e=t.plus({months:1});else if("Y"===this.selectedRange)e=t.plus({years:1});else{if(""!==this.selectedRange)return!1;{const i=this.getCustomRangeInterval();if("days"===i.type)e=t.plus({days:i.amount});else if("months"===i.type)e=t.plus({months:i.amount});else{if("years"!==i.type)return!1;e=t.plus({years:i.amount})}}}return e.toISODate()<=this.maxDate}getCustomRangeInterval(){const t=rl.fromISO(this.startDate),e=rl.fromISO(this.endDate);if(!t.isValid||!e.isValid)return{type:"days",amount:1};const i=e.day===e.daysInMonth;if(1===t.day&&i){if(t.month===e.month&&t.year===e.year)return{type:"months",amount:1};const i=t.startOf("month"),o=e.endOf("month").diff(i,"months").months+1;if(o>0&&Number.isInteger(o))return{type:"months",amount:Math.round(o)}}if(1===t.month&&1===t.day&&12===e.month&&31===e.day){if(t.year===e.year)return{type:"years",amount:1};const i=e.year-t.year+1;if(i>0)return{type:"years",amount:i}}const o=e.diff(t,"days").days+1;return{type:"days",amount:Math.max(1,Math.round(o))}}navigatePrevious(){if(!this.canNavigatePrevious())return;const t=rl.fromISO(this.startDate),e=rl.fromISO(this.endDate);let i,o;if("W"===this.selectedRange)i=t.minus({weeks:1}),o=e.minus({weeks:1});else if("M"===this.selectedRange){const n=this.getCustomRangeInterval();"months"===n.type?(i=t.minus({months:1}).startOf("month"),o=i.plus({months:n.amount}).minus({days:1}).endOf("day")):(i=t.minus({months:1}),o=e.minus({months:1}))}else if("Y"===this.selectedRange)i=t.minus({years:1}),o=e.minus({years:1});else{if(""!==this.selectedRange)return;{const n=this.getCustomRangeInterval();if("days"===n.type)i=t.minus({days:n.amount}),o=e.minus({days:n.amount});else if("months"===n.type)i=t.minus({months:n.amount}).startOf("month"),o=i.plus({months:n.amount}).minus({days:1}).endOf("day");else{if("years"!==n.type)return;i=t.minus({years:n.amount}),o=e.minus({years:n.amount})}}}const n=rl.fromISO(this.minDate),s=rl.fromISO(this.maxDate),r=i<n?this.minDate:i.toISODate(),a=o>s?this.maxDate:o.toISODate();this.startDate=r,this.endDate=a,this.fireCustomEvent(Fo.DateRangeChanged,{start:this.startDate,end:this.endDate,range:this.selectedRange})}navigateNext(){if(!this.canNavigateNext())return;const t=rl.fromISO(this.startDate),e=rl.fromISO(this.endDate);let i,o;if("W"===this.selectedRange)i=t.plus({weeks:1}),o=e.plus({weeks:1});else if("M"===this.selectedRange){const n=this.getCustomRangeInterval();"months"===n.type?(i=t.plus({months:1}).startOf("month"),o=i.plus({months:n.amount}).minus({days:1}).endOf("day")):(i=t.plus({months:1}),o=e.plus({months:1}))}else if("Y"===this.selectedRange)i=t.plus({years:1}),o=e.plus({years:1});else{if(""!==this.selectedRange)return;{const n=this.getCustomRangeInterval();if("days"===n.type)i=t.plus({days:n.amount}),o=e.plus({days:n.amount});else if("months"===n.type)i=t.plus({months:n.amount}).startOf("month"),o=i.plus({months:n.amount}).minus({days:1}).endOf("day");else{if("years"!==n.type)return;i=t.plus({years:n.amount}),o=e.plus({years:n.amount})}}}const n=rl.fromISO(this.minDate),s=rl.fromISO(this.maxDate),r=i<n?this.minDate:i.toISODate(),a=o>s?this.maxDate:o.toISODate();this.startDate=r,this.endDate=a,this.fireCustomEvent(Fo.DateRangeChanged,{start:this.startDate,end:this.endDate,range:this.selectedRange})}getNavigationLabel(t){const e=this.getCustomRangeInterval(),i=e.amount;return`${"previous"===t?"Previous":"Next"} ${i} ${"days"===e.type?1===i?"day":"days":"months"===e.type?1===i?"month":"months":1===i?"year":"years"}`}willUpdate(t){if(super.willUpdate(t),t.has("startDate")&&t.has("endDate")&&(!this.startDate||!this.endDate)){const t=rl.now().toISODate();this.startDate=rl.now().minus({months:1}).plus({days:1}).toISODate(),this.endDate=t,this.selectedRange="M",this.editingStart=!1,this.editingEnd=!1}}updated(t){super.updated(t),t.has("editingStart")&&this.editingStart&&setTimeout(()=>{var t;const e=null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector("temba-datepicker.start-picker");e&&e.handleClicked()},0),t.has("editingEnd")&&this.editingEnd&&setTimeout(()=>{var t;const e=null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector("temba-datepicker.end-picker");e&&e.handleClicked()},0)}formatDateForDisplay(t){if(!t)return"";const e=rl.fromISO(t);return e.isValid?e.toLocaleString():t}render(){return W`
|
|
12337
12334
|
<div class="range-container">
|
|
12338
12335
|
${this.editingStart?W`<temba-datepicker
|
|
12339
12336
|
class="start-picker"
|
|
@@ -12401,7 +12398,7 @@ var V_=function(){if("undefined"!=typeof window){if(window.devicePixelRatio)retu
|
|
|
12401
12398
|
</button>
|
|
12402
12399
|
</div>
|
|
12403
12400
|
</div>
|
|
12404
|
-
`}}
|
|
12401
|
+
`}}$k.styles=a`
|
|
12405
12402
|
.range-container {
|
|
12406
12403
|
display: flex;
|
|
12407
12404
|
gap: 0.5em;
|
|
@@ -12498,13 +12495,13 @@ var V_=function(){if("undefined"!=typeof window){if(window.devicePixelRatio)retu
|
|
|
12498
12495
|
background: #e0eaff;
|
|
12499
12496
|
border-color: #3399ff;
|
|
12500
12497
|
}
|
|
12501
|
-
`,t([mt({type:String,attribute:"start"})]
|
|
12498
|
+
`,t([mt({type:String,attribute:"start"})],$k.prototype,"startDate",void 0),t([mt({type:String,attribute:"end"})],$k.prototype,"endDate",void 0),t([mt({type:Boolean})],$k.prototype,"editingStart",void 0),t([mt({type:Boolean})],$k.prototype,"editingEnd",void 0),t([mt({type:String})],$k.prototype,"selectedRange",void 0),t([mt({type:String,attribute:"min"})],$k.prototype,"minDate",void 0),t([mt({type:String,attribute:"max"})],$k.prototype,"maxDate",void 0),customElements.define("temba-range-picker",$k);
|
|
12502
12499
|
/**
|
|
12503
12500
|
* @license
|
|
12504
12501
|
* Copyright 2017 Google LLC
|
|
12505
12502
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
12506
12503
|
*/
|
|
12507
|
-
const
|
|
12504
|
+
const Ek=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.(e,!1),Ek(t,e);return!0},Tk=t=>{let e,i;do{if(void 0===(e=t._$AM))break;i=e._$AN,i.delete(t),t=e}while(0===i?.size)},Dk=t=>{for(let e;e=t._$AM;t=e){let i=e._$AN;if(void 0===i)e._$AN=i=new Set;else if(i.has(t))break;i.add(t),Ik(e)}};function Mk(t){void 0!==this._$AN?(Tk(this),this._$AM=t,Dk(this)):this._$AM=t}function zk(t,e=!1,i=0){const o=this._$AH,n=this._$AN;if(void 0!==n&&0!==n.size)if(e)if(Array.isArray(o))for(let t=i;t<o.length;t++)Ek(o[t],!1),Tk(o[t]);else null!=o&&(Ek(o,!1),Tk(o));else Ek(this,t)}const Ik=t=>{t.type==Ye&&(t._$AP??=zk,t._$AQ??=Mk)};class Ok extends Ge{constructor(){super(...arguments),this._$AN=void 0}_$AT(t,e,i){super._$AT(t,e,i),Dk(this),this.isConnected=t._$AU}_$AO(t,e=!0){t!==this.isConnected&&(this.isConnected=t,t?this.reconnected?.():this.disconnected?.()),e&&(Ek(this,t),Tk(this))}setValue(t){if((t=>void 0===t.strings)(this._$Ct))this._$Ct._$AI(t,this);else{const e=[...this._$Ct._$AH];e[this._$Ci]=t,this._$Ct._$AI(e,this,0)}}disconnected(){}reconnected(){}}class Lk extends Ok{constructor(){super(...arguments),this.prevData={}}render(t){return Z}update(t,[e]){var i;this.element!==t.element&&(this.element=t.element),this.host=(null===(i=t.options)||void 0===i?void 0:i.host)||this.element,this.apply(e),this.groom(e),this.prevData={...e}}apply(t){if(!t)return;const{prevData:e,element:i}=this;for(const o in t){const n=t[o];n!==e[o]&&(i[o]=n)}}groom(t){const{prevData:e,element:i}=this;if(e)for(const o in e)t&&(o in t||i[o]!==e[o])||(i[o]=void 0)}}class Pk extends Lk{constructor(){super(...arguments),this.eventData={}}apply(t){if(t)for(const e in t){const i=t[e];i!==this.eventData[e]&&this.applyEvent(e,i)}}applyEvent(t,e){const{prevData:i,element:o}=this;this.eventData[t]=e;i[t]&&o.removeEventListener(t,this,e),o.addEventListener(t,this,e)}groom(t){const{prevData:e,element:i}=this;if(e)for(const o in e)t&&(o in t||i[o]!==e[o])||this.groomEvent(o,e[o])}groomEvent(t,e){const{element:i}=this;delete this.eventData[t],i.removeEventListener(t,this,e)}handleEvent(t){const e=this.eventData[t.type];"function"==typeof e?e.call(this.host,t):e.handleEvent(t)}disconnected(){const{eventData:t,element:e}=this;for(const i in t){const o=i.slice(1),n=t[i];e.removeEventListener(o,this,n)}}reconnected(){const{eventData:t,element:e}=this;for(const i in t){const o=i.slice(1),n=t[i];e.addEventListener(o,this,n)}}}const Rk=Ke(class extends Pk{apply(t){if(!t)return;const{prevData:e,element:i}=this;for(const o in t){const n=t[o];if(n===e[o])continue;const s=o.slice(1);switch(o[0]){case"@":this.eventData[s]=n,this.applyEvent(s,n);break;case".":i[s]=n;break;case"?":n?i.setAttribute(s,""):i.removeAttribute(s);break;default:null!=n?i.setAttribute(o,String(n)):i.removeAttribute(o)}}}groom(t){const{prevData:e,element:i}=this;if(e)for(const o in e){const n=o.slice(1);if(!t||!(o in t)&&i[n]===e[o])switch(o[0]){case"@":this.groomEvent(n,e[o]);break;case".":i[n]=void 0;break;case"?":i.removeAttribute(n);break;default:i.removeAttribute(o)}}}});class Nk{static renderField(t,e,i,o={}){switch(e.type){case"text":return Nk.renderTextInput(t,e,i,o);case"textarea":return Nk.renderTextarea(t,e,i,o);case"select":return Nk.renderSelect(t,e,i,o);case"checkbox":return Nk.renderCheckbox(t,e,i,o);case"key-value":return Nk.renderKeyValue(t,e,i,o);case"array":return Nk.renderArray(t,e,i,o);case"message-editor":return Nk.renderMessageEditor(t,e,i,o);case"media":return Nk.renderMedia(t,e,i,o);case"template-editor":return Nk.renderTemplateEditor(t,e,i,o);default:return W`<div>Unsupported field type: ${e.type}</div>`}}static renderTextInput(t,e,i,o){const{errors:n=[],onChange:s,showLabel:r=!0,extraClasses:a,style:l}=o,d="function"==typeof e.placeholder?e.placeholder(o.formData||{}):e.placeholder||"";return e.evaluated?W`<temba-rich-edit
|
|
12508
12505
|
name="${t}"
|
|
12509
12506
|
label="${r?e.label:""}"
|
|
12510
12507
|
?required="${e.required}"
|
|
@@ -12586,7 +12583,7 @@ const Tk=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.
|
|
|
12586
12583
|
${null==c?void 0:c.map(t=>"string"==typeof t?W`<temba-option
|
|
12587
12584
|
name="${t}"
|
|
12588
12585
|
value="${t}"
|
|
12589
|
-
></temba-option>`:W`<temba-option ${
|
|
12586
|
+
></temba-option>`:W`<temba-option ${Rk(t)}></temba-option>`)}
|
|
12590
12587
|
</temba-select>`}static renderCheckbox(t,e,i,o){const{errors:n=[],onChange:s,extraClasses:r,style:a,formData:l={}}=o,d="function"==typeof e.label?e.label(l):e.label,c="function"==typeof e.helpText?e.helpText(l):e.helpText,h=e.labelPadding?`--checkbox-padding: ${e.labelPadding}; ${a||""}`:a||"";return W`<div class="form-field">
|
|
12591
12588
|
<temba-checkbox
|
|
12592
12589
|
name="${t}"
|
|
@@ -12639,7 +12636,7 @@ const Tk=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.
|
|
|
12639
12636
|
@change="${s||(()=>{})}"
|
|
12640
12637
|
></temba-array-editor>
|
|
12641
12638
|
${n.length?W`<div class="field-errors">${n.join(", ")}</div>`:""}
|
|
12642
|
-
</div>`}static urlToAttachments(t){var e;if(!t||!t.trim())return[];const i=t.split("/").pop()||"recording";return[{uuid:"",content_type:{mp3:"audio/mpeg",wav:"audio/wav",ogg:"audio/ogg",m4a:"audio/mp4"}[(null===(e=i.split(".").pop())||void 0===e?void 0:e.toLowerCase())||""]||"audio/mpeg",url:t,filename:i,size:0,error:""}]}static renderMedia(t,e,i,o){const{onChange:n,showLabel:s=!0}=o,r=e.endpoint||le,a=
|
|
12639
|
+
</div>`}static urlToAttachments(t){var e;if(!t||!t.trim())return[];const i=t.split("/").pop()||"recording";return[{uuid:"",content_type:{mp3:"audio/mpeg",wav:"audio/wav",ogg:"audio/ogg",m4a:"audio/mp4"}[(null===(e=i.split(".").pop())||void 0===e?void 0:e.toLowerCase())||""]||"audio/mpeg",url:t,filename:i,size:0,error:""}]}static renderMedia(t,e,i,o){const{onChange:n,showLabel:s=!0}=o,r=e.endpoint||le,a=Nk.urlToAttachments(i);return W`
|
|
12643
12640
|
<div>
|
|
12644
12641
|
${s&&e.label?W`<label
|
|
12645
12642
|
style="margin-bottom: 5px; margin-left: 4px; display: block; font-weight: 400; font-size: var(--label-size); letter-spacing: 0.05em; line-height: normal; color: var(--color-label, #777);"
|
|
@@ -12682,7 +12679,7 @@ const Tk=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.
|
|
|
12682
12679
|
session
|
|
12683
12680
|
@temba-context-changed="${n||(()=>{})}"
|
|
12684
12681
|
@temba-content-changed="${n||(()=>{})}"
|
|
12685
|
-
></temba-template-editor>`}}class
|
|
12682
|
+
></temba-template-editor>`}}class Bk extends Ve{constructor(){super(...arguments),this.isOpen=!1,this.formData={},this.originalFormData={},this.errors={},this.groupCollapseState={},this.groupHoverState={},this.revealedOptionalFields=new Set,this.forceBase=!1,this.boundHandleEscape=this.handleEscapeKey.bind(this)}static get styles(){return a`
|
|
12686
12683
|
.node-editor-form {
|
|
12687
12684
|
padding: 20px;
|
|
12688
12685
|
display: flex;
|
|
@@ -13094,7 +13091,7 @@ const Tk=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.
|
|
|
13094
13091
|
color: #b8a060;
|
|
13095
13092
|
margin-right: 4px;
|
|
13096
13093
|
}
|
|
13097
|
-
`}get isTranslating(){return!this.forceBase&&this._isTranslating}connectedCallback(){super.connectedCallback(),this.initializeFormData(),document.addEventListener("keydown",this.boundHandleEscape)}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener("keydown",this.boundHandleEscape)}handleEscapeKey(t){"Escape"===t.key&&this.isOpen&&this.handleCancel()}willUpdate(t){super.willUpdate(t),(t.has("node")||t.has("action")||t.has("nodeUI"))&&(!this.action||this.node&&this.nodeUI?this.node&&this.nodeUI?(this.isOpen=!0,this.initializeFormData(),this.errors={}):this.action||this.node&&this.nodeUI||(this.isOpen=!1):(this.isOpen=!0,this.initializeFormData(),this.errors={}))}updated(t){super.updated(t),(t.has("node")||t.has("action")||t.has("nodeUI"))&&(!this.action||this.node&&this.nodeUI?this.node&&this.nodeUI&&this.resolveFormData():this.resolveFormData())}initializeFormData(){var t,e,i,o,n,s,r,a,l,d,c,h,u;this.groupCollapseState={};const p=this.getNodeConfig();if(p&&"execute_actions"!==p.type&&"terminal"!==p.type||!this.action){if(this.node){const t=this.getNodeConfig(),e=t?Cc(t):void 0;if(this.isTranslating&&"categories"===(null==t?void 0:t.localizable)&&e){const t=(null===(n=null===(o=this.flowDefinition)||void 0===o?void 0:o.localization)||void 0===n?void 0:n[this.languageCode])||{};this.formData=e(this.node,t);const i=new Set(Fm(null===(s=this.nodeUI)||void 0===s?void 0:s.type,null===(r=this.node.router)||void 0===r?void 0:r.categories).map(t=>t.uuid));this.formData.categories&&"object"==typeof this.formData.categories&&!Array.isArray(this.formData.categories)&&(this.formData={...this.formData,categories:Object.fromEntries(Object.entries(this.formData.categories).filter(([t])=>i.has(t)))});const l=(null===(a=this.nodeUI)||void 0===a?void 0:a.config)||{},d=l.localizeCategories||this.formData.categories&&Object.values(this.formData.categories).some(t=>t.localizedName),c=l.localizeRules||this.formData.rules&&Object.values(this.formData.rules).some(t=>{var e;return null===(e=t.localizedArguments)||void 0===e?void 0:e.some(t=>t)});d||delete this.formData.categories,c||delete this.formData.rules}else(null==t?void 0:t.toFormData)?this.formData=t.toFormData(this.node,this.nodeUI):this.formData={...this.node};if("wait_for_response"===(null===(l=this.nodeUI)||void 0===l?void 0:l.type)&&!this.formData.result_name&&(null===(d=this.flowInfo)||void 0===d?void 0:d.results)&&!(null===(u=null===(h=null===(c=this.flowDefinition)||void 0===c?void 0:c._ui)||void 0===h?void 0:h.nodes)||void 0===u?void 0:u[this.node.uuid])){const t=new Set(this.flowInfo.results.map(t=>t.name));let e="Result",i=2;for(;t.has(e);)e=`Result ${i}`,i++;this.formData.result_name=e,this.formData._isNew=!0}this.processFormDataForEditing(),this.originalFormData=JSON.parse(JSON.stringify(this.formData))}}else{const o=Lm[this.action.type],n=o?Cc(o):void 0;if(this.isTranslating&&n){const o=(null===(i=null===(e=null===(t=this.flowDefinition)||void 0===t?void 0:t.localization)||void 0===e?void 0:e[this.languageCode])||void 0===i?void 0:i[this.action.uuid])||{};this.formData=n(this.action,o)}else(null==o?void 0:o.toFormData)?this.formData=o.toFormData(this.action):this.formData={...this.action};this.processFormDataForEditing(),this.originalFormData=JSON.parse(JSON.stringify(this.formData))}Object.keys(this.formData).forEach(t=>{const e=this.formData[t];Array.isArray(e)?this.formData[t]=[...e]:e&&"object"==typeof e&&(this.formData[t]={...e})})}async resolveFormData(){const t=this.getConfig();if(null==t?void 0:t.resolveFormData)try{const e=await t.resolveFormData(this.formData);if(e&&e!==this.formData){this.formData=e,this.processFormDataForEditing();const i=t.form;i&&Object.entries(i).forEach(([t,e])=>{if(e.dependsOn&&e.computeValue){const i=e.computeValue(this.formData,this.formData[t],this.originalFormData);this.formData={...this.formData,[t]:i}}}),this.requestUpdate()}}catch(t){}}processFormDataForEditing(){const t={...this.formData};Object.keys(t).forEach(e=>{const i=t[e];if(i&&"object"==typeof i&&!Array.isArray(i)){this.isKeyValueField(e)&&(t[e]=Object.entries(i).map(([t,e])=>({key:t,value:e})))}});const e=this.getConfig();(null==e?void 0:e.form)&&this.processSelectFields(t,e.form),this.formData=t}processSelectFields(t,e){Object.entries(e).forEach(([e,i])=>{const o=t[e];"select"===i.type&&o&&(t[e]=this.convertToSelectArray(o)),"array"===i.type&&Array.isArray(o)&&i.itemConfig&&o.forEach(t=>{this.processSelectFields(t,i.itemConfig)})})}convertToSelectArray(t){return Array.isArray(t)?t.map(t=>"string"==typeof t?{name:t,value:t}:t):"string"==typeof t?[{name:t,value:t}]:[t]}isKeyValueField(t){var e;const i=this.getConfig(),o=null==i?void 0:i.form;return"key-value"===(null===(e=null==o?void 0:o[t])||void 0===e?void 0:e.type)}getConfig(){if(this.node&&this.nodeUI){const t=this.getNodeConfig();if(("execute_actions"===this.nodeUI.type||"terminal"===this.nodeUI.type)&&this.action)return Lm[this.action.type]||null;if(t)return t}return this.action&&Lm[this.action.type]||null}getNodeConfig(){return this.nodeUI&&this.nodeUI.type?Rm[this.nodeUI.type]:null}getHeaderColor(){var t,e;const i=this.getConfig();return(null==i?void 0:i.group)?(null===(t=bp[i.group])||void 0===t?void 0:t.color)||(null===(e=yp[i.group])||void 0===e?void 0:e.color):"#aaaaaa"}handleDialogButtonClick(t){const e=t.detail.button;"Save"===e.name?this.handleSave():"Cancel"===e.name&&this.handleCancel()}handleSave(){var t,e,i,o,n,s;const r=this.processFormDataForSave();if(!this.isTranslating){const t=this.validateForm();if(!t.valid)return this.errors=t.errors,void this.expandGroupsWithErrors(t.errors)}if(this.isTranslating){if(this.action){const t=Lm[this.action.type],e=t?Sc(t):void 0;if(e){const t=e(r,this.action);return this.updateLocalization(this.languageCode,this.action.uuid,t),void this.fireCustomEvent(Fo.NodeEditCancelled,{})}}if(this.node){const a=this.getNodeConfig(),l=a?Sc(a):void 0;if("categories"===(null==a?void 0:a.localizable)&&l){const a=l(r,this.node),d=(null===(e=null===(t=this.flowDefinition)||void 0===t?void 0:t.localization)||void 0===e?void 0:e[this.languageCode])||{};Fm(null===(i=this.nodeUI)||void 0===i?void 0:i.type,null===(n=null===(o=this.node)||void 0===o?void 0:o.router)||void 0===n?void 0:n.categories).forEach(t=>{const e=t.uuid,i=a[e];i?this.updateLocalization(this.languageCode,e,i):d[e]&&this.updateLocalization(this.languageCode,e,{})});return((null===(s=this.node.router)||void 0===s?void 0:s.cases)||[]).forEach(t=>{const e=a[t.uuid];e?this.updateLocalization(this.languageCode,t.uuid,e):d[t.uuid]&&this.updateLocalization(this.languageCode,t.uuid,{})}),void this.fireCustomEvent(Fo.NodeEditCancelled,{})}}}if(this.node&&this.node.router){const t=this.formDataToNode(r);this.updateFlowInfoResult(t);const e=this.getNodeConfig(),i=(null==e?void 0:e.toUIConfig)?e.toUIConfig(r):void 0;this.fireCustomEvent(Fo.NodeSaved,{node:t,uiConfig:i})}else if(this.action){const t=this.formDataToAction(r);this.fireCustomEvent(Fo.ActionSaved,{action:t})}else if(this.node){const t=this.formDataToNode(r),e=this.getNodeConfig(),i=(null==e?void 0:e.toUIConfig)?e.toUIConfig(r):void 0;this.fireCustomEvent(Fo.NodeSaved,{node:t,uiConfig:i})}}updateFlowInfoResult(t){var e,i,o;if(!(null===(e=this.flowInfo)||void 0===e?void 0:e.results))return;const n=zd.getState(),s=this.flowInfo.results.filter(e=>!e.node_uuids.includes(t.uuid)),r=null===(i=t.router)||void 0===i?void 0:i.result_name;if(r){const e=((null===(o=t.router)||void 0===o?void 0:o.categories)||[]).map(t=>t.name);s.push({key:r.toLowerCase().replace(/\s+/g,"_"),name:r,categories:e,node_uuids:[t.uuid]})}n.setFlowInfo({...this.flowInfo,results:s})}updateLocalization(t,e,i){zd.getState().updateLocalization(t,e,i)}processFormDataForSave(){const t={...this.formData};return Object.keys(t).forEach(e=>{const i=t[e];if(Array.isArray(i)&&i.length>0&&"object"==typeof i[0]&&"key"in i[0]&&"value"in i[0]){const o={};i.forEach(({key:t,value:e})=>{""===t.trim()&&""===e.trim()||(o[t]=e)}),t[e]=o}else if(Array.isArray(i)&&0===i.length){this.isKeyValueField(e)&&(t[e]={})}}),t}handleCancel(){this.fireCustomEvent(Fo.NodeEditCancelled,{})}validateForm(){const t={},e=this.getConfig();if(e&&(e.form&&Object.entries(e.form).forEach(([e,i])=>{const o=this.formData[e];if("select"===i.type&&i.allowCreate){let i=this.formData[e];i=Array.isArray(i)?i.find(t=>t.arbitrary):null,i&&i.arbitrary&&(t[e]='There was an error creating "'+i.name+'"')}!this.isTranslating&&i.required&&(!o||Array.isArray(o)&&0===o.length)&&(t[e]=`${i.label||e} is required.`),"string"==typeof o&&i.minLength&&o.length<i.minLength&&(t[e]=`${i.label||e} must be at least ${i.minLength} characters`),"string"==typeof o&&i.maxLength&&o.length>i.maxLength&&(t[e]=`${i.label||e} must be no more than ${i.maxLength} characters`)}),this.validateCategoryNames(t),e.validate)){let i;e.sanitize&&e.sanitize(this.formData),i=this.action?e.validate({...this.action,...this.formData}):e.validate(this.formData),Object.assign(t,i.errors)}return this.validateKeyValueUniqueness(t),{valid:0===Object.keys(t).length,errors:t}}validateKeyValueUniqueness(t){Object.entries(this.formData).forEach(([e,i])=>{if(Array.isArray(i)&&i.length>0&&"object"==typeof i[0]&&"key"in i[0]&&"value"in i[0]){let o=!1;i.forEach(({key:t,value:e})=>{""===t.trim()&&""!==e.trim()&&(o=!0)});const n=i.filter(({key:t})=>""!==t.trim()).map(({key:t})=>t.trim()),s=new Set(n);n.length!==s.size&&(o=!0),o&&(t[e]="Please resolve validation errors to continue")}})}validateCategoryNames(t){Object.assign(t,(t=>{const e={};for(const{fieldName:i,getName:o}of ae){const n=t[i];if(!Array.isArray(n))continue;const s=n.map(t=>o(t)).filter(t=>"string"==typeof t),r=re(s);r.length>0&&(e[i]=`Reserved category names cannot be used: ${r.join(", ")}`)}return e})(this.formData))}formDataToNode(t=this.formData){var e;if(!this.node)throw new Error("No node to update");let i={...this.node};const o=this.getNodeConfig(),n=void 0!==(null==o?void 0:o.fromFormData);if(!n&&this.node.actions&&this.node.actions.length>0&&(i.actions=this.node.actions.map(e=>{if(this.action&&e.uuid===this.action.uuid){const i=Lm[e.type];return(null==i?void 0:i.fromFormData)?i.fromFormData(t):{...e,...t}}return e})),n)i=o.fromFormData(t,i);else if(this.node.router){if(i.router={...this.node.router},void 0!==t.result_name&&(i.router.result_name=t.result_name),null===(e=null==o?void 0:o.router)||void 0===e?void 0:e.rules){const t=i.router.categories||[],e=i.exits||[],n=[],s=[],r=new Map;if(o.router.rules.forEach(t=>{r.has(t.categoryName)||r.set(t.categoryName,[]),r.get(t.categoryName).push(t)}),r.forEach((i,o)=>{const r=t.find(t=>t.name===o);if(r){n.push(r);const t=e.find(t=>t.uuid===r.exit_uuid);t&&s.push(t)}else{const t=Kt(),e=Kt();n.push({uuid:t,name:o,exit_uuid:e}),s.push({uuid:e,destination_uuid:null})}}),o.router.defaultCategory){if(!n.find(t=>t.name===o.router.defaultCategory)){const i=t.find(t=>t.name===o.router.defaultCategory);if(i){n.push(i);const t=e.find(t=>t.uuid===i.exit_uuid);t&&s.push(t)}else{const t=Kt(),e=Kt();n.push({uuid:t,name:o.router.defaultCategory,exit_uuid:e}),s.push({uuid:e,destination_uuid:null})}}}i.router.categories=n,i.exits=s}}else Object.keys(t).forEach(e=>{"uuid"!==e&&"actions"!==e&&"exits"!==e&&"router"!==e&&(i[e]=t[e])});return i}formDataToAction(t=this.formData){if(!this.action)throw new Error("No action to update");const e=Lm[this.action.type];return(null==e?void 0:e.fromFormData)?e.fromFormData(t):{...this.action,...t}}handleFormFieldChange(t,e){const i=e.target;let o;if(o="TEMBA-CHECKBOX"===i.tagName?i.checked:void 0!==i.values?i.values:i.value,this.formData={...this.formData,[t]:o},this.errors[t]){const e={...this.errors};delete e[t],this.errors=e}this.updateComputedFields(t),this.updateGroupCollapseStates(),this.requestUpdate()}updateGroupCollapseStates(){const t=this.getConfig();(null==t?void 0:t.layout)&&this.updateGroupCollapseStatesRecursive(t.layout)}updateGroupCollapseStatesRecursive(t){t.forEach(t=>{if("object"==typeof t&&"group"===t.type){const{label:e,collapsed:i,collapsible:o}=t;if(o&&"function"==typeof i)if(t.reveal&&!1===this.groupCollapseState[e]);else{const t=i(this.formData);this.groupCollapseState[e]!==t&&(this.groupCollapseState={...this.groupCollapseState,[e]:t})}this.updateGroupCollapseStatesRecursive(t.items)}else"object"==typeof t&&"row"===t.type?this.updateGroupCollapseStatesRecursive(t.items):"object"==typeof t&&"accordion"===t.type&&t.sections.forEach(t=>{this.updateGroupCollapseStatesRecursive(t.items)})})}updateComputedFields(t){const e=this.getConfig();(null==e?void 0:e.form)&&Object.entries(e.form).forEach(([e,i])=>{var o;if((null===(o=i.dependsOn)||void 0===o?void 0:o.includes(t))&&i.computeValue){const t=this.formData[e],o=i.computeValue(this.formData,t,this.originalFormData);this.formData={...this.formData,[e]:o}}})}isFieldVisible(t,e){var i;if(null===(i=e.conditions)||void 0===i?void 0:i.visible)try{return e.conditions.visible(this.formData)}catch(e){return console.error(`Error checking visibility for ${t}:`,e),!0}return!0}renderNewField(t,e,i){if(!this.isFieldVisible(t,e))return W``;const o=this.errors[t]?[this.errors[t]]:[],n=e.maxWidth?`max-width: ${e.maxWidth};`:"",s=this.isTranslating&&this.action&&t in this.action?this.renderOriginalValue(t,this.action[t]):W``,r=this.renderFieldContent(t,e,i,o),a=W` ${s} ${r} `;return n?W`<div style="${n}">${a}</div>`:a}renderOptionalField(t,e,i){const o=i&&""!==i.toString().trim(),n=this.revealedOptionalFields.has(t);return o||n?this.renderNewField(t,e,i):W`
|
|
13094
|
+
`}get isTranslating(){return!this.forceBase&&this._isTranslating}connectedCallback(){super.connectedCallback(),this.initializeFormData(),document.addEventListener("keydown",this.boundHandleEscape)}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener("keydown",this.boundHandleEscape)}handleEscapeKey(t){"Escape"===t.key&&this.isOpen&&this.handleCancel()}willUpdate(t){super.willUpdate(t),(t.has("node")||t.has("action")||t.has("nodeUI"))&&(!this.action||this.node&&this.nodeUI?this.node&&this.nodeUI?(this.isOpen=!0,this.initializeFormData(),this.errors={}):this.action||this.node&&this.nodeUI||(this.isOpen=!1):(this.isOpen=!0,this.initializeFormData(),this.errors={}))}updated(t){super.updated(t),(t.has("node")||t.has("action")||t.has("nodeUI"))&&(!this.action||this.node&&this.nodeUI?this.node&&this.nodeUI&&this.resolveFormData():this.resolveFormData())}initializeFormData(){var t,e,i,o,n,s,r,a,l,d,c,h,u;this.groupCollapseState={};const p=this.getNodeConfig();if(p&&"execute_actions"!==p.type&&"terminal"!==p.type||!this.action){if(this.node){const t=this.getNodeConfig(),e=t?Cc(t):void 0;if(this.isTranslating&&"categories"===(null==t?void 0:t.localizable)&&e){const t=(null===(n=null===(o=this.flowDefinition)||void 0===o?void 0:o.localization)||void 0===n?void 0:n[this.languageCode])||{};this.formData=e(this.node,t);const i=new Set(Bm(null===(s=this.nodeUI)||void 0===s?void 0:s.type,null===(r=this.node.router)||void 0===r?void 0:r.categories).map(t=>t.uuid));this.formData.categories&&"object"==typeof this.formData.categories&&!Array.isArray(this.formData.categories)&&(this.formData={...this.formData,categories:Object.fromEntries(Object.entries(this.formData.categories).filter(([t])=>i.has(t)))});const l=(null===(a=this.nodeUI)||void 0===a?void 0:a.config)||{},d=l.localizeCategories||this.formData.categories&&Object.values(this.formData.categories).some(t=>t.localizedName),c=l.localizeRules||this.formData.rules&&Object.values(this.formData.rules).some(t=>{var e;return null===(e=t.localizedArguments)||void 0===e?void 0:e.some(t=>t)});d||delete this.formData.categories,c||delete this.formData.rules}else(null==t?void 0:t.toFormData)?this.formData=t.toFormData(this.node,this.nodeUI):this.formData={...this.node};if("wait_for_response"===(null===(l=this.nodeUI)||void 0===l?void 0:l.type)&&!this.formData.result_name&&(null===(d=this.flowInfo)||void 0===d?void 0:d.results)&&!(null===(u=null===(h=null===(c=this.flowDefinition)||void 0===c?void 0:c._ui)||void 0===h?void 0:h.nodes)||void 0===u?void 0:u[this.node.uuid])){const t=new Set(this.flowInfo.results.map(t=>t.name));let e="Result",i=2;for(;t.has(e);)e=`Result ${i}`,i++;this.formData.result_name=e,this.formData._isNew=!0}this.processFormDataForEditing(),this.originalFormData=JSON.parse(JSON.stringify(this.formData))}}else{const o=Om[this.action.type],n=o?Cc(o):void 0;if(this.isTranslating&&n){const o=(null===(i=null===(e=null===(t=this.flowDefinition)||void 0===t?void 0:t.localization)||void 0===e?void 0:e[this.languageCode])||void 0===i?void 0:i[this.action.uuid])||{};this.formData=n(this.action,o)}else(null==o?void 0:o.toFormData)?this.formData=o.toFormData(this.action):this.formData={...this.action};this.processFormDataForEditing(),this.originalFormData=JSON.parse(JSON.stringify(this.formData))}Object.keys(this.formData).forEach(t=>{const e=this.formData[t];Array.isArray(e)?this.formData[t]=[...e]:e&&"object"==typeof e&&(this.formData[t]={...e})})}async resolveFormData(){const t=this.getConfig();if(null==t?void 0:t.resolveFormData)try{const e=await t.resolveFormData(this.formData);if(e&&e!==this.formData){this.formData=e,this.processFormDataForEditing();const i=t.form;i&&Object.entries(i).forEach(([t,e])=>{if(e.dependsOn&&e.computeValue){const i=e.computeValue(this.formData,this.formData[t],this.originalFormData);this.formData={...this.formData,[t]:i}}}),this.requestUpdate()}}catch(t){}}processFormDataForEditing(){const t={...this.formData};Object.keys(t).forEach(e=>{const i=t[e];if(i&&"object"==typeof i&&!Array.isArray(i)){this.isKeyValueField(e)&&(t[e]=Object.entries(i).map(([t,e])=>({key:t,value:e})))}});const e=this.getConfig();(null==e?void 0:e.form)&&this.processSelectFields(t,e.form),this.formData=t}processSelectFields(t,e){Object.entries(e).forEach(([e,i])=>{const o=t[e];"select"===i.type&&o&&(t[e]=this.convertToSelectArray(o)),"array"===i.type&&Array.isArray(o)&&i.itemConfig&&o.forEach(t=>{this.processSelectFields(t,i.itemConfig)})})}convertToSelectArray(t){return Array.isArray(t)?t.map(t=>"string"==typeof t?{name:t,value:t}:t):"string"==typeof t?[{name:t,value:t}]:[t]}isKeyValueField(t){var e;const i=this.getConfig(),o=null==i?void 0:i.form;return"key-value"===(null===(e=null==o?void 0:o[t])||void 0===e?void 0:e.type)}getConfig(){if(this.node&&this.nodeUI){const t=this.getNodeConfig();if(("execute_actions"===this.nodeUI.type||"terminal"===this.nodeUI.type)&&this.action)return Om[this.action.type]||null;if(t)return t}return this.action&&Om[this.action.type]||null}getNodeConfig(){return this.nodeUI&&this.nodeUI.type?Pm[this.nodeUI.type]:null}getHeaderColor(){var t,e;const i=this.getConfig();return(null==i?void 0:i.group)?(null===(t=vp[i.group])||void 0===t?void 0:t.color)||(null===(e=bp[i.group])||void 0===e?void 0:e.color):"#aaaaaa"}handleDialogButtonClick(t){const e=t.detail.button;"Save"===e.name?this.handleSave():"Cancel"===e.name&&this.handleCancel()}handleSave(){var t,e,i,o,n,s;const r=this.processFormDataForSave();if(!this.isTranslating){const t=this.validateForm();if(!t.valid)return this.errors=t.errors,void this.expandGroupsWithErrors(t.errors)}if(this.isTranslating){if(this.action){const t=Om[this.action.type],e=t?Sc(t):void 0;if(e){const t=e(r,this.action);return this.updateLocalization(this.languageCode,this.action.uuid,t),void this.fireCustomEvent(Fo.NodeEditCancelled,{})}}if(this.node){const a=this.getNodeConfig(),l=a?Sc(a):void 0;if("categories"===(null==a?void 0:a.localizable)&&l){const a=l(r,this.node),d=(null===(e=null===(t=this.flowDefinition)||void 0===t?void 0:t.localization)||void 0===e?void 0:e[this.languageCode])||{};Bm(null===(i=this.nodeUI)||void 0===i?void 0:i.type,null===(n=null===(o=this.node)||void 0===o?void 0:o.router)||void 0===n?void 0:n.categories).forEach(t=>{const e=t.uuid,i=a[e];i?this.updateLocalization(this.languageCode,e,i):d[e]&&this.updateLocalization(this.languageCode,e,{})});return((null===(s=this.node.router)||void 0===s?void 0:s.cases)||[]).forEach(t=>{const e=a[t.uuid];e?this.updateLocalization(this.languageCode,t.uuid,e):d[t.uuid]&&this.updateLocalization(this.languageCode,t.uuid,{})}),void this.fireCustomEvent(Fo.NodeEditCancelled,{})}}}if(this.node&&this.node.router){const t=this.formDataToNode(r);this.updateFlowInfoResult(t);const e=this.getNodeConfig(),i=(null==e?void 0:e.toUIConfig)?e.toUIConfig(r):void 0;this.fireCustomEvent(Fo.NodeSaved,{node:t,uiConfig:i})}else if(this.action){const t=this.formDataToAction(r);this.fireCustomEvent(Fo.ActionSaved,{action:t})}else if(this.node){const t=this.formDataToNode(r),e=this.getNodeConfig(),i=(null==e?void 0:e.toUIConfig)?e.toUIConfig(r):void 0;this.fireCustomEvent(Fo.NodeSaved,{node:t,uiConfig:i})}}updateFlowInfoResult(t){var e,i,o;if(!(null===(e=this.flowInfo)||void 0===e?void 0:e.results))return;const n=zd.getState(),s=this.flowInfo.results.filter(e=>!e.node_uuids.includes(t.uuid)),r=null===(i=t.router)||void 0===i?void 0:i.result_name;if(r){const e=((null===(o=t.router)||void 0===o?void 0:o.categories)||[]).map(t=>t.name);s.push({key:r.toLowerCase().replace(/\s+/g,"_"),name:r,categories:e,node_uuids:[t.uuid]})}n.setFlowInfo({...this.flowInfo,results:s})}updateLocalization(t,e,i){zd.getState().updateLocalization(t,e,i)}processFormDataForSave(){const t={...this.formData};return Object.keys(t).forEach(e=>{const i=t[e];if(Array.isArray(i)&&i.length>0&&"object"==typeof i[0]&&"key"in i[0]&&"value"in i[0]){const o={};i.forEach(({key:t,value:e})=>{""===t.trim()&&""===e.trim()||(o[t]=e)}),t[e]=o}else if(Array.isArray(i)&&0===i.length){this.isKeyValueField(e)&&(t[e]={})}}),t}handleCancel(){this.fireCustomEvent(Fo.NodeEditCancelled,{})}validateForm(){const t={},e=this.getConfig();if(e&&(e.form&&Object.entries(e.form).forEach(([e,i])=>{const o=this.formData[e];if("select"===i.type&&i.allowCreate){let i=this.formData[e];i=Array.isArray(i)?i.find(t=>t.arbitrary):null,i&&i.arbitrary&&(t[e]='There was an error creating "'+i.name+'"')}!this.isTranslating&&i.required&&(!o||Array.isArray(o)&&0===o.length)&&(t[e]=`${i.label||e} is required.`),"string"==typeof o&&i.minLength&&o.length<i.minLength&&(t[e]=`${i.label||e} must be at least ${i.minLength} characters`),"string"==typeof o&&i.maxLength&&o.length>i.maxLength&&(t[e]=`${i.label||e} must be no more than ${i.maxLength} characters`)}),this.validateCategoryNames(t),e.validate)){let i;e.sanitize&&e.sanitize(this.formData),i=this.action?e.validate({...this.action,...this.formData}):e.validate(this.formData),Object.assign(t,i.errors)}return this.validateKeyValueUniqueness(t),{valid:0===Object.keys(t).length,errors:t}}validateKeyValueUniqueness(t){Object.entries(this.formData).forEach(([e,i])=>{if(Array.isArray(i)&&i.length>0&&"object"==typeof i[0]&&"key"in i[0]&&"value"in i[0]){let o=!1;i.forEach(({key:t,value:e})=>{""===t.trim()&&""!==e.trim()&&(o=!0)});const n=i.filter(({key:t})=>""!==t.trim()).map(({key:t})=>t.trim()),s=new Set(n);n.length!==s.size&&(o=!0),o&&(t[e]="Please resolve validation errors to continue")}})}validateCategoryNames(t){Object.assign(t,(t=>{const e={};for(const{fieldName:i,getName:o}of ae){const n=t[i];if(!Array.isArray(n))continue;const s=n.map(t=>o(t)).filter(t=>"string"==typeof t),r=re(s);r.length>0&&(e[i]=`Reserved category names cannot be used: ${r.join(", ")}`)}return e})(this.formData))}formDataToNode(t=this.formData){var e;if(!this.node)throw new Error("No node to update");let i={...this.node};const o=this.getNodeConfig(),n=void 0!==(null==o?void 0:o.fromFormData);if(!n&&this.node.actions&&this.node.actions.length>0&&(i.actions=this.node.actions.map(e=>{if(this.action&&e.uuid===this.action.uuid){const i=Om[e.type];return(null==i?void 0:i.fromFormData)?i.fromFormData(t):{...e,...t}}return e})),n)i=o.fromFormData(t,i);else if(this.node.router){if(i.router={...this.node.router},void 0!==t.result_name&&(i.router.result_name=t.result_name),null===(e=null==o?void 0:o.router)||void 0===e?void 0:e.rules){const t=i.router.categories||[],e=i.exits||[],n=[],s=[],r=new Map;if(o.router.rules.forEach(t=>{r.has(t.categoryName)||r.set(t.categoryName,[]),r.get(t.categoryName).push(t)}),r.forEach((i,o)=>{const r=t.find(t=>t.name===o);if(r){n.push(r);const t=e.find(t=>t.uuid===r.exit_uuid);t&&s.push(t)}else{const t=Kt(),e=Kt();n.push({uuid:t,name:o,exit_uuid:e}),s.push({uuid:e,destination_uuid:null})}}),o.router.defaultCategory){if(!n.find(t=>t.name===o.router.defaultCategory)){const i=t.find(t=>t.name===o.router.defaultCategory);if(i){n.push(i);const t=e.find(t=>t.uuid===i.exit_uuid);t&&s.push(t)}else{const t=Kt(),e=Kt();n.push({uuid:t,name:o.router.defaultCategory,exit_uuid:e}),s.push({uuid:e,destination_uuid:null})}}}i.router.categories=n,i.exits=s}}else Object.keys(t).forEach(e=>{"uuid"!==e&&"actions"!==e&&"exits"!==e&&"router"!==e&&(i[e]=t[e])});return i}formDataToAction(t=this.formData){if(!this.action)throw new Error("No action to update");const e=Om[this.action.type];return(null==e?void 0:e.fromFormData)?e.fromFormData(t):{...this.action,...t}}handleFormFieldChange(t,e){const i=e.target;let o;if(o="TEMBA-CHECKBOX"===i.tagName?i.checked:void 0!==i.values?i.values:i.value,this.formData={...this.formData,[t]:o},this.errors[t]){const e={...this.errors};delete e[t],this.errors=e}this.updateComputedFields(t),this.updateGroupCollapseStates(),this.requestUpdate()}updateGroupCollapseStates(){const t=this.getConfig();(null==t?void 0:t.layout)&&this.updateGroupCollapseStatesRecursive(t.layout)}updateGroupCollapseStatesRecursive(t){t.forEach(t=>{if("object"==typeof t&&"group"===t.type){const{label:e,collapsed:i,collapsible:o}=t;if(o&&"function"==typeof i)if(t.reveal&&!1===this.groupCollapseState[e]);else{const t=i(this.formData);this.groupCollapseState[e]!==t&&(this.groupCollapseState={...this.groupCollapseState,[e]:t})}this.updateGroupCollapseStatesRecursive(t.items)}else"object"==typeof t&&"row"===t.type?this.updateGroupCollapseStatesRecursive(t.items):"object"==typeof t&&"accordion"===t.type&&t.sections.forEach(t=>{this.updateGroupCollapseStatesRecursive(t.items)})})}updateComputedFields(t){const e=this.getConfig();(null==e?void 0:e.form)&&Object.entries(e.form).forEach(([e,i])=>{var o;if((null===(o=i.dependsOn)||void 0===o?void 0:o.includes(t))&&i.computeValue){const t=this.formData[e],o=i.computeValue(this.formData,t,this.originalFormData);this.formData={...this.formData,[e]:o}}})}isFieldVisible(t,e){var i;if(null===(i=e.conditions)||void 0===i?void 0:i.visible)try{return e.conditions.visible(this.formData)}catch(e){return console.error(`Error checking visibility for ${t}:`,e),!0}return!0}renderNewField(t,e,i){if(!this.isFieldVisible(t,e))return W``;const o=this.errors[t]?[this.errors[t]]:[],n=e.maxWidth?`max-width: ${e.maxWidth};`:"",s=this.isTranslating&&this.action&&t in this.action?this.renderOriginalValue(t,this.action[t]):W``,r=this.renderFieldContent(t,e,i,o),a=W` ${s} ${r} `;return n?W`<div style="${n}">${a}</div>`:a}renderOptionalField(t,e,i){const o=i&&""!==i.toString().trim(),n=this.revealedOptionalFields.has(t);return o||n?this.renderNewField(t,e,i):W`
|
|
13098
13095
|
<div class="optional-field-link">
|
|
13099
13096
|
<a
|
|
13100
13097
|
@click="${e=>{e.preventDefault(),this.revealOptionalField(t)}}"
|
|
@@ -13150,7 +13147,7 @@ const Tk=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.
|
|
|
13150
13147
|
<div class="original-value">
|
|
13151
13148
|
<div class="original-value-content">${i}</div>
|
|
13152
13149
|
</div>
|
|
13153
|
-
`:W``}renderFieldContent(t,e,i,o){const n=this.isTranslating?{...e,required:!1}:e;return
|
|
13150
|
+
`:W``}renderFieldContent(t,e,i,o){const n=this.isTranslating?{...e,required:!1}:e;return Nk.renderField(t,n,i,{errors:o,onChange:i=>{var o,n;if(t&&"key-value"===e.type){const e=i;e.detail&&this.handleNewFieldChange(t,e.detail.value)}else if(t&&"array"===e.type)this.handleNewFieldChange(t,i.target.value);else if(t&&"message-editor"===e.type)this.handleMessageEditorChange(t,i);else if(t&&"media"===e.type){const e=(null===(n=null===(o=i.target.attachments)||void 0===o?void 0:o[0])||void 0===n?void 0:n.url)||"";this.handleNewFieldChange(t,e)}else t&&"template-editor"===e.type?this.handleTemplateEditorChange(t,i):this.handleFormFieldChange(t,i)},showLabel:!0,formData:this.formData,additionalData:{attachments:this.formData.attachments||[],template_variables:this.formData.template_variables||[]}})}handleGroupToggle(t){this.groupCollapseState={...this.groupCollapseState,[t]:!this.groupCollapseState[t]}}handleGroupMouseEnter(t){this.groupHoverState={...this.groupHoverState,[t]:!0}}handleGroupMouseLeave(t){this.groupHoverState={...this.groupHoverState,[t]:!1}}expandGroupsWithErrors(t){const e=this.getConfig();if(!(null==e?void 0:e.layout))return;const i=new Set(Object.keys(t));this.expandGroupsWithErrorsRecursive(e.layout,i)}expandGroupsWithErrorsRecursive(t,e){t.forEach(t=>{if("object"==typeof t&&"group"===t.type){this.collectFieldsFromItems(t.items).some(t=>e.has(t))&&(this.groupCollapseState={...this.groupCollapseState,[t.label]:!1}),this.expandGroupsWithErrorsRecursive(t.items,e)}else"object"==typeof t&&"row"===t.type?this.expandGroupsWithErrorsRecursive(t.items,e):"object"==typeof t&&"accordion"===t.type&&t.sections.forEach(t=>{this.collectFieldsFromItems(t.items).some(t=>e.has(t))&&(this.groupCollapseState={...this.groupCollapseState,[`accordion:${t.label}`]:!1}),this.expandGroupsWithErrorsRecursive(t.items,e)})})}renderLayoutItem(t,e,i){if("string"==typeof t)return this.renderLayoutItem({type:"field",field:t},e,i);switch(t.type){case"field":if(this.isTranslating&&Array.isArray(e.localizable)&&!e.localizable.includes(t.field))return i.add(t.field),W``;if(e.form[t.field]&&!i.has(t.field)){i.add(t.field);const o=e.form[t.field];return o.optionalLink?this.renderOptionalField(t.field,o,this.formData[t.field]):this.renderNewField(t.field,o,this.formData[t.field])}return W``;case"row":return this.renderRow(t,e,i);case"group":return this.renderGroup(t,e,i);case"accordion":return this.renderAccordion(t,e,i);case"spacer":default:return W``;case"text":return W`<div class="form-text">${t.text}</div>`}}renderRow(t,e,i){const{items:o,gap:n="1rem",label:s,helpText:r,inlineLabels:a,marginBottom:l}=t,d=this.collectFieldsFromItems(o).filter(t=>{var i;return null===(i=e.form)||void 0===i?void 0:i[t]}).filter(t=>{const i=e.form[t];return this.isFieldVisible(t,i)});if(0===d.length)return W``;const c=new Map;d.forEach(t=>{const i=e.form[t];i.maxWidth?c.set(t,`flex: 0 0 ${i.maxWidth};`):c.set(t,"flex: 1 1 0;")});const h=W`
|
|
13154
13151
|
<div
|
|
13155
13152
|
class="form-row"
|
|
13156
13153
|
style="display: flex; gap: ${n};${l?` margin-bottom: ${l};`:""}"
|
|
@@ -13302,7 +13299,7 @@ const Tk=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.
|
|
|
13302
13299
|
|
|
13303
13300
|
<div slot="gutter">${this.renderGutter()}</div>
|
|
13304
13301
|
</temba-dialog>
|
|
13305
|
-
`}}t([mt({type:Object})],
|
|
13302
|
+
`}}t([mt({type:Object})],Bk.prototype,"action",void 0),t([mt({type:Object})],Bk.prototype,"node",void 0),t([mt({type:Object})],Bk.prototype,"nodeUI",void 0),t([mt({attribute:!1})],Bk.prototype,"dialogOrigin",void 0),t([mt({type:Boolean})],Bk.prototype,"isOpen",void 0),t([gt()],Bk.prototype,"formData",void 0),t([gt()],Bk.prototype,"originalFormData",void 0),t([gt()],Bk.prototype,"errors",void 0),t([gt()],Bk.prototype,"groupCollapseState",void 0),t([gt()],Bk.prototype,"groupHoverState",void 0),t([gt()],Bk.prototype,"revealedOptionalFields",void 0),t([Id(zd,t=>t.languageCode)],Bk.prototype,"languageCode",void 0),t([Id(zd,t=>t.isTranslating)],Bk.prototype,"_isTranslating",void 0),t([mt({type:Boolean,attribute:"force-base"})],Bk.prototype,"forceBase",void 0),t([Id(zd,t=>t.flowDefinition)],Bk.prototype,"flowDefinition",void 0),t([Id(zd,t=>t.flowInfo)],Bk.prototype,"flowInfo",void 0),t([Id(zd,t=>t.issuesByNode)],Bk.prototype,"issuesByNode",void 0),t([Id(zd,t=>t.issuesByAction)],Bk.prototype,"issuesByAction",void 0);class Fk extends To{constructor(){super(...arguments),this._items=[],this.minItems=0,this.maintainEmptyItem=!1}getContainerClass(){return"base-list-editor"}renderAddButton(){return W`
|
|
13306
13303
|
<button class="add-btn" @click=${()=>this.addItem()}>Add Item</button>
|
|
13307
13304
|
`}shouldShowAddButton(){return!this.maintainEmptyItem&&(!this.maxItems||this._items.length<this.maxItems)}renderWidget(){const t=this.displayItems;return W`
|
|
13308
13305
|
<div class=${this.getContainerClass()}>
|
|
@@ -13314,7 +13311,7 @@ const Tk=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.
|
|
|
13314
13311
|
</div>
|
|
13315
13312
|
${this.shouldShowAddButton()?this.renderAddButton():""}
|
|
13316
13313
|
</div>
|
|
13317
|
-
`}cleanItems(t){return this.maintainEmptyItem?t.filter(t=>!this.isEmptyItem(t)):t}get displayItems(){const t=[...this._items];if(this.maintainEmptyItem){t.some(t=>this.isEmptyItem(t))||this.maxItems&&!(t.length<this.maxItems)||t.push(this.createEmptyItem())}return t}handleItemChange(t,e){const i=[...this._items];i[t]=e,this.updateValue(i)}handleFieldChange(t,e,i){const o=[...this._items];if(t>=this._items.length){if(this.maxItems&&this._items.length>=this.maxItems)return;for(;o.length<=t;)o.push(this.createEmptyItem())}const n=o[t]||this.createEmptyItem();o[t]={...n,[e]:i},this.updateValue(o)}addItem(t){if(this.maxItems&&this._items.length>=this.maxItems)return;const e=t||this.createEmptyItem(),i=[...this._items,e];this.updateValue(i)}removeItem(t){if(this._items.length<=this.minItems)return;const e=this._items.filter((e,i)=>i!==t);this.updateValue(e)}canRemoveItem(t){const e=this.displayItems[t];return!(this._items.length<=this.minItems)&&(!this.maintainEmptyItem||!this.isEmptyItem(e))}updateValue(t){this._items=t,this.dispatchEvent(new CustomEvent("change",{detail:{value:this.cleanItems(t)},bubbles:!0}))}itemsEqual(t,e){return JSON.stringify(t)===JSON.stringify(e)}}t([mt({attribute:!1})],
|
|
13314
|
+
`}cleanItems(t){return this.maintainEmptyItem?t.filter(t=>!this.isEmptyItem(t)):t}get displayItems(){const t=[...this._items];if(this.maintainEmptyItem){t.some(t=>this.isEmptyItem(t))||this.maxItems&&!(t.length<this.maxItems)||t.push(this.createEmptyItem())}return t}handleItemChange(t,e){const i=[...this._items];i[t]=e,this.updateValue(i)}handleFieldChange(t,e,i){const o=[...this._items];if(t>=this._items.length){if(this.maxItems&&this._items.length>=this.maxItems)return;for(;o.length<=t;)o.push(this.createEmptyItem())}const n=o[t]||this.createEmptyItem();o[t]={...n,[e]:i},this.updateValue(o)}addItem(t){if(this.maxItems&&this._items.length>=this.maxItems)return;const e=t||this.createEmptyItem(),i=[...this._items,e];this.updateValue(i)}removeItem(t){if(this._items.length<=this.minItems)return;const e=this._items.filter((e,i)=>i!==t);this.updateValue(e)}canRemoveItem(t){const e=this.displayItems[t];return!(this._items.length<=this.minItems)&&(!this.maintainEmptyItem||!this.isEmptyItem(e))}updateValue(t){this._items=t,this.dispatchEvent(new CustomEvent("change",{detail:{value:this.cleanItems(t)},bubbles:!0}))}itemsEqual(t,e){return JSON.stringify(t)===JSON.stringify(e)}}t([mt({attribute:!1})],Fk.prototype,"_items",void 0),t([mt({type:Number})],Fk.prototype,"minItems",void 0),t([mt({type:Number})],Fk.prototype,"maxItems",void 0),t([mt({type:Boolean})],Fk.prototype,"maintainEmptyItem",void 0);let qk=class extends Fk{constructor(){super(),this.keyPlaceholder="Key",this.valuePlaceholder="Value",this.showValidation=!0,this.readOnlyKeys=!1,this.keyErrors={},this.maintainEmptyItem=!0,this._items=[]}get value(){return this._items.filter(({key:t,value:e})=>""!==t.trim()||""!==e.trim())}set value(t){Array.isArray(t)?this._items=[...t]:this._items=Object.entries(t||{}).map(([t,e])=>({key:t,value:"string"==typeof e?e:String(e)})),this.requestUpdate()}isEmptyItem(t){return""===t.key.trim()&&""===t.value.trim()}createEmptyItem(){return{key:"",value:""}}cleanItems(t){return t.filter(({key:t,value:e})=>""!==t.trim()||""!==e.trim())}toRecord(){const t={};return this._items.forEach(({key:e,value:i})=>{""===e.trim()&&""===i.trim()||(t[e]=i)}),t}validateKeys(){const t={};this._items.forEach(({key:e,value:i},o)=>{""===e.trim()&&""!==i.trim()&&(t[o]="Key is required when value is provided")});const e=this._items.map(({key:t},e)=>({key:t.trim(),index:e})).filter(({key:t})=>""!==t),i=new Map;return e.forEach(({key:t,index:e})=>{i.has(t)||i.set(t,[]),i.get(t).push(e)}),i.forEach((e,i)=>{e.length>1&&e.forEach(e=>{t[e]||(t[e]=`Duplicate key "${i}"`)})}),this.keyErrors=t,0===Object.keys(t).length}clearKeyErrors(){this.keyErrors={}}updateValue(t){this._items=t,this.clearKeyErrors(),this.validateKeys(),this.dispatchEvent(new CustomEvent("change",{detail:{value:this.cleanItems(t)},bubbles:!0})),this.requestUpdate()}handleKeyChange(t,e){const i=this.displayItems[t];if(this.keyErrors[t]){const e={...this.keyErrors};delete e[t],this.keyErrors=e}this.handleItemChange(t,{key:e,value:i.value})}handleValueChange(t,e){const i=this.displayItems[t];if(this.keyErrors[t]){const e={...this.keyErrors};delete e[t],this.keyErrors=e}this.handleItemChange(t,{key:i.key,value:e})}renderWidget(){if(this.readOnlyKeys){const t=this.displayItems;return W`
|
|
13318
13315
|
<div class="readonly-keys-grid">
|
|
13319
13316
|
${t.map((t,e)=>W`
|
|
13320
13317
|
<div class="key-label">${t.key}</div>
|
|
@@ -13401,7 +13398,7 @@ const Tk=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.
|
|
|
13401
13398
|
width: 32px;
|
|
13402
13399
|
height: 32px;
|
|
13403
13400
|
}
|
|
13404
|
-
`}};t([mt({type:String})],
|
|
13401
|
+
`}};t([mt({type:String})],qk.prototype,"keyPlaceholder",void 0),t([mt({type:String})],qk.prototype,"valuePlaceholder",void 0),t([mt({type:Boolean})],qk.prototype,"showValidation",void 0),t([mt({type:Boolean})],qk.prototype,"readOnlyKeys",void 0),t([gt()],qk.prototype,"keyErrors",void 0),t([mt({type:Array})],qk.prototype,"value",null),qk=t([ht("temba-key-value-editor")],qk);let Uk=class extends Fk{constructor(){super(),this.itemConfig={},this.itemLabel="Item",this.sortable=!1,this.maintainEmptyItem=!0,this.focusInfo=null,this._items=[]}get value(){return[...this._items]}set value(t){this._items=t||[],this.requestUpdate()}isEmptyItem(t){if(this.isEmptyItemFn)return this.isEmptyItemFn(t);const e=Object.values(t);return 0===e.length||e.every(t=>null==t||""===t)}cleanItems(t){return t.filter(t=>{const e=Object.values(t);return e.length>0&&e.some(t=>null!=t&&""!==t)})}captureFocus(){var t,e,i,o,n;const s=null===(t=this.shadowRoot)||void 0===t?void 0:t.activeElement,r=document.activeElement;let a=s||r;if(r&&(null===(e=this.shadowRoot)||void 0===e?void 0:e.contains(r))&&(a=r),!a)return void(this.focusInfo=null);let l=a,d=null;for(;l;){if(null===(i=l.classList)||void 0===i?void 0:i.contains("array-item")){d=l;break}if(l.parentElement)l=l.parentElement;else{if(!l.parentNode||!l.parentNode.host)break;l=l.parentNode.host}}if(!d)return void(this.focusInfo=null);const c=null===(o=d.id)||void 0===o?void 0:o.match(/array-item-(\d+)/);if(!c)return void(this.focusInfo=null);const h=parseInt(c[1],10);let u="";if((null===(n=a.tagName)||void 0===n?void 0:n.toLowerCase().startsWith("temba-"))&&(u=a.name||a.getAttribute("name")||""),!u&&a.hasAttribute&&a.hasAttribute("name")&&(u=a.getAttribute("name")||""),!u){let t=a;for(;t&&t!==d;){if(t.hasAttribute&&t.hasAttribute("data-field-name")){u=t.getAttribute("data-field-name")||"";break}t=t.parentElement}}if(!u)return void(this.focusInfo=null);const p=this.getSelectionElement(a),m=p.selectionStart,g=p.selectionEnd;this.focusInfo={itemIndex:h,fieldName:u,selectionStart:null==m?void 0:m,selectionEnd:null==g?void 0:g}}restoreFocus(){var t,e;if(!this.focusInfo)return;const{itemIndex:i,fieldName:o,selectionStart:n,selectionEnd:s}=this.focusInfo,r=`array-item-${i}`,a=null===(t=this.shadowRoot)||void 0===t?void 0:t.getElementById(r);if(!a){const t=null===(e=this.shadowRoot)||void 0===e?void 0:e.querySelectorAll(".array-item");if(t&&t.length>i){const e=t[i];e&&this.attemptFocusRestore(e,o,n,s)}return void(this.focusInfo=null)}this.attemptFocusRestore(a,o,n,s),this.focusInfo=null}attemptFocusRestore(t,e,i,o){const n=t.querySelector(`[data-field-name="${e}"]`);let s=null;if(n&&(s=n.querySelector("temba-textinput, temba-completion, temba-rich-edit, input, textarea")),!s){const i=[`temba-textinput[name="${e}"]`,`temba-completion[name="${e}"]`,`temba-rich-edit[name="${e}"]`,`input[name="${e}"]`,`textarea[name="${e}"]`,`[name="${e}"]`];for(const e of i)if(s=t.querySelector(e),s)break}s&&requestAnimationFrame(()=>{requestAnimationFrame(()=>{var t;try{const e=(null===(t=this.shadowRoot)||void 0===t?void 0:t.activeElement)||document.activeElement;if(e===s||s.contains(e)||s.focus(),void 0!==i&&void 0!==o){const t=this.getSelectionElement(s);"setSelectionRange"in t&&t.setSelectionRange(i,o)}}catch(t){}})})}getSelectionElement(t){var e,i;if(!(null===(e=t.tagName)||void 0===e?void 0:e.toLowerCase().startsWith("temba-")))return t;const o='input:not([type="hidden"]), textarea, [contenteditable="true"]';return(null===(i=t.shadowRoot)||void 0===i?void 0:i.querySelector(o))||t.querySelector(o)||t}createEmptyItem(){return this.createEmptyItemFn?this.createEmptyItemFn(this._items):{}}handleFieldChange(t,e,i){const o=this.displayItems;let n;this.onItemChange?n=this.onItemChange(t,e,i,o):(n=[...o],n[t]={...n[t],[e]:i}),this.updateValue(n)}willUpdate(t){super.willUpdate(t),(t.has("_items")||t.has("value"))&&this.captureFocus()}updated(t){super.updated(t),(t.has("_items")||t.has("value"))&&this.restoreFocus()}handleOrderChanged(t){const e=t.detail;if(e.swap&&Array.isArray(e.swap)&&2===e.swap.length){const[t,i]=e.swap;if(t!==i&&t>=0&&i>=0&&t<this._items.length&&i<this._items.length){const e=[...this._items],o=e.splice(t,1)[0];e.splice(i,0,o),this.updateValue(e)}}}renderWidget(){const t=this.displayItems.map((t,e)=>{const i=this.renderItem(t,e);return this.sortable&&!this.isEmptyItem(t)?W`
|
|
13405
13402
|
<div class="sortable" id="array-item-${e}">${i}</div>
|
|
13406
13403
|
`:i});return this.sortable?W`
|
|
13407
13404
|
<div class=${this.getContainerClass()}>
|
|
@@ -13425,7 +13422,7 @@ const Tk=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.
|
|
|
13425
13422
|
</div>
|
|
13426
13423
|
${this.shouldShowAddButton()?this.renderAddButton():""}
|
|
13427
13424
|
</div>
|
|
13428
|
-
`}computeFieldValue(t,e,i){const o=t[e];return i.computeValue?i.computeValue(t,o):o}renderArrayField(t,e,i,o){const n=this.computeFieldValue(t,i,o),s="select"===o.type&&o.flavor||"small";let r="";o.width?r=`width: ${o.width};`:o.maxWidth&&(r=`max-width: ${o.maxWidth};`);const a=
|
|
13425
|
+
`}computeFieldValue(t,e,i){const o=t[e];return i.computeValue?i.computeValue(t,o):o}renderArrayField(t,e,i,o){const n=this.computeFieldValue(t,i,o),s="select"===o.type&&o.flavor||"small";let r="";o.width?r=`width: ${o.width};`:o.maxWidth&&(r=`max-width: ${o.maxWidth};`);const a=Nk.renderField(i,o,n,{showLabel:!1,flavor:s,extraClasses:"form-control",formData:t,onChange:t=>{let n;const s=t.target;n="select"===o.type?s.values:s.value,this.handleFieldChange(e,i,n)}});return r?W`<div style="${r}">${a}</div>`:a}renderItem(t,e){const i=this.canRemoveItem(e),o=[];let n=!1;return Object.entries(this.itemConfig).forEach(([i,s])=>{var r;let a=!0;if(null===(r=s.conditions)||void 0===r?void 0:r.visible)try{a=s.conditions.visible(t)}catch(t){console.error(`Error checking visibility for ${i}:`,t)}if(a){!s.width&&!s.maxWidth&&"text"===s.type&&(n=!0),o.push(W`
|
|
13429
13426
|
<div
|
|
13430
13427
|
data-field-name="${i}"
|
|
13431
13428
|
style="${s.width||s.maxWidth||"select"===s.type?"flex:none":"flex:1;min-width:0"}"
|
|
@@ -13521,7 +13518,7 @@ const Tk=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.
|
|
|
13521
13518
|
cursor: grab;
|
|
13522
13519
|
color: #ccc;
|
|
13523
13520
|
}
|
|
13524
|
-
`}};t([mt({type:Object})],
|
|
13521
|
+
`}};t([mt({type:Object})],Uk.prototype,"itemConfig",void 0),t([mt({type:String})],Uk.prototype,"itemLabel",void 0),t([mt({type:Function})],Uk.prototype,"onItemChange",void 0),t([mt({type:Function})],Uk.prototype,"isEmptyItemFn",void 0),t([mt({type:Function})],Uk.prototype,"createEmptyItemFn",void 0),t([mt({type:Boolean})],Uk.prototype,"sortable",void 0),t([mt({type:Boolean})],Uk.prototype,"maintainEmptyItem",void 0),t([mt({type:Array})],Uk.prototype,"value",null),Uk=t([ht("temba-array-editor")],Uk);class jk extends To{constructor(){super(...arguments),this.name="",this.placeholder="",this.textarea=!0,this.autogrow=!0,this.minHeight=92,this.submitOnEnter=!1,this.attachments=[],this.accept="",this.maxAttachments=3,this.endpoint="",this.pendingDrop=!1,this.attachmentFormat="string",this.uploading=!1}static get styles(){return a`
|
|
13525
13522
|
${super.styles}
|
|
13526
13523
|
:host {
|
|
13527
13524
|
display: block;
|
|
@@ -13734,7 +13731,7 @@ const Tk=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.
|
|
|
13734
13731
|
ignoreDrops
|
|
13735
13732
|
></temba-media-picker>`}
|
|
13736
13733
|
</div>
|
|
13737
|
-
`}}t([mt({type:String})],
|
|
13734
|
+
`}}t([mt({type:String})],jk.prototype,"name",void 0),t([mt({type:String})],jk.prototype,"placeholder",void 0),t([mt({type:Boolean})],jk.prototype,"textarea",void 0),t([mt({type:Boolean})],jk.prototype,"autogrow",void 0),t([mt({type:Number})],jk.prototype,"minHeight",void 0),t([mt({type:Number})],jk.prototype,"maxLength",void 0),t([mt({type:Boolean})],jk.prototype,"session",void 0),t([mt({type:Boolean})],jk.prototype,"submitOnEnter",void 0),t([mt({type:Boolean})],jk.prototype,"gsm",void 0),t([mt({type:Boolean})],jk.prototype,"disableCompletion",void 0),t([mt({type:String})],jk.prototype,"counter",void 0),t([mt({type:Array})],jk.prototype,"attachments",void 0),t([mt({type:String})],jk.prototype,"accept",void 0),t([mt({type:Number,attribute:"max-attachments"})],jk.prototype,"maxAttachments",void 0),t([mt({type:String})],jk.prototype,"endpoint",void 0),t([mt({type:Boolean,attribute:!1})],jk.prototype,"pendingDrop",void 0),t([mt({type:String,attribute:"attachment-format"})],jk.prototype,"attachmentFormat",void 0),t([mt({type:Boolean,attribute:!1})],jk.prototype,"uploading",void 0);class Hk extends To{constructor(){super(...arguments),this.placeholder="",this.autogrow=!1,this.flavor="default",this.submitOnEnter=!1,this.options=[],this.anchorPosition={left:0,top:0},this._skipRender=!1,this._composing=!1,this.undoStack=[],this.redoStack=[]}static get styles(){return a`
|
|
13738
13735
|
${super.styles}
|
|
13739
13736
|
|
|
13740
13737
|
:host {
|
|
@@ -13895,11 +13892,11 @@ const Tk=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.
|
|
|
13895
13892
|
</div>
|
|
13896
13893
|
</temba-options>
|
|
13897
13894
|
</div>
|
|
13898
|
-
`}render(){return this.renderField()}}t([mt({type:String})],
|
|
13895
|
+
`}render(){return this.renderField()}}t([mt({type:String})],Hk.prototype,"placeholder",void 0),t([mt({type:Boolean})],Hk.prototype,"textarea",void 0),t([mt({type:Boolean})],Hk.prototype,"autogrow",void 0),t([mt({type:Boolean})],Hk.prototype,"gsm",void 0),t([mt({type:String})],Hk.prototype,"counter",void 0),t([mt({type:Number})],Hk.prototype,"maxLength",void 0),t([mt({type:String})],Hk.prototype,"flavor",void 0),t([mt({type:Boolean})],Hk.prototype,"session",void 0),t([mt({type:Boolean})],Hk.prototype,"submitOnEnter",void 0),t([mt({type:Boolean})],Hk.prototype,"disableCompletion",void 0),t([mt({type:Number})],Hk.prototype,"minHeight",void 0),t([mt({type:Array})],Hk.prototype,"options",void 0),t([mt({type:Object})],Hk.prototype,"anchorPosition",void 0),t([mt({attribute:!1})],Hk.prototype,"currentFunction",void 0);class Wk extends dt{constructor(){super(...arguments),this.text=""}static get styles(){return[Zd,a`
|
|
13899
13896
|
:host {
|
|
13900
13897
|
display: inline;
|
|
13901
13898
|
}
|
|
13902
|
-
`]}connectedCallback(){super.connectedCallback(),this.text=this.textContent||"",this.observer=new MutationObserver(()=>{this.text=this.textContent||""}),this.observer.observe(this,{childList:!0,characterData:!0,subtree:!0})}disconnectedCallback(){var t;super.disconnectedCallback(),null===(t=this.observer)||void 0===t||t.disconnect()}renderTokens(){return Fd(this.text,tc).map(t=>{const e=Wd(t),i=Hd.has(t.type);return W`<span class="${i?`${e} tok-mono`:e}">${t.text}</span>`})}render(){return W`${this.renderTokens()}`}}t([mt({type:String})],
|
|
13899
|
+
`]}connectedCallback(){super.connectedCallback(),this.text=this.textContent||"",this.observer=new MutationObserver(()=>{this.text=this.textContent||""}),this.observer.observe(this,{childList:!0,characterData:!0,subtree:!0})}disconnectedCallback(){var t;super.disconnectedCallback(),null===(t=this.observer)||void 0===t||t.disconnect()}renderTokens(){return Fd(this.text,tc).map(t=>{const e=Wd(t),i=Hd.has(t.type);return W`<span class="${i?`${e} tok-mono`:e}">${t.text}</span>`})}render(){return W`${this.renderTokens()}`}}t([mt({type:String})],Wk.prototype,"text",void 0);class Vk extends Ve{constructor(){super(...arguments),this.name="",this.header="",this.icon="",this.width=500,this.minHeight=200,this.maxHeight=800,this.top=100,this.left=-1,this.hidden=!0,this.dragging=!1,this.chromeless=!1,this.color="#6B7280",this.saving=!1,this.leftBoundaryMargin=0,this.rightBoundaryMargin=0,this.topBoundaryMargin=0,this.bottomBoundaryMargin=0,this.dragStartX=0,this.dragStartY=0,this.dragOffsetX=0,this.dragOffsetY=0,this.positionFromRight=!1,this.defaultTop=100,this.defaultLeft=-1,this.handleSlotMouseDown=t=>{t.target.closest(".drag-handle")&&(this.dragging=!0,this.dragStartX=t.clientX,this.dragStartY=t.clientY,this.dragOffsetX=this.left,this.dragOffsetY=this.top,document.addEventListener("mousemove",this.handleMouseMove),document.addEventListener("mouseup",this.handleMouseUp),t.preventDefault())},this.handleMouseMove=t=>{var e;if(!this.dragging)return;const i=t.clientX-this.dragStartX,o=t.clientY-this.dragStartY;this.left=this.dragOffsetX+i,this.top=this.dragOffsetY+o;this.left=Math.max(20-this.leftBoundaryMargin,Math.min(this.left,window.innerWidth-this.width-20+this.rightBoundaryMargin));const n=null===(e=this.shadowRoot)||void 0===e?void 0:e.querySelector(".window"),s=(null==n?void 0:n.offsetHeight)||this.maxHeight||window.innerHeight,r=Math.max(20-this.topBoundaryMargin,window.innerHeight-s-20+this.bottomBoundaryMargin);this.top=Math.max(20-this.topBoundaryMargin,Math.min(this.top,r))},this.handleMouseUp=()=>{this.dragging=!1,document.removeEventListener("mousemove",this.handleMouseMove),document.removeEventListener("mouseup",this.handleMouseUp),this.positionFromRight=!1,this.savePosition()},this.handleResize=()=>{var t;if(this.hidden)return;const e=20,i=null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector(".window"),o=(null==i?void 0:i.offsetHeight)||this.maxHeight||window.innerHeight;if(this.positionFromRight)this.left=window.innerWidth-this.width-e+this.rightBoundaryMargin;else{const t=e-this.leftBoundaryMargin,i=window.innerWidth-this.width-e+this.rightBoundaryMargin;this.left<t?this.left=t:this.left>i&&(this.left=i)}const n=e-this.topBoundaryMargin,s=Math.max(e-this.topBoundaryMargin,window.innerHeight-o-e+this.bottomBoundaryMargin);this.top<n?this.top=n:this.top>s&&(this.top=s)}}static get styles(){return a`
|
|
13903
13900
|
.window.hidden {
|
|
13904
13901
|
transform: translateX(100%);
|
|
13905
13902
|
opacity: 0;
|
|
@@ -14052,14 +14049,14 @@ const Tk=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.
|
|
|
14052
14049
|
<slot></slot>
|
|
14053
14050
|
</div>
|
|
14054
14051
|
</div>
|
|
14055
|
-
`}}t([mt({type:String})],
|
|
14052
|
+
`}}t([mt({type:String})],Vk.prototype,"name",void 0),t([mt({type:String})],Vk.prototype,"header",void 0),t([mt({type:String})],Vk.prototype,"icon",void 0),t([mt({type:Number})],Vk.prototype,"width",void 0),t([mt({type:Number})],Vk.prototype,"minHeight",void 0),t([mt({type:Number})],Vk.prototype,"maxHeight",void 0),t([mt({type:Number})],Vk.prototype,"top",void 0),t([mt({type:Number})],Vk.prototype,"left",void 0),t([mt({type:Boolean})],Vk.prototype,"hidden",void 0),t([mt({type:Boolean})],Vk.prototype,"dragging",void 0),t([mt({type:Boolean})],Vk.prototype,"chromeless",void 0),t([mt({type:String})],Vk.prototype,"color",void 0),t([mt({type:Boolean})],Vk.prototype,"saving",void 0),t([mt({type:Number})],Vk.prototype,"leftBoundaryMargin",void 0),t([mt({type:Number})],Vk.prototype,"rightBoundaryMargin",void 0),t([mt({type:Number})],Vk.prototype,"topBoundaryMargin",void 0),t([mt({type:Number})],Vk.prototype,"bottomBoundaryMargin",void 0);class Zk extends dt{constructor(){super(...arguments),this.multi=!1,this.handleToggle=t=>{if(this.multi)return;const e=t.target;if(!e.collapsed){this.querySelectorAll("temba-accordion-section").forEach(t=>{t===e||t.collapsed||(t.collapsed=!0)})}}}static get styles(){return a`
|
|
14056
14053
|
:host {
|
|
14057
14054
|
display: block;
|
|
14058
14055
|
border: 1px solid #e0e0e0;
|
|
14059
14056
|
border-radius: 6px;
|
|
14060
14057
|
overflow: hidden;
|
|
14061
14058
|
}
|
|
14062
|
-
`}connectedCallback(){super.connectedCallback(),this.addEventListener("toggle",this.handleToggle)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("toggle",this.handleToggle)}render(){return W`<slot></slot>`}}t([mt({type:Boolean})],
|
|
14059
|
+
`}connectedCallback(){super.connectedCallback(),this.addEventListener("toggle",this.handleToggle)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("toggle",this.handleToggle)}render(){return W`<slot></slot>`}}t([mt({type:Boolean})],Zk.prototype,"multi",void 0);class Yk extends dt{constructor(){super(...arguments),this.label="",this.icon="",this.checked=!1,this.collapsed=!0,this.hasError=!1,this.hovered=!1}static get styles(){return a`
|
|
14063
14060
|
:host {
|
|
14064
14061
|
display: block;
|
|
14065
14062
|
border-bottom: 1px solid #e0e0e0;
|
|
@@ -14218,7 +14215,7 @@ const Tk=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.
|
|
|
14218
14215
|
<div class="accordion-content ${this.collapsed?"collapsed":""}">
|
|
14219
14216
|
<slot></slot>
|
|
14220
14217
|
</div>
|
|
14221
|
-
`}}t([mt({type:String})],
|
|
14218
|
+
`}}t([mt({type:String})],Yk.prototype,"label",void 0),t([mt({type:String})],Yk.prototype,"icon",void 0),t([mt({type:Number})],Yk.prototype,"count",void 0),t([mt({type:Boolean})],Yk.prototype,"checked",void 0),t([mt({type:Boolean,reflect:!0})],Yk.prototype,"collapsed",void 0),t([mt({type:Boolean})],Yk.prototype,"hasError",void 0);const Kk=["https://s3.amazonaws.com/floweditor-assets.temba.io/simulator/sim_image_a.jpg","https://s3.amazonaws.com/floweditor-assets.temba.io/simulator/sim_image_b.jpg","https://s3.amazonaws.com/floweditor-assets.temba.io/simulator/sim_image_c.jpg","https://s3.amazonaws.com/floweditor-assets.temba.io/simulator/sim_image_d.jpg"],Gk=["https://s3.amazonaws.com/floweditor-assets.temba.io/simulator/sim_video_a.mp4"],Xk=["https://s3.amazonaws.com/floweditor-assets.temba.io/simulator/sim_audio_a.mp3"],Qk=["geo:47.6062,-122.3321","geo:-0.1807,-78.4678","geo:-2.9001,-79.0059","geo:-1.9536,30.0606"],Jk={small:{phoneWidth:270,phoneTotalHeight:530,phoneScreenHeight:376,contextWidth:336,contextHeight:416,contextOffset:48,optionPaneWidth:44,optionPaneGap:10,windowPadding:24,cutoutHeight:32,cutoutPadding:12,cutoutFontSize:10,cutoutIslandWidth:80,cutoutIslandHeight:20,cutoutIslandTop:6},medium:{phoneWidth:300,phoneTotalHeight:600,phoneScreenHeight:470,contextWidth:420,contextHeight:520,contextOffset:60,optionPaneWidth:44,optionPaneGap:12,windowPadding:30,cutoutHeight:40,cutoutPadding:16,cutoutFontSize:12,cutoutIslandWidth:100,cutoutIslandHeight:24,cutoutIslandTop:8},large:{phoneWidth:360,phoneTotalHeight:700,phoneScreenHeight:564,contextWidth:504,contextHeight:624,contextOffset:72,optionPaneWidth:44,optionPaneGap:14,windowPadding:36,cutoutHeight:50,cutoutPadding:20,cutoutFontSize:14,cutoutIslandWidth:120,cutoutIslandHeight:30,cutoutIslandTop:10}};class tC extends Ve{constructor(){super(...arguments),this.flow="",this.endpoint="",this.animationTime=200,this.events=[],this.previousEventCount=0,this.chat=null,this.session=null,this.context=null,this.contact={uuid:"fb3787ab-2eda-48a0-a2bc-e2ddadec1286",urns:["tel:+12065551212"],fields:{},groups:[],language:"eng",status:"active",created_on:(new Date).toISOString()},this.sprinting=!1,this.inputValue="",this.expandedPaths=new Set,this.copiedExpression="",this.toastMessage="",this.showAllKeys=!0,this.previousWindowWidth=0,this.currentQuickReplies=[],this.isVisible=!1,this.attachmentMenuOpen=!1,this.webhookDetailsOpen=!1,this.webhookDetailsEvent=null,this.boundClickOutsideHandler=null,this.imageIndex=Math.floor(Math.random()*Kk.length),this.videoIndex=Math.floor(Math.random()*Gk.length),this.audioIndex=Math.floor(Math.random()*Xk.length),this.locationIndex=Math.floor(Math.random()*Qk.length)}static get styles(){return a`
|
|
14222
14219
|
:host {
|
|
14223
14220
|
/* size-specific dimensions are set dynamically via inline styles */
|
|
14224
14221
|
--phone-width: 300px;
|
|
@@ -14850,7 +14847,7 @@ const Tk=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.
|
|
|
14850
14847
|
color: #6b7280;
|
|
14851
14848
|
font-size: 13px;
|
|
14852
14849
|
}
|
|
14853
|
-
`}resetAttachmentIndices(){this.imageIndex=2,this.videoIndex=0,this.audioIndex=0,this.locationIndex=0}get sizeConfig(){return
|
|
14850
|
+
`}resetAttachmentIndices(){this.imageIndex=2,this.videoIndex=0,this.audioIndex=0,this.locationIndex=0}get sizeConfig(){return Jk[this.size]||Jk.medium}get windowWidth(){const t=this.sizeConfig;return t.contextWidth+t.phoneWidth+t.optionPaneWidth+t.optionPaneGap+t.contextOffset}get leftBoundaryMargin(){const t=this.sizeConfig;return t.contextWidth+t.contextOffset}get contextClosedLeft(){const t=this.sizeConfig;return t.contextWidth+t.contextOffset-t.phoneWidth}connectedCallback(){super.connectedCallback()}firstUpdated(t){super.firstUpdated(t),this.refreshChat(),this.setupCustomScrollbar()}refreshChat(){var t;const e=null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector("temba-chat");return e!==this.chat&&(this.chat=e),this.chat&&this.events.length>0&&(this.chat.addMessages(this.events,null,!0),this.events=[]),this.chat}setupCustomScrollbar(){var t,e,i;const o=null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector("temba-chat"),n=null===(e=this.shadowRoot)||void 0===e?void 0:e.querySelector(".custom-scrollbar-container"),s=null===(i=this.shadowRoot)||void 0===i?void 0:i.querySelector(".custom-scrollbar-content");o&&n&&s&&o.updateComplete.then(()=>{var t;const e=null===(t=o.shadowRoot)||void 0===t?void 0:t.querySelector(".scroll");if(!e)return;let i=!1;e.addEventListener("scroll",()=>{if(!i){i=!0;const t=n.scrollHeight-n.clientHeight-Math.abs(e.scrollTop);n.scrollTop=t,requestAnimationFrame(()=>i=!1)}}),n.addEventListener("scroll",()=>{if(!i){i=!0;const t=n.scrollHeight-n.clientHeight-n.scrollTop;e.scrollTop=-t,requestAnimationFrame(()=>i=!1)}});const r=()=>{const t=e.scrollHeight-e.clientHeight,i=n.clientHeight;if(t<=0)return void(s.style.height="100%");const o=t+i;s.style.height=`${o}px`,Math.abs(e.scrollTop)<5&&(n.scrollTop=n.scrollHeight)};new MutationObserver(r).observe(e,{childList:!0,subtree:!0,attributes:!0});new ResizeObserver(r).observe(e),r()})}willUpdate(t){super.willUpdate(t),t.has("flow")&&this.flow&&(this.endpoint=`/flow/simulate/${this.flow}/`)}updated(t){super.updated(t),(t.has("currentQuickReplies")||t.has("keyboardVisible")||t.has("attachmentMenuOpen"))&&this.updateBottomInputHeight(),t.has("attachmentMenuOpen")&&(this.attachmentMenuOpen?(this.boundClickOutsideHandler||(this.boundClickOutsideHandler=this.handleClickOutsideAttachmentMenu.bind(this)),setTimeout(()=>{document.addEventListener("click",this.boundClickOutsideHandler)},0)):this.boundClickOutsideHandler&&document.removeEventListener("click",this.boundClickOutsideHandler)),t.has("size")?requestAnimationFrame(()=>{var t,e;const i=null===(t=this.shadowRoot)||void 0===t?void 0:t.getElementById("phone-window");if(i){const t=this.previousWindowWidth||i.width,o=i.left+t,n=this.sizeConfig,s=this.windowWidth;this.previousWindowWidth=s,i.width=s,i.leftBoundaryMargin=this.leftBoundaryMargin,i.topBoundaryMargin=n.windowPadding,i.bottomBoundaryMargin=n.windowPadding;let r=o-s;const a=20,l=a-this.leftBoundaryMargin,d=window.innerWidth-s-a+i.rightBoundaryMargin;r=Math.max(l,Math.min(r,d)),i.left=r;const c=null===(e=i.shadowRoot)||void 0===e?void 0:e.querySelector(".window"),h=(null==c?void 0:c.offsetHeight)||n.phoneTotalHeight,u=Math.max(a-n.windowPadding,window.innerHeight-h-a+n.windowPadding);i.top=Math.max(a-n.windowPadding,Math.min(i.top,u))}}):this.previousWindowWidth||(this.previousWindowWidth=this.windowWidth)}disconnectedCallback(){super.disconnectedCallback(),this.boundClickOutsideHandler&&document.removeEventListener("click",this.boundClickOutsideHandler)}handleTabClick(){this.isVisible?this.handleClose():this.handleShow()}async handleShow(){var t,e;this.shadowRoot.getElementById("phone-window").show(),this.isVisible=!0,Qc().getState().setSimulatorActive(!0),this.refreshChat(),this.session||(await(null===(e=(t=Qc().getState()).flushSave)||void 0===e?void 0:e.call(t)),this.startFlow())}async startFlow(){const t=(new Date).toISOString(),e=zd.getState().languageCode;e&&(this.contact={...this.contact,language:e}),this.contact={...this.contact,created_on:t};const i={contact:this.contact,trigger:{type:"manual",triggered_on:t,flow:{uuid:this.flow,name:"New Chat"},params:{}}};try{const t=await xe(this.endpoint,i);this.updateRunContext(t.json)}catch(e){console.error("Failed to start simulation:",e);const i={uuid:Xt(),type:"error",created_on:new Date(t),_rendered:{html:W`<p>Failed to start simulation</p>`,type:Hh.Error}};this.refreshChat(),this.chat?this.chat.addMessages([i],null,!0):this.events=[...this.events,i]}}updateRunContext(t,e){var i;const o=[];if(e&&(e.uuid||(e.uuid=Xt()),"string"==typeof e.created_on&&(e.created_on=new Date(e.created_on)),o.push(e)),t.session&&(this.session=t.session,t.contact&&(this.contact=t.contact)),t.context&&(this.context=t.context),this.currentQuickReplies=[],t.events&&t.events.length>0)for(const e of t.events){if("msg_received"===e.type)continue;if(("msg_created"===e.type||"ivr_created"===e.type)&&!e.msg)continue;const t={...e,uuid:e.uuid||Xt(),created_on:"string"==typeof e.created_on?new Date(e.created_on):e.created_on};this.prerenderEvent(t),"msg_created"===t.type&&(null===(i=t.msg)||void 0===i?void 0:i.quick_replies)&&(this.currentQuickReplies=t.msg.quick_replies);const n="msg_created"===t.type||"ivr_created"===t.type,s=t.msg;if(n){const t=s.text&&s.text.trim().length>0,e=s.attachments&&s.attachments.length>0;if(!t&&!e)continue}else if(!t._rendered)continue;o.push(t)}this.refreshChat(),this.chat?this.chat.addMessages(o,null,!0):this.events=[...this.events,...o],this.sprinting=!1,this.requestUpdate(),this.scrollToBottom(),this.updateActivity()}updateActivity(){if(!this.session)return;const t={},e={};for(const i of this.session.runs){if(i.path)for(let e=0;e<i.path.length-1;e++){const o=i.path[e],n=i.path[e+1];if(o.exit_uuid&&n.node_uuid){const e=o.exit_uuid+":"+n.node_uuid;t[e]=(t[e]||0)+1}}if(("active"===i.status||"waiting"===i.status)&&i.path&&i.path.length>0){const t=i.path[i.path.length-1];t&&t.node_uuid&&(e[t.node_uuid]=(e[t.node_uuid]||0)+1)}}Qc().getState().updateSimulatorActivity({segments:t,nodes:e}),this.following&&this.fireFollowEvent()}fireFollowEvent(){var t;if(!this.session||!this.session.runs||0===this.session.runs.length)return;let e=this.session.runs.find(t=>"active"===t.status||"waiting"===t.status);if(e||(e=this.session.runs.find(t=>"completed"===t.status)),e&&e.path&&e.path.length>0){const i=e.path[e.path.length-1];i&&i.node_uuid&&this.fireCustomEvent(Fo.FollowSimulation,{flowUuid:(null===(t=e.flow)||void 0===t?void 0:t.uuid)||this.flow,nodeUuid:i.node_uuid})}}scrollToBottom(){if(this.chat)return this.chat.scrollToBottom(),void setTimeout(()=>{var t;const e=null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector(".message-input input");e&&e.focus()},50);setTimeout(()=>{var t,e;const i=null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector(".phone-screen");i&&(i.scrollTop=i.scrollHeight),this.previousEventCount=this.events.length;const o=null===(e=this.shadowRoot)||void 0===e?void 0:e.querySelector(".message-input input");o&&o.focus()},50)}prerenderEvent(t){if(t._rendered||t.type===Kh.MSG_CREATED||t.type===Kh.MSG_RECEIVED)return;if("error"===t.type||"failure"===t.type)return void(t._rendered={html:Qh(t,!0),type:Hh.Error});if("warning"===t.type)return void(t._rendered={html:Qh(t,!0),type:Hh.Note});const e=Qh(t,!0);if(e){const i=t.type===Kh.WEBHOOK_CALLED&&this.hasWebhookDetails(t)?W`<div class="webhook-event">
|
|
14854
14851
|
<div class="webhook-event-text">
|
|
14855
14852
|
Called
|
|
14856
14853
|
<a
|
|
@@ -14929,7 +14926,7 @@ const Tk=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.
|
|
|
14929
14926
|
`):n(t[0],!0)}`}
|
|
14930
14927
|
</div>
|
|
14931
14928
|
</temba-dialog>
|
|
14932
|
-
`}async resume(t,e){if(!t&&!e||!this.session)return;this.sprinting=!0,this.inputValue="",this.currentQuickReplies=[],this.attachmentMenuOpen=!1;const i=(new Date).toISOString(),o={uuid:Xt(),type:"msg_received",created_on:i,msg:{uuid:Xt(),text:t||"",urn:this.contact.urns[0],direction:"in",type:"text",attachments:e?[e]:[],quick_replies:[],channel:{uuid:Xt(),name:"Simulator"}}},n={...o,created_on:new Date(i)};this.refreshChat(),this.chat?this.chat.addMessages([n],null,!0):this.events=[...this.events,n],this.requestUpdate(),this.scrollToBottom();const s={session:this.session,contact:this.contact,resume:{type:"msg",event:o,resumed_on:i}};try{const t=await xe(this.endpoint,s);await new Promise(t=>setTimeout(t,400)),this.updateRunContext(t.json,null)}catch(t){console.error("Failed to resume simulation:",t);const e={uuid:Xt(),type:"error",created_on:new Date(i),_rendered:{html:W`<p>Failed to send message</p>`,type:Hh.Error}};this.refreshChat(),this.chat?this.chat.addMessages([e],null,!0):this.events=[...this.events,e],this.sprinting=!1}}handleKeyUp(t){if("Enter"===t.key){const e=t.target.value.trim();e&&this.resume(e)}}handleInput(t){const e=t.target;this.inputValue=e.value}handleQuickReplyClick(t){!this.sprinting&&t&&this.resume(t)}handleToggleAttachmentMenu(){this.attachmentMenuOpen=!this.attachmentMenuOpen}handleClickOutsideAttachmentMenu(t){var e,i;if(!this.attachmentMenuOpen)return;const o=null===(e=this.shadowRoot)||void 0===e?void 0:e.querySelector(".attachment-menu"),n=null===(i=this.shadowRoot)||void 0===i?void 0:i.querySelector(".attachment-button");if(!o||!n)return;const s=o.contains(t.target),r=n.contains(t.target);s||r||(this.attachmentMenuOpen=!1)}handleSendAttachment(t){let e="";switch(t){case"image":e=`image/jpeg:${
|
|
14929
|
+
`}async resume(t,e){if(!t&&!e||!this.session)return;this.sprinting=!0,this.inputValue="",this.currentQuickReplies=[],this.attachmentMenuOpen=!1;const i=(new Date).toISOString(),o={uuid:Xt(),type:"msg_received",created_on:i,msg:{uuid:Xt(),text:t||"",urn:this.contact.urns[0],direction:"in",type:"text",attachments:e?[e]:[],quick_replies:[],channel:{uuid:Xt(),name:"Simulator"}}},n={...o,created_on:new Date(i)};this.refreshChat(),this.chat?this.chat.addMessages([n],null,!0):this.events=[...this.events,n],this.requestUpdate(),this.scrollToBottom();const s={session:this.session,contact:this.contact,resume:{type:"msg",event:o,resumed_on:i}};try{const t=await xe(this.endpoint,s);await new Promise(t=>setTimeout(t,400)),this.updateRunContext(t.json,null)}catch(t){console.error("Failed to resume simulation:",t);const e={uuid:Xt(),type:"error",created_on:new Date(i),_rendered:{html:W`<p>Failed to send message</p>`,type:Hh.Error}};this.refreshChat(),this.chat?this.chat.addMessages([e],null,!0):this.events=[...this.events,e],this.sprinting=!1}}handleKeyUp(t){if("Enter"===t.key){const e=t.target.value.trim();e&&this.resume(e)}}handleInput(t){const e=t.target;this.inputValue=e.value}handleQuickReplyClick(t){!this.sprinting&&t&&this.resume(t)}handleToggleAttachmentMenu(){this.attachmentMenuOpen=!this.attachmentMenuOpen}handleClickOutsideAttachmentMenu(t){var e,i;if(!this.attachmentMenuOpen)return;const o=null===(e=this.shadowRoot)||void 0===e?void 0:e.querySelector(".attachment-menu"),n=null===(i=this.shadowRoot)||void 0===i?void 0:i.querySelector(".attachment-button");if(!o||!n)return;const s=o.contains(t.target),r=n.contains(t.target);s||r||(this.attachmentMenuOpen=!1)}handleSendAttachment(t){let e="";switch(t){case"image":e=`image/jpeg:${Kk[this.imageIndex]}`,this.imageIndex=(this.imageIndex+1)%Kk.length;break;case"video":e=`video/mp4:${Gk[this.videoIndex]}`,this.videoIndex=(this.videoIndex+1)%Gk.length;break;case"audio":e=`audio/mp3:${Xk[this.audioIndex]}`,this.audioIndex=(this.audioIndex+1)%Xk.length;break;case"location":e=Qk[this.locationIndex],this.locationIndex=(this.locationIndex+1)%Qk.length}e&&this.resume("",e)}updateBottomInputHeight(){requestAnimationFrame(()=>{var t;const e=null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector(".bottom-input-container");if(e){const t=e.offsetHeight;this.style.setProperty("--bottom-input-height",`${t}px`)}})}render(){var t;if(this.viewingRevision||0===(null===(t=this.definition)||void 0===t?void 0:t.nodes.length))return W``;const e=this.sizeConfig,i=`\n --phone-width: ${e.phoneWidth}px;\n --phone-total-height: ${e.phoneTotalHeight}px;\n --context-width: ${e.contextWidth}px;\n --context-offset: ${e.contextOffset}px;\n --option-pane-width: ${e.optionPaneWidth}px;\n --option-pane-gap: ${e.optionPaneGap}px;\n --window-padding: ${e.windowPadding}px;\n --phone-screen-height: ${e.phoneScreenHeight}px;\n --context-height: ${e.contextHeight}px;\n --context-closed-left: ${this.contextClosedLeft}px;\n --cutout-height: ${e.cutoutHeight}px;\n --cutout-padding: ${e.cutoutPadding}px;\n --cutout-font-size: ${e.cutoutFontSize}px;\n --cutout-island-width: ${e.cutoutIslandWidth}px;\n --cutout-island-height: ${e.cutoutIslandHeight}px;\n --cutout-island-top: ${e.cutoutIslandTop}px;\n --animation-time: ${this.animationTime}ms;\n `;return W`
|
|
14933
14930
|
<temba-floating-window
|
|
14934
14931
|
style="--transition-duration: ${this.animationTime}ms"
|
|
14935
14932
|
id="phone-window"
|
|
@@ -15110,7 +15107,7 @@ const Tk=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.
|
|
|
15110
15107
|
.active=${this.isVisible}
|
|
15111
15108
|
@temba-button-clicked=${this.handleTabClick}
|
|
15112
15109
|
></temba-floating-tab>
|
|
15113
|
-
`}}t([Id(zd,t=>t.flowDefinition)],eC.prototype,"definition",void 0),t([Id(zd,t=>t.viewingRevision)],eC.prototype,"viewingRevision",void 0),t([mt({type:String})],eC.prototype,"flow",void 0),t([mt({type:String})],eC.prototype,"endpoint",void 0),t([mt({type:Number})],eC.prototype,"animationTime",void 0),t([Me("simulator","small",{validate:t=>t in tC})],eC.prototype,"size",void 0),t([mt({type:Array})],eC.prototype,"events",void 0),t([mt({type:Object})],eC.prototype,"session",void 0),t([mt({type:Object})],eC.prototype,"context",void 0),t([mt({type:Object})],eC.prototype,"contact",void 0),t([mt({type:Boolean})],eC.prototype,"sprinting",void 0),t([mt({type:String})],eC.prototype,"inputValue",void 0),t([Me("simulator",!0)],eC.prototype,"following",void 0),t([Me("simulator",!1)],eC.prototype,"contextExplorerOpen",void 0),t([mt({type:Object})],eC.prototype,"expandedPaths",void 0),t([mt({type:String})],eC.prototype,"copiedExpression",void 0),t([mt({type:String})],eC.prototype,"toastMessage",void 0),t([mt({type:Boolean})],eC.prototype,"showAllKeys",void 0),t([mt({type:Array})],eC.prototype,"currentQuickReplies",void 0),t([mt({type:Boolean})],eC.prototype,"isVisible",void 0),t([mt({type:Boolean})],eC.prototype,"attachmentMenuOpen",void 0),t([mt({type:Boolean})],eC.prototype,"webhookDetailsOpen",void 0),t([mt({attribute:!1})],eC.prototype,"webhookDetailsEvent",void 0);const iC={yellow:{border:"#facc15",fill:"#fcd94d",text:"#713f12"},blue:{border:"#3b82f6",fill:"#6ca1f8",text:"#fff"},pink:{border:"#ec4899",fill:"#f17ab7",text:"#fff"},green:{border:"#10b981",fill:"#48ca9d",text:"#fff"},gray:{border:"#6b7280",fill:"#8f949f",text:"#fff"}};function oC(t){var e,i,o,n,s,r,a,l,d,c,h;const u=[];switch(t.type){case"send_msg":{const i=t;i.text&&u.push(i.text),i.quick_replies&&u.push(...i.quick_replies),(null===(e=i.template)||void 0===e?void 0:e.name)&&u.push(i.template.name);break}case"send_email":{const e=t;e.subject&&u.push(e.subject),e.body&&u.push(e.body),e.addresses&&u.push(...e.addresses);break}case"send_broadcast":{const e=t;e.text&&u.push(e.text),e.groups&&u.push(...e.groups.map(t=>t.name)),e.contacts&&u.push(...e.contacts.map(t=>t.name)),(null===(i=e.template)||void 0===i?void 0:i.name)&&u.push(e.template.name);break}case"say_msg":{const e=t;e.text&&u.push(e.text);break}case"play_audio":{const e=t;e.audio_url&&u.push(e.audio_url);break}case"set_contact_name":{const e=t;e.name&&u.push(e.name);break}case"set_contact_field":{const e=t;(null===(o=e.field)||void 0===o?void 0:o.name)&&u.push(e.field.name),e.value&&u.push(e.value);break}case"set_contact_language":{const e=t;e.language&&u.push(e.language);break}case"set_contact_status":{const e=t;e.status&&u.push(e.status);break}case"set_contact_channel":{const e=t;(null===(n=e.channel)||void 0===n?void 0:n.name)&&u.push(e.channel.name);break}case"add_contact_urn":{const e=t;e.path&&u.push(e.path);break}case"add_contact_groups":{const e=t;e.groups&&u.push(...e.groups.map(t=>t.name));break}case"remove_contact_groups":{const e=t;e.groups&&u.push(...e.groups.map(t=>t.name));break}case"add_input_labels":{const e=t;e.labels&&u.push(...e.labels.map(t=>t.name));break}case"set_run_result":{const e=t;e.name&&u.push(e.name),e.value&&u.push(e.value),e.category&&u.push(e.category);break}case"enter_flow":{const e=t;(null===(s=e.flow)||void 0===s?void 0:s.name)&&u.push(e.flow.name);break}case"start_session":{const e=t;(null===(r=e.flow)||void 0===r?void 0:r.name)&&u.push(e.flow.name),e.groups&&u.push(...e.groups.map(t=>t.name)),e.contacts&&u.push(...e.contacts.map(t=>t.name));break}case"request_optin":{const e=t;(null===(a=e.optin)||void 0===a?void 0:a.name)&&u.push(e.optin.name);break}case"call_webhook":{const e=t;e.url&&u.push(e.url),e.body&&u.push(e.body);break}case"call_resthook":{const e=t;e.resthook&&u.push(e.resthook);break}case"call_llm":{const e=t;(null===(l=e.llm)||void 0===l?void 0:l.name)&&u.push(e.llm.name),e.instructions&&u.push(e.instructions),e.input&&u.push(e.input);break}case"call_classifier":{const e=t;(null===(d=e.classifier)||void 0===d?void 0:d.name)&&u.push(e.classifier.name),e.input&&u.push(e.input);break}case"open_ticket":{const e=t;(null===(c=e.topic)||void 0===c?void 0:c.name)&&u.push(e.topic.name),e.subject&&u.push(e.subject),e.body&&u.push(e.body),(null===(h=e.assignee)||void 0===h?void 0:h.name)&&u.push(e.assignee.name);break}}return u}function nC(t){const e=[],i=Lm[t.type];if(!(null==i?void 0:i.localizable))return e;const o=t;for(const t of i.localizable){const i=o[t];if("string"==typeof i&&i.trim())e.push(i);else if(Array.isArray(i))for(const t of i)"string"==typeof t&&t.trim()&&e.push(t)}return e}function sC(t,e,i){var o,n,s,r,a,l;const d=[];if((null===(o=t.router)||void 0===o?void 0:o.operand)&&d.push(t.router.operand),(null===(n=t.router)||void 0===n?void 0:n.result_name)&&d.push(t.router.result_name),null===(s=t.router)||void 0===s?void 0:s.categories)for(const e of t.router.categories)e.name&&"Other"!==e.name&&"All Responses"!==e.name&&d.push(lC(e.uuid,e.name,i));if(null===(r=t.router)||void 0===r?void 0:r.cases)for(const e of t.router.cases)if(e.arguments)for(const t of e.arguments)t&&d.push(t);return(null===(l=null===(a=null==e?void 0:e.config)||void 0===a?void 0:a.operand)||void 0===l?void 0:l.name)&&d.push(e.config.operand.name),d}function rC(t,e){var i,o,n;return(null==t?void 0:t.group)?(null===(i=bp[t.group])||void 0===i?void 0:i.color)||"#aaaaaa":(null==e?void 0:e.group)&&((null===(o=bp[e.group])||void 0===o?void 0:o.color)||(null===(n=yp[e.group])||void 0===n?void 0:n.color))||"#aaaaaa"}function aC(t,e){return(null==t?void 0:t.name)?t.name:(null==e?void 0:e.name)?e.name:"Unknown"}function lC(t,e,i){const o=null==i?void 0:i[t];return(null==o?void 0:o.name)&&Array.isArray(o.name)&&o.name[0]?o.name[0]:e}class dC extends dt{constructor(){super(...arguments),this.open=!1,this.definition=null,this.languageCode="",this.scope="flow",this.includeCategories=!1,this.searchQuery="",this.results=[],this.highlightedIndex=0}show(){this.open=!0,this.searchQuery="",this.results=[],this.highlightedIndex=0,this.updateComplete.then(()=>{var t,e;null===(t=this.inputEl)||void 0===t||t.focus(),null===(e=this.inputEl)||void 0===e||e.select()})}hide(){this.open=!1,this.searchQuery="",this.results=[]}handleInput(t){const e=t.target;this.searchQuery=e.value,this.performSearch(),this.highlightedIndex=0}handleKeyDown(t){return"Escape"===t.key?(t.preventDefault(),void this.hide()):"ArrowDown"===t.key||t.ctrlKey&&"n"===t.key?(t.preventDefault(),void(this.results.length>0&&(this.highlightedIndex=(this.highlightedIndex+1)%this.results.length))):"ArrowUp"===t.key||t.ctrlKey&&"p"===t.key?(t.preventDefault(),void(this.results.length>0&&(this.highlightedIndex=(this.highlightedIndex-1+this.results.length)%this.results.length))):"Enter"===t.key?(t.preventDefault(),void(this.results.length>0&&this.selectResult(this.results[this.highlightedIndex]))):void 0}handleBackdropClick(){this.hide()}selectResult(t){this.hide(),this.dispatchEvent(new CustomEvent("temba-search-result-selected",{detail:t,bubbles:!0,composed:!0}))}performSearch(){var t;if(!this.definition||!this.searchQuery.trim())return void(this.results=[]);const e=this.searchQuery.toLowerCase(),i=this.languageCode&&this.languageCode!==this.definition.language?null===(t=this.definition.localization)||void 0===t?void 0:t[this.languageCode]:void 0;"table"!==this.scope?this.results=this.performFlowSearch(e,i):this.results=this.performTableSearch(e,i)}performFlowSearch(t,e){var i,o;const n=[];for(const o of this.definition.nodes){const s=null===(i=this.definition._ui)||void 0===i?void 0:i.nodes[o.uuid],r=(null==s?void 0:s.type)||"execute_actions";if("execute_actions"===r){if(o.actions)for(const i of o.actions){const s=Lm[i.type],r=oC(Gc(i,null==e?void 0:e[i.uuid]));for(const e of r){const r=e.toLowerCase().indexOf(t);if(-1!==r){n.push({nodeUuid:o.uuid,action:i,typeName:aC(s,void 0),color:rC(s,void 0),fullText:e,matchStart:r,matchLength:t.length});break}}}}else{const i=Rm[r],a=sC(o,s,e);if(o.actions)for(const t of o.actions){const i=Gc(t,null==e?void 0:e[t.uuid]);a.push(...oC(i))}for(const e of a){const s=e.toLowerCase().indexOf(t);if(-1!==s){n.push({nodeUuid:o.uuid,action:null,typeName:aC(void 0,i),color:rC(void 0,i),fullText:e,matchStart:s,matchLength:t.length});break}}}}const s=(null===(o=this.definition._ui)||void 0===o?void 0:o.stickies)||{};for(const[e,i]of Object.entries(s)){const o=[];i.title&&o.push({text:i.title,field:"title"}),i.body&&o.push({text:i.body,field:"body"});for(const{text:s,field:r}of o){const o=s.toLowerCase().indexOf(t);if(-1!==o){const a=iC[i.color]||iC.yellow;n.push({nodeUuid:e,action:null,typeName:"Sticky Note",color:a.fill,borderColor:a.border,textColor:a.text,fullText:s,matchStart:o,matchLength:t.length,stickyField:r});break}}}return n}performTableSearch(t,e){var i,o,n,s;const r=[];for(const a of this.definition.nodes){const l=null===(i=this.definition._ui)||void 0===i?void 0:i.nodes[a.uuid],d=(null==l?void 0:l.type)||"execute_actions";if(a.actions)for(const i of a.actions){const o=Lm[i.type];if("send_msg"!==i.type&&(!(null==o?void 0:o.localizable)||0===o.localizable.length))continue;const n=nC(i),s=nC(Gc(i,null==e?void 0:e[i.uuid])),l=[],d=new Set;for(const t of[...n,...s])d.has(t)||(d.add(t),l.push(t));let c=!1;for(const e of l){const n=e.toLowerCase().indexOf(t);if(-1!==n){r.push({nodeUuid:a.uuid,action:i,typeName:aC(o,void 0),color:rC(o,void 0),fullText:e,matchStart:n,matchLength:t.length}),c=!0;break}}}if(this.includeCategories&&(null===(n=null===(o=a.router)||void 0===o?void 0:o.categories)||void 0===n?void 0:n.length)&&"categories"===(null===(s=Rm[d])||void 0===s?void 0:s.localizable)){const i=Fm(d,a.router.categories);if(!i.length)continue;const o=Rm[d],n=i.map(t=>lC(t.uuid,t.name,e));for(const e of n){const i=e.toLowerCase().indexOf(t);if(-1!==i){r.push({nodeUuid:a.uuid,action:null,typeName:aC(void 0,o),color:rC(void 0,o),fullText:e,matchStart:i,matchLength:t.length});break}}}}return r}renderMatchText(t){const{matchStart:e,matchLength:i}=t,o=e+i,n=t.fullText.replace(/\n/g," "),s=n.length-o<30?50:20,r=Math.max(0,e-s),a=r>0?"…":"",l=n.slice(r,e),d=n.slice(e,o),c=n.slice(o);return W`${a}${l}<mark>${d}</mark>${c}`}updated(t){var e;if(t.has("highlightedIndex")){const t=null===(e=this.shadowRoot)||void 0===e?void 0:e.querySelector(".result-item.highlighted");null==t||t.scrollIntoView({block:"nearest"})}}render(){const t="table"===this.scope?"Search this table":"Search this flow";return W`
|
|
15110
|
+
`}}t([Id(zd,t=>t.flowDefinition)],tC.prototype,"definition",void 0),t([Id(zd,t=>t.viewingRevision)],tC.prototype,"viewingRevision",void 0),t([mt({type:String})],tC.prototype,"flow",void 0),t([mt({type:String})],tC.prototype,"endpoint",void 0),t([mt({type:Number})],tC.prototype,"animationTime",void 0),t([Me("simulator","small",{validate:t=>t in Jk})],tC.prototype,"size",void 0),t([mt({type:Array})],tC.prototype,"events",void 0),t([mt({type:Object})],tC.prototype,"session",void 0),t([mt({type:Object})],tC.prototype,"context",void 0),t([mt({type:Object})],tC.prototype,"contact",void 0),t([mt({type:Boolean})],tC.prototype,"sprinting",void 0),t([mt({type:String})],tC.prototype,"inputValue",void 0),t([Me("simulator",!0)],tC.prototype,"following",void 0),t([Me("simulator",!1)],tC.prototype,"contextExplorerOpen",void 0),t([mt({type:Object})],tC.prototype,"expandedPaths",void 0),t([mt({type:String})],tC.prototype,"copiedExpression",void 0),t([mt({type:String})],tC.prototype,"toastMessage",void 0),t([mt({type:Boolean})],tC.prototype,"showAllKeys",void 0),t([mt({type:Array})],tC.prototype,"currentQuickReplies",void 0),t([mt({type:Boolean})],tC.prototype,"isVisible",void 0),t([mt({type:Boolean})],tC.prototype,"attachmentMenuOpen",void 0),t([mt({type:Boolean})],tC.prototype,"webhookDetailsOpen",void 0),t([mt({attribute:!1})],tC.prototype,"webhookDetailsEvent",void 0);const eC={yellow:{border:"#facc15",fill:"#fcd94d",text:"#713f12"},blue:{border:"#3b82f6",fill:"#6ca1f8",text:"#fff"},pink:{border:"#ec4899",fill:"#f17ab7",text:"#fff"},green:{border:"#10b981",fill:"#48ca9d",text:"#fff"},gray:{border:"#6b7280",fill:"#8f949f",text:"#fff"}};function iC(t){var e,i,o,n,s,r,a,l,d,c,h;const u=[];switch(t.type){case"send_msg":{const i=t;i.text&&u.push(i.text),i.quick_replies&&u.push(...i.quick_replies),(null===(e=i.template)||void 0===e?void 0:e.name)&&u.push(i.template.name);break}case"send_email":{const e=t;e.subject&&u.push(e.subject),e.body&&u.push(e.body),e.addresses&&u.push(...e.addresses);break}case"send_broadcast":{const e=t;e.text&&u.push(e.text),e.groups&&u.push(...e.groups.map(t=>t.name)),e.contacts&&u.push(...e.contacts.map(t=>t.name)),(null===(i=e.template)||void 0===i?void 0:i.name)&&u.push(e.template.name);break}case"say_msg":{const e=t;e.text&&u.push(e.text);break}case"play_audio":{const e=t;e.audio_url&&u.push(e.audio_url);break}case"set_contact_name":{const e=t;e.name&&u.push(e.name);break}case"set_contact_field":{const e=t;(null===(o=e.field)||void 0===o?void 0:o.name)&&u.push(e.field.name),e.value&&u.push(e.value);break}case"set_contact_language":{const e=t;e.language&&u.push(e.language);break}case"set_contact_status":{const e=t;e.status&&u.push(e.status);break}case"set_contact_channel":{const e=t;(null===(n=e.channel)||void 0===n?void 0:n.name)&&u.push(e.channel.name);break}case"add_contact_urn":{const e=t;e.path&&u.push(e.path);break}case"add_contact_groups":{const e=t;e.groups&&u.push(...e.groups.map(t=>t.name));break}case"remove_contact_groups":{const e=t;e.groups&&u.push(...e.groups.map(t=>t.name));break}case"add_input_labels":{const e=t;e.labels&&u.push(...e.labels.map(t=>t.name));break}case"set_run_result":{const e=t;e.name&&u.push(e.name),e.value&&u.push(e.value),e.category&&u.push(e.category);break}case"enter_flow":{const e=t;(null===(s=e.flow)||void 0===s?void 0:s.name)&&u.push(e.flow.name);break}case"start_session":{const e=t;(null===(r=e.flow)||void 0===r?void 0:r.name)&&u.push(e.flow.name),e.groups&&u.push(...e.groups.map(t=>t.name)),e.contacts&&u.push(...e.contacts.map(t=>t.name));break}case"request_optin":{const e=t;(null===(a=e.optin)||void 0===a?void 0:a.name)&&u.push(e.optin.name);break}case"call_webhook":{const e=t;e.url&&u.push(e.url),e.body&&u.push(e.body);break}case"call_resthook":{const e=t;e.resthook&&u.push(e.resthook);break}case"call_llm":{const e=t;(null===(l=e.llm)||void 0===l?void 0:l.name)&&u.push(e.llm.name),e.instructions&&u.push(e.instructions),e.input&&u.push(e.input);break}case"call_classifier":{const e=t;(null===(d=e.classifier)||void 0===d?void 0:d.name)&&u.push(e.classifier.name),e.input&&u.push(e.input);break}case"open_ticket":{const e=t;(null===(c=e.topic)||void 0===c?void 0:c.name)&&u.push(e.topic.name),e.subject&&u.push(e.subject),e.body&&u.push(e.body),(null===(h=e.assignee)||void 0===h?void 0:h.name)&&u.push(e.assignee.name);break}}return u}function oC(t){const e=[],i=Om[t.type];if(!(null==i?void 0:i.localizable))return e;const o=t;for(const t of i.localizable){const i=o[t];if("string"==typeof i&&i.trim())e.push(i);else if(Array.isArray(i))for(const t of i)"string"==typeof t&&t.trim()&&e.push(t)}return e}function nC(t,e,i){var o,n,s,r,a,l;const d=[];if((null===(o=t.router)||void 0===o?void 0:o.operand)&&d.push(t.router.operand),(null===(n=t.router)||void 0===n?void 0:n.result_name)&&d.push(t.router.result_name),null===(s=t.router)||void 0===s?void 0:s.categories)for(const e of t.router.categories)e.name&&"Other"!==e.name&&"All Responses"!==e.name&&d.push(aC(e.uuid,e.name,i));if(null===(r=t.router)||void 0===r?void 0:r.cases)for(const e of t.router.cases)if(e.arguments)for(const t of e.arguments)t&&d.push(t);return(null===(l=null===(a=null==e?void 0:e.config)||void 0===a?void 0:a.operand)||void 0===l?void 0:l.name)&&d.push(e.config.operand.name),d}function sC(t,e){var i,o,n;return(null==t?void 0:t.group)?(null===(i=vp[t.group])||void 0===i?void 0:i.color)||"#aaaaaa":(null==e?void 0:e.group)&&((null===(o=vp[e.group])||void 0===o?void 0:o.color)||(null===(n=bp[e.group])||void 0===n?void 0:n.color))||"#aaaaaa"}function rC(t,e){return(null==t?void 0:t.name)?t.name:(null==e?void 0:e.name)?e.name:"Unknown"}function aC(t,e,i){const o=null==i?void 0:i[t];return(null==o?void 0:o.name)&&Array.isArray(o.name)&&o.name[0]?o.name[0]:e}class lC extends dt{constructor(){super(...arguments),this.open=!1,this.definition=null,this.languageCode="",this.scope="flow",this.includeCategories=!1,this.searchQuery="",this.results=[],this.highlightedIndex=0}show(){this.open=!0,this.searchQuery="",this.results=[],this.highlightedIndex=0,this.updateComplete.then(()=>{var t,e;null===(t=this.inputEl)||void 0===t||t.focus(),null===(e=this.inputEl)||void 0===e||e.select()})}hide(){this.open=!1,this.searchQuery="",this.results=[]}handleInput(t){const e=t.target;this.searchQuery=e.value,this.performSearch(),this.highlightedIndex=0}handleKeyDown(t){return"Escape"===t.key?(t.preventDefault(),void this.hide()):"ArrowDown"===t.key||t.ctrlKey&&"n"===t.key?(t.preventDefault(),void(this.results.length>0&&(this.highlightedIndex=(this.highlightedIndex+1)%this.results.length))):"ArrowUp"===t.key||t.ctrlKey&&"p"===t.key?(t.preventDefault(),void(this.results.length>0&&(this.highlightedIndex=(this.highlightedIndex-1+this.results.length)%this.results.length))):"Enter"===t.key?(t.preventDefault(),void(this.results.length>0&&this.selectResult(this.results[this.highlightedIndex]))):void 0}handleBackdropClick(){this.hide()}selectResult(t){this.hide(),this.dispatchEvent(new CustomEvent("temba-search-result-selected",{detail:t,bubbles:!0,composed:!0}))}performSearch(){var t;if(!this.definition||!this.searchQuery.trim())return void(this.results=[]);const e=this.searchQuery.toLowerCase(),i=this.languageCode&&this.languageCode!==this.definition.language?null===(t=this.definition.localization)||void 0===t?void 0:t[this.languageCode]:void 0;"table"!==this.scope?this.results=this.performFlowSearch(e,i):this.results=this.performTableSearch(e,i)}performFlowSearch(t,e){var i,o;const n=[];for(const o of this.definition.nodes){const s=null===(i=this.definition._ui)||void 0===i?void 0:i.nodes[o.uuid],r=(null==s?void 0:s.type)||"execute_actions";if("execute_actions"===r){if(o.actions)for(const i of o.actions){const s=Om[i.type],r=iC(Gc(i,null==e?void 0:e[i.uuid]));for(const e of r){const r=e.toLowerCase().indexOf(t);if(-1!==r){n.push({nodeUuid:o.uuid,action:i,typeName:rC(s,void 0),color:sC(s,void 0),fullText:e,matchStart:r,matchLength:t.length});break}}}}else{const i=Pm[r],a=nC(o,s,e);if(o.actions)for(const t of o.actions){const i=Gc(t,null==e?void 0:e[t.uuid]);a.push(...iC(i))}for(const e of a){const s=e.toLowerCase().indexOf(t);if(-1!==s){n.push({nodeUuid:o.uuid,action:null,typeName:rC(void 0,i),color:sC(void 0,i),fullText:e,matchStart:s,matchLength:t.length});break}}}}const s=(null===(o=this.definition._ui)||void 0===o?void 0:o.stickies)||{};for(const[e,i]of Object.entries(s)){const o=[];i.title&&o.push({text:i.title,field:"title"}),i.body&&o.push({text:i.body,field:"body"});for(const{text:s,field:r}of o){const o=s.toLowerCase().indexOf(t);if(-1!==o){const a=eC[i.color]||eC.yellow;n.push({nodeUuid:e,action:null,typeName:"Sticky Note",color:a.fill,borderColor:a.border,textColor:a.text,fullText:s,matchStart:o,matchLength:t.length,stickyField:r});break}}}return n}performTableSearch(t,e){var i,o,n,s;const r=[];for(const a of this.definition.nodes){const l=null===(i=this.definition._ui)||void 0===i?void 0:i.nodes[a.uuid],d=(null==l?void 0:l.type)||"execute_actions";if(a.actions)for(const i of a.actions){const o=Om[i.type];if("send_msg"!==i.type&&(!(null==o?void 0:o.localizable)||0===o.localizable.length))continue;const n=oC(i),s=oC(Gc(i,null==e?void 0:e[i.uuid])),l=[],d=new Set;for(const t of[...n,...s])d.has(t)||(d.add(t),l.push(t));let c=!1;for(const e of l){const n=e.toLowerCase().indexOf(t);if(-1!==n){r.push({nodeUuid:a.uuid,action:i,typeName:rC(o,void 0),color:sC(o,void 0),fullText:e,matchStart:n,matchLength:t.length}),c=!0;break}}}if(this.includeCategories&&(null===(n=null===(o=a.router)||void 0===o?void 0:o.categories)||void 0===n?void 0:n.length)&&"categories"===(null===(s=Pm[d])||void 0===s?void 0:s.localizable)){const i=Bm(d,a.router.categories);if(!i.length)continue;const o=Pm[d],n=i.map(t=>aC(t.uuid,t.name,e));for(const e of n){const i=e.toLowerCase().indexOf(t);if(-1!==i){r.push({nodeUuid:a.uuid,action:null,typeName:rC(void 0,o),color:sC(void 0,o),fullText:e,matchStart:i,matchLength:t.length});break}}}}return r}renderMatchText(t){const{matchStart:e,matchLength:i}=t,o=e+i,n=t.fullText.replace(/\n/g," "),s=n.length-o<30?50:20,r=Math.max(0,e-s),a=r>0?"…":"",l=n.slice(r,e),d=n.slice(e,o),c=n.slice(o);return W`${a}${l}<mark>${d}</mark>${c}`}updated(t){var e;if(t.has("highlightedIndex")){const t=null===(e=this.shadowRoot)||void 0===e?void 0:e.querySelector(".result-item.highlighted");null==t||t.scrollIntoView({block:"nearest"})}}render(){const t="table"===this.scope?"Search this table":"Search this flow";return W`
|
|
15114
15111
|
<div class="backdrop" @click=${this.handleBackdropClick}></div>
|
|
15115
15112
|
<div
|
|
15116
15113
|
class="search-container"
|
|
@@ -15161,7 +15158,7 @@ const Tk=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.
|
|
|
15161
15158
|
open <kbd>Esc</kbd> to close
|
|
15162
15159
|
</div>`}
|
|
15163
15160
|
</div>
|
|
15164
|
-
`}}
|
|
15161
|
+
`}}lC.styles=a`
|
|
15165
15162
|
:host {
|
|
15166
15163
|
position: fixed;
|
|
15167
15164
|
top: 0;
|
|
@@ -15332,13 +15329,13 @@ const Tk=(t,e)=>{const i=t._$AN;if(void 0===i)return!1;for(const t of i)t._$AO?.
|
|
|
15332
15329
|
font-size: 11px;
|
|
15333
15330
|
font-family: inherit;
|
|
15334
15331
|
}
|
|
15335
|
-
`,t([mt({type:Boolean,reflect:!0})],
|
|
15332
|
+
`,t([mt({type:Boolean,reflect:!0})],lC.prototype,"open",void 0),t([mt({attribute:!1})],lC.prototype,"definition",void 0),t([mt({type:String})],lC.prototype,"languageCode",void 0),t([mt({type:String})],lC.prototype,"scope",void 0),t([mt({type:Boolean})],lC.prototype,"includeCategories",void 0),t([gt()],lC.prototype,"searchQuery",void 0),t([gt()],lC.prototype,"results",void 0),t([gt()],lC.prototype,"highlightedIndex",void 0),t([
|
|
15336
15333
|
/**
|
|
15337
15334
|
* @license
|
|
15338
15335
|
* Copyright 2017 Google LLC
|
|
15339
15336
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
15340
15337
|
*/
|
|
15341
|
-
function(t){return(e,i,o)=>((t,e,i)=>(i.configurable=!0,i.enumerable=!0,Reflect.decorate&&"object"!=typeof e&&Object.defineProperty(t,e,i),i))(e,i,{get(){return(e=>e.renderRoot?.querySelector(t)??null)(this)}})}("input")],
|
|
15338
|
+
function(t){return(e,i,o)=>((t,e,i)=>(i.configurable=!0,i.enumerable=!0,Reflect.decorate&&"object"!=typeof e&&Object.defineProperty(t,e,i),i))(e,i,{get(){return(e=>e.renderRoot?.querySelector(t)??null)(this)}})}("input")],lC.prototype,"inputEl",void 0);class dC extends Ve{constructor(){super(...arguments),this.issues=[],this.hidden=!0}static get styles(){return a`
|
|
15342
15339
|
:host {
|
|
15343
15340
|
display: contents;
|
|
15344
15341
|
}
|
|
@@ -15380,18 +15377,18 @@ function(t){return(e,i,o)=>((t,e,i)=>(i.configurable=!0,i.enumerable=!0,Reflect.
|
|
|
15380
15377
|
`)}
|
|
15381
15378
|
</div>
|
|
15382
15379
|
</temba-floating-window>
|
|
15383
|
-
`:""}}t([mt({type:Array})],
|
|
15380
|
+
`:""}}t([mt({type:Array})],dC.prototype,"issues",void 0),t([mt({type:Boolean})],dC.prototype,"hidden",void 0);const cC={metadata:{label:"metadata",order:0},nodes:{label:"nodes",order:1},routing:{label:"routing",order:2},actions:{label:"actions",order:3},stickies:{label:"stickies",order:5},layout:{label:"layout",order:6}};function hC(t){return Object.prototype.hasOwnProperty.call(cC,t)?cC[t]:t.startsWith("localization:")?{label:"translations",order:4}:null}function uC(t){const e=new Set;for(const i of(null==t?void 0:t.tags)||[]){const t=hC(i);t&&e.add(t.label)}return e}class pC extends Ve{constructor(){super(...arguments),this.flow="",this.hidden=!0,this.saving=!1,this.revisions=[],this.viewingRevision=null,this.isLoading=!1,this.preRevertState=null,this.browseLanguageCode=null,this.fetchRequestId=0}static get styles(){return a`
|
|
15384
15381
|
:host {
|
|
15385
15382
|
display: contents;
|
|
15386
15383
|
}
|
|
15387
|
-
`}get isViewingRevision(){return null!==this.viewingRevision}updated(t){super.updated(t),t.has("hidden")&&!this.hidden&&!0===t.get("hidden")&&this.fetchRevisions()}close(){this.resetScroll(),this.viewingRevision&&this.cancelRevisionView(),this.fireCustomEvent(Fo.RevisionsClosed)}render(){return W`
|
|
15384
|
+
`}get isViewingRevision(){return null!==this.viewingRevision}refresh(){this.hidden||this.fetchRevisions()}updated(t){super.updated(t),t.has("hidden")&&!this.hidden&&!0===t.get("hidden")&&this.fetchRevisions()}close(){this.resetScroll(),this.viewingRevision&&this.cancelRevisionView(),this.fireCustomEvent(Fo.RevisionsClosed)}render(){return W`
|
|
15388
15385
|
<temba-floating-window
|
|
15389
15386
|
id="revisions-window"
|
|
15390
15387
|
name="revisions"
|
|
15391
15388
|
header="Revisions"
|
|
15392
15389
|
icon="revisions"
|
|
15393
|
-
.width=${
|
|
15394
|
-
.maxHeight=${
|
|
15390
|
+
.width=${340}
|
|
15391
|
+
.maxHeight=${500}
|
|
15395
15392
|
.top=${120}
|
|
15396
15393
|
color="rgb(142, 94, 167)"
|
|
15397
15394
|
.saving=${this.saving}
|
|
@@ -15403,37 +15400,41 @@ function(t){return(e,i,o)=>((t,e,i)=>(i.configurable=!0,i.enumerable=!0,Reflect.
|
|
|
15403
15400
|
class="revisions-list"
|
|
15404
15401
|
style="display:flex; flex-direction:column; gap:8px; overflow-y:auto; padding-bottom:10px;"
|
|
15405
15402
|
>
|
|
15406
|
-
${this.isLoading&&!this.revisions.length?W`<temba-loading></temba-loading>`:this.revisions.map(t=>{var
|
|
15403
|
+
${this.isLoading&&!this.revisions.length?W`<temba-loading></temba-loading>`:this.revisions.map((t,e)=>{var i;const o=0===e,n=(null===(i=this.viewingRevision)||void 0===i?void 0:i.id)===t.id,s=function(t){if(!t)return"";const e=t.tags||[];if(0===e.length)return"";const i=new Map;for(const t of e){const e=hC(t);e&&!i.has(e.label)&&i.set(e.label,e.order)}if(0===i.size)return"";const o=Array.from(i.entries()).sort((t,e)=>t[1]-e[1]).map(([t])=>t);return`Changed ${n=o,n.length<=1?n.join(""):2===n.length?`${n[0]} and ${n[1]}`:`${n.slice(0,-1).join(", ")}, and ${n[n.length-1]}`}`;var n}(t.changes);return W`
|
|
15407
15404
|
<div
|
|
15408
|
-
class="revision-item ${
|
|
15409
|
-
style="padding:8px; border-radius:4px; cursor:pointer; background:${
|
|
15405
|
+
class="revision-item ${n?"selected":""} ${o?"current":""}"
|
|
15406
|
+
style="padding:8px; border-radius:4px; cursor:pointer; background:${n?"#f0f6ff":"#f9fafb"}; border:1px solid ${n?"#a4cafe":"#e5e7eb"}; transition: all 0.2s ease;"
|
|
15410
15407
|
@click=${()=>this.handleRevisionClick(t)}
|
|
15411
15408
|
>
|
|
15409
|
+
${s?W`<div
|
|
15410
|
+
class="revision-summary"
|
|
15411
|
+
style="font-size:13px; color:#111827; line-height:1.3;"
|
|
15412
|
+
>
|
|
15413
|
+
${s}
|
|
15414
|
+
</div>`:""}
|
|
15412
15415
|
<div
|
|
15413
|
-
|
|
15416
|
+
class="revision-meta"
|
|
15417
|
+
style="display:flex; justify-content:space-between; align-items:center; gap:8px; min-height:20px; font-size:11px; color:#6b7280; margin-top:${s?"2px":"0"};"
|
|
15414
15418
|
>
|
|
15415
|
-
<div
|
|
15416
|
-
|
|
15417
|
-
|
|
15418
|
-
|
|
15419
|
-
|
|
15420
|
-
|
|
15421
|
-
>
|
|
15422
|
-
<temba-date
|
|
15423
|
-
value=${t.created_on}
|
|
15424
|
-
display="duration"
|
|
15425
|
-
></temba-date>
|
|
15426
|
-
</div>
|
|
15427
|
-
<div style="font-size:11px; color:#6b7280;">
|
|
15428
|
-
${t.user.name||t.user.username}
|
|
15429
|
-
</div>
|
|
15419
|
+
<div style="flex:1; min-width:0;">
|
|
15420
|
+
<temba-date
|
|
15421
|
+
value=${t.created_on}
|
|
15422
|
+
display="duration"
|
|
15423
|
+
></temba-date>
|
|
15424
|
+
· ${t.user.name||t.user.username}
|
|
15430
15425
|
</div>
|
|
15431
|
-
${
|
|
15432
|
-
class="
|
|
15433
|
-
|
|
15426
|
+
${o?W`<div
|
|
15427
|
+
class="current-label"
|
|
15428
|
+
style="font-size:10px; font-weight:600; text-transform:uppercase; color:#6b7280; background:#e5e7eb; padding:2px 6px; border-radius:10px; letter-spacing:0.5px; flex-shrink:0;"
|
|
15434
15429
|
>
|
|
15435
|
-
|
|
15436
|
-
</
|
|
15430
|
+
Current
|
|
15431
|
+
</div>`:n?W`<button
|
|
15432
|
+
class="revert-button"
|
|
15433
|
+
style="font-size:10px; font-weight:600; text-transform:uppercase; color:#1e3a8a; background:#a4cafe; padding:2px 6px; border-radius:10px; letter-spacing:0.5px; border:none; cursor:pointer; flex-shrink:0;"
|
|
15434
|
+
@click=${t=>{t.stopPropagation(),this.handleRevertClick()}}
|
|
15435
|
+
>
|
|
15436
|
+
Revert
|
|
15437
|
+
</button>`:W``}
|
|
15437
15438
|
</div>
|
|
15438
15439
|
|
|
15439
15440
|
${t.comment?W`<div
|
|
@@ -15446,7 +15447,7 @@ function(t){return(e,i,o)=>((t,e,i)=>(i.configurable=!0,i.enumerable=!0,Reflect.
|
|
|
15446
15447
|
</div>
|
|
15447
15448
|
</div>
|
|
15448
15449
|
</temba-floating-window>
|
|
15449
|
-
`}async fetchRevisions(){this.isLoading=!0;try{const
|
|
15450
|
+
`}async fetchRevisions(){const t=++this.fetchRequestId;this.isLoading=!0;try{const e=await fe(`/flow/revisions/${this.flow}/?version=${$d}`);if(t!==this.fetchRequestId)return;this.revisions=this.collapseRevisions(e)}catch(e){if(t!==this.fetchRequestId)return;console.error("Error fetching revisions",e)}finally{t===this.fetchRequestId&&(this.isLoading=!1)}}collapseRevisions(t){var e,i,o,n,s,r;const a=[...t].sort((t,e)=>new Date(e.created_on).getTime()-new Date(t.created_on).getTime()),l=[];let d=[],c=new Set;const h=()=>{if(0===d.length)return;const t=d[0],e=new Set;let i=!1;for(const t of d)if(t.changes){i=!0;for(const i of t.changes.tags||[])e.add(i)}l.push({...t,changes:i?{tags:Array.from(e)}:null}),d=[],c=new Set};for(const t of a){if(0===d.length){d.push(t),c=uC(t.changes);continue}const a=d[0],l=new Date(a.created_on).getTime()-new Date(t.created_on).getTime()<9e5,u=(null!==(i=null===(e=a.user)||void 0===e?void 0:e.email)&&void 0!==i?i:null===(o=a.user)||void 0===o?void 0:o.username)===(null!==(s=null===(n=t.user)||void 0===n?void 0:n.email)&&void 0!==s?s:null===(r=t.user)||void 0===r?void 0:r.username),p=new Set([...c,...uC(t.changes)]),m=p.size<=3;l&&u&&m?(d.push(t),c=p):(h(),d.push(t),c=uC(t.changes))}return h(),l}async handleRevisionClick(t){var e;if((null===(e=this.viewingRevision)||void 0===e?void 0:e.id)===t.id)return;const i=Qc().getState();this.viewingRevision||(this.preRevertState={definition:i.flowDefinition,dirtyDate:i.dirtyDate},this.browseLanguageCode=i.languageCode),this.viewingRevision=t,this.isLoading=!0,this.fireCustomEvent(Fo.RevisionViewed,{revision:t});try{await i.fetchRevision(`/flow/revisions/${this.flow}`,t.id.toString()),this.browseLanguageCode&&i.setLanguageCode(this.browseLanguageCode)}catch(t){console.error("Error fetching revision details",t),this.cancelRevisionView()}finally{this.isLoading=!1}}cancelRevisionView(){const t=Qc().getState(),e=this.browseLanguageCode||t.languageCode;if(this.preRevertState){const i=t.flowInfo;t.setFlowContents({definition:this.preRevertState.definition,info:i}),this.preRevertState.dirtyDate&&t.setDirtyDate(this.preRevertState.dirtyDate),e&&t.setLanguageCode(e)}else t.fetchRevision(`/flow/revisions/${this.flow}`).finally(()=>{e&&t.setLanguageCode(e)});this.viewingRevision=null,this.preRevertState=null,this.browseLanguageCode=null,this.fireCustomEvent(Fo.RevisionCancelled)}async handleRevertClick(){if(!this.viewingRevision||!this.preRevertState)return;const t=Qc().getState(),e=this.browseLanguageCode||t.languageCode,i={...t.flowDefinition,revision:this.preRevertState.definition.revision};this.viewingRevision=null,this.preRevertState=null,this.browseLanguageCode=null,this.fireCustomEvent(Fo.RevisionReverted,{definition:i,languageCode:e})}resetScroll(){var t,e;const i=null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector("temba-floating-window"),o=null===(e=null==i?void 0:i.shadowRoot)||void 0===e?void 0:e.querySelector(".body");o&&(o.scrollTop=0)}}t([mt({type:String})],pC.prototype,"flow",void 0),t([mt({type:Boolean})],pC.prototype,"hidden",void 0),t([mt({type:Boolean})],pC.prototype,"saving",void 0),t([gt()],pC.prototype,"revisions",void 0),t([gt()],pC.prototype,"viewingRevision",void 0),t([gt()],pC.prototype,"isLoading",void 0);const mC="/api/internal/llms.json";class gC extends Ve{constructor(){super(...arguments),this.definition=null,this.languageCode="",this.disabled=!1,this.running=!1,this.dialogOpen=!1,this.models=[],this.modelsLoading=!1,this.selectedModel=null,this.progress={done:0,total:0},this.error=null,this.errorExpanded=!1,this.interrupt=!1,this.updateExisting=!1,this.everOpened=!1}static get styles(){return a`
|
|
15450
15451
|
:host {
|
|
15451
15452
|
display: contents;
|
|
15452
15453
|
}
|
|
@@ -15488,10 +15489,6 @@ function(t){return(e,i,o)=>((t,e,i)=>(i.configurable=!0,i.enumerable=!0,Reflect.
|
|
|
15488
15489
|
text-decoration: underline;
|
|
15489
15490
|
}
|
|
15490
15491
|
|
|
15491
|
-
.auto-translate-single-model {
|
|
15492
|
-
font-size: 13px;
|
|
15493
|
-
}
|
|
15494
|
-
|
|
15495
15492
|
.auto-translate-status {
|
|
15496
15493
|
display: flex;
|
|
15497
15494
|
align-items: center;
|
|
@@ -15551,7 +15548,7 @@ function(t){return(e,i,o)=>((t,e,i)=>(i.configurable=!0,i.enumerable=!0,Reflect.
|
|
|
15551
15548
|
white-space: pre-wrap;
|
|
15552
15549
|
word-break: break-word;
|
|
15553
15550
|
}
|
|
15554
|
-
`}async start(){this.disabled||(this.running?this.interrupt=!0:(this.error=null,this.errorExpanded=!1,this.selectedModel=null,this.dialogOpen=!0,await this.loadModels(),1===this.models.length&&(this.selectedModel=this.models[0])))}async loadModels(){var t;this.modelsLoading=!0;try{const e=Qc(),i=e&&null!==(t=await e.getResults(
|
|
15551
|
+
`}async start(){this.disabled||(this.running?this.interrupt=!0:(this.error=null,this.errorExpanded=!1,this.selectedModel=null,this.updateExisting=!1,this.dialogOpen=!0,await this.loadModels(),1===this.models.length&&(this.selectedModel=this.models[0])))}async loadModels(){var t;this.modelsLoading=!0;try{const e=Qc(),i=e&&null!==(t=await e.getResults(mC,{force:!0}))&&void 0!==t?t:[];this.models=i.filter(t=>jp(t,"editing")).map(t=>({uuid:t.uuid,name:t.name}))}catch(t){console.error("Failed to load AI models",t),this.models=[],this.error="Unable to load AI models."}finally{this.modelsLoading=!1}}handleModelChange(t){var e;const i=t.target,o=null===(e=null==i?void 0:i.values)||void 0===e?void 0:e[0];this.selectedModel=o?{uuid:o.uuid,name:o.name}:null}handleUpdateExistingChange(t){const e=t.target;this.updateExisting=!!(null==e?void 0:e.checked)}confirmTranslate(){this.selectedModel&&(this.dialogOpen=!1,this.runAutoTranslation().catch(t=>{console.error("Auto translation failed",t),this.error="Auto translation failed. Please try again.",this.running=!1}))}cancelDialog(){this.dialogOpen=!1}dismissError(){this.error=null,this.errorExpanded=!1,this.progress={done:0,total:0}}buildTranslationBatches(){var t,e;const i=new Map,o=[],n=new Map,s=new Map;if(!this.definition)return{keyToEntries:i,batches:o,preTranslated:n,duplicateKeyToCanonical:s};const r=Um(this.definition,this.languageCode),a=this.updateExisting,l=new Map,d=(null===(t=this.definition.localization)||void 0===t?void 0:t[this.languageCode])||{};if(!a)for(const t of r)for(const i of t.translations){if(!i.toValues||!i.toValues.some(t=>t&&t.trim().length>0))continue;if(!i.fromValues||0===i.fromValues.length)continue;const t=null===(e=d[i.uuid])||void 0===e?void 0:e[i.attribute];if(!Array.isArray(t)||0===t.length)continue;const o=JSON.stringify(i.fromValues);l.has(o)||l.set(o,t)}const c=new Map;for(const t of r)for(const e of t.translations){if(!a&&e.toValues&&e.toValues.some(t=>t&&t.trim().length>0))continue;if(!e.fromValues||0===e.fromValues.length)continue;const t=`${e.uuid}:${e.attribute}`,o=i.get(t)||[];o.push(e),i.set(t,o),c.has(t)||c.set(t,e.fromValues)}const h=new Map,u=[];for(const[t,e]of c){const i=JSON.stringify(e),o=l.get(i);if(o&&o.length===e.length){n.set(t,o);continue}const r=h.get(i);r?s.set(t,r):(h.set(i,t),u.push({key:t,values:e}))}const p=this.definition.language,m=this.languageCode,g=t=>JSON.stringify({source:p,target:m,items:t}).length;let f={};for(const{key:t,values:e}of u){const i={...f,[t]:e},n=g(i),s=Object.keys(f).length>0;n>1e4&&s?(o.push({items:f}),f={[t]:e}):f=i}return Object.keys(f).length>0&&o.push({items:f}),{keyToEntries:i,batches:o,preTranslated:n,duplicateKeyToCanonical:s}}async runAutoTranslation(){var t,e;if(!this.definition||!this.selectedModel||this.languageCode===this.definition.language)return;const{keyToEntries:i,batches:o,preTranslated:n,duplicateKeyToCanonical:s}=this.buildTranslationBatches();if(n.size>0&&this.applyBatchTranslations(Object.fromEntries(n),i),0===o.length)return;const r=new Map;for(const[t,e]of s){const i=r.get(e)||[];i.push(t),r.set(e,i)}this.running=!0,this.interrupt=!1,this.progress={done:0,total:o.length};const a=this.definition.language,l=this.languageCode,d=`/llm/translate/${this.selectedModel.uuid}/`,c=Qc();if(c){for(let n=0;n<o.length&&!this.interrupt;n++){try{const s=await c.postJSON(d,{source:a,target:l,items:o[n].items});if(!(s.status>=200&&s.status<300)){this.error=(null===(e=s.json)||void 0===e?void 0:e.error)||`Translate request failed (${s.status}).`;break}{const e=(null===(t=s.json)||void 0===t?void 0:t.items)||{},o={...e};for(const t of Object.keys(e)){const i=r.get(t);if(i)for(const n of i)o[n]=e[t]}this.applyBatchTranslations(o,i)}}catch(t){console.error("Translate request failed",t),this.error="Translate request failed.";break}this.progress={done:n+1,total:o.length}}this.running=!1,this.interrupt=!1}else this.running=!1}applyBatchTranslations(t,e){var i,o;const n=Qc();if(!n||!this.definition)return;const s=new Map;for(const[n,r]of Object.entries(t)){const t=e.get(n);if(!t||0===t.length)continue;const[a]=t,l=a.uuid,d=a.attribute;if(e.delete(n),!r||0===r.length)continue;const c=zd.getState().flowDefinition,h=(null===(o=null===(i=null==c?void 0:c.localization)||void 0===i?void 0:i[this.languageCode])||void 0===o?void 0:o[l])||{},u=Array.isArray(h[d])?h[d]:null,p=!!u&&u.length===r.length,m=r.map((t,e)=>(null==t||"string"==typeof t&&0===t.trim().length)&&p&&u[e]?u[e]:t),g=m.some(t=>t&&("string"!=typeof t||t.trim().length>0));if(!g)continue;const f=s.get(l)||{...h};f[d]=m,s.set(l,f)}for(const[t,e]of s.entries())n.getState().updateLocalization(this.languageCode,t,e),zd.getState().markAutoTranslated(this.languageCode,t,Object.keys(e).filter(t=>e[t]&&e[t].length>0))}updated(t){t.has("running")&&this.dispatchEvent(new CustomEvent("temba-auto-translate-changed",{detail:{running:this.running},bubbles:!0,composed:!0}))}handleDialogButton(t){var e,i;const o=null===(i=null===(e=t.detail)||void 0===e?void 0:e.button)||void 0===i?void 0:i.name;this.error?this.dismissError():this.running?this.interrupt||(this.interrupt=!0):"Translate"===o?this.confirmTranslate():this.cancelDialog()}render(){const t=this.dialogOpen,e=this.running||!!this.error,i=t||e;if(!i&&!this.everOpened)return"";i&&(this.everOpened=!0);let o="Auto Translation",n=W``,s="",r="",a="",l=!1;if(this.error)o="Problem with AI Model",n=this.renderErrorBody(),a="Dismiss";else if(this.running)n=this.renderRunningBody(),s=this.renderRunningGutter(),r="Stop",l=this.interrupt;else if(t){const t=!this.modelsLoading&&0===this.models.length;n=this.renderPickerBody(),a=t?"Close":"Cancel",r=t?"":"Translate",l=this.modelsLoading||t||!this.selectedModel}return W`
|
|
15555
15552
|
<temba-dialog
|
|
15556
15553
|
header=${o}
|
|
15557
15554
|
.open=${i}
|
|
@@ -15565,7 +15562,7 @@ function(t){return(e,i,o)=>((t,e,i)=>(i.configurable=!0,i.enumerable=!0,Reflect.
|
|
|
15565
15562
|
<div class="auto-translate-body">${n}</div>
|
|
15566
15563
|
${s?W`<div slot="gutter">${s}</div>`:""}
|
|
15567
15564
|
</temba-dialog>
|
|
15568
|
-
`}renderPickerBody(){
|
|
15565
|
+
`}renderPickerBody(){if(this.modelsLoading)return W`<div class="auto-translate-loading">
|
|
15569
15566
|
<temba-loading units="3" size="8"></temba-loading>
|
|
15570
15567
|
</div>`;if(0===this.models.length)return W`
|
|
15571
15568
|
<div class="auto-translate-empty">
|
|
@@ -15576,24 +15573,29 @@ function(t){return(e,i,o)=>((t,e,i)=>(i.configurable=!0,i.enumerable=!0,Reflect.
|
|
|
15576
15573
|
>
|
|
15577
15574
|
</p>
|
|
15578
15575
|
</div>
|
|
15579
|
-
`;const
|
|
15576
|
+
`;const t=this.selectedModel?[this.selectedModel]:[],e=$c(this.languageCode),i=this.brand?W`${this.brand} uses AI for automatic translation, which can make
|
|
15577
|
+
mistakes,`:W`Automatic translation uses AI, which can make mistakes,`;return W`
|
|
15580
15578
|
<p>
|
|
15581
|
-
All remaining text for <strong>${
|
|
15582
|
-
translated automatically.
|
|
15583
|
-
|
|
15579
|
+
All remaining text for <strong>${e}</strong> will be
|
|
15580
|
+
translated automatically. ${i} so it is important to review all
|
|
15581
|
+
of your translations to verify they are correct.
|
|
15584
15582
|
</p>
|
|
15585
15583
|
${this.models.length>1?W`<temba-select
|
|
15586
15584
|
class="auto-translate-model-select"
|
|
15587
|
-
endpoint="${
|
|
15585
|
+
endpoint="${mC}"
|
|
15588
15586
|
valueKey="uuid"
|
|
15589
|
-
.values=${
|
|
15590
|
-
.shouldExclude=${t=>!
|
|
15587
|
+
.values=${t}
|
|
15588
|
+
.shouldExclude=${t=>!jp(t,"editing")}
|
|
15591
15589
|
?searchable=${!0}
|
|
15592
15590
|
placeholder="Select an AI model"
|
|
15593
15591
|
@change=${this.handleModelChange}
|
|
15594
|
-
></temba-select>`:
|
|
15595
|
-
|
|
15596
|
-
|
|
15592
|
+
></temba-select>`:""}
|
|
15593
|
+
<temba-checkbox
|
|
15594
|
+
class="auto-translate-update-existing"
|
|
15595
|
+
label="Update existing translations"
|
|
15596
|
+
?checked=${this.updateExisting}
|
|
15597
|
+
@change=${this.handleUpdateExistingChange}
|
|
15598
|
+
></temba-checkbox>
|
|
15597
15599
|
`}renderRunningBody(){const{done:t,total:e}=this.progress,i=e>0?Math.round(t/e*100):0;return W`
|
|
15598
15600
|
<temba-progress
|
|
15599
15601
|
.total=${e}
|
|
@@ -15625,7 +15627,7 @@ function(t){return(e,i,o)=>((t,e,i)=>(i.configurable=!0,i.enumerable=!0,Reflect.
|
|
|
15625
15627
|
Show details
|
|
15626
15628
|
</button>`}
|
|
15627
15629
|
</div>
|
|
15628
|
-
`}}t([mt({attribute:!1})],
|
|
15630
|
+
`}}t([mt({attribute:!1})],gC.prototype,"definition",void 0),t([mt({type:String,attribute:"language-code"})],gC.prototype,"languageCode",void 0),t([mt({type:Boolean})],gC.prototype,"disabled",void 0),t([Id(zd,t=>t.brand)],gC.prototype,"brand",void 0),t([mt({type:Boolean,reflect:!0})],gC.prototype,"running",void 0),t([gt()],gC.prototype,"dialogOpen",void 0),t([gt()],gC.prototype,"models",void 0),t([gt()],gC.prototype,"modelsLoading",void 0),t([gt()],gC.prototype,"selectedModel",void 0),t([gt()],gC.prototype,"progress",void 0),t([gt()],gC.prototype,"error",void 0),t([gt()],gC.prototype,"errorExpanded",void 0),t([gt()],gC.prototype,"interrupt",void 0),t([gt()],gC.prototype,"updateExisting",void 0);class fC extends Ve{static get styles(){return a`
|
|
15629
15631
|
:host {
|
|
15630
15632
|
display: block;
|
|
15631
15633
|
overflow: auto;
|
|
@@ -15952,19 +15954,19 @@ function(t){return(e,i,o)=>((t,e,i)=>(i.configurable=!0,i.enumerable=!0,Reflect.
|
|
|
15952
15954
|
padding: 60px 20px;
|
|
15953
15955
|
text-align: center;
|
|
15954
15956
|
}
|
|
15955
|
-
`}getEntries(){var t,e,i,o,n,s,r,a,l,d,c,h,u;if(!(null===(t=this.definition)||void 0===t?void 0:t.nodes))return[];const p=[];let m=0;for(const t of this.definition.nodes){m++;for(const e of t.actions||[]){const i=
|
|
15956
|
-
${t.map(t=>{const e=t.indexOf(":");if(e<0)return W``;const i=t.substring(0,e).split("/")[0],o=
|
|
15957
|
+
`}getEntries(){var t,e,i,o,n,s,r,a,l,d,c,h,u;if(!(null===(t=this.definition)||void 0===t?void 0:t.nodes))return[];const p=[];let m=0;for(const t of this.definition.nodes){m++;for(const e of t.actions||[]){const i=Om[e.type];("send_msg"===e.type||(null==i?void 0:i.localizable)&&i.localizable.length>0)&&p.push({kind:"message",node:t,action:e,nodeIndex:m})}if(!this.isTranslating)continue;const g=null===(o=null===(i=null===(e=this.definition)||void 0===e?void 0:e._ui)||void 0===i?void 0:i.nodes)||void 0===o?void 0:o[t.uuid],f=null==g?void 0:g.type,v=(null===(s=null===(n=this.definition)||void 0===n?void 0:n.localization)||void 0===s?void 0:s[this.languageCode])||{};let b=[];if(null===(a=null===(r=t.router)||void 0===r?void 0:r.cases)||void 0===a?void 0:a.length){const e=null===(l=null==g?void 0:g.config)||void 0===l?void 0:l.localizeRules;b=t.router.cases.filter(t=>{var e;return(null===(e=t.arguments)||void 0===e?void 0:e.length)>0&&t.arguments.some(t=>t)}).filter(t=>{var i,o;return e||(null===(o=null===(i=v[t.uuid])||void 0===i?void 0:i.arguments)||void 0===o?void 0:o.some(t=>t))}).map(t=>({uuid:t.uuid,type:t.type,arguments:[...t.arguments]}))}let y=[];if(f&&"categories"===(null===(d=Pm[f])||void 0===d?void 0:d.localizable)&&(null===(h=null===(c=t.router)||void 0===c?void 0:c.categories)||void 0===h?void 0:h.length)){const e=null===(u=null==g?void 0:g.config)||void 0===u?void 0:u.localizeCategories,i=Bm(f,t.router.categories);y=e?i:i.filter(t=>{var e,i;return null===(i=null===(e=v[t.uuid])||void 0===e?void 0:e.name)||void 0===i?void 0:i.some(t=>t)})}(b.length>0||y.length>0)&&p.push({kind:"localization-group",node:t,rules:b,categories:y,nodeIndex:m})}return p}focusSearchResult(t,e){const i=Array.from(this.renderRoot.querySelectorAll("tr[data-node-uuid]"));if(!i.length)return;let o=e?i.find(i=>i.dataset.nodeUuid===t&&i.dataset.actionUuid===e):i.find(e=>e.dataset.nodeUuid===t&&"category-group"===e.dataset.entryKind);o||(o=i.find(e=>e.dataset.nodeUuid===t)),null==o||o.scrollIntoView({behavior:"smooth",block:"center"})}getTranslatedText(t){var e,i,o;if(!this.isTranslating||!this.languageCode)return null;const n=null===(o=null===(i=null===(e=this.definition)||void 0===e?void 0:e.localization)||void 0===i?void 0:i[this.languageCode])||void 0===o?void 0:o[t];return(null==n?void 0:n.text)&&Array.isArray(n.text)&&n.text[0]||null}getTranslatedQuickReplies(t){var e,i,o;if(!this.isTranslating||!this.languageCode)return[];const n=null===(o=null===(i=null===(e=this.definition)||void 0===e?void 0:e.localization)||void 0===i?void 0:i[this.languageCode])||void 0===o?void 0:o[t];return Array.isArray(null==n?void 0:n.quick_replies)?n.quick_replies.map(t=>"string"==typeof t?t.trim():"").filter(t=>t.length>0):[]}stripLeadingLineBreaks(t){return t.replace(/^(?:\r?\n)+/,"")}getTranslatedCategoryName(t){var e,i,o;if(!this.isTranslating||!this.languageCode)return null;const n=null===(o=null===(i=null===(e=this.definition)||void 0===e?void 0:e.localization)||void 0===i?void 0:i[this.languageCode])||void 0===o?void 0:o[t];return(null==n?void 0:n.name)?Array.isArray(n.name)?n.name[0]||null:"string"==typeof n.name?n.name:null:null}getTranslatedField(t,e){var i,o,n;if(!this.isTranslating||!this.languageCode)return null;const s=null===(n=null===(o=null===(i=this.definition)||void 0===i?void 0:i.localization)||void 0===o?void 0:o[this.languageCode])||void 0===n?void 0:n[t];return(null==s?void 0:s[e])&&Array.isArray(s[e])&&s[e][0]||null}getTranslatedArrayField(t,e){var i,o,n;if(!this.isTranslating||!this.languageCode)return[];const s=null===(n=null===(o=null===(i=this.definition)||void 0===i?void 0:i.localization)||void 0===o?void 0:o[this.languageCode])||void 0===n?void 0:n[t];return Array.isArray(null==s?void 0:s[e])?s[e]:[]}hasAnyTranslation(t){var e,i,o;const n=Om[t.action.type];if(!(null==n?void 0:n.localizable))return!1;const s=null===(o=null===(i=null===(e=this.definition)||void 0===e?void 0:e.localization)||void 0===i?void 0:i[this.languageCode])||void 0===o?void 0:o[t.action.uuid];return!!s&&n.localizable.some(t=>{const e=s[t];return!!Array.isArray(e)&&e.some(t=>"string"==typeof t&&t.trim())})}usesPairedRows(t){const e=Om[t.type];if(!(null==e?void 0:e.localizable))return!1;return e.localizable.filter(t=>{var i;const o=null===(i=e.form)||void 0===i?void 0:i[t];return o&&("text"===o.type||"textarea"===o.type)}).length>1}getPairedFields(t){const e=Om[t.type];return(null==e?void 0:e.localizable)&&e.form?e.localizable.filter(t=>{var i;const o=null===(i=e.form)||void 0===i?void 0:i[t];return o&&("text"===o.type||"textarea"===o.type)}).map(i=>{const o=e.form[i];return{key:i,label:"string"==typeof o.label?o.label:i,original:t[i]||"",translated:this.getTranslatedField(t.uuid,i)}}):[]}renderAttachments(t){return t&&0!==t.length?W`<div class="attachments">
|
|
15958
|
+
${t.map(t=>{const e=t.indexOf(":");if(e<0)return W``;const i=t.substring(0,e).split("/")[0],o=fC.ATTACHMENT_ICONS[i]||Do.attachment;return W`<div class="attachment-icon">
|
|
15957
15959
|
<temba-icon name="${o}"></temba-icon>
|
|
15958
15960
|
</div>`})}
|
|
15959
|
-
</div>`:W``}renderOriginalContent(t){const e=t.action,i=
|
|
15961
|
+
</div>`:W``}renderOriginalContent(t){const e=t.action,i=Om[e.type],o=(null==i?void 0:i.localizable)||[],n=[];if(null==i?void 0:i.form)for(const t of o){const o=i.form[t];if(o&&("text"===o.type||"textarea"===o.type||"message-editor"===o.type)){const i=e[t]||"";i&&n.push(Lc(this.stripLeadingLineBreaks(i),!0))}}const s=e.quick_replies||[];s.length>0&&n.push(W`<div
|
|
15960
15962
|
class="quick-replies ${0===n.length?"standalone":""}"
|
|
15961
15963
|
>
|
|
15962
15964
|
${s.map(t=>W`<div class="quick-reply">${t}</div>`)}
|
|
15963
|
-
</div>`);const r=e.attachments||[];return r.length>0&&n.push(this.renderAttachments(r)),0===n.length?W`<span style="color: #bbb; font-style: italic;">Empty</span>`:W`${n}`}renderTranslatedContent(t){const e=t.action,i=
|
|
15965
|
+
</div>`);const r=e.attachments||[];return r.length>0&&n.push(this.renderAttachments(r)),0===n.length?W`<span style="color: #bbb; font-style: italic;">Empty</span>`:W`${n}`}renderTranslatedContent(t){const e=t.action,i=Om[e.type],o=(null==i?void 0:i.localizable)||[],n=[];if(null==i?void 0:i.form)for(const t of o){const o=i.form[t];if(o&&("text"===o.type||"textarea"===o.type||"message-editor"===o.type)){const i=this.getTranslatedField(e.uuid,t);"string"==typeof i&&n.push(Lc(this.stripLeadingLineBreaks(i),!0))}}const s=this.getTranslatedQuickReplies(e.uuid);s.length>0&&n.push(W`<div
|
|
15964
15966
|
class="quick-replies ${0===n.length?"standalone":""}"
|
|
15965
15967
|
>
|
|
15966
15968
|
${s.map(t=>W`<div class="quick-reply">${t}</div>`)}
|
|
15967
|
-
</div>`);const r=this.getTranslatedArrayField(e.uuid,"attachments");return r.length>0&&n.push(this.renderAttachments(r)),0===n.length?W`No translation`:W`${n}`}handleBaseTextClick(t){this.fireCustomEvent(Fo.ActionEditRequested,{action:t.action,nodeUuid:t.node.uuid,forceBase:!0})}handleTranslationClick(t){this.fireCustomEvent(Fo.ActionEditRequested,{action:t.action,nodeUuid:t.node.uuid})}handleBaseGroupClick(t){var e,i,o;const n=null===(o=null===(i=null===(e=this.definition)||void 0===e?void 0:e._ui)||void 0===i?void 0:i.nodes)||void 0===o?void 0:o[t.node.uuid];n&&this.fireCustomEvent(Fo.NodeEditRequested,{node:t.node,nodeUI:n,forceBase:!0})}handleGroupTranslationClick(t){var e,i,o;const n=null===(o=null===(i=null===(e=this.definition)||void 0===e?void 0:e._ui)||void 0===i?void 0:i.nodes)||void 0===o?void 0:o[t.node.uuid];n&&this.fireCustomEvent(Fo.NodeEditRequested,{node:t.node,nodeUI:n})}getGroupTranslations(t){const e=t.rules.map(t=>{var e,i,o,n;const s=t.arguments.join(", "),r=(null===(e=hc(t.type))||void 0===e?void 0:e.name)||t.type,a=null===(n=null===(o=null===(i=this.definition)||void 0===i?void 0:i.localization)||void 0===o?void 0:o[this.languageCode])||void 0===n?void 0:n[t.uuid];return{original:s,translated:Array.isArray(null==a?void 0:a.arguments)?a.arguments.join(", "):null,isRule:!0,operatorName:r}});return[...e,...t.categories.map(t=>({original:t.name,translated:this.getTranslatedCategoryName(t.uuid),isRule:!1}))]}getEntryRailColor(t){var e,i,o,n,s,r,a;if("message"===t.kind){const i=
|
|
15969
|
+
</div>`);const r=this.getTranslatedArrayField(e.uuid,"attachments");return r.length>0&&n.push(this.renderAttachments(r)),0===n.length?W`No translation`:W`${n}`}handleBaseTextClick(t){this.fireCustomEvent(Fo.ActionEditRequested,{action:t.action,nodeUuid:t.node.uuid,forceBase:!0})}handleTranslationClick(t){this.fireCustomEvent(Fo.ActionEditRequested,{action:t.action,nodeUuid:t.node.uuid})}handleBaseGroupClick(t){var e,i,o;const n=null===(o=null===(i=null===(e=this.definition)||void 0===e?void 0:e._ui)||void 0===i?void 0:i.nodes)||void 0===o?void 0:o[t.node.uuid];n&&this.fireCustomEvent(Fo.NodeEditRequested,{node:t.node,nodeUI:n,forceBase:!0})}handleGroupTranslationClick(t){var e,i,o;const n=null===(o=null===(i=null===(e=this.definition)||void 0===e?void 0:e._ui)||void 0===i?void 0:i.nodes)||void 0===o?void 0:o[t.node.uuid];n&&this.fireCustomEvent(Fo.NodeEditRequested,{node:t.node,nodeUI:n})}getGroupTranslations(t){const e=t.rules.map(t=>{var e,i,o,n;const s=t.arguments.join(", "),r=(null===(e=hc(t.type))||void 0===e?void 0:e.name)||t.type,a=null===(n=null===(o=null===(i=this.definition)||void 0===i?void 0:i.localization)||void 0===o?void 0:o[this.languageCode])||void 0===n?void 0:n[t.uuid];return{original:s,translated:Array.isArray(null==a?void 0:a.arguments)?a.arguments.join(", "):null,isRule:!0,operatorName:r}});return[...e,...t.categories.map(t=>({original:t.name,translated:this.getTranslatedCategoryName(t.uuid),isRule:!1}))]}getEntryRailColor(t){var e,i,o,n,s,r,a;if("message"===t.kind){const i=Om[t.action.type],o=null==i?void 0:i.group;return o&&(null===(e=vp[o])||void 0===e?void 0:e.color)||"#cbd5e1"}const l=null===(s=null===(n=null===(o=null===(i=this.definition)||void 0===i?void 0:i._ui)||void 0===o?void 0:o.nodes)||void 0===n?void 0:n[t.node.uuid])||void 0===s?void 0:s.type;if(!l)return"#cbd5e1";const d=Pm[l],c=null==d?void 0:d.group;return c&&((null===(r=vp[c])||void 0===r?void 0:r.color)||(null===(a=bp[c])||void 0===a?void 0:a.color))||"#cbd5e1"}renderPairedRows(t,e,i,o,n){return W`
|
|
15968
15970
|
${t.map((s,r)=>W`
|
|
15969
15971
|
<tr
|
|
15970
15972
|
class="category-row localization-paired-row ${0===r?"localization-paired-first":""} ${r===t.length-1?"localization-paired-last":""}"
|
|
@@ -16071,7 +16073,7 @@ function(t){return(e,i,o)=>((t,e,i)=>(i.configurable=!0,i.enumerable=!0,Reflect.
|
|
|
16071
16073
|
`})}
|
|
16072
16074
|
</tbody>
|
|
16073
16075
|
</table>
|
|
16074
|
-
`}}function
|
|
16076
|
+
`}}function vC(t,e){window.customElements.get(t)||window.customElements.define(t,e)}fC.ATTACHMENT_ICONS={image:Do.attachment_image,audio:Do.attachment_audio,video:Do.attachment_video,application:Do.attachment_document},t([Id(zd,t=>t.flowDefinition)],fC.prototype,"definition",void 0),t([Id(zd,t=>t.languageCode)],fC.prototype,"languageCode",void 0),t([Id(zd,t=>t.isTranslating)],fC.prototype,"isTranslating",void 0),vC("temba-anchor",gu),vC("temba-alert",ru),vC("temba-store",Jc),vC("temba-textinput",qo),vC("temba-datepicker",Ou),vC("temba-range-picker",$k),vC("temba-date",Uu),vC("temba-completion",uh),vC("temba-checkbox",Mo),vC("temba-select",hh),vC("temba-options",th),vC("temba-loading",bh),vC("temba-lightbox",Hu),vC("temba-button",vh),vC("temba-omnibox",hu),vC("temba-tip",uu),vC("temba-contact-name",xu),vC("temba-contact-name-fetch",Iu),vC("temba-contact-field",Cu),vC("temba-contact-fields",_u),vC("temba-field-manager",Ru),vC("temba-urn",wu),vC("temba-content-menu",Fu),vC("temba-dialog",gh),vC("temba-modax",fh),vC("temba-charcount",Th),vC("temba-contact-chat",Jh),vC("temba-contact-details",class extends zh{static get styles(){return a`
|
|
16075
16077
|
.urn {
|
|
16076
16078
|
display: flex;
|
|
16077
16079
|
padding: 0.4em 1em 0.8em 1em;
|
|
@@ -16152,7 +16154,7 @@ function(t){return(e,i,o)=>((t,e,i)=>(i.configurable=!0,i.enumerable=!0,Reflect.
|
|
|
16152
16154
|
disabled
|
|
16153
16155
|
></temba-contact-field>
|
|
16154
16156
|
</div>
|
|
16155
|
-
`}}),
|
|
16157
|
+
`}}),vC("temba-ticket-list",ou),vC("temba-notification-list",class extends iu{static get styles(){return a`
|
|
16156
16158
|
:host {
|
|
16157
16159
|
--option-hover-bg: #f9f9f9;
|
|
16158
16160
|
}
|
|
@@ -16195,7 +16197,7 @@ function(t){return(e,i,o)=>((t,e,i)=>(i.configurable=!0,i.enumerable=!0,Reflect.
|
|
|
16195
16197
|
</div>`}}renderHeader(){return W`<div class="header">
|
|
16196
16198
|
<temba-icon name="notification"></temba-icon>
|
|
16197
16199
|
<div class="title">Notifications</div>
|
|
16198
|
-
</div>`}scrollToTop(){window.setTimeout(()=>{this.shadowRoot.querySelector("temba-options").scrollToTop()},1e3)}}),
|
|
16200
|
+
</div>`}scrollToTop(){window.setTimeout(()=>{this.shadowRoot.querySelector("temba-options").scrollToTop()},1e3)}}),vC("temba-list",iu),vC("temba-sortable-list",eh),vC("temba-run-list",Mu),vC("temba-flow-details",zu),vC("temba-label",yu),vC("temba-menu",mu),vC("temba-contact-search",au),vC("temba-icon",lu),vC("temba-dropdown",fu),vC("temba-tabs",vu),vC("temba-tab",bu),vC("temba-contact-badges",Au),vC("temba-contact-pending",Eu),vC("temba-slider",Tu),vC("temba-content-menu",Fu),vC("temba-compose",ju),vC("temba-color-picker",Wu),vC("temba-resizer",Vu),vC("temba-thumbnail",Gu),vC("temba-webchat",Ju),vC("temba-image-picker",ep),vC("temba-mask",ip),vC("temba-user",zl),vC("temba-template-editor",op),vC("temba-toast",np),vC("temba-chat",Yh),vC("temba-media-picker",rp),vC("temba-flow-editor",og),vC("temba-editor-toolbar",Nm),vC("temba-message-table",fC),vC("temba-node-editor",Bk),vC("temba-flow-node",Xm),vC("temba-sticky-note",ng),vC("temba-canvas-menu",sg),vC("temba-node-type-selector",rg),vC("temba-contact-notepad",ag),vC("temba-progress",lg),vC("temba-start-progress",dg),vC("temba-shortcuts",cg),vC("temba-popup-select",hg),vC("temba-user-select",ug),vC("temba-workspace-select",pg),vC("temba-chart",Ak),vC("temba-key-value-editor",qk),vC("temba-array-editor",Uk),vC("temba-message-editor",jk),vC("temba-rich-edit",Hk),vC("temba-accordion",Zk),vC("temba-accordion-section",Yk),vC("temba-expression-highlight",Wk),vC("temba-floating-tab",Jm),vC("temba-floating-window",Vk),vC("temba-simulator",tC),vC("temba-flow-search",lC),vC("temba-issues-window",dC),vC("temba-revisions-window",pC),vC("temba-auto-translate",gC);class bC extends dt{static get styles(){return a`
|
|
16199
16201
|
:host {
|
|
16200
16202
|
line-height: normal;
|
|
16201
16203
|
}
|
|
@@ -16403,11 +16405,11 @@ function(t){return(e,i,o)=>((t,e,i)=>(i.configurable=!0,i.enumerable=!0,Reflect.
|
|
|
16403
16405
|
></temba-textinput>
|
|
16404
16406
|
</div>
|
|
16405
16407
|
</temba-dialog>
|
|
16406
|
-
`}}t([mt({type:Array,attribute:!1})],
|
|
16408
|
+
`}}t([mt({type:Array,attribute:!1})],bC.prototype,"path",void 0),t([mt()],bC.prototype,"endpoint",void 0),t([mt()],bC.prototype,"osmId",void 0),t([mt({type:Object})],bC.prototype,"hovered",void 0),t([mt({type:Object})],bC.prototype,"editFeature",void 0),t([mt({type:String,attribute:!1})],bC.prototype,"editFeatureAliases",void 0);var yC,xC={exports:{}};
|
|
16407
16409
|
/* @preserve
|
|
16408
16410
|
* Leaflet 1.5.1+build.2e3e0ff, a JS library for interactive maps. http://leafletjs.com
|
|
16409
16411
|
* (c) 2010-2018 Vladimir Agafonkin, (c) 2010-2011 CloudMade
|
|
16410
|
-
*/var yC=(vC||(vC=1,function(t){var e="1.5.1+build.2e3e0ffb",i=Object.freeze;function o(t){var e,i,o,n;for(i=1,o=arguments.length;i<o;i++)for(e in n=arguments[i])t[e]=n[e];return t}Object.freeze=function(t){return t};var n=Object.create||function(){function t(){}return function(e){return t.prototype=e,new t}}();function s(t,e){var i=Array.prototype.slice;if(t.bind)return t.bind.apply(t,i.call(arguments,1));var o=i.call(arguments,2);return function(){return t.apply(e,o.length?o.concat(i.call(arguments)):arguments)}}var r=0;function a(t){return t._leaflet_id=t._leaflet_id||++r,t._leaflet_id}function l(t,e,i){var o,n,s,r;return r=function(){o=!1,n&&(s.apply(i,n),n=!1)},s=function(){o?n=arguments:(t.apply(i,arguments),setTimeout(r,e),o=!0)},s}function d(t,e,i){var o=e[1],n=e[0],s=o-n;return t===o&&i?t:((t-n)%s+s)%s+n}function c(){return!1}function h(t,e){return e=void 0===e?6:e,+(Math.round(t+"e+"+e)+"e-"+e)}function u(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}function p(t){return u(t).split(/\s+/)}function m(t,e){for(var i in t.hasOwnProperty("options")||(t.options=t.options?n(t.options):{}),e)t.options[i]=e[i];return t.options}function g(t,e,i){var o=[];for(var n in t)o.push(encodeURIComponent(i?n.toUpperCase():n)+"="+encodeURIComponent(t[n]));return(e&&-1!==e.indexOf("?")?"&":"?")+o.join("&")}var f=/\{ *([\w_-]+) *\}/g;function v(t,e){return t.replace(f,function(t,i){var o=e[i];if(void 0===o)throw new Error("No value provided for variable "+t);return"function"==typeof o&&(o=o(e)),o})}var b=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)};function y(t,e){for(var i=0;i<t.length;i++)if(t[i]===e)return i;return-1}var x="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=";function w(t){return window["webkit"+t]||window["moz"+t]||window["ms"+t]}var _=0;function k(t){var e=+new Date,i=Math.max(0,16-(e-_));return _=e+i,window.setTimeout(t,i)}var C=window.requestAnimationFrame||w("RequestAnimationFrame")||k,S=window.cancelAnimationFrame||w("CancelAnimationFrame")||w("CancelRequestAnimationFrame")||function(t){window.clearTimeout(t)};function A(t,e,i){if(!i||C!==k)return C.call(window,s(t,e));t.call(e)}function $(t){t&&S.call(window,t)}var E=(Object.freeze||Object)({freeze:i,extend:o,create:n,bind:s,lastId:r,stamp:a,throttle:l,wrapNum:d,falseFn:c,formatNum:h,trim:u,splitWords:p,setOptions:m,getParamString:g,template:v,isArray:b,indexOf:y,emptyImageUrl:x,requestFn:C,cancelFn:S,requestAnimFrame:A,cancelAnimFrame:$});function T(){}function D(t){if("undefined"!=typeof L&&L&&L.Mixin){t=b(t)?t:[t];for(var e=0;e<t.length;e++)t[e]===L.Mixin.Events&&console.warn("Deprecated include of L.Mixin.Events: this property will be removed in future releases, please inherit from L.Evented instead.",(new Error).stack)}}T.extend=function(t){var e=function(){this.initialize&&this.initialize.apply(this,arguments),this.callInitHooks()},i=e.__super__=this.prototype,s=n(i);for(var r in s.constructor=e,e.prototype=s,this)this.hasOwnProperty(r)&&"prototype"!==r&&"__super__"!==r&&(e[r]=this[r]);return t.statics&&(o(e,t.statics),delete t.statics),t.includes&&(D(t.includes),o.apply(null,[s].concat(t.includes)),delete t.includes),s.options&&(t.options=o(n(s.options),t.options)),o(s,t),s._initHooks=[],s.callInitHooks=function(){if(!this._initHooksCalled){i.callInitHooks&&i.callInitHooks.call(this),this._initHooksCalled=!0;for(var t=0,e=s._initHooks.length;t<e;t++)s._initHooks[t].call(this)}},e},T.include=function(t){return o(this.prototype,t),this},T.mergeOptions=function(t){return o(this.prototype.options,t),this},T.addInitHook=function(t){var e=Array.prototype.slice.call(arguments,1),i="function"==typeof t?t:function(){this[t].apply(this,e)};return this.prototype._initHooks=this.prototype._initHooks||[],this.prototype._initHooks.push(i),this};var M={on:function(t,e,i){if("object"==typeof t)for(var o in t)this._on(o,t[o],e);else for(var n=0,s=(t=p(t)).length;n<s;n++)this._on(t[n],e,i);return this},off:function(t,e,i){if(t)if("object"==typeof t)for(var o in t)this._off(o,t[o],e);else for(var n=0,s=(t=p(t)).length;n<s;n++)this._off(t[n],e,i);else delete this._events;return this},_on:function(t,e,i){this._events=this._events||{};var o=this._events[t];o||(o=[],this._events[t]=o),i===this&&(i=void 0);for(var n={fn:e,ctx:i},s=o,r=0,a=s.length;r<a;r++)if(s[r].fn===e&&s[r].ctx===i)return;s.push(n)},_off:function(t,e,i){var o,n,s;if(this._events&&(o=this._events[t]))if(e){if(i===this&&(i=void 0),o)for(n=0,s=o.length;n<s;n++){var r=o[n];if(r.ctx===i&&r.fn===e)return r.fn=c,this._firingCount&&(this._events[t]=o=o.slice()),void o.splice(n,1)}}else{for(n=0,s=o.length;n<s;n++)o[n].fn=c;delete this._events[t]}},fire:function(t,e,i){if(!this.listens(t,i))return this;var n=o({},e,{type:t,target:this,sourceTarget:e&&e.sourceTarget||this});if(this._events){var s=this._events[t];if(s){this._firingCount=this._firingCount+1||1;for(var r=0,a=s.length;r<a;r++){var l=s[r];l.fn.call(l.ctx||this,n)}this._firingCount--}}return i&&this._propagateEvent(n),this},listens:function(t,e){var i=this._events&&this._events[t];if(i&&i.length)return!0;if(e)for(var o in this._eventParents)if(this._eventParents[o].listens(t,e))return!0;return!1},once:function(t,e,i){if("object"==typeof t){for(var o in t)this.once(o,t[o],e);return this}var n=s(function(){this.off(t,e,i).off(t,n,i)},this);return this.on(t,e,i).on(t,n,i)},addEventParent:function(t){return this._eventParents=this._eventParents||{},this._eventParents[a(t)]=t,this},removeEventParent:function(t){return this._eventParents&&delete this._eventParents[a(t)],this},_propagateEvent:function(t){for(var e in this._eventParents)this._eventParents[e].fire(t.type,o({layer:t.target,propagatedFrom:t.target},t),!0)}};M.addEventListener=M.on,M.removeEventListener=M.clearAllEventListeners=M.off,M.addOneTimeEventListener=M.once,M.fireEvent=M.fire,M.hasEventListeners=M.listens;var z=T.extend(M);function I(t,e,i){this.x=i?Math.round(t):t,this.y=i?Math.round(e):e}var O=Math.trunc||function(t){return t>0?Math.floor(t):Math.ceil(t)};function P(t,e,i){return t instanceof I?t:b(t)?new I(t[0],t[1]):null==t?t:"object"==typeof t&&"x"in t&&"y"in t?new I(t.x,t.y):new I(t,e,i)}function R(t,e){if(t)for(var i=e?[t,e]:t,o=0,n=i.length;o<n;o++)this.extend(i[o])}function N(t,e){return!t||t instanceof R?t:new R(t,e)}function B(t,e){if(t)for(var i=e?[t,e]:t,o=0,n=i.length;o<n;o++)this.extend(i[o])}function F(t,e){return t instanceof B?t:new B(t,e)}function q(t,e,i){if(isNaN(t)||isNaN(e))throw new Error("Invalid LatLng object: ("+t+", "+e+")");this.lat=+t,this.lng=+e,void 0!==i&&(this.alt=+i)}function U(t,e,i){return t instanceof q?t:b(t)&&"object"!=typeof t[0]?3===t.length?new q(t[0],t[1],t[2]):2===t.length?new q(t[0],t[1]):null:null==t?t:"object"==typeof t&&"lat"in t?new q(t.lat,"lng"in t?t.lng:t.lon,t.alt):void 0===e?null:new q(t,e,i)}I.prototype={clone:function(){return new I(this.x,this.y)},add:function(t){return this.clone()._add(P(t))},_add:function(t){return this.x+=t.x,this.y+=t.y,this},subtract:function(t){return this.clone()._subtract(P(t))},_subtract:function(t){return this.x-=t.x,this.y-=t.y,this},divideBy:function(t){return this.clone()._divideBy(t)},_divideBy:function(t){return this.x/=t,this.y/=t,this},multiplyBy:function(t){return this.clone()._multiplyBy(t)},_multiplyBy:function(t){return this.x*=t,this.y*=t,this},scaleBy:function(t){return new I(this.x*t.x,this.y*t.y)},unscaleBy:function(t){return new I(this.x/t.x,this.y/t.y)},round:function(){return this.clone()._round()},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},floor:function(){return this.clone()._floor()},_floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.clone()._ceil()},_ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},trunc:function(){return this.clone()._trunc()},_trunc:function(){return this.x=O(this.x),this.y=O(this.y),this},distanceTo:function(t){var e=(t=P(t)).x-this.x,i=t.y-this.y;return Math.sqrt(e*e+i*i)},equals:function(t){return(t=P(t)).x===this.x&&t.y===this.y},contains:function(t){return t=P(t),Math.abs(t.x)<=Math.abs(this.x)&&Math.abs(t.y)<=Math.abs(this.y)},toString:function(){return"Point("+h(this.x)+", "+h(this.y)+")"}},R.prototype={extend:function(t){return t=P(t),this.min||this.max?(this.min.x=Math.min(t.x,this.min.x),this.max.x=Math.max(t.x,this.max.x),this.min.y=Math.min(t.y,this.min.y),this.max.y=Math.max(t.y,this.max.y)):(this.min=t.clone(),this.max=t.clone()),this},getCenter:function(t){return new I((this.min.x+this.max.x)/2,(this.min.y+this.max.y)/2,t)},getBottomLeft:function(){return new I(this.min.x,this.max.y)},getTopRight:function(){return new I(this.max.x,this.min.y)},getTopLeft:function(){return this.min},getBottomRight:function(){return this.max},getSize:function(){return this.max.subtract(this.min)},contains:function(t){var e,i;return(t="number"==typeof t[0]||t instanceof I?P(t):N(t))instanceof R?(e=t.min,i=t.max):e=i=t,e.x>=this.min.x&&i.x<=this.max.x&&e.y>=this.min.y&&i.y<=this.max.y},intersects:function(t){t=N(t);var e=this.min,i=this.max,o=t.min,n=t.max,s=n.x>=e.x&&o.x<=i.x,r=n.y>=e.y&&o.y<=i.y;return s&&r},overlaps:function(t){t=N(t);var e=this.min,i=this.max,o=t.min,n=t.max,s=n.x>e.x&&o.x<i.x,r=n.y>e.y&&o.y<i.y;return s&&r},isValid:function(){return!(!this.min||!this.max)}},B.prototype={extend:function(t){var e,i,o=this._southWest,n=this._northEast;if(t instanceof q)e=t,i=t;else{if(!(t instanceof B))return t?this.extend(U(t)||F(t)):this;if(e=t._southWest,i=t._northEast,!e||!i)return this}return o||n?(o.lat=Math.min(e.lat,o.lat),o.lng=Math.min(e.lng,o.lng),n.lat=Math.max(i.lat,n.lat),n.lng=Math.max(i.lng,n.lng)):(this._southWest=new q(e.lat,e.lng),this._northEast=new q(i.lat,i.lng)),this},pad:function(t){var e=this._southWest,i=this._northEast,o=Math.abs(e.lat-i.lat)*t,n=Math.abs(e.lng-i.lng)*t;return new B(new q(e.lat-o,e.lng-n),new q(i.lat+o,i.lng+n))},getCenter:function(){return new q((this._southWest.lat+this._northEast.lat)/2,(this._southWest.lng+this._northEast.lng)/2)},getSouthWest:function(){return this._southWest},getNorthEast:function(){return this._northEast},getNorthWest:function(){return new q(this.getNorth(),this.getWest())},getSouthEast:function(){return new q(this.getSouth(),this.getEast())},getWest:function(){return this._southWest.lng},getSouth:function(){return this._southWest.lat},getEast:function(){return this._northEast.lng},getNorth:function(){return this._northEast.lat},contains:function(t){t="number"==typeof t[0]||t instanceof q||"lat"in t?U(t):F(t);var e,i,o=this._southWest,n=this._northEast;return t instanceof B?(e=t.getSouthWest(),i=t.getNorthEast()):e=i=t,e.lat>=o.lat&&i.lat<=n.lat&&e.lng>=o.lng&&i.lng<=n.lng},intersects:function(t){t=F(t);var e=this._southWest,i=this._northEast,o=t.getSouthWest(),n=t.getNorthEast(),s=n.lat>=e.lat&&o.lat<=i.lat,r=n.lng>=e.lng&&o.lng<=i.lng;return s&&r},overlaps:function(t){t=F(t);var e=this._southWest,i=this._northEast,o=t.getSouthWest(),n=t.getNorthEast(),s=n.lat>e.lat&&o.lat<i.lat,r=n.lng>e.lng&&o.lng<i.lng;return s&&r},toBBoxString:function(){return[this.getWest(),this.getSouth(),this.getEast(),this.getNorth()].join(",")},equals:function(t,e){return!!t&&(t=F(t),this._southWest.equals(t.getSouthWest(),e)&&this._northEast.equals(t.getNorthEast(),e))},isValid:function(){return!(!this._southWest||!this._northEast)}},q.prototype={equals:function(t,e){return!!t&&(t=U(t),Math.max(Math.abs(this.lat-t.lat),Math.abs(this.lng-t.lng))<=(void 0===e?1e-9:e))},toString:function(t){return"LatLng("+h(this.lat,t)+", "+h(this.lng,t)+")"},distanceTo:function(t){return H.distance(this,U(t))},wrap:function(){return H.wrapLatLng(this)},toBounds:function(t){var e=180*t/40075017,i=e/Math.cos(Math.PI/180*this.lat);return F([this.lat-e,this.lng-i],[this.lat+e,this.lng+i])},clone:function(){return new q(this.lat,this.lng,this.alt)}};var j={latLngToPoint:function(t,e){var i=this.projection.project(t),o=this.scale(e);return this.transformation._transform(i,o)},pointToLatLng:function(t,e){var i=this.scale(e),o=this.transformation.untransform(t,i);return this.projection.unproject(o)},project:function(t){return this.projection.project(t)},unproject:function(t){return this.projection.unproject(t)},scale:function(t){return 256*Math.pow(2,t)},zoom:function(t){return Math.log(t/256)/Math.LN2},getProjectedBounds:function(t){if(this.infinite)return null;var e=this.projection.bounds,i=this.scale(t);return new R(this.transformation.transform(e.min,i),this.transformation.transform(e.max,i))},infinite:!1,wrapLatLng:function(t){var e=this.wrapLng?d(t.lng,this.wrapLng,!0):t.lng;return new q(this.wrapLat?d(t.lat,this.wrapLat,!0):t.lat,e,t.alt)},wrapLatLngBounds:function(t){var e=t.getCenter(),i=this.wrapLatLng(e),o=e.lat-i.lat,n=e.lng-i.lng;if(0===o&&0===n)return t;var s=t.getSouthWest(),r=t.getNorthEast();return new B(new q(s.lat-o,s.lng-n),new q(r.lat-o,r.lng-n))}},H=o({},j,{wrapLng:[-180,180],R:6371e3,distance:function(t,e){var i=Math.PI/180,o=t.lat*i,n=e.lat*i,s=Math.sin((e.lat-t.lat)*i/2),r=Math.sin((e.lng-t.lng)*i/2),a=s*s+Math.cos(o)*Math.cos(n)*r*r,l=2*Math.atan2(Math.sqrt(a),Math.sqrt(1-a));return this.R*l}}),W=6378137,V={R:W,MAX_LATITUDE:85.0511287798,project:function(t){var e=Math.PI/180,i=this.MAX_LATITUDE,o=Math.max(Math.min(i,t.lat),-i),n=Math.sin(o*e);return new I(this.R*t.lng*e,this.R*Math.log((1+n)/(1-n))/2)},unproject:function(t){var e=180/Math.PI;return new q((2*Math.atan(Math.exp(t.y/this.R))-Math.PI/2)*e,t.x*e/this.R)},bounds:function(){var t=W*Math.PI;return new R([-t,-t],[t,t])}()};function Z(t,e,i,o){if(b(t))return this._a=t[0],this._b=t[1],this._c=t[2],void(this._d=t[3]);this._a=t,this._b=e,this._c=i,this._d=o}function Y(t,e,i,o){return new Z(t,e,i,o)}Z.prototype={transform:function(t,e){return this._transform(t.clone(),e)},_transform:function(t,e){return e=e||1,t.x=e*(this._a*t.x+this._b),t.y=e*(this._c*t.y+this._d),t},untransform:function(t,e){return e=e||1,new I((t.x/e-this._b)/this._a,(t.y/e-this._d)/this._c)}};var K=o({},H,{code:"EPSG:3857",projection:V,transformation:function(){var t=.5/(Math.PI*V.R);return Y(t,.5,-t,.5)}()}),G=o({},K,{code:"EPSG:900913"});function X(t){return document.createElementNS("http://www.w3.org/2000/svg",t)}function Q(t,e){var i,o,n,s,r,a,l="";for(i=0,n=t.length;i<n;i++){for(o=0,s=(r=t[i]).length;o<s;o++)l+=(o?"L":"M")+(a=r[o]).x+" "+a.y;l+=e?Tt?"z":"x":""}return l||"M0 0"}var J=document.documentElement.style,tt="ActiveXObject"in window,et=tt&&!document.addEventListener,it="msLaunchUri"in navigator&&!("documentMode"in document),ot=Mt("webkit"),nt=Mt("android"),st=Mt("android 2")||Mt("android 3"),rt=parseInt(/WebKit\/([0-9]+)|$/.exec(navigator.userAgent)[1],10),at=nt&&Mt("Google")&&rt<537&&!("AudioNode"in window),lt=!!window.opera,dt=Mt("chrome"),ct=Mt("gecko")&&!ot&&!lt&&!tt,ht=!dt&&Mt("safari"),ut=Mt("phantom"),pt="OTransition"in J,mt=0===navigator.platform.indexOf("Win"),gt=tt&&"transition"in J,ft="WebKitCSSMatrix"in window&&"m11"in new window.WebKitCSSMatrix&&!st,vt="MozPerspective"in J,bt=!window.L_DISABLE_3D&&(gt||ft||vt)&&!pt&&!ut,yt="undefined"!=typeof orientation||Mt("mobile"),xt=yt&&ot,wt=yt&&ft,_t=!window.PointerEvent&&window.MSPointerEvent,kt=!(!window.PointerEvent&&!_t),Ct=!window.L_NO_TOUCH&&(kt||"ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch),St=yt&<,At=yt&&ct,$t=(window.devicePixelRatio||window.screen.deviceXDPI/window.screen.logicalXDPI)>1,Et=!!document.createElement("canvas").getContext,Tt=!(!document.createElementNS||!X("svg").createSVGRect),Dt=!Tt&&function(){try{var t=document.createElement("div");t.innerHTML='<v:shape adj="1"/>';var e=t.firstChild;return e.style.behavior="url(#default#VML)",e&&"object"==typeof e.adj}catch(t){return!1}}();function Mt(t){return navigator.userAgent.toLowerCase().indexOf(t)>=0}var zt=(Object.freeze||Object)({ie:tt,ielt9:et,edge:it,webkit:ot,android:nt,android23:st,androidStock:at,opera:lt,chrome:dt,gecko:ct,safari:ht,phantom:ut,opera12:pt,win:mt,ie3d:gt,webkit3d:ft,gecko3d:vt,any3d:bt,mobile:yt,mobileWebkit:xt,mobileWebkit3d:wt,msPointer:_t,pointer:kt,touch:Ct,mobileOpera:St,mobileGecko:At,retina:$t,canvas:Et,svg:Tt,vml:Dt}),It=_t?"MSPointerDown":"pointerdown",Ot=_t?"MSPointerMove":"pointermove",Lt=_t?"MSPointerUp":"pointerup",Pt=_t?"MSPointerCancel":"pointercancel",Rt=["INPUT","SELECT","OPTION"],Nt={},Bt=!1,Ft=0;function qt(t,e,i,o){return"touchstart"===e?jt(t,i,o):"touchmove"===e?Yt(t,i,o):"touchend"===e&&Kt(t,i,o),this}function Ut(t,e,i){var o=t["_leaflet_"+e+i];return"touchstart"===e?t.removeEventListener(It,o,!1):"touchmove"===e?t.removeEventListener(Ot,o,!1):"touchend"===e&&(t.removeEventListener(Lt,o,!1),t.removeEventListener(Pt,o,!1)),this}function jt(t,e,i){var o=s(function(t){if("mouse"!==t.pointerType&&t.MSPOINTER_TYPE_MOUSE&&t.pointerType!==t.MSPOINTER_TYPE_MOUSE){if(!(Rt.indexOf(t.target.tagName)<0))return;je(t)}Zt(t,e)});t["_leaflet_touchstart"+i]=o,t.addEventListener(It,o,!1),Bt||(document.documentElement.addEventListener(It,Ht,!0),document.documentElement.addEventListener(Ot,Wt,!0),document.documentElement.addEventListener(Lt,Vt,!0),document.documentElement.addEventListener(Pt,Vt,!0),Bt=!0)}function Ht(t){Nt[t.pointerId]=t,Ft++}function Wt(t){Nt[t.pointerId]&&(Nt[t.pointerId]=t)}function Vt(t){delete Nt[t.pointerId],Ft--}function Zt(t,e){for(var i in t.touches=[],Nt)t.touches.push(Nt[i]);t.changedTouches=[t],e(t)}function Yt(t,e,i){var o=function(t){(t.pointerType!==t.MSPOINTER_TYPE_MOUSE&&"mouse"!==t.pointerType||0!==t.buttons)&&Zt(t,e)};t["_leaflet_touchmove"+i]=o,t.addEventListener(Ot,o,!1)}function Kt(t,e,i){var o=function(t){Zt(t,e)};t["_leaflet_touchend"+i]=o,t.addEventListener(Lt,o,!1),t.addEventListener(Pt,o,!1)}var Gt=_t?"MSPointerDown":kt?"pointerdown":"touchstart",Xt=_t?"MSPointerUp":kt?"pointerup":"touchend",Qt="_leaflet_";function Jt(t,e,i){var o,n,s=!1,r=250;function a(t){var e;if(kt){if(!it||"mouse"===t.pointerType)return;e=Ft}else e=t.touches.length;if(!(e>1)){var i=Date.now(),a=i-(o||i);n=t.touches?t.touches[0]:t,s=a>0&&a<=r,o=i}}function l(t){if(s&&!n.cancelBubble){if(kt){if(!it||"mouse"===t.pointerType)return;var i,r,a={};for(r in n)i=n[r],a[r]=i&&i.bind?i.bind(n):i;n=a}n.type="dblclick",n.button=0,e(n),o=null}}return t[Qt+Gt+i]=a,t[Qt+Xt+i]=l,t[Qt+"dblclick"+i]=e,t.addEventListener(Gt,a,!1),t.addEventListener(Xt,l,!1),t.addEventListener("dblclick",e,!1),this}function te(t,e){var i=t[Qt+Gt+e],o=t[Qt+Xt+e],n=t[Qt+"dblclick"+e];return t.removeEventListener(Gt,i,!1),t.removeEventListener(Xt,o,!1),it||t.removeEventListener("dblclick",n,!1),this}var ee,ie,oe,ne,se,re=ke(["transform","webkitTransform","OTransform","MozTransform","msTransform"]),ae=ke(["webkitTransition","transition","OTransition","MozTransition","msTransition"]),le="webkitTransition"===ae||"OTransition"===ae?ae+"End":"transitionend";function de(t){return"string"==typeof t?document.getElementById(t):t}function ce(t,e){var i=t.style[e]||t.currentStyle&&t.currentStyle[e];if((!i||"auto"===i)&&document.defaultView){var o=document.defaultView.getComputedStyle(t,null);i=o?o[e]:null}return"auto"===i?null:i}function he(t,e,i){var o=document.createElement(t);return o.className=e||"",i&&i.appendChild(o),o}function ue(t){var e=t.parentNode;e&&e.removeChild(t)}function pe(t){for(;t.firstChild;)t.removeChild(t.firstChild)}function me(t){var e=t.parentNode;e&&e.lastChild!==t&&e.appendChild(t)}function ge(t){var e=t.parentNode;e&&e.firstChild!==t&&e.insertBefore(t,e.firstChild)}function fe(t,e){if(void 0!==t.classList)return t.classList.contains(e);var i=xe(t);return i.length>0&&new RegExp("(^|\\s)"+e+"(\\s|$)").test(i)}function ve(t,e){if(void 0!==t.classList)for(var i=p(e),o=0,n=i.length;o<n;o++)t.classList.add(i[o]);else if(!fe(t,e)){var s=xe(t);ye(t,(s?s+" ":"")+e)}}function be(t,e){void 0!==t.classList?t.classList.remove(e):ye(t,u((" "+xe(t)+" ").replace(" "+e+" "," ")))}function ye(t,e){void 0===t.className.baseVal?t.className=e:t.className.baseVal=e}function xe(t){return t.correspondingElement&&(t=t.correspondingElement),void 0===t.className.baseVal?t.className:t.className.baseVal}function we(t,e){"opacity"in t.style?t.style.opacity=e:"filter"in t.style&&_e(t,e)}function _e(t,e){var i=!1,o="DXImageTransform.Microsoft.Alpha";try{i=t.filters.item(o)}catch(t){if(1===e)return}e=Math.round(100*e),i?(i.Enabled=100!==e,i.Opacity=e):t.style.filter+=" progid:"+o+"(opacity="+e+")"}function ke(t){for(var e=document.documentElement.style,i=0;i<t.length;i++)if(t[i]in e)return t[i];return!1}function Ce(t,e,i){var o=e||new I(0,0);t.style[re]=(gt?"translate("+o.x+"px,"+o.y+"px)":"translate3d("+o.x+"px,"+o.y+"px,0)")+(i?" scale("+i+")":"")}function Se(t,e){t._leaflet_pos=e,bt?Ce(t,e):(t.style.left=e.x+"px",t.style.top=e.y+"px")}function Ae(t){return t._leaflet_pos||new I(0,0)}if("onselectstart"in document)ee=function(){Le(window,"selectstart",je)},ie=function(){Re(window,"selectstart",je)};else{var $e=ke(["userSelect","WebkitUserSelect","OUserSelect","MozUserSelect","msUserSelect"]);ee=function(){if($e){var t=document.documentElement.style;oe=t[$e],t[$e]="none"}},ie=function(){$e&&(document.documentElement.style[$e]=oe,oe=void 0)}}function Ee(){Le(window,"dragstart",je)}function Te(){Re(window,"dragstart",je)}function De(t){for(;-1===t.tabIndex;)t=t.parentNode;t.style&&(Me(),ne=t,se=t.style.outline,t.style.outline="none",Le(window,"keydown",Me))}function Me(){ne&&(ne.style.outline=se,ne=void 0,se=void 0,Re(window,"keydown",Me))}function ze(t){do{t=t.parentNode}while(!(t.offsetWidth&&t.offsetHeight||t===document.body));return t}function Ie(t){var e=t.getBoundingClientRect();return{x:e.width/t.offsetWidth||1,y:e.height/t.offsetHeight||1,boundingClientRect:e}}var Oe=(Object.freeze||Object)({TRANSFORM:re,TRANSITION:ae,TRANSITION_END:le,get:de,getStyle:ce,create:he,remove:ue,empty:pe,toFront:me,toBack:ge,hasClass:fe,addClass:ve,removeClass:be,setClass:ye,getClass:xe,setOpacity:we,testProp:ke,setTransform:Ce,setPosition:Se,getPosition:Ae,disableTextSelection:ee,enableTextSelection:ie,disableImageDrag:Ee,enableImageDrag:Te,preventOutline:De,restoreOutline:Me,getSizedParentNode:ze,getScale:Ie});function Le(t,e,i,o){if("object"==typeof e)for(var n in e)Ne(t,n,e[n],i);else for(var s=0,r=(e=p(e)).length;s<r;s++)Ne(t,e[s],i,o);return this}var Pe="_leaflet_events";function Re(t,e,i,o){if("object"==typeof e)for(var n in e)Be(t,n,e[n],i);else if(e)for(var s=0,r=(e=p(e)).length;s<r;s++)Be(t,e[s],i,o);else{for(var a in t[Pe])Be(t,a,t[Pe][a]);delete t[Pe]}return this}function Ne(t,e,i,o){var n=e+a(i)+(o?"_"+a(o):"");if(t[Pe]&&t[Pe][n])return this;var s=function(e){return i.call(o||t,e||window.event)},r=s;kt&&0===e.indexOf("touch")?qt(t,e,s,n):!Ct||"dblclick"!==e||!Jt||kt&&dt?"addEventListener"in t?"mousewheel"===e?t.addEventListener("onwheel"in t?"wheel":"mousewheel",s,!1):"mouseenter"===e||"mouseleave"===e?(s=function(e){e=e||window.event,Qe(t,e)&&r(e)},t.addEventListener("mouseenter"===e?"mouseover":"mouseout",s,!1)):("click"===e&&nt&&(s=function(t){Je(t,r)}),t.addEventListener(e,s,!1)):"attachEvent"in t&&t.attachEvent("on"+e,s):Jt(t,s,n),t[Pe]=t[Pe]||{},t[Pe][n]=s}function Be(t,e,i,o){var n=e+a(i)+(o?"_"+a(o):""),s=t[Pe]&&t[Pe][n];if(!s)return this;kt&&0===e.indexOf("touch")?Ut(t,e,n):!Ct||"dblclick"!==e||!te||kt&&dt?"removeEventListener"in t?"mousewheel"===e?t.removeEventListener("onwheel"in t?"wheel":"mousewheel",s,!1):t.removeEventListener("mouseenter"===e?"mouseover":"mouseleave"===e?"mouseout":e,s,!1):"detachEvent"in t&&t.detachEvent("on"+e,s):te(t,n),t[Pe][n]=null}function Fe(t){return t.stopPropagation?t.stopPropagation():t.originalEvent?t.originalEvent._stopped=!0:t.cancelBubble=!0,Xe(t),this}function qe(t){return Ne(t,"mousewheel",Fe),this}function Ue(t){return Le(t,"mousedown touchstart dblclick",Fe),Ne(t,"click",Ge),this}function je(t){return t.preventDefault?t.preventDefault():t.returnValue=!1,this}function He(t){return je(t),Fe(t),this}function We(t,e){if(!e)return new I(t.clientX,t.clientY);var i=Ie(e),o=i.boundingClientRect;return new I((t.clientX-o.left)/i.x-e.clientLeft,(t.clientY-o.top)/i.y-e.clientTop)}var Ve=mt&&dt?2*window.devicePixelRatio:ct?window.devicePixelRatio:1;function Ze(t){return it?t.wheelDeltaY/2:t.deltaY&&0===t.deltaMode?-t.deltaY/Ve:t.deltaY&&1===t.deltaMode?20*-t.deltaY:t.deltaY&&2===t.deltaMode?60*-t.deltaY:t.deltaX||t.deltaZ?0:t.wheelDelta?(t.wheelDeltaY||t.wheelDelta)/2:t.detail&&Math.abs(t.detail)<32765?20*-t.detail:t.detail?t.detail/-32765*60:0}var Ye,Ke={};function Ge(t){Ke[t.type]=!0}function Xe(t){var e=Ke[t.type];return Ke[t.type]=!1,e}function Qe(t,e){var i=e.relatedTarget;if(!i)return!0;try{for(;i&&i!==t;)i=i.parentNode}catch(t){return!1}return i!==t}function Je(t,e){var i=t.timeStamp||t.originalEvent&&t.originalEvent.timeStamp,o=Ye&&i-Ye;o&&o>100&&o<500||t.target._simulatedClick&&!t._simulated?He(t):(Ye=i,e(t))}var ti=(Object.freeze||Object)({on:Le,off:Re,stopPropagation:Fe,disableScrollPropagation:qe,disableClickPropagation:Ue,preventDefault:je,stop:He,getMousePosition:We,getWheelDelta:Ze,fakeStop:Ge,skipped:Xe,isExternalTarget:Qe,addListener:Le,removeListener:Re}),ei=z.extend({run:function(t,e,i,o){this.stop(),this._el=t,this._inProgress=!0,this._duration=i||.25,this._easeOutPower=1/Math.max(o||.5,.2),this._startPos=Ae(t),this._offset=e.subtract(this._startPos),this._startTime=+new Date,this.fire("start"),this._animate()},stop:function(){this._inProgress&&(this._step(!0),this._complete())},_animate:function(){this._animId=A(this._animate,this),this._step()},_step:function(t){var e=+new Date-this._startTime,i=1e3*this._duration;e<i?this._runFrame(this._easeOut(e/i),t):(this._runFrame(1),this._complete())},_runFrame:function(t,e){var i=this._startPos.add(this._offset.multiplyBy(t));e&&i._round(),Se(this._el,i),this.fire("step")},_complete:function(){$(this._animId),this._inProgress=!1,this.fire("end")},_easeOut:function(t){return 1-Math.pow(1-t,this._easeOutPower)}}),ii=z.extend({options:{crs:K,center:void 0,zoom:void 0,minZoom:void 0,maxZoom:void 0,layers:[],maxBounds:void 0,renderer:void 0,zoomAnimation:!0,zoomAnimationThreshold:4,fadeAnimation:!0,markerZoomAnimation:!0,transform3DLimit:8388608,zoomSnap:1,zoomDelta:1,trackResize:!0},initialize:function(t,e){e=m(this,e),this._handlers=[],this._layers={},this._zoomBoundLayers={},this._sizeChanged=!0,this._initContainer(t),this._initLayout(),this._onResize=s(this._onResize,this),this._initEvents(),e.maxBounds&&this.setMaxBounds(e.maxBounds),void 0!==e.zoom&&(this._zoom=this._limitZoom(e.zoom)),e.center&&void 0!==e.zoom&&this.setView(U(e.center),e.zoom,{reset:!0}),this.callInitHooks(),this._zoomAnimated=ae&&bt&&!St&&this.options.zoomAnimation,this._zoomAnimated&&(this._createAnimProxy(),Le(this._proxy,le,this._catchTransitionEnd,this)),this._addLayers(this.options.layers)},setView:function(t,e,i){return e=void 0===e?this._zoom:this._limitZoom(e),t=this._limitCenter(U(t),e,this.options.maxBounds),i=i||{},this._stop(),this._loaded&&!i.reset&&!0!==i&&(void 0!==i.animate&&(i.zoom=o({animate:i.animate},i.zoom),i.pan=o({animate:i.animate,duration:i.duration},i.pan)),this._zoom!==e?this._tryAnimatedZoom&&this._tryAnimatedZoom(t,e,i.zoom):this._tryAnimatedPan(t,i.pan))?(clearTimeout(this._sizeTimer),this):(this._resetView(t,e),this)},setZoom:function(t,e){return this._loaded?this.setView(this.getCenter(),t,{zoom:e}):(this._zoom=t,this)},zoomIn:function(t,e){return t=t||(bt?this.options.zoomDelta:1),this.setZoom(this._zoom+t,e)},zoomOut:function(t,e){return t=t||(bt?this.options.zoomDelta:1),this.setZoom(this._zoom-t,e)},setZoomAround:function(t,e,i){var o=this.getZoomScale(e),n=this.getSize().divideBy(2),s=(t instanceof I?t:this.latLngToContainerPoint(t)).subtract(n).multiplyBy(1-1/o),r=this.containerPointToLatLng(n.add(s));return this.setView(r,e,{zoom:i})},_getBoundsCenterZoom:function(t,e){e=e||{},t=t.getBounds?t.getBounds():F(t);var i=P(e.paddingTopLeft||e.padding||[0,0]),o=P(e.paddingBottomRight||e.padding||[0,0]),n=this.getBoundsZoom(t,!1,i.add(o));if((n="number"==typeof e.maxZoom?Math.min(e.maxZoom,n):n)===1/0)return{center:t.getCenter(),zoom:n};var s=o.subtract(i).divideBy(2),r=this.project(t.getSouthWest(),n),a=this.project(t.getNorthEast(),n);return{center:this.unproject(r.add(a).divideBy(2).add(s),n),zoom:n}},fitBounds:function(t,e){if(!(t=F(t)).isValid())throw new Error("Bounds are not valid.");var i=this._getBoundsCenterZoom(t,e);return this.setView(i.center,i.zoom,e)},fitWorld:function(t){return this.fitBounds([[-90,-180],[90,180]],t)},panTo:function(t,e){return this.setView(t,this._zoom,{pan:e})},panBy:function(t,e){if(e=e||{},!(t=P(t).round()).x&&!t.y)return this.fire("moveend");if(!0!==e.animate&&!this.getSize().contains(t))return this._resetView(this.unproject(this.project(this.getCenter()).add(t)),this.getZoom()),this;if(this._panAnim||(this._panAnim=new ei,this._panAnim.on({step:this._onPanTransitionStep,end:this._onPanTransitionEnd},this)),e.noMoveStart||this.fire("movestart"),!1!==e.animate){ve(this._mapPane,"leaflet-pan-anim");var i=this._getMapPanePos().subtract(t).round();this._panAnim.run(this._mapPane,i,e.duration||.25,e.easeLinearity)}else this._rawPanBy(t),this.fire("move").fire("moveend");return this},flyTo:function(t,e,i){if(!1===(i=i||{}).animate||!bt)return this.setView(t,e,i);this._stop();var o=this.project(this.getCenter()),n=this.project(t),s=this.getSize(),r=this._zoom;t=U(t),e=void 0===e?r:e;var a=Math.max(s.x,s.y),l=a*this.getZoomScale(r,e),d=n.distanceTo(o)||1,c=1.42,h=c*c;function u(t){var e=(l*l-a*a+(t?-1:1)*h*h*d*d)/(2*(t?l:a)*h*d),i=Math.sqrt(e*e+1)-e;return i<1e-9?-18:Math.log(i)}function p(t){return(Math.exp(t)-Math.exp(-t))/2}function m(t){return(Math.exp(t)+Math.exp(-t))/2}function g(t){return p(t)/m(t)}var f=u(0);function v(t){return a*(m(f)/m(f+c*t))}function b(t){return a*(m(f)*g(f+c*t)-p(f))/h}function y(t){return 1-Math.pow(1-t,1.5)}var x=Date.now(),w=(u(1)-f)/c,_=i.duration?1e3*i.duration:1e3*w*.8;function k(){var i=(Date.now()-x)/_,s=y(i)*w;i<=1?(this._flyToFrame=A(k,this),this._move(this.unproject(o.add(n.subtract(o).multiplyBy(b(s)/d)),r),this.getScaleZoom(a/v(s),r),{flyTo:!0})):this._move(t,e)._moveEnd(!0)}return this._moveStart(!0,i.noMoveStart),k.call(this),this},flyToBounds:function(t,e){var i=this._getBoundsCenterZoom(t,e);return this.flyTo(i.center,i.zoom,e)},setMaxBounds:function(t){return(t=F(t)).isValid()?(this.options.maxBounds&&this.off("moveend",this._panInsideMaxBounds),this.options.maxBounds=t,this._loaded&&this._panInsideMaxBounds(),this.on("moveend",this._panInsideMaxBounds)):(this.options.maxBounds=null,this.off("moveend",this._panInsideMaxBounds))},setMinZoom:function(t){var e=this.options.minZoom;return this.options.minZoom=t,this._loaded&&e!==t&&(this.fire("zoomlevelschange"),this.getZoom()<this.options.minZoom)?this.setZoom(t):this},setMaxZoom:function(t){var e=this.options.maxZoom;return this.options.maxZoom=t,this._loaded&&e!==t&&(this.fire("zoomlevelschange"),this.getZoom()>this.options.maxZoom)?this.setZoom(t):this},panInsideBounds:function(t,e){this._enforcingBounds=!0;var i=this.getCenter(),o=this._limitCenter(i,this._zoom,F(t));return i.equals(o)||this.panTo(o,e),this._enforcingBounds=!1,this},panInside:function(t,e){var i=P((e=e||{}).paddingTopLeft||e.padding||[0,0]),o=P(e.paddingBottomRight||e.padding||[0,0]),n=this.getCenter(),s=this.project(n),r=this.project(t),a=this.getPixelBounds(),l=a.getSize().divideBy(2),d=N([a.min.add(i),a.max.subtract(o)]);if(!d.contains(r)){this._enforcingBounds=!0;var c=s.subtract(r),h=P(r.x+c.x,r.y+c.y);(r.x<d.min.x||r.x>d.max.x)&&(h.x=s.x-c.x,c.x>0?h.x+=l.x-i.x:h.x-=l.x-o.x),(r.y<d.min.y||r.y>d.max.y)&&(h.y=s.y-c.y,c.y>0?h.y+=l.y-i.y:h.y-=l.y-o.y),this.panTo(this.unproject(h),e),this._enforcingBounds=!1}return this},invalidateSize:function(t){if(!this._loaded)return this;t=o({animate:!1,pan:!0},!0===t?{animate:!0}:t);var e=this.getSize();this._sizeChanged=!0,this._lastCenter=null;var i=this.getSize(),n=e.divideBy(2).round(),r=i.divideBy(2).round(),a=n.subtract(r);return a.x||a.y?(t.animate&&t.pan?this.panBy(a):(t.pan&&this._rawPanBy(a),this.fire("move"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(s(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:e,newSize:i})):this},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire("viewreset"),this._stop()},locate:function(t){if(t=this._locateOptions=o({timeout:1e4,watch:!1},t),!("geolocation"in navigator))return this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this;var e=s(this._handleGeolocationResponse,this),i=s(this._handleGeolocationError,this);return t.watch?this._locationWatchId=navigator.geolocation.watchPosition(e,i,t):navigator.geolocation.getCurrentPosition(e,i,t),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){var e=t.code,i=t.message||(1===e?"permission denied":2===e?"position unavailable":"timeout");this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:e,message:"Geolocation error: "+i+"."})},_handleGeolocationResponse:function(t){var e=new q(t.coords.latitude,t.coords.longitude),i=e.toBounds(2*t.coords.accuracy),o=this._locateOptions;if(o.setView){var n=this.getBoundsZoom(i);this.setView(e,o.maxZoom?Math.min(n,o.maxZoom):n)}var s={latlng:e,bounds:i,timestamp:t.timestamp};for(var r in t.coords)"number"==typeof t.coords[r]&&(s[r]=t.coords[r]);this.fire("locationfound",s)},addHandler:function(t,e){if(!e)return this;var i=this[t]=new e(this);return this._handlers.push(i),this.options[t]&&i.enable(),this},remove:function(){if(this._initEvents(!0),this._containerId!==this._container._leaflet_id)throw new Error("Map container is being reused by another instance");try{delete this._container._leaflet_id,delete this._containerId}catch(t){this._container._leaflet_id=void 0,this._containerId=void 0}var t;for(t in void 0!==this._locationWatchId&&this.stopLocate(),this._stop(),ue(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._resizeRequest&&($(this._resizeRequest),this._resizeRequest=null),this._clearHandlers(),this._loaded&&this.fire("unload"),this._layers)this._layers[t].remove();for(t in this._panes)ue(this._panes[t]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(t,e){var i=he("div","leaflet-pane"+(t?" leaflet-"+t.replace("Pane","")+"-pane":""),e||this._mapPane);return t&&(this._panes[t]=i),i},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter:this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds();return new B(this.unproject(t.getBottomLeft()),this.unproject(t.getTopRight()))},getMinZoom:function(){return void 0===this.options.minZoom?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return void 0===this.options.maxZoom?void 0===this._layersMaxZoom?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,e,i){t=F(t),i=P(i||[0,0]);var o=this.getZoom()||0,n=this.getMinZoom(),s=this.getMaxZoom(),r=t.getNorthWest(),a=t.getSouthEast(),l=this.getSize().subtract(i),d=N(this.project(a,o),this.project(r,o)).getSize(),c=bt?this.options.zoomSnap:1,h=l.x/d.x,u=l.y/d.y,p=e?Math.max(h,u):Math.min(h,u);return o=this.getScaleZoom(p,o),c&&(o=Math.round(o/(c/100))*(c/100),o=e?Math.ceil(o/c)*c:Math.floor(o/c)*c),Math.max(n,Math.min(s,o))},getSize:function(){return this._size&&!this._sizeChanged||(this._size=new I(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(t,e){var i=this._getTopLeftPoint(t,e);return new R(i,i.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(t){return this.options.crs.getProjectedBounds(void 0===t?this.getZoom():t)},getPane:function(t){return"string"==typeof t?this._panes[t]:t},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t,e){var i=this.options.crs;return e=void 0===e?this._zoom:e,i.scale(t)/i.scale(e)},getScaleZoom:function(t,e){var i=this.options.crs;e=void 0===e?this._zoom:e;var o=i.zoom(t*i.scale(e));return isNaN(o)?1/0:o},project:function(t,e){return e=void 0===e?this._zoom:e,this.options.crs.latLngToPoint(U(t),e)},unproject:function(t,e){return e=void 0===e?this._zoom:e,this.options.crs.pointToLatLng(P(t),e)},layerPointToLatLng:function(t){var e=P(t).add(this.getPixelOrigin());return this.unproject(e)},latLngToLayerPoint:function(t){return this.project(U(t))._round()._subtract(this.getPixelOrigin())},wrapLatLng:function(t){return this.options.crs.wrapLatLng(U(t))},wrapLatLngBounds:function(t){return this.options.crs.wrapLatLngBounds(F(t))},distance:function(t,e){return this.options.crs.distance(U(t),U(e))},containerPointToLayerPoint:function(t){return P(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return P(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){var e=this.containerPointToLayerPoint(P(t));return this.layerPointToLatLng(e)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(U(t)))},mouseEventToContainerPoint:function(t){return We(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){var e=this._container=de(t);if(!e)throw new Error("Map container not found.");if(e._leaflet_id)throw new Error("Map container is already initialized.");Le(e,"scroll",this._onScroll,this),this._containerId=a(e)},_initLayout:function(){var t=this._container;this._fadeAnimated=this.options.fadeAnimation&&bt,ve(t,"leaflet-container"+(Ct?" leaflet-touch":"")+($t?" leaflet-retina":"")+(et?" leaflet-oldie":"")+(ht?" leaflet-safari":"")+(this._fadeAnimated?" leaflet-fade-anim":""));var e=ce(t,"position");"absolute"!==e&&"relative"!==e&&"fixed"!==e&&(t.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._paneRenderers={},this._mapPane=this.createPane("mapPane",this._container),Se(this._mapPane,new I(0,0)),this.createPane("tilePane"),this.createPane("shadowPane"),this.createPane("overlayPane"),this.createPane("markerPane"),this.createPane("tooltipPane"),this.createPane("popupPane"),this.options.markerZoomAnimation||(ve(t.markerPane,"leaflet-zoom-hide"),ve(t.shadowPane,"leaflet-zoom-hide"))},_resetView:function(t,e){Se(this._mapPane,new I(0,0));var i=!this._loaded;this._loaded=!0,e=this._limitZoom(e),this.fire("viewprereset");var o=this._zoom!==e;this._moveStart(o,!1)._move(t,e)._moveEnd(o),this.fire("viewreset"),i&&this.fire("load")},_moveStart:function(t,e){return t&&this.fire("zoomstart"),e||this.fire("movestart"),this},_move:function(t,e,i){void 0===e&&(e=this._zoom);var o=this._zoom!==e;return this._zoom=e,this._lastCenter=t,this._pixelOrigin=this._getNewPixelOrigin(t),(o||i&&i.pinch)&&this.fire("zoom",i),this.fire("move",i)},_moveEnd:function(t){return t&&this.fire("zoomend"),this.fire("moveend")},_stop:function(){return $(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(t){Se(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error("Set map center and zoom first.")},_initEvents:function(t){this._targets={},this._targets[a(this._container)]=this;var e=t?Re:Le;e(this._container,"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress keydown keyup",this._handleDOMEvent,this),this.options.trackResize&&e(window,"resize",this._onResize,this),bt&&this.options.transform3DLimit&&(t?this.off:this.on).call(this,"moveend",this._onMoveEnd)},_onResize:function(){$(this._resizeRequest),this._resizeRequest=A(function(){this.invalidateSize({debounceMoveend:!0})},this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var t=this._getMapPanePos();Math.max(Math.abs(t.x),Math.abs(t.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(t,e){for(var i,o=[],n="mouseout"===e||"mouseover"===e,s=t.target||t.srcElement,r=!1;s;){if((i=this._targets[a(s)])&&("click"===e||"preclick"===e)&&!t._simulated&&this._draggableMoved(i)){r=!0;break}if(i&&i.listens(e,!0)){if(n&&!Qe(s,t))break;if(o.push(i),n)break}if(s===this._container)break;s=s.parentNode}return o.length||r||n||!Qe(s,t)||(o=[this]),o},_handleDOMEvent:function(t){if(this._loaded&&!Xe(t)){var e=t.type;"mousedown"!==e&&"keypress"!==e&&"keyup"!==e&&"keydown"!==e||De(t.target||t.srcElement),this._fireDOMEvent(t,e)}},_mouseEvents:["click","dblclick","mouseover","mouseout","contextmenu"],_fireDOMEvent:function(t,e,i){if("click"===t.type){var n=o({},t);n.type="preclick",this._fireDOMEvent(n,n.type,i)}if(!t._stopped&&(i=(i||[]).concat(this._findEventTargets(t,e))).length){var s=i[0];"contextmenu"===e&&s.listens(e,!0)&&je(t);var r={originalEvent:t};if("keypress"!==t.type&&"keydown"!==t.type&&"keyup"!==t.type){var a=s.getLatLng&&(!s._radius||s._radius<=10);r.containerPoint=a?this.latLngToContainerPoint(s.getLatLng()):this.mouseEventToContainerPoint(t),r.layerPoint=this.containerPointToLayerPoint(r.containerPoint),r.latlng=a?s.getLatLng():this.layerPointToLatLng(r.layerPoint)}for(var l=0;l<i.length;l++)if(i[l].fire(e,r,!0),r.originalEvent._stopped||!1===i[l].options.bubblingMouseEvents&&-1!==y(this._mouseEvents,e))return}},_draggableMoved:function(t){return(t=t.dragging&&t.dragging.enabled()?t:this).dragging&&t.dragging.moved()||this.boxZoom&&this.boxZoom.moved()},_clearHandlers:function(){for(var t=0,e=this._handlers.length;t<e;t++)this._handlers[t].disable()},whenReady:function(t,e){return this._loaded?t.call(e||this,{target:this}):this.on("load",t,e),this},_getMapPanePos:function(){return Ae(this._mapPane)||new I(0,0)},_moved:function(){var t=this._getMapPanePos();return t&&!t.equals([0,0])},_getTopLeftPoint:function(t,e){return(t&&void 0!==e?this._getNewPixelOrigin(t,e):this.getPixelOrigin()).subtract(this._getMapPanePos())},_getNewPixelOrigin:function(t,e){var i=this.getSize()._divideBy(2);return this.project(t,e)._subtract(i)._add(this._getMapPanePos())._round()},_latLngToNewLayerPoint:function(t,e,i){var o=this._getNewPixelOrigin(i,e);return this.project(t,e)._subtract(o)},_latLngBoundsToNewLayerBounds:function(t,e,i){var o=this._getNewPixelOrigin(i,e);return N([this.project(t.getSouthWest(),e)._subtract(o),this.project(t.getNorthWest(),e)._subtract(o),this.project(t.getSouthEast(),e)._subtract(o),this.project(t.getNorthEast(),e)._subtract(o)])},_getCenterLayerPoint:function(){return this.containerPointToLayerPoint(this.getSize()._divideBy(2))},_getCenterOffset:function(t){return this.latLngToLayerPoint(t).subtract(this._getCenterLayerPoint())},_limitCenter:function(t,e,i){if(!i)return t;var o=this.project(t,e),n=this.getSize().divideBy(2),s=new R(o.subtract(n),o.add(n)),r=this._getBoundsOffset(s,i,e);return r.round().equals([0,0])?t:this.unproject(o.add(r),e)},_limitOffset:function(t,e){if(!e)return t;var i=this.getPixelBounds(),o=new R(i.min.add(t),i.max.add(t));return t.add(this._getBoundsOffset(o,e))},_getBoundsOffset:function(t,e,i){var o=N(this.project(e.getNorthEast(),i),this.project(e.getSouthWest(),i)),n=o.min.subtract(t.min),s=o.max.subtract(t.max);return new I(this._rebound(n.x,-s.x),this._rebound(n.y,-s.y))},_rebound:function(t,e){return t+e>0?Math.round(t-e)/2:Math.max(0,Math.ceil(t))-Math.max(0,Math.floor(e))},_limitZoom:function(t){var e=this.getMinZoom(),i=this.getMaxZoom(),o=bt?this.options.zoomSnap:1;return o&&(t=Math.round(t/o)*o),Math.max(e,Math.min(i,t))},_onPanTransitionStep:function(){this.fire("move")},_onPanTransitionEnd:function(){be(this._mapPane,"leaflet-pan-anim"),this.fire("moveend")},_tryAnimatedPan:function(t,e){var i=this._getCenterOffset(t)._trunc();return!(!0!==(e&&e.animate)&&!this.getSize().contains(i)||(this.panBy(i,e),0))},_createAnimProxy:function(){var t=this._proxy=he("div","leaflet-proxy leaflet-zoom-animated");this._panes.mapPane.appendChild(t),this.on("zoomanim",function(t){var e=re,i=this._proxy.style[e];Ce(this._proxy,this.project(t.center,t.zoom),this.getZoomScale(t.zoom,1)),i===this._proxy.style[e]&&this._animatingZoom&&this._onZoomTransitionEnd()},this),this.on("load moveend",function(){var t=this.getCenter(),e=this.getZoom();Ce(this._proxy,this.project(t,e),this.getZoomScale(e,1))},this),this._on("unload",this._destroyAnimProxy,this)},_destroyAnimProxy:function(){ue(this._proxy),delete this._proxy},_catchTransitionEnd:function(t){this._animatingZoom&&t.propertyName.indexOf("transform")>=0&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName("leaflet-zoom-animated").length},_tryAnimatedZoom:function(t,e,i){if(this._animatingZoom)return!0;if(i=i||{},!this._zoomAnimated||!1===i.animate||this._nothingToAnimate()||Math.abs(e-this._zoom)>this.options.zoomAnimationThreshold)return!1;var o=this.getZoomScale(e),n=this._getCenterOffset(t)._divideBy(1-1/o);return!(!0!==i.animate&&!this.getSize().contains(n)||(A(function(){this._moveStart(!0,!1)._animateZoom(t,e,!0)},this),0))},_animateZoom:function(t,e,i,o){this._mapPane&&(i&&(this._animatingZoom=!0,this._animateToCenter=t,this._animateToZoom=e,ve(this._mapPane,"leaflet-zoom-anim")),this.fire("zoomanim",{center:t,zoom:e,noUpdate:o}),setTimeout(s(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&be(this._mapPane,"leaflet-zoom-anim"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom),A(function(){this._moveEnd(!0)},this))}});function oi(t,e){return new ii(t,e)}var ni=T.extend({options:{position:"topright"},initialize:function(t){m(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var e=this._map;return e&&e.removeControl(this),this.options.position=t,e&&e.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this.remove(),this._map=t;var e=this._container=this.onAdd(t),i=this.getPosition(),o=t._controlCorners[i];return ve(e,"leaflet-control"),-1!==i.indexOf("bottom")?o.insertBefore(e,o.firstChild):o.appendChild(e),this._map.on("unload",this.remove,this),this},remove:function(){return this._map?(ue(this._container),this.onRemove&&this.onRemove(this._map),this._map.off("unload",this.remove,this),this._map=null,this):this},_refocusOnMap:function(t){this._map&&t&&t.screenX>0&&t.screenY>0&&this._map.getContainer().focus()}}),si=function(t){return new ni(t)};ii.include({addControl:function(t){return t.addTo(this),this},removeControl:function(t){return t.remove(),this},_initControlPos:function(){var t=this._controlCorners={},e="leaflet-",i=this._controlContainer=he("div",e+"control-container",this._container);function o(o,n){var s=e+o+" "+e+n;t[o+n]=he("div",s,i)}o("top","left"),o("top","right"),o("bottom","left"),o("bottom","right")},_clearControlPos:function(){for(var t in this._controlCorners)ue(this._controlCorners[t]);ue(this._controlContainer),delete this._controlCorners,delete this._controlContainer}});var ri=ni.extend({options:{collapsed:!0,position:"topright",autoZIndex:!0,hideSingleBase:!1,sortLayers:!1,sortFunction:function(t,e,i,o){return i<o?-1:o<i?1:0}},initialize:function(t,e,i){for(var o in m(this,i),this._layerControlInputs=[],this._layers=[],this._lastZIndex=0,this._handlingClick=!1,t)this._addLayer(t[o],o);for(o in e)this._addLayer(e[o],o,!0)},onAdd:function(t){this._initLayout(),this._update(),this._map=t,t.on("zoomend",this._checkDisabledLayers,this);for(var e=0;e<this._layers.length;e++)this._layers[e].layer.on("add remove",this._onLayerChange,this);return this._container},addTo:function(t){return ni.prototype.addTo.call(this,t),this._expandIfNotCollapsed()},onRemove:function(){this._map.off("zoomend",this._checkDisabledLayers,this);for(var t=0;t<this._layers.length;t++)this._layers[t].layer.off("add remove",this._onLayerChange,this)},addBaseLayer:function(t,e){return this._addLayer(t,e),this._map?this._update():this},addOverlay:function(t,e){return this._addLayer(t,e,!0),this._map?this._update():this},removeLayer:function(t){t.off("add remove",this._onLayerChange,this);var e=this._getLayer(a(t));return e&&this._layers.splice(this._layers.indexOf(e),1),this._map?this._update():this},expand:function(){ve(this._container,"leaflet-control-layers-expanded"),this._section.style.height=null;var t=this._map.getSize().y-(this._container.offsetTop+50);return t<this._section.clientHeight?(ve(this._section,"leaflet-control-layers-scrollbar"),this._section.style.height=t+"px"):be(this._section,"leaflet-control-layers-scrollbar"),this._checkDisabledLayers(),this},collapse:function(){return be(this._container,"leaflet-control-layers-expanded"),this},_initLayout:function(){var t="leaflet-control-layers",e=this._container=he("div",t),i=this.options.collapsed;e.setAttribute("aria-haspopup",!0),Ue(e),qe(e);var o=this._section=he("section",t+"-list");i&&(this._map.on("click",this.collapse,this),nt||Le(e,{mouseenter:this.expand,mouseleave:this.collapse},this));var n=this._layersLink=he("a",t+"-toggle",e);n.href="#",n.title="Layers",Ct?(Le(n,"click",He),Le(n,"click",this.expand,this)):Le(n,"focus",this.expand,this),i||this.expand(),this._baseLayersList=he("div",t+"-base",o),this._separator=he("div",t+"-separator",o),this._overlaysList=he("div",t+"-overlays",o),e.appendChild(o)},_getLayer:function(t){for(var e=0;e<this._layers.length;e++)if(this._layers[e]&&a(this._layers[e].layer)===t)return this._layers[e]},_addLayer:function(t,e,i){this._map&&t.on("add remove",this._onLayerChange,this),this._layers.push({layer:t,name:e,overlay:i}),this.options.sortLayers&&this._layers.sort(s(function(t,e){return this.options.sortFunction(t.layer,e.layer,t.name,e.name)},this)),this.options.autoZIndex&&t.setZIndex&&(this._lastZIndex++,t.setZIndex(this._lastZIndex)),this._expandIfNotCollapsed()},_update:function(){if(!this._container)return this;pe(this._baseLayersList),pe(this._overlaysList),this._layerControlInputs=[];var t,e,i,o,n=0;for(i=0;i<this._layers.length;i++)o=this._layers[i],this._addItem(o),e=e||o.overlay,t=t||!o.overlay,n+=o.overlay?0:1;return this.options.hideSingleBase&&(t=t&&n>1,this._baseLayersList.style.display=t?"":"none"),this._separator.style.display=e&&t?"":"none",this},_onLayerChange:function(t){this._handlingClick||this._update();var e=this._getLayer(a(t.target)),i=e.overlay?"add"===t.type?"overlayadd":"overlayremove":"add"===t.type?"baselayerchange":null;i&&this._map.fire(i,e)},_createRadioElement:function(t,e){var i='<input type="radio" class="leaflet-control-layers-selector" name="'+t+'"'+(e?' checked="checked"':"")+"/>",o=document.createElement("div");return o.innerHTML=i,o.firstChild},_addItem:function(t){var e,i=document.createElement("label"),o=this._map.hasLayer(t.layer);t.overlay?((e=document.createElement("input")).type="checkbox",e.className="leaflet-control-layers-selector",e.defaultChecked=o):e=this._createRadioElement("leaflet-base-layers_"+a(this),o),this._layerControlInputs.push(e),e.layerId=a(t.layer),Le(e,"click",this._onInputClick,this);var n=document.createElement("span");n.innerHTML=" "+t.name;var s=document.createElement("div");return i.appendChild(s),s.appendChild(e),s.appendChild(n),(t.overlay?this._overlaysList:this._baseLayersList).appendChild(i),this._checkDisabledLayers(),i},_onInputClick:function(){var t,e,i=this._layerControlInputs,o=[],n=[];this._handlingClick=!0;for(var s=i.length-1;s>=0;s--)t=i[s],e=this._getLayer(t.layerId).layer,t.checked?o.push(e):t.checked||n.push(e);for(s=0;s<n.length;s++)this._map.hasLayer(n[s])&&this._map.removeLayer(n[s]);for(s=0;s<o.length;s++)this._map.hasLayer(o[s])||this._map.addLayer(o[s]);this._handlingClick=!1,this._refocusOnMap()},_checkDisabledLayers:function(){for(var t,e,i=this._layerControlInputs,o=this._map.getZoom(),n=i.length-1;n>=0;n--)t=i[n],e=this._getLayer(t.layerId).layer,t.disabled=void 0!==e.options.minZoom&&o<e.options.minZoom||void 0!==e.options.maxZoom&&o>e.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expand:function(){return this.expand()},_collapse:function(){return this.collapse()}}),ai=function(t,e,i){return new ri(t,e,i)},li=ni.extend({options:{position:"topleft",zoomInText:"+",zoomInTitle:"Zoom in",zoomOutText:"−",zoomOutTitle:"Zoom out"},onAdd:function(t){var e="leaflet-control-zoom",i=he("div",e+" leaflet-bar"),o=this.options;return this._zoomInButton=this._createButton(o.zoomInText,o.zoomInTitle,e+"-in",i,this._zoomIn),this._zoomOutButton=this._createButton(o.zoomOutText,o.zoomOutTitle,e+"-out",i,this._zoomOut),this._updateDisabled(),t.on("zoomend zoomlevelschange",this._updateDisabled,this),i},onRemove:function(t){t.off("zoomend zoomlevelschange",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(t){!this._disabled&&this._map._zoom<this._map.getMaxZoom()&&this._map.zoomIn(this._map.options.zoomDelta*(t.shiftKey?3:1))},_zoomOut:function(t){!this._disabled&&this._map._zoom>this._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(t.shiftKey?3:1))},_createButton:function(t,e,i,o,n){var s=he("a",i,o);return s.innerHTML=t,s.href="#",s.title=e,s.setAttribute("role","button"),s.setAttribute("aria-label",e),Ue(s),Le(s,"click",He),Le(s,"click",n,this),Le(s,"click",this._refocusOnMap,this),s},_updateDisabled:function(){var t=this._map,e="leaflet-disabled";be(this._zoomInButton,e),be(this._zoomOutButton,e),(this._disabled||t._zoom===t.getMinZoom())&&ve(this._zoomOutButton,e),(this._disabled||t._zoom===t.getMaxZoom())&&ve(this._zoomInButton,e)}});ii.mergeOptions({zoomControl:!0}),ii.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new li,this.addControl(this.zoomControl))});var di=function(t){return new li(t)},ci=ni.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0},onAdd:function(t){var e="leaflet-control-scale",i=he("div",e),o=this.options;return this._addScales(o,e+"-line",i),t.on(o.updateWhenIdle?"moveend":"move",this._update,this),t.whenReady(this._update,this),i},onRemove:function(t){t.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(t,e,i){t.metric&&(this._mScale=he("div",e,i)),t.imperial&&(this._iScale=he("div",e,i))},_update:function(){var t=this._map,e=t.getSize().y/2,i=t.distance(t.containerPointToLatLng([0,e]),t.containerPointToLatLng([this.options.maxWidth,e]));this._updateScales(i)},_updateScales:function(t){this.options.metric&&t&&this._updateMetric(t),this.options.imperial&&t&&this._updateImperial(t)},_updateMetric:function(t){var e=this._getRoundNum(t),i=e<1e3?e+" m":e/1e3+" km";this._updateScale(this._mScale,i,e/t)},_updateImperial:function(t){var e,i,o,n=3.2808399*t;n>5280?(e=n/5280,i=this._getRoundNum(e),this._updateScale(this._iScale,i+" mi",i/e)):(o=this._getRoundNum(n),this._updateScale(this._iScale,o+" ft",o/n))},_updateScale:function(t,e,i){t.style.width=Math.round(this.options.maxWidth*i)+"px",t.innerHTML=e},_getRoundNum:function(t){var e=Math.pow(10,(Math.floor(t)+"").length-1),i=t/e;return e*(i=i>=10?10:i>=5?5:i>=3?3:i>=2?2:1)}}),hi=function(t){return new ci(t)},ui=ni.extend({options:{position:"bottomright",prefix:'<a href="https://leafletjs.com" title="A JS library for interactive maps">Leaflet</a>'},initialize:function(t){m(this,t),this._attributions={}},onAdd:function(t){for(var e in t.attributionControl=this,this._container=he("div","leaflet-control-attribution"),Ue(this._container),t._layers)t._layers[e].getAttribution&&this.addAttribution(t._layers[e].getAttribution());return this._update(),this._container},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t?(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update(),this):this},removeAttribution:function(t){return t?(this._attributions[t]&&(this._attributions[t]--,this._update()),this):this},_update:function(){if(this._map){var t=[];for(var e in this._attributions)this._attributions[e]&&t.push(e);var i=[];this.options.prefix&&i.push(this.options.prefix),t.length&&i.push(t.join(", ")),this._container.innerHTML=i.join(" | ")}}});ii.mergeOptions({attributionControl:!0}),ii.addInitHook(function(){this.options.attributionControl&&(new ui).addTo(this)});var pi=function(t){return new ui(t)};ni.Layers=ri,ni.Zoom=li,ni.Scale=ci,ni.Attribution=ui,si.layers=ai,si.zoom=di,si.scale=hi,si.attribution=pi;var mi=T.extend({initialize:function(t){this._map=t},enable:function(){return this._enabled||(this._enabled=!0,this.addHooks()),this},disable:function(){return this._enabled?(this._enabled=!1,this.removeHooks(),this):this},enabled:function(){return!!this._enabled}});mi.addTo=function(t,e){return t.addHandler(e,this),this};var gi,fi={Events:M},vi=Ct?"touchstart mousedown":"mousedown",bi={mousedown:"mouseup",touchstart:"touchend",pointerdown:"touchend",MSPointerDown:"touchend"},yi={mousedown:"mousemove",touchstart:"touchmove",pointerdown:"touchmove",MSPointerDown:"touchmove"},xi=z.extend({options:{clickTolerance:3},initialize:function(t,e,i,o){m(this,o),this._element=t,this._dragStartTarget=e||t,this._preventOutline=i},enable:function(){this._enabled||(Le(this._dragStartTarget,vi,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(xi._dragging===this&&this.finishDrag(),Re(this._dragStartTarget,vi,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(t){if(!t._simulated&&this._enabled&&(this._moved=!1,!fe(this._element,"leaflet-zoom-anim")&&!(xi._dragging||t.shiftKey||1!==t.which&&1!==t.button&&!t.touches||(xi._dragging=this,this._preventOutline&&De(this._element),Ee(),ee(),this._moving)))){this.fire("down");var e=t.touches?t.touches[0]:t,i=ze(this._element);this._startPoint=new I(e.clientX,e.clientY),this._parentScale=Ie(i),Le(document,yi[t.type],this._onMove,this),Le(document,bi[t.type],this._onUp,this)}},_onMove:function(t){if(!t._simulated&&this._enabled)if(t.touches&&t.touches.length>1)this._moved=!0;else{var e=t.touches&&1===t.touches.length?t.touches[0]:t,i=new I(e.clientX,e.clientY)._subtract(this._startPoint);(i.x||i.y)&&(Math.abs(i.x)+Math.abs(i.y)<this.options.clickTolerance||(i.x/=this._parentScale.x,i.y/=this._parentScale.y,je(t),this._moved||(this.fire("dragstart"),this._moved=!0,this._startPos=Ae(this._element).subtract(i),ve(document.body,"leaflet-dragging"),this._lastTarget=t.target||t.srcElement,window.SVGElementInstance&&this._lastTarget instanceof SVGElementInstance&&(this._lastTarget=this._lastTarget.correspondingUseElement),ve(this._lastTarget,"leaflet-drag-target")),this._newPos=this._startPos.add(i),this._moving=!0,$(this._animRequest),this._lastEvent=t,this._animRequest=A(this._updatePosition,this,!0)))}},_updatePosition:function(){var t={originalEvent:this._lastEvent};this.fire("predrag",t),Se(this._element,this._newPos),this.fire("drag",t)},_onUp:function(t){!t._simulated&&this._enabled&&this.finishDrag()},finishDrag:function(){for(var t in be(document.body,"leaflet-dragging"),this._lastTarget&&(be(this._lastTarget,"leaflet-drag-target"),this._lastTarget=null),yi)Re(document,yi[t],this._onMove,this),Re(document,bi[t],this._onUp,this);Te(),ie(),this._moved&&this._moving&&($(this._animRequest),this.fire("dragend",{distance:this._newPos.distanceTo(this._startPos)})),this._moving=!1,xi._dragging=!1}});function wi(t,e){if(!e||!t.length)return t.slice();var i=e*e;return t=Ci(t=Ai(t,i),i)}function _i(t,e,i){return Math.sqrt(Mi(t,e,i,!0))}function ki(t,e,i){return Mi(t,e,i)}function Ci(t,e){var i=t.length,o=new(typeof Uint8Array!=void 0+""?Uint8Array:Array)(i);o[0]=o[i-1]=1,Si(t,o,e,0,i-1);var n,s=[];for(n=0;n<i;n++)o[n]&&s.push(t[n]);return s}function Si(t,e,i,o,n){var s,r,a,l=0;for(r=o+1;r<=n-1;r++)(a=Mi(t[r],t[o],t[n],!0))>l&&(s=r,l=a);l>i&&(e[s]=1,Si(t,e,i,o,s),Si(t,e,i,s,n))}function Ai(t,e){for(var i=[t[0]],o=1,n=0,s=t.length;o<s;o++)Di(t[o],t[n])>e&&(i.push(t[o]),n=o);return n<s-1&&i.push(t[s-1]),i}function $i(t,e,i,o,n){var s,r,a,l=o?gi:Ti(t,i),d=Ti(e,i);for(gi=d;;){if(!(l|d))return[t,e];if(l&d)return!1;a=Ti(r=Ei(t,e,s=l||d,i,n),i),s===l?(t=r,l=a):(e=r,d=a)}}function Ei(t,e,i,o,n){var s,r,a=e.x-t.x,l=e.y-t.y,d=o.min,c=o.max;return 8&i?(s=t.x+a*(c.y-t.y)/l,r=c.y):4&i?(s=t.x+a*(d.y-t.y)/l,r=d.y):2&i?(s=c.x,r=t.y+l*(c.x-t.x)/a):1&i&&(s=d.x,r=t.y+l*(d.x-t.x)/a),new I(s,r,n)}function Ti(t,e){var i=0;return t.x<e.min.x?i|=1:t.x>e.max.x&&(i|=2),t.y<e.min.y?i|=4:t.y>e.max.y&&(i|=8),i}function Di(t,e){var i=e.x-t.x,o=e.y-t.y;return i*i+o*o}function Mi(t,e,i,o){var n,s=e.x,r=e.y,a=i.x-s,l=i.y-r,d=a*a+l*l;return d>0&&((n=((t.x-s)*a+(t.y-r)*l)/d)>1?(s=i.x,r=i.y):n>0&&(s+=a*n,r+=l*n)),a=t.x-s,l=t.y-r,o?a*a+l*l:new I(s,r)}function zi(t){return!b(t[0])||"object"!=typeof t[0][0]&&void 0!==t[0][0]}function Ii(t){return console.warn("Deprecated use of _flat, please use L.LineUtil.isFlat instead."),zi(t)}var Oi=(Object.freeze||Object)({simplify:wi,pointToSegmentDistance:_i,closestPointOnSegment:ki,clipSegment:$i,_getEdgeIntersection:Ei,_getBitCode:Ti,_sqClosestPointOnSegment:Mi,isFlat:zi,_flat:Ii});function Li(t,e,i){var o,n,s,r,a,l,d,c,h,u=[1,4,2,8];for(n=0,d=t.length;n<d;n++)t[n]._code=Ti(t[n],e);for(r=0;r<4;r++){for(c=u[r],o=[],n=0,s=(d=t.length)-1;n<d;s=n++)a=t[n],l=t[s],a._code&c?l._code&c||((h=Ei(l,a,c,e,i))._code=Ti(h,e),o.push(h)):(l._code&c&&((h=Ei(l,a,c,e,i))._code=Ti(h,e),o.push(h)),o.push(a));t=o}return t}var Pi=(Object.freeze||Object)({clipPolygon:Li}),Ri={project:function(t){return new I(t.lng,t.lat)},unproject:function(t){return new q(t.y,t.x)},bounds:new R([-180,-90],[180,90])},Ni={R:6378137,R_MINOR:6356752.314245179,bounds:new R([-20037508.34279,-15496570.73972],[20037508.34279,18764656.23138]),project:function(t){var e=Math.PI/180,i=this.R,o=t.lat*e,n=this.R_MINOR/i,s=Math.sqrt(1-n*n),r=s*Math.sin(o),a=Math.tan(Math.PI/4-o/2)/Math.pow((1-r)/(1+r),s/2);return o=-i*Math.log(Math.max(a,1e-10)),new I(t.lng*e*i,o)},unproject:function(t){for(var e,i=180/Math.PI,o=this.R,n=this.R_MINOR/o,s=Math.sqrt(1-n*n),r=Math.exp(-t.y/o),a=Math.PI/2-2*Math.atan(r),l=0,d=.1;l<15&&Math.abs(d)>1e-7;l++)e=s*Math.sin(a),e=Math.pow((1-e)/(1+e),s/2),a+=d=Math.PI/2-2*Math.atan(r*e)-a;return new q(a*i,t.x*i/o)}},Bi=(Object.freeze||Object)({LonLat:Ri,Mercator:Ni,SphericalMercator:V}),Fi=o({},H,{code:"EPSG:3395",projection:Ni,transformation:function(){var t=.5/(Math.PI*Ni.R);return Y(t,.5,-t,.5)}()}),qi=o({},H,{code:"EPSG:4326",projection:Ri,transformation:Y(1/180,1,-1/180,.5)}),Ui=o({},j,{projection:Ri,transformation:Y(1,0,-1,0),scale:function(t){return Math.pow(2,t)},zoom:function(t){return Math.log(t)/Math.LN2},distance:function(t,e){var i=e.lng-t.lng,o=e.lat-t.lat;return Math.sqrt(i*i+o*o)},infinite:!0});j.Earth=H,j.EPSG3395=Fi,j.EPSG3857=K,j.EPSG900913=G,j.EPSG4326=qi,j.Simple=Ui;var ji=z.extend({options:{pane:"overlayPane",attribution:null,bubblingMouseEvents:!0},addTo:function(t){return t.addLayer(this),this},remove:function(){return this.removeFrom(this._map||this._mapToAdd)},removeFrom:function(t){return t&&t.removeLayer(this),this},getPane:function(t){return this._map.getPane(t?this.options[t]||t:this.options.pane)},addInteractiveTarget:function(t){return this._map._targets[a(t)]=this,this},removeInteractiveTarget:function(t){return delete this._map._targets[a(t)],this},getAttribution:function(){return this.options.attribution},_layerAdd:function(t){var e=t.target;if(e.hasLayer(this)){if(this._map=e,this._zoomAnimated=e._zoomAnimated,this.getEvents){var i=this.getEvents();e.on(i,this),this.once("remove",function(){e.off(i,this)},this)}this.onAdd(e),this.getAttribution&&e.attributionControl&&e.attributionControl.addAttribution(this.getAttribution()),this.fire("add"),e.fire("layeradd",{layer:this})}}});ii.include({addLayer:function(t){if(!t._layerAdd)throw new Error("The provided object is not a Layer.");var e=a(t);return this._layers[e]||(this._layers[e]=t,t._mapToAdd=this,t.beforeAdd&&t.beforeAdd(this),this.whenReady(t._layerAdd,t)),this},removeLayer:function(t){var e=a(t);return this._layers[e]?(this._loaded&&t.onRemove(this),t.getAttribution&&this.attributionControl&&this.attributionControl.removeAttribution(t.getAttribution()),delete this._layers[e],this._loaded&&(this.fire("layerremove",{layer:t}),t.fire("remove")),t._map=t._mapToAdd=null,this):this},hasLayer:function(t){return!!t&&a(t)in this._layers},eachLayer:function(t,e){for(var i in this._layers)t.call(e,this._layers[i]);return this},_addLayers:function(t){for(var e=0,i=(t=t?b(t)?t:[t]:[]).length;e<i;e++)this.addLayer(t[e])},_addZoomLimit:function(t){!isNaN(t.options.maxZoom)&&isNaN(t.options.minZoom)||(this._zoomBoundLayers[a(t)]=t,this._updateZoomLevels())},_removeZoomLimit:function(t){var e=a(t);this._zoomBoundLayers[e]&&(delete this._zoomBoundLayers[e],this._updateZoomLevels())},_updateZoomLevels:function(){var t=1/0,e=-1/0,i=this._getZoomSpan();for(var o in this._zoomBoundLayers){var n=this._zoomBoundLayers[o].options;t=void 0===n.minZoom?t:Math.min(t,n.minZoom),e=void 0===n.maxZoom?e:Math.max(e,n.maxZoom)}this._layersMaxZoom=e===-1/0?void 0:e,this._layersMinZoom=t===1/0?void 0:t,i!==this._getZoomSpan()&&this.fire("zoomlevelschange"),void 0===this.options.maxZoom&&this._layersMaxZoom&&this.getZoom()>this._layersMaxZoom&&this.setZoom(this._layersMaxZoom),void 0===this.options.minZoom&&this._layersMinZoom&&this.getZoom()<this._layersMinZoom&&this.setZoom(this._layersMinZoom)}});var Hi=ji.extend({initialize:function(t,e){var i,o;if(m(this,e),this._layers={},t)for(i=0,o=t.length;i<o;i++)this.addLayer(t[i])},addLayer:function(t){var e=this.getLayerId(t);return this._layers[e]=t,this._map&&this._map.addLayer(t),this},removeLayer:function(t){var e=t in this._layers?t:this.getLayerId(t);return this._map&&this._layers[e]&&this._map.removeLayer(this._layers[e]),delete this._layers[e],this},hasLayer:function(t){return!!t&&(t in this._layers||this.getLayerId(t)in this._layers)},clearLayers:function(){return this.eachLayer(this.removeLayer,this)},invoke:function(t){var e,i,o=Array.prototype.slice.call(arguments,1);for(e in this._layers)(i=this._layers[e])[t]&&i[t].apply(i,o);return this},onAdd:function(t){this.eachLayer(t.addLayer,t)},onRemove:function(t){this.eachLayer(t.removeLayer,t)},eachLayer:function(t,e){for(var i in this._layers)t.call(e,this._layers[i]);return this},getLayer:function(t){return this._layers[t]},getLayers:function(){var t=[];return this.eachLayer(t.push,t),t},setZIndex:function(t){return this.invoke("setZIndex",t)},getLayerId:function(t){return a(t)}}),Wi=function(t,e){return new Hi(t,e)},Vi=Hi.extend({addLayer:function(t){return this.hasLayer(t)?this:(t.addEventParent(this),Hi.prototype.addLayer.call(this,t),this.fire("layeradd",{layer:t}))},removeLayer:function(t){return this.hasLayer(t)?(t in this._layers&&(t=this._layers[t]),t.removeEventParent(this),Hi.prototype.removeLayer.call(this,t),this.fire("layerremove",{layer:t})):this},setStyle:function(t){return this.invoke("setStyle",t)},bringToFront:function(){return this.invoke("bringToFront")},bringToBack:function(){return this.invoke("bringToBack")},getBounds:function(){var t=new B;for(var e in this._layers){var i=this._layers[e];t.extend(i.getBounds?i.getBounds():i.getLatLng())}return t}}),Zi=function(t){return new Vi(t)},Yi=T.extend({options:{popupAnchor:[0,0],tooltipAnchor:[0,0]},initialize:function(t){m(this,t)},createIcon:function(t){return this._createIcon("icon",t)},createShadow:function(t){return this._createIcon("shadow",t)},_createIcon:function(t,e){var i=this._getIconUrl(t);if(!i){if("icon"===t)throw new Error("iconUrl not set in Icon options (see the docs).");return null}var o=this._createImg(i,e&&"IMG"===e.tagName?e:null);return this._setIconStyles(o,t),o},_setIconStyles:function(t,e){var i=this.options,o=i[e+"Size"];"number"==typeof o&&(o=[o,o]);var n=P(o),s=P("shadow"===e&&i.shadowAnchor||i.iconAnchor||n&&n.divideBy(2,!0));t.className="leaflet-marker-"+e+" "+(i.className||""),s&&(t.style.marginLeft=-s.x+"px",t.style.marginTop=-s.y+"px"),n&&(t.style.width=n.x+"px",t.style.height=n.y+"px")},_createImg:function(t,e){return(e=e||document.createElement("img")).src=t,e},_getIconUrl:function(t){return $t&&this.options[t+"RetinaUrl"]||this.options[t+"Url"]}});function Ki(t){return new Yi(t)}var Gi=Yi.extend({options:{iconUrl:"marker-icon.png",iconRetinaUrl:"marker-icon-2x.png",shadowUrl:"marker-shadow.png",iconSize:[25,41],iconAnchor:[12,41],popupAnchor:[1,-34],tooltipAnchor:[16,-28],shadowSize:[41,41]},_getIconUrl:function(t){return Gi.imagePath||(Gi.imagePath=this._detectIconPath()),(this.options.imagePath||Gi.imagePath)+Yi.prototype._getIconUrl.call(this,t)},_detectIconPath:function(){var t=he("div","leaflet-default-icon-path",document.body),e=ce(t,"background-image")||ce(t,"backgroundImage");return document.body.removeChild(t),e=null===e||0!==e.indexOf("url")?"":e.replace(/^url\(["']?/,"").replace(/marker-icon\.png["']?\)$/,"")}}),Xi=mi.extend({initialize:function(t){this._marker=t},addHooks:function(){var t=this._marker._icon;this._draggable||(this._draggable=new xi(t,t,!0)),this._draggable.on({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).enable(),ve(t,"leaflet-marker-draggable")},removeHooks:function(){this._draggable.off({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).disable(),this._marker._icon&&be(this._marker._icon,"leaflet-marker-draggable")},moved:function(){return this._draggable&&this._draggable._moved},_adjustPan:function(t){var e=this._marker,i=e._map,o=this._marker.options.autoPanSpeed,n=this._marker.options.autoPanPadding,s=Ae(e._icon),r=i.getPixelBounds(),a=i.getPixelOrigin(),l=N(r.min._subtract(a).add(n),r.max._subtract(a).subtract(n));if(!l.contains(s)){var d=P((Math.max(l.max.x,s.x)-l.max.x)/(r.max.x-l.max.x)-(Math.min(l.min.x,s.x)-l.min.x)/(r.min.x-l.min.x),(Math.max(l.max.y,s.y)-l.max.y)/(r.max.y-l.max.y)-(Math.min(l.min.y,s.y)-l.min.y)/(r.min.y-l.min.y)).multiplyBy(o);i.panBy(d,{animate:!1}),this._draggable._newPos._add(d),this._draggable._startPos._add(d),Se(e._icon,this._draggable._newPos),this._onDrag(t),this._panRequest=A(this._adjustPan.bind(this,t))}},_onDragStart:function(){this._oldLatLng=this._marker.getLatLng(),this._marker.closePopup().fire("movestart").fire("dragstart")},_onPreDrag:function(t){this._marker.options.autoPan&&($(this._panRequest),this._panRequest=A(this._adjustPan.bind(this,t)))},_onDrag:function(t){var e=this._marker,i=e._shadow,o=Ae(e._icon),n=e._map.layerPointToLatLng(o);i&&Se(i,o),e._latlng=n,t.latlng=n,t.oldLatLng=this._oldLatLng,e.fire("move",t).fire("drag",t)},_onDragEnd:function(t){$(this._panRequest),delete this._oldLatLng,this._marker.fire("moveend").fire("dragend",t)}}),Qi=ji.extend({options:{icon:new Gi,interactive:!0,keyboard:!0,title:"",alt:"",zIndexOffset:0,opacity:1,riseOnHover:!1,riseOffset:250,pane:"markerPane",shadowPane:"shadowPane",bubblingMouseEvents:!1,draggable:!1,autoPan:!1,autoPanPadding:[50,50],autoPanSpeed:10},initialize:function(t,e){m(this,e),this._latlng=U(t)},onAdd:function(t){this._zoomAnimated=this._zoomAnimated&&t.options.markerZoomAnimation,this._zoomAnimated&&t.on("zoomanim",this._animateZoom,this),this._initIcon(),this.update()},onRemove:function(t){this.dragging&&this.dragging.enabled()&&(this.options.draggable=!0,this.dragging.removeHooks()),delete this.dragging,this._zoomAnimated&&t.off("zoomanim",this._animateZoom,this),this._removeIcon(),this._removeShadow()},getEvents:function(){return{zoom:this.update,viewreset:this.update}},getLatLng:function(){return this._latlng},setLatLng:function(t){var e=this._latlng;return this._latlng=U(t),this.update(),this.fire("move",{oldLatLng:e,latlng:this._latlng})},setZIndexOffset:function(t){return this.options.zIndexOffset=t,this.update()},getIcon:function(){return this.options.icon},setIcon:function(t){return this.options.icon=t,this._map&&(this._initIcon(),this.update()),this._popup&&this.bindPopup(this._popup,this._popup.options),this},getElement:function(){return this._icon},update:function(){if(this._icon&&this._map){var t=this._map.latLngToLayerPoint(this._latlng).round();this._setPos(t)}return this},_initIcon:function(){var t=this.options,e="leaflet-zoom-"+(this._zoomAnimated?"animated":"hide"),i=t.icon.createIcon(this._icon),o=!1;i!==this._icon&&(this._icon&&this._removeIcon(),o=!0,t.title&&(i.title=t.title),"IMG"===i.tagName&&(i.alt=t.alt||"")),ve(i,e),t.keyboard&&(i.tabIndex="0"),this._icon=i,t.riseOnHover&&this.on({mouseover:this._bringToFront,mouseout:this._resetZIndex});var n=t.icon.createShadow(this._shadow),s=!1;n!==this._shadow&&(this._removeShadow(),s=!0),n&&(ve(n,e),n.alt=""),this._shadow=n,t.opacity<1&&this._updateOpacity(),o&&this.getPane().appendChild(this._icon),this._initInteraction(),n&&s&&this.getPane(t.shadowPane).appendChild(this._shadow)},_removeIcon:function(){this.options.riseOnHover&&this.off({mouseover:this._bringToFront,mouseout:this._resetZIndex}),ue(this._icon),this.removeInteractiveTarget(this._icon),this._icon=null},_removeShadow:function(){this._shadow&&ue(this._shadow),this._shadow=null},_setPos:function(t){Se(this._icon,t),this._shadow&&Se(this._shadow,t),this._zIndex=t.y+this.options.zIndexOffset,this._resetZIndex()},_updateZIndex:function(t){this._icon.style.zIndex=this._zIndex+t},_animateZoom:function(t){var e=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center).round();this._setPos(e)},_initInteraction:function(){if(this.options.interactive&&(ve(this._icon,"leaflet-interactive"),this.addInteractiveTarget(this._icon),Xi)){var t=this.options.draggable;this.dragging&&(t=this.dragging.enabled(),this.dragging.disable()),this.dragging=new Xi(this),t&&this.dragging.enable()}},setOpacity:function(t){return this.options.opacity=t,this._map&&this._updateOpacity(),this},_updateOpacity:function(){var t=this.options.opacity;this._icon&&we(this._icon,t),this._shadow&&we(this._shadow,t)},_bringToFront:function(){this._updateZIndex(this.options.riseOffset)},_resetZIndex:function(){this._updateZIndex(0)},_getPopupAnchor:function(){return this.options.icon.options.popupAnchor},_getTooltipAnchor:function(){return this.options.icon.options.tooltipAnchor}});function Ji(t,e){return new Qi(t,e)}var to=ji.extend({options:{stroke:!0,color:"#3388ff",weight:3,opacity:1,lineCap:"round",lineJoin:"round",dashArray:null,dashOffset:null,fill:!1,fillColor:null,fillOpacity:.2,fillRule:"evenodd",interactive:!0,bubblingMouseEvents:!0},beforeAdd:function(t){this._renderer=t.getRenderer(this)},onAdd:function(){this._renderer._initPath(this),this._reset(),this._renderer._addPath(this)},onRemove:function(){this._renderer._removePath(this)},redraw:function(){return this._map&&this._renderer._updatePath(this),this},setStyle:function(t){return m(this,t),this._renderer&&(this._renderer._updateStyle(this),this.options.stroke&&t.hasOwnProperty("weight")&&this._updateBounds()),this},bringToFront:function(){return this._renderer&&this._renderer._bringToFront(this),this},bringToBack:function(){return this._renderer&&this._renderer._bringToBack(this),this},getElement:function(){return this._path},_reset:function(){this._project(),this._update()},_clickTolerance:function(){return(this.options.stroke?this.options.weight/2:0)+this._renderer.options.tolerance}}),eo=to.extend({options:{fill:!0,radius:10},initialize:function(t,e){m(this,e),this._latlng=U(t),this._radius=this.options.radius},setLatLng:function(t){return this._latlng=U(t),this.redraw(),this.fire("move",{latlng:this._latlng})},getLatLng:function(){return this._latlng},setRadius:function(t){return this.options.radius=this._radius=t,this.redraw()},getRadius:function(){return this._radius},setStyle:function(t){var e=t&&t.radius||this._radius;return to.prototype.setStyle.call(this,t),this.setRadius(e),this},_project:function(){this._point=this._map.latLngToLayerPoint(this._latlng),this._updateBounds()},_updateBounds:function(){var t=this._radius,e=this._radiusY||t,i=this._clickTolerance(),o=[t+i,e+i];this._pxBounds=new R(this._point.subtract(o),this._point.add(o))},_update:function(){this._map&&this._updatePath()},_updatePath:function(){this._renderer._updateCircle(this)},_empty:function(){return this._radius&&!this._renderer._bounds.intersects(this._pxBounds)},_containsPoint:function(t){return t.distanceTo(this._point)<=this._radius+this._clickTolerance()}});function io(t,e){return new eo(t,e)}var oo=eo.extend({initialize:function(t,e,i){if("number"==typeof e&&(e=o({},i,{radius:e})),m(this,e),this._latlng=U(t),isNaN(this.options.radius))throw new Error("Circle radius cannot be NaN");this._mRadius=this.options.radius},setRadius:function(t){return this._mRadius=t,this.redraw()},getRadius:function(){return this._mRadius},getBounds:function(){var t=[this._radius,this._radiusY||this._radius];return new B(this._map.layerPointToLatLng(this._point.subtract(t)),this._map.layerPointToLatLng(this._point.add(t)))},setStyle:to.prototype.setStyle,_project:function(){var t=this._latlng.lng,e=this._latlng.lat,i=this._map,o=i.options.crs;if(o.distance===H.distance){var n=Math.PI/180,s=this._mRadius/H.R/n,r=i.project([e+s,t]),a=i.project([e-s,t]),l=r.add(a).divideBy(2),d=i.unproject(l).lat,c=Math.acos((Math.cos(s*n)-Math.sin(e*n)*Math.sin(d*n))/(Math.cos(e*n)*Math.cos(d*n)))/n;(isNaN(c)||0===c)&&(c=s/Math.cos(Math.PI/180*e)),this._point=l.subtract(i.getPixelOrigin()),this._radius=isNaN(c)?0:l.x-i.project([d,t-c]).x,this._radiusY=l.y-r.y}else{var h=o.unproject(o.project(this._latlng).subtract([this._mRadius,0]));this._point=i.latLngToLayerPoint(this._latlng),this._radius=this._point.x-i.latLngToLayerPoint(h).x}this._updateBounds()}});function no(t,e,i){return new oo(t,e,i)}var so=to.extend({options:{smoothFactor:1,noClip:!1},initialize:function(t,e){m(this,e),this._setLatLngs(t)},getLatLngs:function(){return this._latlngs},setLatLngs:function(t){return this._setLatLngs(t),this.redraw()},isEmpty:function(){return!this._latlngs.length},closestLayerPoint:function(t){for(var e,i,o=1/0,n=null,s=Mi,r=0,a=this._parts.length;r<a;r++)for(var l=this._parts[r],d=1,c=l.length;d<c;d++){var h=s(t,e=l[d-1],i=l[d],!0);h<o&&(o=h,n=s(t,e,i))}return n&&(n.distance=Math.sqrt(o)),n},getCenter:function(){if(!this._map)throw new Error("Must add layer to map before using getCenter()");var t,e,i,o,n,s,r,a=this._rings[0],l=a.length;if(!l)return null;for(t=0,e=0;t<l-1;t++)e+=a[t].distanceTo(a[t+1])/2;if(0===e)return this._map.layerPointToLatLng(a[0]);for(t=0,o=0;t<l-1;t++)if(n=a[t],s=a[t+1],(o+=i=n.distanceTo(s))>e)return r=(o-e)/i,this._map.layerPointToLatLng([s.x-r*(s.x-n.x),s.y-r*(s.y-n.y)])},getBounds:function(){return this._bounds},addLatLng:function(t,e){return e=e||this._defaultShape(),t=U(t),e.push(t),this._bounds.extend(t),this.redraw()},_setLatLngs:function(t){this._bounds=new B,this._latlngs=this._convertLatLngs(t)},_defaultShape:function(){return zi(this._latlngs)?this._latlngs:this._latlngs[0]},_convertLatLngs:function(t){for(var e=[],i=zi(t),o=0,n=t.length;o<n;o++)i?(e[o]=U(t[o]),this._bounds.extend(e[o])):e[o]=this._convertLatLngs(t[o]);return e},_project:function(){var t=new R;this._rings=[],this._projectLatlngs(this._latlngs,this._rings,t),this._bounds.isValid()&&t.isValid()&&(this._rawPxBounds=t,this._updateBounds())},_updateBounds:function(){var t=this._clickTolerance(),e=new I(t,t);this._pxBounds=new R([this._rawPxBounds.min.subtract(e),this._rawPxBounds.max.add(e)])},_projectLatlngs:function(t,e,i){var o,n,s=t[0]instanceof q,r=t.length;if(s){for(n=[],o=0;o<r;o++)n[o]=this._map.latLngToLayerPoint(t[o]),i.extend(n[o]);e.push(n)}else for(o=0;o<r;o++)this._projectLatlngs(t[o],e,i)},_clipPoints:function(){var t=this._renderer._bounds;if(this._parts=[],this._pxBounds&&this._pxBounds.intersects(t))if(this.options.noClip)this._parts=this._rings;else{var e,i,o,n,s,r,a,l=this._parts;for(e=0,o=0,n=this._rings.length;e<n;e++)for(i=0,s=(a=this._rings[e]).length;i<s-1;i++)(r=$i(a[i],a[i+1],t,i,!0))&&(l[o]=l[o]||[],l[o].push(r[0]),r[1]===a[i+1]&&i!==s-2||(l[o].push(r[1]),o++))}},_simplifyPoints:function(){for(var t=this._parts,e=this.options.smoothFactor,i=0,o=t.length;i<o;i++)t[i]=wi(t[i],e)},_update:function(){this._map&&(this._clipPoints(),this._simplifyPoints(),this._updatePath())},_updatePath:function(){this._renderer._updatePoly(this)},_containsPoint:function(t,e){var i,o,n,s,r,a,l=this._clickTolerance();if(!this._pxBounds||!this._pxBounds.contains(t))return!1;for(i=0,s=this._parts.length;i<s;i++)for(o=0,n=(r=(a=this._parts[i]).length)-1;o<r;n=o++)if((e||0!==o)&&_i(t,a[n],a[o])<=l)return!0;return!1}});function ro(t,e){return new so(t,e)}so._flat=Ii;var ao=so.extend({options:{fill:!0},isEmpty:function(){return!this._latlngs.length||!this._latlngs[0].length},getCenter:function(){if(!this._map)throw new Error("Must add layer to map before using getCenter()");var t,e,i,o,n,s,r,a,l,d=this._rings[0],c=d.length;if(!c)return null;for(s=r=a=0,t=0,e=c-1;t<c;e=t++)i=d[t],o=d[e],n=i.y*o.x-o.y*i.x,r+=(i.x+o.x)*n,a+=(i.y+o.y)*n,s+=3*n;return l=0===s?d[0]:[r/s,a/s],this._map.layerPointToLatLng(l)},_convertLatLngs:function(t){var e=so.prototype._convertLatLngs.call(this,t),i=e.length;return i>=2&&e[0]instanceof q&&e[0].equals(e[i-1])&&e.pop(),e},_setLatLngs:function(t){so.prototype._setLatLngs.call(this,t),zi(this._latlngs)&&(this._latlngs=[this._latlngs])},_defaultShape:function(){return zi(this._latlngs[0])?this._latlngs[0]:this._latlngs[0][0]},_clipPoints:function(){var t=this._renderer._bounds,e=this.options.weight,i=new I(e,e);if(t=new R(t.min.subtract(i),t.max.add(i)),this._parts=[],this._pxBounds&&this._pxBounds.intersects(t))if(this.options.noClip)this._parts=this._rings;else for(var o,n=0,s=this._rings.length;n<s;n++)(o=Li(this._rings[n],t,!0)).length&&this._parts.push(o)},_updatePath:function(){this._renderer._updatePoly(this,!0)},_containsPoint:function(t){var e,i,o,n,s,r,a,l,d=!1;if(!this._pxBounds||!this._pxBounds.contains(t))return!1;for(n=0,a=this._parts.length;n<a;n++)for(s=0,r=(l=(e=this._parts[n]).length)-1;s<l;r=s++)i=e[s],o=e[r],i.y>t.y!=o.y>t.y&&t.x<(o.x-i.x)*(t.y-i.y)/(o.y-i.y)+i.x&&(d=!d);return d||so.prototype._containsPoint.call(this,t,!0)}});function lo(t,e){return new ao(t,e)}var co=Vi.extend({initialize:function(t,e){m(this,e),this._layers={},t&&this.addData(t)},addData:function(t){var e,i,o,n=b(t)?t:t.features;if(n){for(e=0,i=n.length;e<i;e++)((o=n[e]).geometries||o.geometry||o.features||o.coordinates)&&this.addData(o);return this}var s=this.options;if(s.filter&&!s.filter(t))return this;var r=ho(t,s);return r?(r.feature=vo(t),r.defaultOptions=r.options,this.resetStyle(r),s.onEachFeature&&s.onEachFeature(t,r),this.addLayer(r)):this},resetStyle:function(t){return t.options=o({},t.defaultOptions),this._setLayerStyle(t,this.options.style),this},setStyle:function(t){return this.eachLayer(function(e){this._setLayerStyle(e,t)},this)},_setLayerStyle:function(t,e){t.setStyle&&("function"==typeof e&&(e=e(t.feature)),t.setStyle(e))}});function ho(t,e){var i,o,n,s,r="Feature"===t.type?t.geometry:t,a=r?r.coordinates:null,l=[],d=e&&e.pointToLayer,c=e&&e.coordsToLatLng||uo;if(!a&&!r)return null;switch(r.type){case"Point":return i=c(a),d?d(t,i):new Qi(i);case"MultiPoint":for(n=0,s=a.length;n<s;n++)i=c(a[n]),l.push(d?d(t,i):new Qi(i));return new Vi(l);case"LineString":case"MultiLineString":return o=po(a,"LineString"===r.type?0:1,c),new so(o,e);case"Polygon":case"MultiPolygon":return o=po(a,"Polygon"===r.type?1:2,c),new ao(o,e);case"GeometryCollection":for(n=0,s=r.geometries.length;n<s;n++){var h=ho({geometry:r.geometries[n],type:"Feature",properties:t.properties},e);h&&l.push(h)}return new Vi(l);default:throw new Error("Invalid GeoJSON object.")}}function uo(t){return new q(t[1],t[0],t[2])}function po(t,e,i){for(var o,n=[],s=0,r=t.length;s<r;s++)o=e?po(t[s],e-1,i):(i||uo)(t[s]),n.push(o);return n}function mo(t,e){return e="number"==typeof e?e:6,void 0!==t.alt?[h(t.lng,e),h(t.lat,e),h(t.alt,e)]:[h(t.lng,e),h(t.lat,e)]}function go(t,e,i,o){for(var n=[],s=0,r=t.length;s<r;s++)n.push(e?go(t[s],e-1,i,o):mo(t[s],o));return!e&&i&&n.push(n[0]),n}function fo(t,e){return t.feature?o({},t.feature,{geometry:e}):vo(e)}function vo(t){return"Feature"===t.type||"FeatureCollection"===t.type?t:{type:"Feature",properties:{},geometry:t}}var bo={toGeoJSON:function(t){return fo(this,{type:"Point",coordinates:mo(this.getLatLng(),t)})}};function yo(t,e){return new co(t,e)}Qi.include(bo),oo.include(bo),eo.include(bo),so.include({toGeoJSON:function(t){var e=!zi(this._latlngs);return fo(this,{type:(e?"Multi":"")+"LineString",coordinates:go(this._latlngs,e?1:0,!1,t)})}}),ao.include({toGeoJSON:function(t){var e=!zi(this._latlngs),i=e&&!zi(this._latlngs[0]),o=go(this._latlngs,i?2:e?1:0,!0,t);return e||(o=[o]),fo(this,{type:(i?"Multi":"")+"Polygon",coordinates:o})}}),Hi.include({toMultiPoint:function(t){var e=[];return this.eachLayer(function(i){e.push(i.toGeoJSON(t).geometry.coordinates)}),fo(this,{type:"MultiPoint",coordinates:e})},toGeoJSON:function(t){var e=this.feature&&this.feature.geometry&&this.feature.geometry.type;if("MultiPoint"===e)return this.toMultiPoint(t);var i="GeometryCollection"===e,o=[];return this.eachLayer(function(e){if(e.toGeoJSON){var n=e.toGeoJSON(t);if(i)o.push(n.geometry);else{var s=vo(n);"FeatureCollection"===s.type?o.push.apply(o,s.features):o.push(s)}}}),i?fo(this,{geometries:o,type:"GeometryCollection"}):{type:"FeatureCollection",features:o}}});var xo=yo,wo=ji.extend({options:{opacity:1,alt:"",interactive:!1,crossOrigin:!1,errorOverlayUrl:"",zIndex:1,className:""},initialize:function(t,e,i){this._url=t,this._bounds=F(e),m(this,i)},onAdd:function(){this._image||(this._initImage(),this.options.opacity<1&&this._updateOpacity()),this.options.interactive&&(ve(this._image,"leaflet-interactive"),this.addInteractiveTarget(this._image)),this.getPane().appendChild(this._image),this._reset()},onRemove:function(){ue(this._image),this.options.interactive&&this.removeInteractiveTarget(this._image)},setOpacity:function(t){return this.options.opacity=t,this._image&&this._updateOpacity(),this},setStyle:function(t){return t.opacity&&this.setOpacity(t.opacity),this},bringToFront:function(){return this._map&&me(this._image),this},bringToBack:function(){return this._map&&ge(this._image),this},setUrl:function(t){return this._url=t,this._image&&(this._image.src=t),this},setBounds:function(t){return this._bounds=F(t),this._map&&this._reset(),this},getEvents:function(){var t={zoom:this._reset,viewreset:this._reset};return this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},getBounds:function(){return this._bounds},getElement:function(){return this._image},_initImage:function(){var t="IMG"===this._url.tagName,e=this._image=t?this._url:he("img");ve(e,"leaflet-image-layer"),this._zoomAnimated&&ve(e,"leaflet-zoom-animated"),this.options.className&&ve(e,this.options.className),e.onselectstart=c,e.onmousemove=c,e.onload=s(this.fire,this,"load"),e.onerror=s(this._overlayOnError,this,"error"),(this.options.crossOrigin||""===this.options.crossOrigin)&&(e.crossOrigin=!0===this.options.crossOrigin?"":this.options.crossOrigin),this.options.zIndex&&this._updateZIndex(),t?this._url=e.src:(e.src=this._url,e.alt=this.options.alt)},_animateZoom:function(t){var e=this._map.getZoomScale(t.zoom),i=this._map._latLngBoundsToNewLayerBounds(this._bounds,t.zoom,t.center).min;Ce(this._image,i,e)},_reset:function(){var t=this._image,e=new R(this._map.latLngToLayerPoint(this._bounds.getNorthWest()),this._map.latLngToLayerPoint(this._bounds.getSouthEast())),i=e.getSize();Se(t,e.min),t.style.width=i.x+"px",t.style.height=i.y+"px"},_updateOpacity:function(){we(this._image,this.options.opacity)},_updateZIndex:function(){this._image&&void 0!==this.options.zIndex&&null!==this.options.zIndex&&(this._image.style.zIndex=this.options.zIndex)},_overlayOnError:function(){this.fire("error");var t=this.options.errorOverlayUrl;t&&this._url!==t&&(this._url=t,this._image.src=t)}}),_o=function(t,e,i){return new wo(t,e,i)},ko=wo.extend({options:{autoplay:!0,loop:!0,keepAspectRatio:!0},_initImage:function(){var t="VIDEO"===this._url.tagName,e=this._image=t?this._url:he("video");if(ve(e,"leaflet-image-layer"),this._zoomAnimated&&ve(e,"leaflet-zoom-animated"),e.onselectstart=c,e.onmousemove=c,e.onloadeddata=s(this.fire,this,"load"),t){for(var i=e.getElementsByTagName("source"),o=[],n=0;n<i.length;n++)o.push(i[n].src);this._url=i.length>0?o:[e.src]}else{b(this._url)||(this._url=[this._url]),!this.options.keepAspectRatio&&e.style.hasOwnProperty("objectFit")&&(e.style.objectFit="fill"),e.autoplay=!!this.options.autoplay,e.loop=!!this.options.loop;for(var r=0;r<this._url.length;r++){var a=he("source");a.src=this._url[r],e.appendChild(a)}}}});function Co(t,e,i){return new ko(t,e,i)}var So=wo.extend({_initImage:function(){var t=this._image=this._url;ve(t,"leaflet-image-layer"),this._zoomAnimated&&ve(t,"leaflet-zoom-animated"),t.onselectstart=c,t.onmousemove=c}});function Ao(t,e,i){return new So(t,e,i)}var $o=ji.extend({options:{offset:[0,7],className:"",pane:"popupPane"},initialize:function(t,e){m(this,t),this._source=e},onAdd:function(t){this._zoomAnimated=t._zoomAnimated,this._container||this._initLayout(),t._fadeAnimated&&we(this._container,0),clearTimeout(this._removeTimeout),this.getPane().appendChild(this._container),this.update(),t._fadeAnimated&&we(this._container,1),this.bringToFront()},onRemove:function(t){t._fadeAnimated?(we(this._container,0),this._removeTimeout=setTimeout(s(ue,void 0,this._container),200)):ue(this._container)},getLatLng:function(){return this._latlng},setLatLng:function(t){return this._latlng=U(t),this._map&&(this._updatePosition(),this._adjustPan()),this},getContent:function(){return this._content},setContent:function(t){return this._content=t,this.update(),this},getElement:function(){return this._container},update:function(){this._map&&(this._container.style.visibility="hidden",this._updateContent(),this._updateLayout(),this._updatePosition(),this._container.style.visibility="",this._adjustPan())},getEvents:function(){var t={zoom:this._updatePosition,viewreset:this._updatePosition};return this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},isOpen:function(){return!!this._map&&this._map.hasLayer(this)},bringToFront:function(){return this._map&&me(this._container),this},bringToBack:function(){return this._map&&ge(this._container),this},_prepareOpen:function(t,e,i){if(e instanceof ji||(i=e,e=t),e instanceof Vi)for(var o in t._layers){e=t._layers[o];break}if(!i)if(e.getCenter)i=e.getCenter();else{if(!e.getLatLng)throw new Error("Unable to get source layer LatLng.");i=e.getLatLng()}return this._source=e,this.update(),i},_updateContent:function(){if(this._content){var t=this._contentNode,e="function"==typeof this._content?this._content(this._source||this):this._content;if("string"==typeof e)t.innerHTML=e;else{for(;t.hasChildNodes();)t.removeChild(t.firstChild);t.appendChild(e)}this.fire("contentupdate")}},_updatePosition:function(){if(this._map){var t=this._map.latLngToLayerPoint(this._latlng),e=P(this.options.offset),i=this._getAnchor();this._zoomAnimated?Se(this._container,t.add(i)):e=e.add(t).add(i);var o=this._containerBottom=-e.y,n=this._containerLeft=-Math.round(this._containerWidth/2)+e.x;this._container.style.bottom=o+"px",this._container.style.left=n+"px"}},_getAnchor:function(){return[0,0]}}),Eo=$o.extend({options:{maxWidth:300,minWidth:50,maxHeight:null,autoPan:!0,autoPanPaddingTopLeft:null,autoPanPaddingBottomRight:null,autoPanPadding:[5,5],keepInView:!1,closeButton:!0,autoClose:!0,closeOnEscapeKey:!0,className:""},openOn:function(t){return t.openPopup(this),this},onAdd:function(t){$o.prototype.onAdd.call(this,t),t.fire("popupopen",{popup:this}),this._source&&(this._source.fire("popupopen",{popup:this},!0),this._source instanceof to||this._source.on("preclick",Fe))},onRemove:function(t){$o.prototype.onRemove.call(this,t),t.fire("popupclose",{popup:this}),this._source&&(this._source.fire("popupclose",{popup:this},!0),this._source instanceof to||this._source.off("preclick",Fe))},getEvents:function(){var t=$o.prototype.getEvents.call(this);return(void 0!==this.options.closeOnClick?this.options.closeOnClick:this._map.options.closePopupOnClick)&&(t.preclick=this._close),this.options.keepInView&&(t.moveend=this._adjustPan),t},_close:function(){this._map&&this._map.closePopup(this)},_initLayout:function(){var t="leaflet-popup",e=this._container=he("div",t+" "+(this.options.className||"")+" leaflet-zoom-animated"),i=this._wrapper=he("div",t+"-content-wrapper",e);if(this._contentNode=he("div",t+"-content",i),Ue(i),qe(this._contentNode),Le(i,"contextmenu",Fe),this._tipContainer=he("div",t+"-tip-container",e),this._tip=he("div",t+"-tip",this._tipContainer),this.options.closeButton){var o=this._closeButton=he("a",t+"-close-button",e);o.href="#close",o.innerHTML="×",Le(o,"click",this._onCloseButtonClick,this)}},_updateLayout:function(){var t=this._contentNode,e=t.style;e.width="",e.whiteSpace="nowrap";var i=t.offsetWidth;i=Math.min(i,this.options.maxWidth),i=Math.max(i,this.options.minWidth),e.width=i+1+"px",e.whiteSpace="",e.height="";var o=t.offsetHeight,n=this.options.maxHeight,s="leaflet-popup-scrolled";n&&o>n?(e.height=n+"px",ve(t,s)):be(t,s),this._containerWidth=this._container.offsetWidth},_animateZoom:function(t){var e=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center),i=this._getAnchor();Se(this._container,e.add(i))},_adjustPan:function(){if(this.options.autoPan){this._map._panAnim&&this._map._panAnim.stop();var t=this._map,e=parseInt(ce(this._container,"marginBottom"),10)||0,i=this._container.offsetHeight+e,o=this._containerWidth,n=new I(this._containerLeft,-i-this._containerBottom);n._add(Ae(this._container));var s=t.layerPointToContainerPoint(n),r=P(this.options.autoPanPadding),a=P(this.options.autoPanPaddingTopLeft||r),l=P(this.options.autoPanPaddingBottomRight||r),d=t.getSize(),c=0,h=0;s.x+o+l.x>d.x&&(c=s.x+o-d.x+l.x),s.x-c-a.x<0&&(c=s.x-a.x),s.y+i+l.y>d.y&&(h=s.y+i-d.y+l.y),s.y-h-a.y<0&&(h=s.y-a.y),(c||h)&&t.fire("autopanstart").panBy([c,h])}},_onCloseButtonClick:function(t){this._close(),He(t)},_getAnchor:function(){return P(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}}),To=function(t,e){return new Eo(t,e)};ii.mergeOptions({closePopupOnClick:!0}),ii.include({openPopup:function(t,e,i){return t instanceof Eo||(t=new Eo(i).setContent(t)),e&&t.setLatLng(e),this.hasLayer(t)?this:(this._popup&&this._popup.options.autoClose&&this.closePopup(),this._popup=t,this.addLayer(t))},closePopup:function(t){return t&&t!==this._popup||(t=this._popup,this._popup=null),t&&this.removeLayer(t),this}}),ji.include({bindPopup:function(t,e){return t instanceof Eo?(m(t,e),this._popup=t,t._source=this):(this._popup&&!e||(this._popup=new Eo(e,this)),this._popup.setContent(t)),this._popupHandlersAdded||(this.on({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(t,e){return this._popup&&this._map&&(e=this._popup._prepareOpen(this,t,e),this._map.openPopup(this._popup,e)),this},closePopup:function(){return this._popup&&this._popup._close(),this},togglePopup:function(t){return this._popup&&(this._popup._map?this.closePopup():this.openPopup(t)),this},isPopupOpen:function(){return!!this._popup&&this._popup.isOpen()},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},getPopup:function(){return this._popup},_openPopup:function(t){var e=t.layer||t.target;this._popup&&this._map&&(He(t),e instanceof to?this.openPopup(t.layer||t.target,t.latlng):this._map.hasLayer(this._popup)&&this._popup._source===e?this.closePopup():this.openPopup(e,t.latlng))},_movePopup:function(t){this._popup.setLatLng(t.latlng)},_onKeyPress:function(t){13===t.originalEvent.keyCode&&this._openPopup(t)}});var Do=$o.extend({options:{pane:"tooltipPane",offset:[0,0],direction:"auto",permanent:!1,sticky:!1,interactive:!1,opacity:.9},onAdd:function(t){$o.prototype.onAdd.call(this,t),this.setOpacity(this.options.opacity),t.fire("tooltipopen",{tooltip:this}),this._source&&this._source.fire("tooltipopen",{tooltip:this},!0)},onRemove:function(t){$o.prototype.onRemove.call(this,t),t.fire("tooltipclose",{tooltip:this}),this._source&&this._source.fire("tooltipclose",{tooltip:this},!0)},getEvents:function(){var t=$o.prototype.getEvents.call(this);return Ct&&!this.options.permanent&&(t.preclick=this._close),t},_close:function(){this._map&&this._map.closeTooltip(this)},_initLayout:function(){var t="leaflet-tooltip "+(this.options.className||"")+" leaflet-zoom-"+(this._zoomAnimated?"animated":"hide");this._contentNode=this._container=he("div",t)},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(t){var e=this._map,i=this._container,o=e.latLngToContainerPoint(e.getCenter()),n=e.layerPointToContainerPoint(t),s=this.options.direction,r=i.offsetWidth,a=i.offsetHeight,l=P(this.options.offset),d=this._getAnchor();"top"===s?t=t.add(P(-r/2+l.x,-a+l.y+d.y,!0)):"bottom"===s?t=t.subtract(P(r/2-l.x,-l.y,!0)):"center"===s?t=t.subtract(P(r/2+l.x,a/2-d.y+l.y,!0)):"right"===s||"auto"===s&&n.x<o.x?(s="right",t=t.add(P(l.x+d.x,d.y-a/2+l.y,!0))):(s="left",t=t.subtract(P(r+d.x-l.x,a/2-d.y-l.y,!0))),be(i,"leaflet-tooltip-right"),be(i,"leaflet-tooltip-left"),be(i,"leaflet-tooltip-top"),be(i,"leaflet-tooltip-bottom"),ve(i,"leaflet-tooltip-"+s),Se(i,t)},_updatePosition:function(){var t=this._map.latLngToLayerPoint(this._latlng);this._setPosition(t)},setOpacity:function(t){this.options.opacity=t,this._container&&we(this._container,t)},_animateZoom:function(t){var e=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center);this._setPosition(e)},_getAnchor:function(){return P(this._source&&this._source._getTooltipAnchor&&!this.options.sticky?this._source._getTooltipAnchor():[0,0])}}),Mo=function(t,e){return new Do(t,e)};ii.include({openTooltip:function(t,e,i){return t instanceof Do||(t=new Do(i).setContent(t)),e&&t.setLatLng(e),this.hasLayer(t)?this:this.addLayer(t)},closeTooltip:function(t){return t&&this.removeLayer(t),this}}),ji.include({bindTooltip:function(t,e){return t instanceof Do?(m(t,e),this._tooltip=t,t._source=this):(this._tooltip&&!e||(this._tooltip=new Do(e,this)),this._tooltip.setContent(t)),this._initTooltipInteractions(),this._tooltip.options.permanent&&this._map&&this._map.hasLayer(this)&&this.openTooltip(),this},unbindTooltip:function(){return this._tooltip&&(this._initTooltipInteractions(!0),this.closeTooltip(),this._tooltip=null),this},_initTooltipInteractions:function(t){if(t||!this._tooltipHandlersAdded){var e=t?"off":"on",i={remove:this.closeTooltip,move:this._moveTooltip};this._tooltip.options.permanent?i.add=this._openTooltip:(i.mouseover=this._openTooltip,i.mouseout=this.closeTooltip,this._tooltip.options.sticky&&(i.mousemove=this._moveTooltip),Ct&&(i.click=this._openTooltip)),this[e](i),this._tooltipHandlersAdded=!t}},openTooltip:function(t,e){return this._tooltip&&this._map&&(e=this._tooltip._prepareOpen(this,t,e),this._map.openTooltip(this._tooltip,e),this._tooltip.options.interactive&&this._tooltip._container&&(ve(this._tooltip._container,"leaflet-clickable"),this.addInteractiveTarget(this._tooltip._container))),this},closeTooltip:function(){return this._tooltip&&(this._tooltip._close(),this._tooltip.options.interactive&&this._tooltip._container&&(be(this._tooltip._container,"leaflet-clickable"),this.removeInteractiveTarget(this._tooltip._container))),this},toggleTooltip:function(t){return this._tooltip&&(this._tooltip._map?this.closeTooltip():this.openTooltip(t)),this},isTooltipOpen:function(){return this._tooltip.isOpen()},setTooltipContent:function(t){return this._tooltip&&this._tooltip.setContent(t),this},getTooltip:function(){return this._tooltip},_openTooltip:function(t){var e=t.layer||t.target;this._tooltip&&this._map&&this.openTooltip(e,this._tooltip.options.sticky?t.latlng:void 0)},_moveTooltip:function(t){var e,i,o=t.latlng;this._tooltip.options.sticky&&t.originalEvent&&(e=this._map.mouseEventToContainerPoint(t.originalEvent),i=this._map.containerPointToLayerPoint(e),o=this._map.layerPointToLatLng(i)),this._tooltip.setLatLng(o)}});var zo=Yi.extend({options:{iconSize:[12,12],html:!1,bgPos:null,className:"leaflet-div-icon"},createIcon:function(t){var e=t&&"DIV"===t.tagName?t:document.createElement("div"),i=this.options;if(i.html instanceof Element?(pe(e),e.appendChild(i.html)):e.innerHTML=!1!==i.html?i.html:"",i.bgPos){var o=P(i.bgPos);e.style.backgroundPosition=-o.x+"px "+-o.y+"px"}return this._setIconStyles(e,"icon"),e},createShadow:function(){return null}});function Io(t){return new zo(t)}Yi.Default=Gi;var Oo=ji.extend({options:{tileSize:256,opacity:1,updateWhenIdle:yt,updateWhenZooming:!0,updateInterval:200,zIndex:1,bounds:null,minZoom:0,maxZoom:void 0,maxNativeZoom:void 0,minNativeZoom:void 0,noWrap:!1,pane:"tilePane",className:"",keepBuffer:2},initialize:function(t){m(this,t)},onAdd:function(){this._initContainer(),this._levels={},this._tiles={},this._resetView(),this._update()},beforeAdd:function(t){t._addZoomLimit(this)},onRemove:function(t){this._removeAllTiles(),ue(this._container),t._removeZoomLimit(this),this._container=null,this._tileZoom=void 0},bringToFront:function(){return this._map&&(me(this._container),this._setAutoZIndex(Math.max)),this},bringToBack:function(){return this._map&&(ge(this._container),this._setAutoZIndex(Math.min)),this},getContainer:function(){return this._container},setOpacity:function(t){return this.options.opacity=t,this._updateOpacity(),this},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},isLoading:function(){return this._loading},redraw:function(){return this._map&&(this._removeAllTiles(),this._update()),this},getEvents:function(){var t={viewprereset:this._invalidateAll,viewreset:this._resetView,zoom:this._resetView,moveend:this._onMoveEnd};return this.options.updateWhenIdle||(this._onMove||(this._onMove=l(this._onMoveEnd,this.options.updateInterval,this)),t.move=this._onMove),this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},createTile:function(){return document.createElement("div")},getTileSize:function(){var t=this.options.tileSize;return t instanceof I?t:new I(t,t)},_updateZIndex:function(){this._container&&void 0!==this.options.zIndex&&null!==this.options.zIndex&&(this._container.style.zIndex=this.options.zIndex)},_setAutoZIndex:function(t){for(var e,i=this.getPane().children,o=-t(-1/0,1/0),n=0,s=i.length;n<s;n++)e=i[n].style.zIndex,i[n]!==this._container&&e&&(o=t(o,+e));isFinite(o)&&(this.options.zIndex=o+t(-1,1),this._updateZIndex())},_updateOpacity:function(){if(this._map&&!et){we(this._container,this.options.opacity);var t=+new Date,e=!1,i=!1;for(var o in this._tiles){var n=this._tiles[o];if(n.current&&n.loaded){var s=Math.min(1,(t-n.loaded)/200);we(n.el,s),s<1?e=!0:(n.active?i=!0:this._onOpaqueTile(n),n.active=!0)}}i&&!this._noPrune&&this._pruneTiles(),e&&($(this._fadeFrame),this._fadeFrame=A(this._updateOpacity,this))}},_onOpaqueTile:c,_initContainer:function(){this._container||(this._container=he("div","leaflet-layer "+(this.options.className||"")),this._updateZIndex(),this.options.opacity<1&&this._updateOpacity(),this.getPane().appendChild(this._container))},_updateLevels:function(){var t=this._tileZoom,e=this.options.maxZoom;if(void 0!==t){for(var i in this._levels)this._levels[i].el.children.length||i===t?(this._levels[i].el.style.zIndex=e-Math.abs(t-i),this._onUpdateLevel(i)):(ue(this._levels[i].el),this._removeTilesAtZoom(i),this._onRemoveLevel(i),delete this._levels[i]);var o=this._levels[t],n=this._map;return o||((o=this._levels[t]={}).el=he("div","leaflet-tile-container leaflet-zoom-animated",this._container),o.el.style.zIndex=e,o.origin=n.project(n.unproject(n.getPixelOrigin()),t).round(),o.zoom=t,this._setZoomTransform(o,n.getCenter(),n.getZoom()),c(o.el.offsetWidth),this._onCreateLevel(o)),this._level=o,o}},_onUpdateLevel:c,_onRemoveLevel:c,_onCreateLevel:c,_pruneTiles:function(){if(this._map){var t,e,i=this._map.getZoom();if(i>this.options.maxZoom||i<this.options.minZoom)this._removeAllTiles();else{for(t in this._tiles)(e=this._tiles[t]).retain=e.current;for(t in this._tiles)if((e=this._tiles[t]).current&&!e.active){var o=e.coords;this._retainParent(o.x,o.y,o.z,o.z-5)||this._retainChildren(o.x,o.y,o.z,o.z+2)}for(t in this._tiles)this._tiles[t].retain||this._removeTile(t)}}},_removeTilesAtZoom:function(t){for(var e in this._tiles)this._tiles[e].coords.z===t&&this._removeTile(e)},_removeAllTiles:function(){for(var t in this._tiles)this._removeTile(t)},_invalidateAll:function(){for(var t in this._levels)ue(this._levels[t].el),this._onRemoveLevel(t),delete this._levels[t];this._removeAllTiles(),this._tileZoom=void 0},_retainParent:function(t,e,i,o){var n=Math.floor(t/2),s=Math.floor(e/2),r=i-1,a=new I(+n,+s);a.z=+r;var l=this._tileCoordsToKey(a),d=this._tiles[l];return d&&d.active?(d.retain=!0,!0):(d&&d.loaded&&(d.retain=!0),r>o&&this._retainParent(n,s,r,o))},_retainChildren:function(t,e,i,o){for(var n=2*t;n<2*t+2;n++)for(var s=2*e;s<2*e+2;s++){var r=new I(n,s);r.z=i+1;var a=this._tileCoordsToKey(r),l=this._tiles[a];l&&l.active?l.retain=!0:(l&&l.loaded&&(l.retain=!0),i+1<o&&this._retainChildren(n,s,i+1,o))}},_resetView:function(t){var e=t&&(t.pinch||t.flyTo);this._setView(this._map.getCenter(),this._map.getZoom(),e,e)},_animateZoom:function(t){this._setView(t.center,t.zoom,!0,t.noUpdate)},_clampZoom:function(t){var e=this.options;return void 0!==e.minNativeZoom&&t<e.minNativeZoom?e.minNativeZoom:void 0!==e.maxNativeZoom&&e.maxNativeZoom<t?e.maxNativeZoom:t},_setView:function(t,e,i,o){var n=this._clampZoom(Math.round(e));(void 0!==this.options.maxZoom&&n>this.options.maxZoom||void 0!==this.options.minZoom&&n<this.options.minZoom)&&(n=void 0);var s=this.options.updateWhenZooming&&n!==this._tileZoom;o&&!s||(this._tileZoom=n,this._abortLoading&&this._abortLoading(),this._updateLevels(),this._resetGrid(),void 0!==n&&this._update(t),i||this._pruneTiles(),this._noPrune=!!i),this._setZoomTransforms(t,e)},_setZoomTransforms:function(t,e){for(var i in this._levels)this._setZoomTransform(this._levels[i],t,e)},_setZoomTransform:function(t,e,i){var o=this._map.getZoomScale(i,t.zoom),n=t.origin.multiplyBy(o).subtract(this._map._getNewPixelOrigin(e,i)).round();bt?Ce(t.el,n,o):Se(t.el,n)},_resetGrid:function(){var t=this._map,e=t.options.crs,i=this._tileSize=this.getTileSize(),o=this._tileZoom,n=this._map.getPixelWorldBounds(this._tileZoom);n&&(this._globalTileRange=this._pxBoundsToTileRange(n)),this._wrapX=e.wrapLng&&!this.options.noWrap&&[Math.floor(t.project([0,e.wrapLng[0]],o).x/i.x),Math.ceil(t.project([0,e.wrapLng[1]],o).x/i.y)],this._wrapY=e.wrapLat&&!this.options.noWrap&&[Math.floor(t.project([e.wrapLat[0],0],o).y/i.x),Math.ceil(t.project([e.wrapLat[1],0],o).y/i.y)]},_onMoveEnd:function(){this._map&&!this._map._animatingZoom&&this._update()},_getTiledPixelBounds:function(t){var e=this._map,i=e._animatingZoom?Math.max(e._animateToZoom,e.getZoom()):e.getZoom(),o=e.getZoomScale(i,this._tileZoom),n=e.project(t,this._tileZoom).floor(),s=e.getSize().divideBy(2*o);return new R(n.subtract(s),n.add(s))},_update:function(t){var e=this._map;if(e){var i=this._clampZoom(e.getZoom());if(void 0===t&&(t=e.getCenter()),void 0!==this._tileZoom){var o=this._getTiledPixelBounds(t),n=this._pxBoundsToTileRange(o),s=n.getCenter(),r=[],a=this.options.keepBuffer,l=new R(n.getBottomLeft().subtract([a,-a]),n.getTopRight().add([a,-a]));if(!(isFinite(n.min.x)&&isFinite(n.min.y)&&isFinite(n.max.x)&&isFinite(n.max.y)))throw new Error("Attempted to load an infinite number of tiles");for(var d in this._tiles){var c=this._tiles[d].coords;c.z===this._tileZoom&&l.contains(new I(c.x,c.y))||(this._tiles[d].current=!1)}if(Math.abs(i-this._tileZoom)>1)this._setView(t,i);else{for(var h=n.min.y;h<=n.max.y;h++)for(var u=n.min.x;u<=n.max.x;u++){var p=new I(u,h);if(p.z=this._tileZoom,this._isValidTile(p)){var m=this._tiles[this._tileCoordsToKey(p)];m?m.current=!0:r.push(p)}}if(r.sort(function(t,e){return t.distanceTo(s)-e.distanceTo(s)}),0!==r.length){this._loading||(this._loading=!0,this.fire("loading"));var g=document.createDocumentFragment();for(u=0;u<r.length;u++)this._addTile(r[u],g);this._level.el.appendChild(g)}}}}},_isValidTile:function(t){var e=this._map.options.crs;if(!e.infinite){var i=this._globalTileRange;if(!e.wrapLng&&(t.x<i.min.x||t.x>i.max.x)||!e.wrapLat&&(t.y<i.min.y||t.y>i.max.y))return!1}if(!this.options.bounds)return!0;var o=this._tileCoordsToBounds(t);return F(this.options.bounds).overlaps(o)},_keyToBounds:function(t){return this._tileCoordsToBounds(this._keyToTileCoords(t))},_tileCoordsToNwSe:function(t){var e=this._map,i=this.getTileSize(),o=t.scaleBy(i),n=o.add(i);return[e.unproject(o,t.z),e.unproject(n,t.z)]},_tileCoordsToBounds:function(t){var e=this._tileCoordsToNwSe(t),i=new B(e[0],e[1]);return this.options.noWrap||(i=this._map.wrapLatLngBounds(i)),i},_tileCoordsToKey:function(t){return t.x+":"+t.y+":"+t.z},_keyToTileCoords:function(t){var e=t.split(":"),i=new I(+e[0],+e[1]);return i.z=+e[2],i},_removeTile:function(t){var e=this._tiles[t];e&&(ue(e.el),delete this._tiles[t],this.fire("tileunload",{tile:e.el,coords:this._keyToTileCoords(t)}))},_initTile:function(t){ve(t,"leaflet-tile");var e=this.getTileSize();t.style.width=e.x+"px",t.style.height=e.y+"px",t.onselectstart=c,t.onmousemove=c,et&&this.options.opacity<1&&we(t,this.options.opacity),nt&&!st&&(t.style.WebkitBackfaceVisibility="hidden")},_addTile:function(t,e){var i=this._getTilePos(t),o=this._tileCoordsToKey(t),n=this.createTile(this._wrapCoords(t),s(this._tileReady,this,t));this._initTile(n),this.createTile.length<2&&A(s(this._tileReady,this,t,null,n)),Se(n,i),this._tiles[o]={el:n,coords:t,current:!0},e.appendChild(n),this.fire("tileloadstart",{tile:n,coords:t})},_tileReady:function(t,e,i){e&&this.fire("tileerror",{error:e,tile:i,coords:t});var o=this._tileCoordsToKey(t);(i=this._tiles[o])&&(i.loaded=+new Date,this._map._fadeAnimated?(we(i.el,0),$(this._fadeFrame),this._fadeFrame=A(this._updateOpacity,this)):(i.active=!0,this._pruneTiles()),e||(ve(i.el,"leaflet-tile-loaded"),this.fire("tileload",{tile:i.el,coords:t})),this._noTilesToLoad()&&(this._loading=!1,this.fire("load"),et||!this._map._fadeAnimated?A(this._pruneTiles,this):setTimeout(s(this._pruneTiles,this),250)))},_getTilePos:function(t){return t.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(t){var e=new I(this._wrapX?d(t.x,this._wrapX):t.x,this._wrapY?d(t.y,this._wrapY):t.y);return e.z=t.z,e},_pxBoundsToTileRange:function(t){var e=this.getTileSize();return new R(t.min.unscaleBy(e).floor(),t.max.unscaleBy(e).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var t in this._tiles)if(!this._tiles[t].loaded)return!1;return!0}});function Lo(t){return new Oo(t)}var Po=Oo.extend({options:{minZoom:0,maxZoom:18,subdomains:"abc",errorTileUrl:"",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1},initialize:function(t,e){this._url=t,(e=m(this,e)).detectRetina&&$t&&e.maxZoom>0&&(e.tileSize=Math.floor(e.tileSize/2),e.zoomReverse?(e.zoomOffset--,e.minZoom++):(e.zoomOffset++,e.maxZoom--),e.minZoom=Math.max(0,e.minZoom)),"string"==typeof e.subdomains&&(e.subdomains=e.subdomains.split("")),nt||this.on("tileunload",this._onTileRemove)},setUrl:function(t,e){return this._url===t&&void 0===e&&(e=!0),this._url=t,e||this.redraw(),this},createTile:function(t,e){var i=document.createElement("img");return Le(i,"load",s(this._tileOnLoad,this,e,i)),Le(i,"error",s(this._tileOnError,this,e,i)),(this.options.crossOrigin||""===this.options.crossOrigin)&&(i.crossOrigin=!0===this.options.crossOrigin?"":this.options.crossOrigin),i.alt="",i.setAttribute("role","presentation"),i.src=this.getTileUrl(t),i},getTileUrl:function(t){var e={r:$t?"@2x":"",s:this._getSubdomain(t),x:t.x,y:t.y,z:this._getZoomForUrl()};if(this._map&&!this._map.options.crs.infinite){var i=this._globalTileRange.max.y-t.y;this.options.tms&&(e.y=i),e["-y"]=i}return v(this._url,o(e,this.options))},_tileOnLoad:function(t,e){et?setTimeout(s(t,this,null,e),0):t(null,e)},_tileOnError:function(t,e,i){var o=this.options.errorTileUrl;o&&e.getAttribute("src")!==o&&(e.src=o),t(i,e)},_onTileRemove:function(t){t.tile.onload=null},_getZoomForUrl:function(){var t=this._tileZoom,e=this.options.maxZoom;return this.options.zoomReverse&&(t=e-t),t+this.options.zoomOffset},_getSubdomain:function(t){var e=Math.abs(t.x+t.y)%this.options.subdomains.length;return this.options.subdomains[e]},_abortLoading:function(){var t,e;for(t in this._tiles)this._tiles[t].coords.z!==this._tileZoom&&((e=this._tiles[t].el).onload=c,e.onerror=c,e.complete||(e.src=x,ue(e),delete this._tiles[t]))},_removeTile:function(t){var e=this._tiles[t];if(e)return at||e.el.setAttribute("src",x),Oo.prototype._removeTile.call(this,t)},_tileReady:function(t,e,i){if(this._map&&(!i||i.getAttribute("src")!==x))return Oo.prototype._tileReady.call(this,t,e,i)}});function Ro(t,e){return new Po(t,e)}var No=Po.extend({defaultWmsParams:{service:"WMS",request:"GetMap",layers:"",styles:"",format:"image/jpeg",transparent:!1,version:"1.1.1"},options:{crs:null,uppercase:!1},initialize:function(t,e){this._url=t;var i=o({},this.defaultWmsParams);for(var n in e)n in this.options||(i[n]=e[n]);var s=(e=m(this,e)).detectRetina&&$t?2:1,r=this.getTileSize();i.width=r.x*s,i.height=r.y*s,this.wmsParams=i},onAdd:function(t){this._crs=this.options.crs||t.options.crs,this._wmsVersion=parseFloat(this.wmsParams.version);var e=this._wmsVersion>=1.3?"crs":"srs";this.wmsParams[e]=this._crs.code,Po.prototype.onAdd.call(this,t)},getTileUrl:function(t){var e=this._tileCoordsToNwSe(t),i=this._crs,o=N(i.project(e[0]),i.project(e[1])),n=o.min,s=o.max,r=(this._wmsVersion>=1.3&&this._crs===qi?[n.y,n.x,s.y,s.x]:[n.x,n.y,s.x,s.y]).join(","),a=Po.prototype.getTileUrl.call(this,t);return a+g(this.wmsParams,a,this.options.uppercase)+(this.options.uppercase?"&BBOX=":"&bbox=")+r},setParams:function(t,e){return o(this.wmsParams,t),e||this.redraw(),this}});function Bo(t,e){return new No(t,e)}Po.WMS=No,Ro.wms=Bo;var Fo=ji.extend({options:{padding:.1,tolerance:0},initialize:function(t){m(this,t),a(this),this._layers=this._layers||{}},onAdd:function(){this._container||(this._initContainer(),this._zoomAnimated&&ve(this._container,"leaflet-zoom-animated")),this.getPane().appendChild(this._container),this._update(),this.on("update",this._updatePaths,this)},onRemove:function(){this.off("update",this._updatePaths,this),this._destroyContainer()},getEvents:function(){var t={viewreset:this._reset,zoom:this._onZoom,moveend:this._update,zoomend:this._onZoomEnd};return this._zoomAnimated&&(t.zoomanim=this._onAnimZoom),t},_onAnimZoom:function(t){this._updateTransform(t.center,t.zoom)},_onZoom:function(){this._updateTransform(this._map.getCenter(),this._map.getZoom())},_updateTransform:function(t,e){var i=this._map.getZoomScale(e,this._zoom),o=Ae(this._container),n=this._map.getSize().multiplyBy(.5+this.options.padding),s=this._map.project(this._center,e),r=this._map.project(t,e).subtract(s),a=n.multiplyBy(-i).add(o).add(n).subtract(r);bt?Ce(this._container,a,i):Se(this._container,a)},_reset:function(){for(var t in this._update(),this._updateTransform(this._center,this._zoom),this._layers)this._layers[t]._reset()},_onZoomEnd:function(){for(var t in this._layers)this._layers[t]._project()},_updatePaths:function(){for(var t in this._layers)this._layers[t]._update()},_update:function(){var t=this.options.padding,e=this._map.getSize(),i=this._map.containerPointToLayerPoint(e.multiplyBy(-t)).round();this._bounds=new R(i,i.add(e.multiplyBy(1+2*t)).round()),this._center=this._map.getCenter(),this._zoom=this._map.getZoom()}}),qo=Fo.extend({getEvents:function(){var t=Fo.prototype.getEvents.call(this);return t.viewprereset=this._onViewPreReset,t},_onViewPreReset:function(){this._postponeUpdatePaths=!0},onAdd:function(){Fo.prototype.onAdd.call(this),this._draw()},_initContainer:function(){var t=this._container=document.createElement("canvas");Le(t,"mousemove",l(this._onMouseMove,32,this),this),Le(t,"click dblclick mousedown mouseup contextmenu",this._onClick,this),Le(t,"mouseout",this._handleMouseOut,this),this._ctx=t.getContext("2d")},_destroyContainer:function(){$(this._redrawRequest),delete this._ctx,ue(this._container),Re(this._container),delete this._container},_updatePaths:function(){if(!this._postponeUpdatePaths){for(var t in this._redrawBounds=null,this._layers)this._layers[t]._update();this._redraw()}},_update:function(){if(!this._map._animatingZoom||!this._bounds){Fo.prototype._update.call(this);var t=this._bounds,e=this._container,i=t.getSize(),o=$t?2:1;Se(e,t.min),e.width=o*i.x,e.height=o*i.y,e.style.width=i.x+"px",e.style.height=i.y+"px",$t&&this._ctx.scale(2,2),this._ctx.translate(-t.min.x,-t.min.y),this.fire("update")}},_reset:function(){Fo.prototype._reset.call(this),this._postponeUpdatePaths&&(this._postponeUpdatePaths=!1,this._updatePaths())},_initPath:function(t){this._updateDashArray(t),this._layers[a(t)]=t;var e=t._order={layer:t,prev:this._drawLast,next:null};this._drawLast&&(this._drawLast.next=e),this._drawLast=e,this._drawFirst=this._drawFirst||this._drawLast},_addPath:function(t){this._requestRedraw(t)},_removePath:function(t){var e=t._order,i=e.next,o=e.prev;i?i.prev=o:this._drawLast=o,o?o.next=i:this._drawFirst=i,delete t._order,delete this._layers[a(t)],this._requestRedraw(t)},_updatePath:function(t){this._extendRedrawBounds(t),t._project(),t._update(),this._requestRedraw(t)},_updateStyle:function(t){this._updateDashArray(t),this._requestRedraw(t)},_updateDashArray:function(t){if("string"==typeof t.options.dashArray){var e,i,o=t.options.dashArray.split(/[, ]+/),n=[];for(i=0;i<o.length;i++){if(e=Number(o[i]),isNaN(e))return;n.push(e)}t.options._dashArray=n}else t.options._dashArray=t.options.dashArray},_requestRedraw:function(t){this._map&&(this._extendRedrawBounds(t),this._redrawRequest=this._redrawRequest||A(this._redraw,this))},_extendRedrawBounds:function(t){if(t._pxBounds){var e=(t.options.weight||0)+1;this._redrawBounds=this._redrawBounds||new R,this._redrawBounds.extend(t._pxBounds.min.subtract([e,e])),this._redrawBounds.extend(t._pxBounds.max.add([e,e]))}},_redraw:function(){this._redrawRequest=null,this._redrawBounds&&(this._redrawBounds.min._floor(),this._redrawBounds.max._ceil()),this._clear(),this._draw(),this._redrawBounds=null},_clear:function(){var t=this._redrawBounds;if(t){var e=t.getSize();this._ctx.clearRect(t.min.x,t.min.y,e.x,e.y)}else this._ctx.clearRect(0,0,this._container.width,this._container.height)},_draw:function(){var t,e=this._redrawBounds;if(this._ctx.save(),e){var i=e.getSize();this._ctx.beginPath(),this._ctx.rect(e.min.x,e.min.y,i.x,i.y),this._ctx.clip()}this._drawing=!0;for(var o=this._drawFirst;o;o=o.next)t=o.layer,(!e||t._pxBounds&&t._pxBounds.intersects(e))&&t._updatePath();this._drawing=!1,this._ctx.restore()},_updatePoly:function(t,e){if(this._drawing){var i,o,n,s,r=t._parts,a=r.length,l=this._ctx;if(a){for(l.beginPath(),i=0;i<a;i++){for(o=0,n=r[i].length;o<n;o++)s=r[i][o],l[o?"lineTo":"moveTo"](s.x,s.y);e&&l.closePath()}this._fillStroke(l,t)}}},_updateCircle:function(t){if(this._drawing&&!t._empty()){var e=t._point,i=this._ctx,o=Math.max(Math.round(t._radius),1),n=(Math.max(Math.round(t._radiusY),1)||o)/o;1!==n&&(i.save(),i.scale(1,n)),i.beginPath(),i.arc(e.x,e.y/n,o,0,2*Math.PI,!1),1!==n&&i.restore(),this._fillStroke(i,t)}},_fillStroke:function(t,e){var i=e.options;i.fill&&(t.globalAlpha=i.fillOpacity,t.fillStyle=i.fillColor||i.color,t.fill(i.fillRule||"evenodd")),i.stroke&&0!==i.weight&&(t.setLineDash&&t.setLineDash(e.options&&e.options._dashArray||[]),t.globalAlpha=i.opacity,t.lineWidth=i.weight,t.strokeStyle=i.color,t.lineCap=i.lineCap,t.lineJoin=i.lineJoin,t.stroke())},_onClick:function(t){for(var e,i,o=this._map.mouseEventToLayerPoint(t),n=this._drawFirst;n;n=n.next)(e=n.layer).options.interactive&&e._containsPoint(o)&&!this._map._draggableMoved(e)&&(i=e);i&&(Ge(t),this._fireEvent([i],t))},_onMouseMove:function(t){if(this._map&&!this._map.dragging.moving()&&!this._map._animatingZoom){var e=this._map.mouseEventToLayerPoint(t);this._handleMouseHover(t,e)}},_handleMouseOut:function(t){var e=this._hoveredLayer;e&&(be(this._container,"leaflet-interactive"),this._fireEvent([e],t,"mouseout"),this._hoveredLayer=null)},_handleMouseHover:function(t,e){for(var i,o,n=this._drawFirst;n;n=n.next)(i=n.layer).options.interactive&&i._containsPoint(e)&&(o=i);o!==this._hoveredLayer&&(this._handleMouseOut(t),o&&(ve(this._container,"leaflet-interactive"),this._fireEvent([o],t,"mouseover"),this._hoveredLayer=o)),this._hoveredLayer&&this._fireEvent([this._hoveredLayer],t)},_fireEvent:function(t,e,i){this._map._fireDOMEvent(e,i||e.type,t)},_bringToFront:function(t){var e=t._order;if(e){var i=e.next,o=e.prev;i&&(i.prev=o,o?o.next=i:i&&(this._drawFirst=i),e.prev=this._drawLast,this._drawLast.next=e,e.next=null,this._drawLast=e,this._requestRedraw(t))}},_bringToBack:function(t){var e=t._order;if(e){var i=e.next,o=e.prev;o&&(o.next=i,i?i.prev=o:o&&(this._drawLast=o),e.prev=null,e.next=this._drawFirst,this._drawFirst.prev=e,this._drawFirst=e,this._requestRedraw(t))}}});function Uo(t){return Et?new qo(t):null}var jo=function(){try{return document.namespaces.add("lvml","urn:schemas-microsoft-com:vml"),function(t){return document.createElement("<lvml:"+t+' class="lvml">')}}catch(t){return function(t){return document.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}}}(),Ho={_initContainer:function(){this._container=he("div","leaflet-vml-container")},_update:function(){this._map._animatingZoom||(Fo.prototype._update.call(this),this.fire("update"))},_initPath:function(t){var e=t._container=jo("shape");ve(e,"leaflet-vml-shape "+(this.options.className||"")),e.coordsize="1 1",t._path=jo("path"),e.appendChild(t._path),this._updateStyle(t),this._layers[a(t)]=t},_addPath:function(t){var e=t._container;this._container.appendChild(e),t.options.interactive&&t.addInteractiveTarget(e)},_removePath:function(t){var e=t._container;ue(e),t.removeInteractiveTarget(e),delete this._layers[a(t)]},_updateStyle:function(t){var e=t._stroke,i=t._fill,o=t.options,n=t._container;n.stroked=!!o.stroke,n.filled=!!o.fill,o.stroke?(e||(e=t._stroke=jo("stroke")),n.appendChild(e),e.weight=o.weight+"px",e.color=o.color,e.opacity=o.opacity,o.dashArray?e.dashStyle=b(o.dashArray)?o.dashArray.join(" "):o.dashArray.replace(/( *, *)/g," "):e.dashStyle="",e.endcap=o.lineCap.replace("butt","flat"),e.joinstyle=o.lineJoin):e&&(n.removeChild(e),t._stroke=null),o.fill?(i||(i=t._fill=jo("fill")),n.appendChild(i),i.color=o.fillColor||o.color,i.opacity=o.fillOpacity):i&&(n.removeChild(i),t._fill=null)},_updateCircle:function(t){var e=t._point.round(),i=Math.round(t._radius),o=Math.round(t._radiusY||i);this._setPath(t,t._empty()?"M0 0":"AL "+e.x+","+e.y+" "+i+","+o+" 0,23592600")},_setPath:function(t,e){t._path.v=e},_bringToFront:function(t){me(t._container)},_bringToBack:function(t){ge(t._container)}},Wo=Dt?jo:X,Vo=Fo.extend({getEvents:function(){var t=Fo.prototype.getEvents.call(this);return t.zoomstart=this._onZoomStart,t},_initContainer:function(){this._container=Wo("svg"),this._container.setAttribute("pointer-events","none"),this._rootGroup=Wo("g"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){ue(this._container),Re(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_onZoomStart:function(){this._update()},_update:function(){if(!this._map._animatingZoom||!this._bounds){Fo.prototype._update.call(this);var t=this._bounds,e=t.getSize(),i=this._container;this._svgSize&&this._svgSize.equals(e)||(this._svgSize=e,i.setAttribute("width",e.x),i.setAttribute("height",e.y)),Se(i,t.min),i.setAttribute("viewBox",[t.min.x,t.min.y,e.x,e.y].join(" ")),this.fire("update")}},_initPath:function(t){var e=t._path=Wo("path");t.options.className&&ve(e,t.options.className),t.options.interactive&&ve(e,"leaflet-interactive"),this._updateStyle(t),this._layers[a(t)]=t},_addPath:function(t){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(t._path),t.addInteractiveTarget(t._path)},_removePath:function(t){ue(t._path),t.removeInteractiveTarget(t._path),delete this._layers[a(t)]},_updatePath:function(t){t._project(),t._update()},_updateStyle:function(t){var e=t._path,i=t.options;e&&(i.stroke?(e.setAttribute("stroke",i.color),e.setAttribute("stroke-opacity",i.opacity),e.setAttribute("stroke-width",i.weight),e.setAttribute("stroke-linecap",i.lineCap),e.setAttribute("stroke-linejoin",i.lineJoin),i.dashArray?e.setAttribute("stroke-dasharray",i.dashArray):e.removeAttribute("stroke-dasharray"),i.dashOffset?e.setAttribute("stroke-dashoffset",i.dashOffset):e.removeAttribute("stroke-dashoffset")):e.setAttribute("stroke","none"),i.fill?(e.setAttribute("fill",i.fillColor||i.color),e.setAttribute("fill-opacity",i.fillOpacity),e.setAttribute("fill-rule",i.fillRule||"evenodd")):e.setAttribute("fill","none"))},_updatePoly:function(t,e){this._setPath(t,Q(t._parts,e))},_updateCircle:function(t){var e=t._point,i=Math.max(Math.round(t._radius),1),o="a"+i+","+(Math.max(Math.round(t._radiusY),1)||i)+" 0 1,0 ",n=t._empty()?"M0 0":"M"+(e.x-i)+","+e.y+o+2*i+",0 "+o+2*-i+",0 ";this._setPath(t,n)},_setPath:function(t,e){t._path.setAttribute("d",e)},_bringToFront:function(t){me(t._path)},_bringToBack:function(t){ge(t._path)}});function Zo(t){return Tt||Dt?new Vo(t):null}Dt&&Vo.include(Ho),ii.include({getRenderer:function(t){var e=t.options.renderer||this._getPaneRenderer(t.options.pane)||this.options.renderer||this._renderer;return e||(e=this._renderer=this._createRenderer()),this.hasLayer(e)||this.addLayer(e),e},_getPaneRenderer:function(t){if("overlayPane"===t||void 0===t)return!1;var e=this._paneRenderers[t];return void 0===e&&(e=this._createRenderer({pane:t}),this._paneRenderers[t]=e),e},_createRenderer:function(t){return this.options.preferCanvas&&Uo(t)||Zo(t)}});var Yo=ao.extend({initialize:function(t,e){ao.prototype.initialize.call(this,this._boundsToLatLngs(t),e)},setBounds:function(t){return this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return[(t=F(t)).getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}});function Ko(t,e){return new Yo(t,e)}Vo.create=Wo,Vo.pointsToPath=Q,co.geometryToLayer=ho,co.coordsToLatLng=uo,co.coordsToLatLngs=po,co.latLngToCoords=mo,co.latLngsToCoords=go,co.getFeature=fo,co.asFeature=vo,ii.mergeOptions({boxZoom:!0});var Go=mi.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._resetStateTimeout=0,t.on("unload",this._destroy,this)},addHooks:function(){Le(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){Re(this._container,"mousedown",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){ue(this._pane),delete this._pane},_resetState:function(){this._resetStateTimeout=0,this._moved=!1},_clearDeferredResetState:function(){0!==this._resetStateTimeout&&(clearTimeout(this._resetStateTimeout),this._resetStateTimeout=0)},_onMouseDown:function(t){if(!t.shiftKey||1!==t.which&&1!==t.button)return!1;this._clearDeferredResetState(),this._resetState(),ee(),Ee(),this._startPoint=this._map.mouseEventToContainerPoint(t),Le(document,{contextmenu:He,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(t){this._moved||(this._moved=!0,this._box=he("div","leaflet-zoom-box",this._container),ve(this._container,"leaflet-crosshair"),this._map.fire("boxzoomstart")),this._point=this._map.mouseEventToContainerPoint(t);var e=new R(this._point,this._startPoint),i=e.getSize();Se(this._box,e.min),this._box.style.width=i.x+"px",this._box.style.height=i.y+"px"},_finish:function(){this._moved&&(ue(this._box),be(this._container,"leaflet-crosshair")),ie(),Te(),Re(document,{contextmenu:He,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(t){if((1===t.which||1===t.button)&&(this._finish(),this._moved)){this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(s(this._resetState,this),0);var e=new B(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point));this._map.fitBounds(e).fire("boxzoomend",{boxZoomBounds:e})}},_onKeyDown:function(t){27===t.keyCode&&this._finish()}});ii.addInitHook("addHandler","boxZoom",Go),ii.mergeOptions({doubleClickZoom:!0});var Xo=mi.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(t){var e=this._map,i=e.getZoom(),o=e.options.zoomDelta,n=t.originalEvent.shiftKey?i-o:i+o;"center"===e.options.doubleClickZoom?e.setZoom(n):e.setZoomAround(t.containerPoint,n)}});ii.addInitHook("addHandler","doubleClickZoom",Xo),ii.mergeOptions({dragging:!0,inertia:!st,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0});var Qo=mi.extend({addHooks:function(){if(!this._draggable){var t=this._map;this._draggable=new xi(t._mapPane,t._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),this._draggable.on("predrag",this._onPreDragLimit,this),t.options.worldCopyJump&&(this._draggable.on("predrag",this._onPreDragWrap,this),t.on("zoomend",this._onZoomEnd,this),t.whenReady(this._onZoomEnd,this))}ve(this._map._container,"leaflet-grab leaflet-touch-drag"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){be(this._map._container,"leaflet-grab"),be(this._map._container,"leaflet-touch-drag"),this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},moving:function(){return this._draggable&&this._draggable._moving},_onDragStart:function(){var t=this._map;if(t._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity){var e=F(this._map.options.maxBounds);this._offsetLimit=N(this._map.latLngToContainerPoint(e.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(e.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))}else this._offsetLimit=null;t.fire("movestart").fire("dragstart"),t.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(t){if(this._map.options.inertia){var e=this._lastTime=+new Date,i=this._lastPos=this._draggable._absPos||this._draggable._newPos;this._positions.push(i),this._times.push(e),this._prunePositions(e)}this._map.fire("move",t).fire("drag",t)},_prunePositions:function(t){for(;this._positions.length>1&&t-this._times[0]>50;)this._positions.shift(),this._times.shift()},_onZoomEnd:function(){var t=this._map.getSize().divideBy(2),e=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=e.subtract(t).x,this._worldWidth=this._map.getPixelWorldBounds().getSize().x},_viscousLimit:function(t,e){return t-(t-e)*this._viscosity},_onPreDragLimit:function(){if(this._viscosity&&this._offsetLimit){var t=this._draggable._newPos.subtract(this._draggable._startPos),e=this._offsetLimit;t.x<e.min.x&&(t.x=this._viscousLimit(t.x,e.min.x)),t.y<e.min.y&&(t.y=this._viscousLimit(t.y,e.min.y)),t.x>e.max.x&&(t.x=this._viscousLimit(t.x,e.max.x)),t.y>e.max.y&&(t.y=this._viscousLimit(t.y,e.max.y)),this._draggable._newPos=this._draggable._startPos.add(t)}},_onPreDragWrap:function(){var t=this._worldWidth,e=Math.round(t/2),i=this._initialWorldOffset,o=this._draggable._newPos.x,n=(o-e+i)%t+e-i,s=(o+e+i)%t-e-i,r=Math.abs(n+i)<Math.abs(s+i)?n:s;this._draggable._absPos=this._draggable._newPos.clone(),this._draggable._newPos.x=r},_onDragEnd:function(t){var e=this._map,i=e.options,o=!i.inertia||this._times.length<2;if(e.fire("dragend",t),o)e.fire("moveend");else{this._prunePositions(+new Date);var n=this._lastPos.subtract(this._positions[0]),s=(this._lastTime-this._times[0])/1e3,r=i.easeLinearity,a=n.multiplyBy(r/s),l=a.distanceTo([0,0]),d=Math.min(i.inertiaMaxSpeed,l),c=a.multiplyBy(d/l),h=d/(i.inertiaDeceleration*r),u=c.multiplyBy(-h/2).round();u.x||u.y?(u=e._limitOffset(u,e.options.maxBounds),A(function(){e.panBy(u,{duration:h,easeLinearity:r,noMoveStart:!0,animate:!0})})):e.fire("moveend")}}});ii.addInitHook("addHandler","dragging",Qo),ii.mergeOptions({keyboard:!0,keyboardPanDelta:80});var Jo=mi.extend({keyCodes:{left:[37],right:[39],down:[40],up:[38],zoomIn:[187,107,61,171],zoomOut:[189,109,54,173]},initialize:function(t){this._map=t,this._setPanDelta(t.options.keyboardPanDelta),this._setZoomDelta(t.options.zoomDelta)},addHooks:function(){var t=this._map._container;t.tabIndex<=0&&(t.tabIndex="0"),Le(t,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.on({focus:this._addHooks,blur:this._removeHooks},this)},removeHooks:function(){this._removeHooks(),Re(this._map._container,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.off({focus:this._addHooks,blur:this._removeHooks},this)},_onMouseDown:function(){if(!this._focused){var t=document.body,e=document.documentElement,i=t.scrollTop||e.scrollTop,o=t.scrollLeft||e.scrollLeft;this._map._container.focus(),window.scrollTo(o,i)}},_onFocus:function(){this._focused=!0,this._map.fire("focus")},_onBlur:function(){this._focused=!1,this._map.fire("blur")},_setPanDelta:function(t){var e,i,o=this._panKeys={},n=this.keyCodes;for(e=0,i=n.left.length;e<i;e++)o[n.left[e]]=[-1*t,0];for(e=0,i=n.right.length;e<i;e++)o[n.right[e]]=[t,0];for(e=0,i=n.down.length;e<i;e++)o[n.down[e]]=[0,t];for(e=0,i=n.up.length;e<i;e++)o[n.up[e]]=[0,-1*t]},_setZoomDelta:function(t){var e,i,o=this._zoomKeys={},n=this.keyCodes;for(e=0,i=n.zoomIn.length;e<i;e++)o[n.zoomIn[e]]=t;for(e=0,i=n.zoomOut.length;e<i;e++)o[n.zoomOut[e]]=-t},_addHooks:function(){Le(document,"keydown",this._onKeyDown,this)},_removeHooks:function(){Re(document,"keydown",this._onKeyDown,this)},_onKeyDown:function(t){if(!(t.altKey||t.ctrlKey||t.metaKey)){var e,i=t.keyCode,o=this._map;if(i in this._panKeys)o._panAnim&&o._panAnim._inProgress||(e=this._panKeys[i],t.shiftKey&&(e=P(e).multiplyBy(3)),o.panBy(e),o.options.maxBounds&&o.panInsideBounds(o.options.maxBounds));else if(i in this._zoomKeys)o.setZoom(o.getZoom()+(t.shiftKey?3:1)*this._zoomKeys[i]);else{if(27!==i||!o._popup||!o._popup.options.closeOnEscapeKey)return;o.closePopup()}He(t)}}});ii.addInitHook("addHandler","keyboard",Jo),ii.mergeOptions({scrollWheelZoom:!0,wheelDebounceTime:40,wheelPxPerZoomLevel:60});var tn=mi.extend({addHooks:function(){Le(this._map._container,"mousewheel",this._onWheelScroll,this),this._delta=0},removeHooks:function(){Re(this._map._container,"mousewheel",this._onWheelScroll,this)},_onWheelScroll:function(t){var e=Ze(t),i=this._map.options.wheelDebounceTime;this._delta+=e,this._lastMousePos=this._map.mouseEventToContainerPoint(t),this._startTime||(this._startTime=+new Date);var o=Math.max(i-(+new Date-this._startTime),0);clearTimeout(this._timer),this._timer=setTimeout(s(this._performZoom,this),o),He(t)},_performZoom:function(){var t=this._map,e=t.getZoom(),i=this._map.options.zoomSnap||0;t._stop();var o=this._delta/(4*this._map.options.wheelPxPerZoomLevel),n=4*Math.log(2/(1+Math.exp(-Math.abs(o))))/Math.LN2,s=i?Math.ceil(n/i)*i:n,r=t._limitZoom(e+(this._delta>0?s:-s))-e;this._delta=0,this._startTime=null,r&&("center"===t.options.scrollWheelZoom?t.setZoom(e+r):t.setZoomAround(this._lastMousePos,e+r))}});ii.addInitHook("addHandler","scrollWheelZoom",tn),ii.mergeOptions({tap:!0,tapTolerance:15});var en=mi.extend({addHooks:function(){Le(this._map._container,"touchstart",this._onDown,this)},removeHooks:function(){Re(this._map._container,"touchstart",this._onDown,this)},_onDown:function(t){if(t.touches){if(je(t),this._fireClick=!0,t.touches.length>1)return this._fireClick=!1,void clearTimeout(this._holdTimeout);var e=t.touches[0],i=e.target;this._startPos=this._newPos=new I(e.clientX,e.clientY),i.tagName&&"a"===i.tagName.toLowerCase()&&ve(i,"leaflet-active"),this._holdTimeout=setTimeout(s(function(){this._isTapValid()&&(this._fireClick=!1,this._onUp(),this._simulateEvent("contextmenu",e))},this),1e3),this._simulateEvent("mousedown",e),Le(document,{touchmove:this._onMove,touchend:this._onUp},this)}},_onUp:function(t){if(clearTimeout(this._holdTimeout),Re(document,{touchmove:this._onMove,touchend:this._onUp},this),this._fireClick&&t&&t.changedTouches){var e=t.changedTouches[0],i=e.target;i&&i.tagName&&"a"===i.tagName.toLowerCase()&&be(i,"leaflet-active"),this._simulateEvent("mouseup",e),this._isTapValid()&&this._simulateEvent("click",e)}},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_onMove:function(t){var e=t.touches[0];this._newPos=new I(e.clientX,e.clientY),this._simulateEvent("mousemove",e)},_simulateEvent:function(t,e){var i=document.createEvent("MouseEvents");i._simulated=!0,e.target._simulatedClick=!0,i.initMouseEvent(t,!0,!0,window,1,e.screenX,e.screenY,e.clientX,e.clientY,!1,!1,!1,!1,0,null),e.target.dispatchEvent(i)}});Ct&&!kt&&ii.addInitHook("addHandler","tap",en),ii.mergeOptions({touchZoom:Ct&&!st,bounceAtZoomLimits:!0});var on=mi.extend({addHooks:function(){ve(this._map._container,"leaflet-touch-zoom"),Le(this._map._container,"touchstart",this._onTouchStart,this)},removeHooks:function(){be(this._map._container,"leaflet-touch-zoom"),Re(this._map._container,"touchstart",this._onTouchStart,this)},_onTouchStart:function(t){var e=this._map;if(t.touches&&2===t.touches.length&&!e._animatingZoom&&!this._zooming){var i=e.mouseEventToContainerPoint(t.touches[0]),o=e.mouseEventToContainerPoint(t.touches[1]);this._centerPoint=e.getSize()._divideBy(2),this._startLatLng=e.containerPointToLatLng(this._centerPoint),"center"!==e.options.touchZoom&&(this._pinchStartLatLng=e.containerPointToLatLng(i.add(o)._divideBy(2))),this._startDist=i.distanceTo(o),this._startZoom=e.getZoom(),this._moved=!1,this._zooming=!0,e._stop(),Le(document,"touchmove",this._onTouchMove,this),Le(document,"touchend",this._onTouchEnd,this),je(t)}},_onTouchMove:function(t){if(t.touches&&2===t.touches.length&&this._zooming){var e=this._map,i=e.mouseEventToContainerPoint(t.touches[0]),o=e.mouseEventToContainerPoint(t.touches[1]),n=i.distanceTo(o)/this._startDist;if(this._zoom=e.getScaleZoom(n,this._startZoom),!e.options.bounceAtZoomLimits&&(this._zoom<e.getMinZoom()&&n<1||this._zoom>e.getMaxZoom()&&n>1)&&(this._zoom=e._limitZoom(this._zoom)),"center"===e.options.touchZoom){if(this._center=this._startLatLng,1===n)return}else{var r=i._add(o)._divideBy(2)._subtract(this._centerPoint);if(1===n&&0===r.x&&0===r.y)return;this._center=e.unproject(e.project(this._pinchStartLatLng,this._zoom).subtract(r),this._zoom)}this._moved||(e._moveStart(!0,!1),this._moved=!0),$(this._animRequest);var a=s(e._move,e,this._center,this._zoom,{pinch:!0,round:!1});this._animRequest=A(a,this,!0),je(t)}},_onTouchEnd:function(){this._moved&&this._zooming?(this._zooming=!1,$(this._animRequest),Re(document,"touchmove",this._onTouchMove),Re(document,"touchend",this._onTouchEnd),this._map.options.zoomAnimation?this._map._animateZoom(this._center,this._map._limitZoom(this._zoom),!0,this._map.options.zoomSnap):this._map._resetView(this._center,this._map._limitZoom(this._zoom))):this._zooming=!1}});ii.addInitHook("addHandler","touchZoom",on),ii.BoxZoom=Go,ii.DoubleClickZoom=Xo,ii.Drag=Qo,ii.Keyboard=Jo,ii.ScrollWheelZoom=tn,ii.Tap=en,ii.TouchZoom=on,Object.freeze=i,t.version=e,t.Control=ni,t.control=si,t.Browser=zt,t.Evented=z,t.Mixin=fi,t.Util=E,t.Class=T,t.Handler=mi,t.extend=o,t.bind=s,t.stamp=a,t.setOptions=m,t.DomEvent=ti,t.DomUtil=Oe,t.PosAnimation=ei,t.Draggable=xi,t.LineUtil=Oi,t.PolyUtil=Pi,t.Point=I,t.point=P,t.Bounds=R,t.bounds=N,t.Transformation=Z,t.transformation=Y,t.Projection=Bi,t.LatLng=q,t.latLng=U,t.LatLngBounds=B,t.latLngBounds=F,t.CRS=j,t.GeoJSON=co,t.geoJSON=yo,t.geoJson=xo,t.Layer=ji,t.LayerGroup=Hi,t.layerGroup=Wi,t.FeatureGroup=Vi,t.featureGroup=Zi,t.ImageOverlay=wo,t.imageOverlay=_o,t.VideoOverlay=ko,t.videoOverlay=Co,t.SVGOverlay=So,t.svgOverlay=Ao,t.DivOverlay=$o,t.Popup=Eo,t.popup=To,t.Tooltip=Do,t.tooltip=Mo,t.Icon=Yi,t.icon=Ki,t.DivIcon=zo,t.divIcon=Io,t.Marker=Qi,t.marker=Ji,t.TileLayer=Po,t.tileLayer=Ro,t.GridLayer=Oo,t.gridLayer=Lo,t.SVG=Vo,t.svg=Zo,t.Renderer=Fo,t.Canvas=qo,t.canvas=Uo,t.Path=to,t.CircleMarker=eo,t.circleMarker=io,t.Circle=oo,t.circle=no,t.Polyline=so,t.polyline=ro,t.Polygon=ao,t.polygon=lo,t.Rectangle=Yo,t.rectangle=Ko,t.Map=ii,t.map=oi;var nn=window.L;t.noConflict=function(){return window.L=nn,this},window.L=t}(bC.exports)),bC.exports);const xC={weight:1,opacity:1,color:"white",fillOpacity:.7,fillColor:"#2387ca"},wC={weight:3,color:"white",fillOpacity:1,fillColor:"#2387ca"},_C=()=>xC;class kC extends dt{static get styles(){return a`
|
|
16412
|
+
*/var wC=(yC||(yC=1,function(t){var e="1.5.1+build.2e3e0ffb",i=Object.freeze;function o(t){var e,i,o,n;for(i=1,o=arguments.length;i<o;i++)for(e in n=arguments[i])t[e]=n[e];return t}Object.freeze=function(t){return t};var n=Object.create||function(){function t(){}return function(e){return t.prototype=e,new t}}();function s(t,e){var i=Array.prototype.slice;if(t.bind)return t.bind.apply(t,i.call(arguments,1));var o=i.call(arguments,2);return function(){return t.apply(e,o.length?o.concat(i.call(arguments)):arguments)}}var r=0;function a(t){return t._leaflet_id=t._leaflet_id||++r,t._leaflet_id}function l(t,e,i){var o,n,s,r;return r=function(){o=!1,n&&(s.apply(i,n),n=!1)},s=function(){o?n=arguments:(t.apply(i,arguments),setTimeout(r,e),o=!0)},s}function d(t,e,i){var o=e[1],n=e[0],s=o-n;return t===o&&i?t:((t-n)%s+s)%s+n}function c(){return!1}function h(t,e){return e=void 0===e?6:e,+(Math.round(t+"e+"+e)+"e-"+e)}function u(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}function p(t){return u(t).split(/\s+/)}function m(t,e){for(var i in t.hasOwnProperty("options")||(t.options=t.options?n(t.options):{}),e)t.options[i]=e[i];return t.options}function g(t,e,i){var o=[];for(var n in t)o.push(encodeURIComponent(i?n.toUpperCase():n)+"="+encodeURIComponent(t[n]));return(e&&-1!==e.indexOf("?")?"&":"?")+o.join("&")}var f=/\{ *([\w_-]+) *\}/g;function v(t,e){return t.replace(f,function(t,i){var o=e[i];if(void 0===o)throw new Error("No value provided for variable "+t);return"function"==typeof o&&(o=o(e)),o})}var b=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)};function y(t,e){for(var i=0;i<t.length;i++)if(t[i]===e)return i;return-1}var x="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=";function w(t){return window["webkit"+t]||window["moz"+t]||window["ms"+t]}var _=0;function k(t){var e=+new Date,i=Math.max(0,16-(e-_));return _=e+i,window.setTimeout(t,i)}var C=window.requestAnimationFrame||w("RequestAnimationFrame")||k,S=window.cancelAnimationFrame||w("CancelAnimationFrame")||w("CancelRequestAnimationFrame")||function(t){window.clearTimeout(t)};function A(t,e,i){if(!i||C!==k)return C.call(window,s(t,e));t.call(e)}function $(t){t&&S.call(window,t)}var E=(Object.freeze||Object)({freeze:i,extend:o,create:n,bind:s,lastId:r,stamp:a,throttle:l,wrapNum:d,falseFn:c,formatNum:h,trim:u,splitWords:p,setOptions:m,getParamString:g,template:v,isArray:b,indexOf:y,emptyImageUrl:x,requestFn:C,cancelFn:S,requestAnimFrame:A,cancelAnimFrame:$});function T(){}function D(t){if("undefined"!=typeof L&&L&&L.Mixin){t=b(t)?t:[t];for(var e=0;e<t.length;e++)t[e]===L.Mixin.Events&&console.warn("Deprecated include of L.Mixin.Events: this property will be removed in future releases, please inherit from L.Evented instead.",(new Error).stack)}}T.extend=function(t){var e=function(){this.initialize&&this.initialize.apply(this,arguments),this.callInitHooks()},i=e.__super__=this.prototype,s=n(i);for(var r in s.constructor=e,e.prototype=s,this)this.hasOwnProperty(r)&&"prototype"!==r&&"__super__"!==r&&(e[r]=this[r]);return t.statics&&(o(e,t.statics),delete t.statics),t.includes&&(D(t.includes),o.apply(null,[s].concat(t.includes)),delete t.includes),s.options&&(t.options=o(n(s.options),t.options)),o(s,t),s._initHooks=[],s.callInitHooks=function(){if(!this._initHooksCalled){i.callInitHooks&&i.callInitHooks.call(this),this._initHooksCalled=!0;for(var t=0,e=s._initHooks.length;t<e;t++)s._initHooks[t].call(this)}},e},T.include=function(t){return o(this.prototype,t),this},T.mergeOptions=function(t){return o(this.prototype.options,t),this},T.addInitHook=function(t){var e=Array.prototype.slice.call(arguments,1),i="function"==typeof t?t:function(){this[t].apply(this,e)};return this.prototype._initHooks=this.prototype._initHooks||[],this.prototype._initHooks.push(i),this};var M={on:function(t,e,i){if("object"==typeof t)for(var o in t)this._on(o,t[o],e);else for(var n=0,s=(t=p(t)).length;n<s;n++)this._on(t[n],e,i);return this},off:function(t,e,i){if(t)if("object"==typeof t)for(var o in t)this._off(o,t[o],e);else for(var n=0,s=(t=p(t)).length;n<s;n++)this._off(t[n],e,i);else delete this._events;return this},_on:function(t,e,i){this._events=this._events||{};var o=this._events[t];o||(o=[],this._events[t]=o),i===this&&(i=void 0);for(var n={fn:e,ctx:i},s=o,r=0,a=s.length;r<a;r++)if(s[r].fn===e&&s[r].ctx===i)return;s.push(n)},_off:function(t,e,i){var o,n,s;if(this._events&&(o=this._events[t]))if(e){if(i===this&&(i=void 0),o)for(n=0,s=o.length;n<s;n++){var r=o[n];if(r.ctx===i&&r.fn===e)return r.fn=c,this._firingCount&&(this._events[t]=o=o.slice()),void o.splice(n,1)}}else{for(n=0,s=o.length;n<s;n++)o[n].fn=c;delete this._events[t]}},fire:function(t,e,i){if(!this.listens(t,i))return this;var n=o({},e,{type:t,target:this,sourceTarget:e&&e.sourceTarget||this});if(this._events){var s=this._events[t];if(s){this._firingCount=this._firingCount+1||1;for(var r=0,a=s.length;r<a;r++){var l=s[r];l.fn.call(l.ctx||this,n)}this._firingCount--}}return i&&this._propagateEvent(n),this},listens:function(t,e){var i=this._events&&this._events[t];if(i&&i.length)return!0;if(e)for(var o in this._eventParents)if(this._eventParents[o].listens(t,e))return!0;return!1},once:function(t,e,i){if("object"==typeof t){for(var o in t)this.once(o,t[o],e);return this}var n=s(function(){this.off(t,e,i).off(t,n,i)},this);return this.on(t,e,i).on(t,n,i)},addEventParent:function(t){return this._eventParents=this._eventParents||{},this._eventParents[a(t)]=t,this},removeEventParent:function(t){return this._eventParents&&delete this._eventParents[a(t)],this},_propagateEvent:function(t){for(var e in this._eventParents)this._eventParents[e].fire(t.type,o({layer:t.target,propagatedFrom:t.target},t),!0)}};M.addEventListener=M.on,M.removeEventListener=M.clearAllEventListeners=M.off,M.addOneTimeEventListener=M.once,M.fireEvent=M.fire,M.hasEventListeners=M.listens;var z=T.extend(M);function I(t,e,i){this.x=i?Math.round(t):t,this.y=i?Math.round(e):e}var O=Math.trunc||function(t){return t>0?Math.floor(t):Math.ceil(t)};function P(t,e,i){return t instanceof I?t:b(t)?new I(t[0],t[1]):null==t?t:"object"==typeof t&&"x"in t&&"y"in t?new I(t.x,t.y):new I(t,e,i)}function R(t,e){if(t)for(var i=e?[t,e]:t,o=0,n=i.length;o<n;o++)this.extend(i[o])}function N(t,e){return!t||t instanceof R?t:new R(t,e)}function B(t,e){if(t)for(var i=e?[t,e]:t,o=0,n=i.length;o<n;o++)this.extend(i[o])}function F(t,e){return t instanceof B?t:new B(t,e)}function q(t,e,i){if(isNaN(t)||isNaN(e))throw new Error("Invalid LatLng object: ("+t+", "+e+")");this.lat=+t,this.lng=+e,void 0!==i&&(this.alt=+i)}function U(t,e,i){return t instanceof q?t:b(t)&&"object"!=typeof t[0]?3===t.length?new q(t[0],t[1],t[2]):2===t.length?new q(t[0],t[1]):null:null==t?t:"object"==typeof t&&"lat"in t?new q(t.lat,"lng"in t?t.lng:t.lon,t.alt):void 0===e?null:new q(t,e,i)}I.prototype={clone:function(){return new I(this.x,this.y)},add:function(t){return this.clone()._add(P(t))},_add:function(t){return this.x+=t.x,this.y+=t.y,this},subtract:function(t){return this.clone()._subtract(P(t))},_subtract:function(t){return this.x-=t.x,this.y-=t.y,this},divideBy:function(t){return this.clone()._divideBy(t)},_divideBy:function(t){return this.x/=t,this.y/=t,this},multiplyBy:function(t){return this.clone()._multiplyBy(t)},_multiplyBy:function(t){return this.x*=t,this.y*=t,this},scaleBy:function(t){return new I(this.x*t.x,this.y*t.y)},unscaleBy:function(t){return new I(this.x/t.x,this.y/t.y)},round:function(){return this.clone()._round()},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},floor:function(){return this.clone()._floor()},_floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.clone()._ceil()},_ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},trunc:function(){return this.clone()._trunc()},_trunc:function(){return this.x=O(this.x),this.y=O(this.y),this},distanceTo:function(t){var e=(t=P(t)).x-this.x,i=t.y-this.y;return Math.sqrt(e*e+i*i)},equals:function(t){return(t=P(t)).x===this.x&&t.y===this.y},contains:function(t){return t=P(t),Math.abs(t.x)<=Math.abs(this.x)&&Math.abs(t.y)<=Math.abs(this.y)},toString:function(){return"Point("+h(this.x)+", "+h(this.y)+")"}},R.prototype={extend:function(t){return t=P(t),this.min||this.max?(this.min.x=Math.min(t.x,this.min.x),this.max.x=Math.max(t.x,this.max.x),this.min.y=Math.min(t.y,this.min.y),this.max.y=Math.max(t.y,this.max.y)):(this.min=t.clone(),this.max=t.clone()),this},getCenter:function(t){return new I((this.min.x+this.max.x)/2,(this.min.y+this.max.y)/2,t)},getBottomLeft:function(){return new I(this.min.x,this.max.y)},getTopRight:function(){return new I(this.max.x,this.min.y)},getTopLeft:function(){return this.min},getBottomRight:function(){return this.max},getSize:function(){return this.max.subtract(this.min)},contains:function(t){var e,i;return(t="number"==typeof t[0]||t instanceof I?P(t):N(t))instanceof R?(e=t.min,i=t.max):e=i=t,e.x>=this.min.x&&i.x<=this.max.x&&e.y>=this.min.y&&i.y<=this.max.y},intersects:function(t){t=N(t);var e=this.min,i=this.max,o=t.min,n=t.max,s=n.x>=e.x&&o.x<=i.x,r=n.y>=e.y&&o.y<=i.y;return s&&r},overlaps:function(t){t=N(t);var e=this.min,i=this.max,o=t.min,n=t.max,s=n.x>e.x&&o.x<i.x,r=n.y>e.y&&o.y<i.y;return s&&r},isValid:function(){return!(!this.min||!this.max)}},B.prototype={extend:function(t){var e,i,o=this._southWest,n=this._northEast;if(t instanceof q)e=t,i=t;else{if(!(t instanceof B))return t?this.extend(U(t)||F(t)):this;if(e=t._southWest,i=t._northEast,!e||!i)return this}return o||n?(o.lat=Math.min(e.lat,o.lat),o.lng=Math.min(e.lng,o.lng),n.lat=Math.max(i.lat,n.lat),n.lng=Math.max(i.lng,n.lng)):(this._southWest=new q(e.lat,e.lng),this._northEast=new q(i.lat,i.lng)),this},pad:function(t){var e=this._southWest,i=this._northEast,o=Math.abs(e.lat-i.lat)*t,n=Math.abs(e.lng-i.lng)*t;return new B(new q(e.lat-o,e.lng-n),new q(i.lat+o,i.lng+n))},getCenter:function(){return new q((this._southWest.lat+this._northEast.lat)/2,(this._southWest.lng+this._northEast.lng)/2)},getSouthWest:function(){return this._southWest},getNorthEast:function(){return this._northEast},getNorthWest:function(){return new q(this.getNorth(),this.getWest())},getSouthEast:function(){return new q(this.getSouth(),this.getEast())},getWest:function(){return this._southWest.lng},getSouth:function(){return this._southWest.lat},getEast:function(){return this._northEast.lng},getNorth:function(){return this._northEast.lat},contains:function(t){t="number"==typeof t[0]||t instanceof q||"lat"in t?U(t):F(t);var e,i,o=this._southWest,n=this._northEast;return t instanceof B?(e=t.getSouthWest(),i=t.getNorthEast()):e=i=t,e.lat>=o.lat&&i.lat<=n.lat&&e.lng>=o.lng&&i.lng<=n.lng},intersects:function(t){t=F(t);var e=this._southWest,i=this._northEast,o=t.getSouthWest(),n=t.getNorthEast(),s=n.lat>=e.lat&&o.lat<=i.lat,r=n.lng>=e.lng&&o.lng<=i.lng;return s&&r},overlaps:function(t){t=F(t);var e=this._southWest,i=this._northEast,o=t.getSouthWest(),n=t.getNorthEast(),s=n.lat>e.lat&&o.lat<i.lat,r=n.lng>e.lng&&o.lng<i.lng;return s&&r},toBBoxString:function(){return[this.getWest(),this.getSouth(),this.getEast(),this.getNorth()].join(",")},equals:function(t,e){return!!t&&(t=F(t),this._southWest.equals(t.getSouthWest(),e)&&this._northEast.equals(t.getNorthEast(),e))},isValid:function(){return!(!this._southWest||!this._northEast)}},q.prototype={equals:function(t,e){return!!t&&(t=U(t),Math.max(Math.abs(this.lat-t.lat),Math.abs(this.lng-t.lng))<=(void 0===e?1e-9:e))},toString:function(t){return"LatLng("+h(this.lat,t)+", "+h(this.lng,t)+")"},distanceTo:function(t){return H.distance(this,U(t))},wrap:function(){return H.wrapLatLng(this)},toBounds:function(t){var e=180*t/40075017,i=e/Math.cos(Math.PI/180*this.lat);return F([this.lat-e,this.lng-i],[this.lat+e,this.lng+i])},clone:function(){return new q(this.lat,this.lng,this.alt)}};var j={latLngToPoint:function(t,e){var i=this.projection.project(t),o=this.scale(e);return this.transformation._transform(i,o)},pointToLatLng:function(t,e){var i=this.scale(e),o=this.transformation.untransform(t,i);return this.projection.unproject(o)},project:function(t){return this.projection.project(t)},unproject:function(t){return this.projection.unproject(t)},scale:function(t){return 256*Math.pow(2,t)},zoom:function(t){return Math.log(t/256)/Math.LN2},getProjectedBounds:function(t){if(this.infinite)return null;var e=this.projection.bounds,i=this.scale(t);return new R(this.transformation.transform(e.min,i),this.transformation.transform(e.max,i))},infinite:!1,wrapLatLng:function(t){var e=this.wrapLng?d(t.lng,this.wrapLng,!0):t.lng;return new q(this.wrapLat?d(t.lat,this.wrapLat,!0):t.lat,e,t.alt)},wrapLatLngBounds:function(t){var e=t.getCenter(),i=this.wrapLatLng(e),o=e.lat-i.lat,n=e.lng-i.lng;if(0===o&&0===n)return t;var s=t.getSouthWest(),r=t.getNorthEast();return new B(new q(s.lat-o,s.lng-n),new q(r.lat-o,r.lng-n))}},H=o({},j,{wrapLng:[-180,180],R:6371e3,distance:function(t,e){var i=Math.PI/180,o=t.lat*i,n=e.lat*i,s=Math.sin((e.lat-t.lat)*i/2),r=Math.sin((e.lng-t.lng)*i/2),a=s*s+Math.cos(o)*Math.cos(n)*r*r,l=2*Math.atan2(Math.sqrt(a),Math.sqrt(1-a));return this.R*l}}),W=6378137,V={R:W,MAX_LATITUDE:85.0511287798,project:function(t){var e=Math.PI/180,i=this.MAX_LATITUDE,o=Math.max(Math.min(i,t.lat),-i),n=Math.sin(o*e);return new I(this.R*t.lng*e,this.R*Math.log((1+n)/(1-n))/2)},unproject:function(t){var e=180/Math.PI;return new q((2*Math.atan(Math.exp(t.y/this.R))-Math.PI/2)*e,t.x*e/this.R)},bounds:function(){var t=W*Math.PI;return new R([-t,-t],[t,t])}()};function Z(t,e,i,o){if(b(t))return this._a=t[0],this._b=t[1],this._c=t[2],void(this._d=t[3]);this._a=t,this._b=e,this._c=i,this._d=o}function Y(t,e,i,o){return new Z(t,e,i,o)}Z.prototype={transform:function(t,e){return this._transform(t.clone(),e)},_transform:function(t,e){return e=e||1,t.x=e*(this._a*t.x+this._b),t.y=e*(this._c*t.y+this._d),t},untransform:function(t,e){return e=e||1,new I((t.x/e-this._b)/this._a,(t.y/e-this._d)/this._c)}};var K=o({},H,{code:"EPSG:3857",projection:V,transformation:function(){var t=.5/(Math.PI*V.R);return Y(t,.5,-t,.5)}()}),G=o({},K,{code:"EPSG:900913"});function X(t){return document.createElementNS("http://www.w3.org/2000/svg",t)}function Q(t,e){var i,o,n,s,r,a,l="";for(i=0,n=t.length;i<n;i++){for(o=0,s=(r=t[i]).length;o<s;o++)l+=(o?"L":"M")+(a=r[o]).x+" "+a.y;l+=e?Tt?"z":"x":""}return l||"M0 0"}var J=document.documentElement.style,tt="ActiveXObject"in window,et=tt&&!document.addEventListener,it="msLaunchUri"in navigator&&!("documentMode"in document),ot=Mt("webkit"),nt=Mt("android"),st=Mt("android 2")||Mt("android 3"),rt=parseInt(/WebKit\/([0-9]+)|$/.exec(navigator.userAgent)[1],10),at=nt&&Mt("Google")&&rt<537&&!("AudioNode"in window),lt=!!window.opera,dt=Mt("chrome"),ct=Mt("gecko")&&!ot&&!lt&&!tt,ht=!dt&&Mt("safari"),ut=Mt("phantom"),pt="OTransition"in J,mt=0===navigator.platform.indexOf("Win"),gt=tt&&"transition"in J,ft="WebKitCSSMatrix"in window&&"m11"in new window.WebKitCSSMatrix&&!st,vt="MozPerspective"in J,bt=!window.L_DISABLE_3D&&(gt||ft||vt)&&!pt&&!ut,yt="undefined"!=typeof orientation||Mt("mobile"),xt=yt&&ot,wt=yt&&ft,_t=!window.PointerEvent&&window.MSPointerEvent,kt=!(!window.PointerEvent&&!_t),Ct=!window.L_NO_TOUCH&&(kt||"ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch),St=yt&<,At=yt&&ct,$t=(window.devicePixelRatio||window.screen.deviceXDPI/window.screen.logicalXDPI)>1,Et=!!document.createElement("canvas").getContext,Tt=!(!document.createElementNS||!X("svg").createSVGRect),Dt=!Tt&&function(){try{var t=document.createElement("div");t.innerHTML='<v:shape adj="1"/>';var e=t.firstChild;return e.style.behavior="url(#default#VML)",e&&"object"==typeof e.adj}catch(t){return!1}}();function Mt(t){return navigator.userAgent.toLowerCase().indexOf(t)>=0}var zt=(Object.freeze||Object)({ie:tt,ielt9:et,edge:it,webkit:ot,android:nt,android23:st,androidStock:at,opera:lt,chrome:dt,gecko:ct,safari:ht,phantom:ut,opera12:pt,win:mt,ie3d:gt,webkit3d:ft,gecko3d:vt,any3d:bt,mobile:yt,mobileWebkit:xt,mobileWebkit3d:wt,msPointer:_t,pointer:kt,touch:Ct,mobileOpera:St,mobileGecko:At,retina:$t,canvas:Et,svg:Tt,vml:Dt}),It=_t?"MSPointerDown":"pointerdown",Ot=_t?"MSPointerMove":"pointermove",Lt=_t?"MSPointerUp":"pointerup",Pt=_t?"MSPointerCancel":"pointercancel",Rt=["INPUT","SELECT","OPTION"],Nt={},Bt=!1,Ft=0;function qt(t,e,i,o){return"touchstart"===e?jt(t,i,o):"touchmove"===e?Yt(t,i,o):"touchend"===e&&Kt(t,i,o),this}function Ut(t,e,i){var o=t["_leaflet_"+e+i];return"touchstart"===e?t.removeEventListener(It,o,!1):"touchmove"===e?t.removeEventListener(Ot,o,!1):"touchend"===e&&(t.removeEventListener(Lt,o,!1),t.removeEventListener(Pt,o,!1)),this}function jt(t,e,i){var o=s(function(t){if("mouse"!==t.pointerType&&t.MSPOINTER_TYPE_MOUSE&&t.pointerType!==t.MSPOINTER_TYPE_MOUSE){if(!(Rt.indexOf(t.target.tagName)<0))return;je(t)}Zt(t,e)});t["_leaflet_touchstart"+i]=o,t.addEventListener(It,o,!1),Bt||(document.documentElement.addEventListener(It,Ht,!0),document.documentElement.addEventListener(Ot,Wt,!0),document.documentElement.addEventListener(Lt,Vt,!0),document.documentElement.addEventListener(Pt,Vt,!0),Bt=!0)}function Ht(t){Nt[t.pointerId]=t,Ft++}function Wt(t){Nt[t.pointerId]&&(Nt[t.pointerId]=t)}function Vt(t){delete Nt[t.pointerId],Ft--}function Zt(t,e){for(var i in t.touches=[],Nt)t.touches.push(Nt[i]);t.changedTouches=[t],e(t)}function Yt(t,e,i){var o=function(t){(t.pointerType!==t.MSPOINTER_TYPE_MOUSE&&"mouse"!==t.pointerType||0!==t.buttons)&&Zt(t,e)};t["_leaflet_touchmove"+i]=o,t.addEventListener(Ot,o,!1)}function Kt(t,e,i){var o=function(t){Zt(t,e)};t["_leaflet_touchend"+i]=o,t.addEventListener(Lt,o,!1),t.addEventListener(Pt,o,!1)}var Gt=_t?"MSPointerDown":kt?"pointerdown":"touchstart",Xt=_t?"MSPointerUp":kt?"pointerup":"touchend",Qt="_leaflet_";function Jt(t,e,i){var o,n,s=!1,r=250;function a(t){var e;if(kt){if(!it||"mouse"===t.pointerType)return;e=Ft}else e=t.touches.length;if(!(e>1)){var i=Date.now(),a=i-(o||i);n=t.touches?t.touches[0]:t,s=a>0&&a<=r,o=i}}function l(t){if(s&&!n.cancelBubble){if(kt){if(!it||"mouse"===t.pointerType)return;var i,r,a={};for(r in n)i=n[r],a[r]=i&&i.bind?i.bind(n):i;n=a}n.type="dblclick",n.button=0,e(n),o=null}}return t[Qt+Gt+i]=a,t[Qt+Xt+i]=l,t[Qt+"dblclick"+i]=e,t.addEventListener(Gt,a,!1),t.addEventListener(Xt,l,!1),t.addEventListener("dblclick",e,!1),this}function te(t,e){var i=t[Qt+Gt+e],o=t[Qt+Xt+e],n=t[Qt+"dblclick"+e];return t.removeEventListener(Gt,i,!1),t.removeEventListener(Xt,o,!1),it||t.removeEventListener("dblclick",n,!1),this}var ee,ie,oe,ne,se,re=ke(["transform","webkitTransform","OTransform","MozTransform","msTransform"]),ae=ke(["webkitTransition","transition","OTransition","MozTransition","msTransition"]),le="webkitTransition"===ae||"OTransition"===ae?ae+"End":"transitionend";function de(t){return"string"==typeof t?document.getElementById(t):t}function ce(t,e){var i=t.style[e]||t.currentStyle&&t.currentStyle[e];if((!i||"auto"===i)&&document.defaultView){var o=document.defaultView.getComputedStyle(t,null);i=o?o[e]:null}return"auto"===i?null:i}function he(t,e,i){var o=document.createElement(t);return o.className=e||"",i&&i.appendChild(o),o}function ue(t){var e=t.parentNode;e&&e.removeChild(t)}function pe(t){for(;t.firstChild;)t.removeChild(t.firstChild)}function me(t){var e=t.parentNode;e&&e.lastChild!==t&&e.appendChild(t)}function ge(t){var e=t.parentNode;e&&e.firstChild!==t&&e.insertBefore(t,e.firstChild)}function fe(t,e){if(void 0!==t.classList)return t.classList.contains(e);var i=xe(t);return i.length>0&&new RegExp("(^|\\s)"+e+"(\\s|$)").test(i)}function ve(t,e){if(void 0!==t.classList)for(var i=p(e),o=0,n=i.length;o<n;o++)t.classList.add(i[o]);else if(!fe(t,e)){var s=xe(t);ye(t,(s?s+" ":"")+e)}}function be(t,e){void 0!==t.classList?t.classList.remove(e):ye(t,u((" "+xe(t)+" ").replace(" "+e+" "," ")))}function ye(t,e){void 0===t.className.baseVal?t.className=e:t.className.baseVal=e}function xe(t){return t.correspondingElement&&(t=t.correspondingElement),void 0===t.className.baseVal?t.className:t.className.baseVal}function we(t,e){"opacity"in t.style?t.style.opacity=e:"filter"in t.style&&_e(t,e)}function _e(t,e){var i=!1,o="DXImageTransform.Microsoft.Alpha";try{i=t.filters.item(o)}catch(t){if(1===e)return}e=Math.round(100*e),i?(i.Enabled=100!==e,i.Opacity=e):t.style.filter+=" progid:"+o+"(opacity="+e+")"}function ke(t){for(var e=document.documentElement.style,i=0;i<t.length;i++)if(t[i]in e)return t[i];return!1}function Ce(t,e,i){var o=e||new I(0,0);t.style[re]=(gt?"translate("+o.x+"px,"+o.y+"px)":"translate3d("+o.x+"px,"+o.y+"px,0)")+(i?" scale("+i+")":"")}function Se(t,e){t._leaflet_pos=e,bt?Ce(t,e):(t.style.left=e.x+"px",t.style.top=e.y+"px")}function Ae(t){return t._leaflet_pos||new I(0,0)}if("onselectstart"in document)ee=function(){Le(window,"selectstart",je)},ie=function(){Re(window,"selectstart",je)};else{var $e=ke(["userSelect","WebkitUserSelect","OUserSelect","MozUserSelect","msUserSelect"]);ee=function(){if($e){var t=document.documentElement.style;oe=t[$e],t[$e]="none"}},ie=function(){$e&&(document.documentElement.style[$e]=oe,oe=void 0)}}function Ee(){Le(window,"dragstart",je)}function Te(){Re(window,"dragstart",je)}function De(t){for(;-1===t.tabIndex;)t=t.parentNode;t.style&&(Me(),ne=t,se=t.style.outline,t.style.outline="none",Le(window,"keydown",Me))}function Me(){ne&&(ne.style.outline=se,ne=void 0,se=void 0,Re(window,"keydown",Me))}function ze(t){do{t=t.parentNode}while(!(t.offsetWidth&&t.offsetHeight||t===document.body));return t}function Ie(t){var e=t.getBoundingClientRect();return{x:e.width/t.offsetWidth||1,y:e.height/t.offsetHeight||1,boundingClientRect:e}}var Oe=(Object.freeze||Object)({TRANSFORM:re,TRANSITION:ae,TRANSITION_END:le,get:de,getStyle:ce,create:he,remove:ue,empty:pe,toFront:me,toBack:ge,hasClass:fe,addClass:ve,removeClass:be,setClass:ye,getClass:xe,setOpacity:we,testProp:ke,setTransform:Ce,setPosition:Se,getPosition:Ae,disableTextSelection:ee,enableTextSelection:ie,disableImageDrag:Ee,enableImageDrag:Te,preventOutline:De,restoreOutline:Me,getSizedParentNode:ze,getScale:Ie});function Le(t,e,i,o){if("object"==typeof e)for(var n in e)Ne(t,n,e[n],i);else for(var s=0,r=(e=p(e)).length;s<r;s++)Ne(t,e[s],i,o);return this}var Pe="_leaflet_events";function Re(t,e,i,o){if("object"==typeof e)for(var n in e)Be(t,n,e[n],i);else if(e)for(var s=0,r=(e=p(e)).length;s<r;s++)Be(t,e[s],i,o);else{for(var a in t[Pe])Be(t,a,t[Pe][a]);delete t[Pe]}return this}function Ne(t,e,i,o){var n=e+a(i)+(o?"_"+a(o):"");if(t[Pe]&&t[Pe][n])return this;var s=function(e){return i.call(o||t,e||window.event)},r=s;kt&&0===e.indexOf("touch")?qt(t,e,s,n):!Ct||"dblclick"!==e||!Jt||kt&&dt?"addEventListener"in t?"mousewheel"===e?t.addEventListener("onwheel"in t?"wheel":"mousewheel",s,!1):"mouseenter"===e||"mouseleave"===e?(s=function(e){e=e||window.event,Qe(t,e)&&r(e)},t.addEventListener("mouseenter"===e?"mouseover":"mouseout",s,!1)):("click"===e&&nt&&(s=function(t){Je(t,r)}),t.addEventListener(e,s,!1)):"attachEvent"in t&&t.attachEvent("on"+e,s):Jt(t,s,n),t[Pe]=t[Pe]||{},t[Pe][n]=s}function Be(t,e,i,o){var n=e+a(i)+(o?"_"+a(o):""),s=t[Pe]&&t[Pe][n];if(!s)return this;kt&&0===e.indexOf("touch")?Ut(t,e,n):!Ct||"dblclick"!==e||!te||kt&&dt?"removeEventListener"in t?"mousewheel"===e?t.removeEventListener("onwheel"in t?"wheel":"mousewheel",s,!1):t.removeEventListener("mouseenter"===e?"mouseover":"mouseleave"===e?"mouseout":e,s,!1):"detachEvent"in t&&t.detachEvent("on"+e,s):te(t,n),t[Pe][n]=null}function Fe(t){return t.stopPropagation?t.stopPropagation():t.originalEvent?t.originalEvent._stopped=!0:t.cancelBubble=!0,Xe(t),this}function qe(t){return Ne(t,"mousewheel",Fe),this}function Ue(t){return Le(t,"mousedown touchstart dblclick",Fe),Ne(t,"click",Ge),this}function je(t){return t.preventDefault?t.preventDefault():t.returnValue=!1,this}function He(t){return je(t),Fe(t),this}function We(t,e){if(!e)return new I(t.clientX,t.clientY);var i=Ie(e),o=i.boundingClientRect;return new I((t.clientX-o.left)/i.x-e.clientLeft,(t.clientY-o.top)/i.y-e.clientTop)}var Ve=mt&&dt?2*window.devicePixelRatio:ct?window.devicePixelRatio:1;function Ze(t){return it?t.wheelDeltaY/2:t.deltaY&&0===t.deltaMode?-t.deltaY/Ve:t.deltaY&&1===t.deltaMode?20*-t.deltaY:t.deltaY&&2===t.deltaMode?60*-t.deltaY:t.deltaX||t.deltaZ?0:t.wheelDelta?(t.wheelDeltaY||t.wheelDelta)/2:t.detail&&Math.abs(t.detail)<32765?20*-t.detail:t.detail?t.detail/-32765*60:0}var Ye,Ke={};function Ge(t){Ke[t.type]=!0}function Xe(t){var e=Ke[t.type];return Ke[t.type]=!1,e}function Qe(t,e){var i=e.relatedTarget;if(!i)return!0;try{for(;i&&i!==t;)i=i.parentNode}catch(t){return!1}return i!==t}function Je(t,e){var i=t.timeStamp||t.originalEvent&&t.originalEvent.timeStamp,o=Ye&&i-Ye;o&&o>100&&o<500||t.target._simulatedClick&&!t._simulated?He(t):(Ye=i,e(t))}var ti=(Object.freeze||Object)({on:Le,off:Re,stopPropagation:Fe,disableScrollPropagation:qe,disableClickPropagation:Ue,preventDefault:je,stop:He,getMousePosition:We,getWheelDelta:Ze,fakeStop:Ge,skipped:Xe,isExternalTarget:Qe,addListener:Le,removeListener:Re}),ei=z.extend({run:function(t,e,i,o){this.stop(),this._el=t,this._inProgress=!0,this._duration=i||.25,this._easeOutPower=1/Math.max(o||.5,.2),this._startPos=Ae(t),this._offset=e.subtract(this._startPos),this._startTime=+new Date,this.fire("start"),this._animate()},stop:function(){this._inProgress&&(this._step(!0),this._complete())},_animate:function(){this._animId=A(this._animate,this),this._step()},_step:function(t){var e=+new Date-this._startTime,i=1e3*this._duration;e<i?this._runFrame(this._easeOut(e/i),t):(this._runFrame(1),this._complete())},_runFrame:function(t,e){var i=this._startPos.add(this._offset.multiplyBy(t));e&&i._round(),Se(this._el,i),this.fire("step")},_complete:function(){$(this._animId),this._inProgress=!1,this.fire("end")},_easeOut:function(t){return 1-Math.pow(1-t,this._easeOutPower)}}),ii=z.extend({options:{crs:K,center:void 0,zoom:void 0,minZoom:void 0,maxZoom:void 0,layers:[],maxBounds:void 0,renderer:void 0,zoomAnimation:!0,zoomAnimationThreshold:4,fadeAnimation:!0,markerZoomAnimation:!0,transform3DLimit:8388608,zoomSnap:1,zoomDelta:1,trackResize:!0},initialize:function(t,e){e=m(this,e),this._handlers=[],this._layers={},this._zoomBoundLayers={},this._sizeChanged=!0,this._initContainer(t),this._initLayout(),this._onResize=s(this._onResize,this),this._initEvents(),e.maxBounds&&this.setMaxBounds(e.maxBounds),void 0!==e.zoom&&(this._zoom=this._limitZoom(e.zoom)),e.center&&void 0!==e.zoom&&this.setView(U(e.center),e.zoom,{reset:!0}),this.callInitHooks(),this._zoomAnimated=ae&&bt&&!St&&this.options.zoomAnimation,this._zoomAnimated&&(this._createAnimProxy(),Le(this._proxy,le,this._catchTransitionEnd,this)),this._addLayers(this.options.layers)},setView:function(t,e,i){return e=void 0===e?this._zoom:this._limitZoom(e),t=this._limitCenter(U(t),e,this.options.maxBounds),i=i||{},this._stop(),this._loaded&&!i.reset&&!0!==i&&(void 0!==i.animate&&(i.zoom=o({animate:i.animate},i.zoom),i.pan=o({animate:i.animate,duration:i.duration},i.pan)),this._zoom!==e?this._tryAnimatedZoom&&this._tryAnimatedZoom(t,e,i.zoom):this._tryAnimatedPan(t,i.pan))?(clearTimeout(this._sizeTimer),this):(this._resetView(t,e),this)},setZoom:function(t,e){return this._loaded?this.setView(this.getCenter(),t,{zoom:e}):(this._zoom=t,this)},zoomIn:function(t,e){return t=t||(bt?this.options.zoomDelta:1),this.setZoom(this._zoom+t,e)},zoomOut:function(t,e){return t=t||(bt?this.options.zoomDelta:1),this.setZoom(this._zoom-t,e)},setZoomAround:function(t,e,i){var o=this.getZoomScale(e),n=this.getSize().divideBy(2),s=(t instanceof I?t:this.latLngToContainerPoint(t)).subtract(n).multiplyBy(1-1/o),r=this.containerPointToLatLng(n.add(s));return this.setView(r,e,{zoom:i})},_getBoundsCenterZoom:function(t,e){e=e||{},t=t.getBounds?t.getBounds():F(t);var i=P(e.paddingTopLeft||e.padding||[0,0]),o=P(e.paddingBottomRight||e.padding||[0,0]),n=this.getBoundsZoom(t,!1,i.add(o));if((n="number"==typeof e.maxZoom?Math.min(e.maxZoom,n):n)===1/0)return{center:t.getCenter(),zoom:n};var s=o.subtract(i).divideBy(2),r=this.project(t.getSouthWest(),n),a=this.project(t.getNorthEast(),n);return{center:this.unproject(r.add(a).divideBy(2).add(s),n),zoom:n}},fitBounds:function(t,e){if(!(t=F(t)).isValid())throw new Error("Bounds are not valid.");var i=this._getBoundsCenterZoom(t,e);return this.setView(i.center,i.zoom,e)},fitWorld:function(t){return this.fitBounds([[-90,-180],[90,180]],t)},panTo:function(t,e){return this.setView(t,this._zoom,{pan:e})},panBy:function(t,e){if(e=e||{},!(t=P(t).round()).x&&!t.y)return this.fire("moveend");if(!0!==e.animate&&!this.getSize().contains(t))return this._resetView(this.unproject(this.project(this.getCenter()).add(t)),this.getZoom()),this;if(this._panAnim||(this._panAnim=new ei,this._panAnim.on({step:this._onPanTransitionStep,end:this._onPanTransitionEnd},this)),e.noMoveStart||this.fire("movestart"),!1!==e.animate){ve(this._mapPane,"leaflet-pan-anim");var i=this._getMapPanePos().subtract(t).round();this._panAnim.run(this._mapPane,i,e.duration||.25,e.easeLinearity)}else this._rawPanBy(t),this.fire("move").fire("moveend");return this},flyTo:function(t,e,i){if(!1===(i=i||{}).animate||!bt)return this.setView(t,e,i);this._stop();var o=this.project(this.getCenter()),n=this.project(t),s=this.getSize(),r=this._zoom;t=U(t),e=void 0===e?r:e;var a=Math.max(s.x,s.y),l=a*this.getZoomScale(r,e),d=n.distanceTo(o)||1,c=1.42,h=c*c;function u(t){var e=(l*l-a*a+(t?-1:1)*h*h*d*d)/(2*(t?l:a)*h*d),i=Math.sqrt(e*e+1)-e;return i<1e-9?-18:Math.log(i)}function p(t){return(Math.exp(t)-Math.exp(-t))/2}function m(t){return(Math.exp(t)+Math.exp(-t))/2}function g(t){return p(t)/m(t)}var f=u(0);function v(t){return a*(m(f)/m(f+c*t))}function b(t){return a*(m(f)*g(f+c*t)-p(f))/h}function y(t){return 1-Math.pow(1-t,1.5)}var x=Date.now(),w=(u(1)-f)/c,_=i.duration?1e3*i.duration:1e3*w*.8;function k(){var i=(Date.now()-x)/_,s=y(i)*w;i<=1?(this._flyToFrame=A(k,this),this._move(this.unproject(o.add(n.subtract(o).multiplyBy(b(s)/d)),r),this.getScaleZoom(a/v(s),r),{flyTo:!0})):this._move(t,e)._moveEnd(!0)}return this._moveStart(!0,i.noMoveStart),k.call(this),this},flyToBounds:function(t,e){var i=this._getBoundsCenterZoom(t,e);return this.flyTo(i.center,i.zoom,e)},setMaxBounds:function(t){return(t=F(t)).isValid()?(this.options.maxBounds&&this.off("moveend",this._panInsideMaxBounds),this.options.maxBounds=t,this._loaded&&this._panInsideMaxBounds(),this.on("moveend",this._panInsideMaxBounds)):(this.options.maxBounds=null,this.off("moveend",this._panInsideMaxBounds))},setMinZoom:function(t){var e=this.options.minZoom;return this.options.minZoom=t,this._loaded&&e!==t&&(this.fire("zoomlevelschange"),this.getZoom()<this.options.minZoom)?this.setZoom(t):this},setMaxZoom:function(t){var e=this.options.maxZoom;return this.options.maxZoom=t,this._loaded&&e!==t&&(this.fire("zoomlevelschange"),this.getZoom()>this.options.maxZoom)?this.setZoom(t):this},panInsideBounds:function(t,e){this._enforcingBounds=!0;var i=this.getCenter(),o=this._limitCenter(i,this._zoom,F(t));return i.equals(o)||this.panTo(o,e),this._enforcingBounds=!1,this},panInside:function(t,e){var i=P((e=e||{}).paddingTopLeft||e.padding||[0,0]),o=P(e.paddingBottomRight||e.padding||[0,0]),n=this.getCenter(),s=this.project(n),r=this.project(t),a=this.getPixelBounds(),l=a.getSize().divideBy(2),d=N([a.min.add(i),a.max.subtract(o)]);if(!d.contains(r)){this._enforcingBounds=!0;var c=s.subtract(r),h=P(r.x+c.x,r.y+c.y);(r.x<d.min.x||r.x>d.max.x)&&(h.x=s.x-c.x,c.x>0?h.x+=l.x-i.x:h.x-=l.x-o.x),(r.y<d.min.y||r.y>d.max.y)&&(h.y=s.y-c.y,c.y>0?h.y+=l.y-i.y:h.y-=l.y-o.y),this.panTo(this.unproject(h),e),this._enforcingBounds=!1}return this},invalidateSize:function(t){if(!this._loaded)return this;t=o({animate:!1,pan:!0},!0===t?{animate:!0}:t);var e=this.getSize();this._sizeChanged=!0,this._lastCenter=null;var i=this.getSize(),n=e.divideBy(2).round(),r=i.divideBy(2).round(),a=n.subtract(r);return a.x||a.y?(t.animate&&t.pan?this.panBy(a):(t.pan&&this._rawPanBy(a),this.fire("move"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(s(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:e,newSize:i})):this},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire("viewreset"),this._stop()},locate:function(t){if(t=this._locateOptions=o({timeout:1e4,watch:!1},t),!("geolocation"in navigator))return this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this;var e=s(this._handleGeolocationResponse,this),i=s(this._handleGeolocationError,this);return t.watch?this._locationWatchId=navigator.geolocation.watchPosition(e,i,t):navigator.geolocation.getCurrentPosition(e,i,t),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){var e=t.code,i=t.message||(1===e?"permission denied":2===e?"position unavailable":"timeout");this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:e,message:"Geolocation error: "+i+"."})},_handleGeolocationResponse:function(t){var e=new q(t.coords.latitude,t.coords.longitude),i=e.toBounds(2*t.coords.accuracy),o=this._locateOptions;if(o.setView){var n=this.getBoundsZoom(i);this.setView(e,o.maxZoom?Math.min(n,o.maxZoom):n)}var s={latlng:e,bounds:i,timestamp:t.timestamp};for(var r in t.coords)"number"==typeof t.coords[r]&&(s[r]=t.coords[r]);this.fire("locationfound",s)},addHandler:function(t,e){if(!e)return this;var i=this[t]=new e(this);return this._handlers.push(i),this.options[t]&&i.enable(),this},remove:function(){if(this._initEvents(!0),this._containerId!==this._container._leaflet_id)throw new Error("Map container is being reused by another instance");try{delete this._container._leaflet_id,delete this._containerId}catch(t){this._container._leaflet_id=void 0,this._containerId=void 0}var t;for(t in void 0!==this._locationWatchId&&this.stopLocate(),this._stop(),ue(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._resizeRequest&&($(this._resizeRequest),this._resizeRequest=null),this._clearHandlers(),this._loaded&&this.fire("unload"),this._layers)this._layers[t].remove();for(t in this._panes)ue(this._panes[t]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(t,e){var i=he("div","leaflet-pane"+(t?" leaflet-"+t.replace("Pane","")+"-pane":""),e||this._mapPane);return t&&(this._panes[t]=i),i},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter:this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds();return new B(this.unproject(t.getBottomLeft()),this.unproject(t.getTopRight()))},getMinZoom:function(){return void 0===this.options.minZoom?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return void 0===this.options.maxZoom?void 0===this._layersMaxZoom?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,e,i){t=F(t),i=P(i||[0,0]);var o=this.getZoom()||0,n=this.getMinZoom(),s=this.getMaxZoom(),r=t.getNorthWest(),a=t.getSouthEast(),l=this.getSize().subtract(i),d=N(this.project(a,o),this.project(r,o)).getSize(),c=bt?this.options.zoomSnap:1,h=l.x/d.x,u=l.y/d.y,p=e?Math.max(h,u):Math.min(h,u);return o=this.getScaleZoom(p,o),c&&(o=Math.round(o/(c/100))*(c/100),o=e?Math.ceil(o/c)*c:Math.floor(o/c)*c),Math.max(n,Math.min(s,o))},getSize:function(){return this._size&&!this._sizeChanged||(this._size=new I(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(t,e){var i=this._getTopLeftPoint(t,e);return new R(i,i.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(t){return this.options.crs.getProjectedBounds(void 0===t?this.getZoom():t)},getPane:function(t){return"string"==typeof t?this._panes[t]:t},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t,e){var i=this.options.crs;return e=void 0===e?this._zoom:e,i.scale(t)/i.scale(e)},getScaleZoom:function(t,e){var i=this.options.crs;e=void 0===e?this._zoom:e;var o=i.zoom(t*i.scale(e));return isNaN(o)?1/0:o},project:function(t,e){return e=void 0===e?this._zoom:e,this.options.crs.latLngToPoint(U(t),e)},unproject:function(t,e){return e=void 0===e?this._zoom:e,this.options.crs.pointToLatLng(P(t),e)},layerPointToLatLng:function(t){var e=P(t).add(this.getPixelOrigin());return this.unproject(e)},latLngToLayerPoint:function(t){return this.project(U(t))._round()._subtract(this.getPixelOrigin())},wrapLatLng:function(t){return this.options.crs.wrapLatLng(U(t))},wrapLatLngBounds:function(t){return this.options.crs.wrapLatLngBounds(F(t))},distance:function(t,e){return this.options.crs.distance(U(t),U(e))},containerPointToLayerPoint:function(t){return P(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return P(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){var e=this.containerPointToLayerPoint(P(t));return this.layerPointToLatLng(e)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(U(t)))},mouseEventToContainerPoint:function(t){return We(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){var e=this._container=de(t);if(!e)throw new Error("Map container not found.");if(e._leaflet_id)throw new Error("Map container is already initialized.");Le(e,"scroll",this._onScroll,this),this._containerId=a(e)},_initLayout:function(){var t=this._container;this._fadeAnimated=this.options.fadeAnimation&&bt,ve(t,"leaflet-container"+(Ct?" leaflet-touch":"")+($t?" leaflet-retina":"")+(et?" leaflet-oldie":"")+(ht?" leaflet-safari":"")+(this._fadeAnimated?" leaflet-fade-anim":""));var e=ce(t,"position");"absolute"!==e&&"relative"!==e&&"fixed"!==e&&(t.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._paneRenderers={},this._mapPane=this.createPane("mapPane",this._container),Se(this._mapPane,new I(0,0)),this.createPane("tilePane"),this.createPane("shadowPane"),this.createPane("overlayPane"),this.createPane("markerPane"),this.createPane("tooltipPane"),this.createPane("popupPane"),this.options.markerZoomAnimation||(ve(t.markerPane,"leaflet-zoom-hide"),ve(t.shadowPane,"leaflet-zoom-hide"))},_resetView:function(t,e){Se(this._mapPane,new I(0,0));var i=!this._loaded;this._loaded=!0,e=this._limitZoom(e),this.fire("viewprereset");var o=this._zoom!==e;this._moveStart(o,!1)._move(t,e)._moveEnd(o),this.fire("viewreset"),i&&this.fire("load")},_moveStart:function(t,e){return t&&this.fire("zoomstart"),e||this.fire("movestart"),this},_move:function(t,e,i){void 0===e&&(e=this._zoom);var o=this._zoom!==e;return this._zoom=e,this._lastCenter=t,this._pixelOrigin=this._getNewPixelOrigin(t),(o||i&&i.pinch)&&this.fire("zoom",i),this.fire("move",i)},_moveEnd:function(t){return t&&this.fire("zoomend"),this.fire("moveend")},_stop:function(){return $(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(t){Se(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error("Set map center and zoom first.")},_initEvents:function(t){this._targets={},this._targets[a(this._container)]=this;var e=t?Re:Le;e(this._container,"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress keydown keyup",this._handleDOMEvent,this),this.options.trackResize&&e(window,"resize",this._onResize,this),bt&&this.options.transform3DLimit&&(t?this.off:this.on).call(this,"moveend",this._onMoveEnd)},_onResize:function(){$(this._resizeRequest),this._resizeRequest=A(function(){this.invalidateSize({debounceMoveend:!0})},this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var t=this._getMapPanePos();Math.max(Math.abs(t.x),Math.abs(t.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(t,e){for(var i,o=[],n="mouseout"===e||"mouseover"===e,s=t.target||t.srcElement,r=!1;s;){if((i=this._targets[a(s)])&&("click"===e||"preclick"===e)&&!t._simulated&&this._draggableMoved(i)){r=!0;break}if(i&&i.listens(e,!0)){if(n&&!Qe(s,t))break;if(o.push(i),n)break}if(s===this._container)break;s=s.parentNode}return o.length||r||n||!Qe(s,t)||(o=[this]),o},_handleDOMEvent:function(t){if(this._loaded&&!Xe(t)){var e=t.type;"mousedown"!==e&&"keypress"!==e&&"keyup"!==e&&"keydown"!==e||De(t.target||t.srcElement),this._fireDOMEvent(t,e)}},_mouseEvents:["click","dblclick","mouseover","mouseout","contextmenu"],_fireDOMEvent:function(t,e,i){if("click"===t.type){var n=o({},t);n.type="preclick",this._fireDOMEvent(n,n.type,i)}if(!t._stopped&&(i=(i||[]).concat(this._findEventTargets(t,e))).length){var s=i[0];"contextmenu"===e&&s.listens(e,!0)&&je(t);var r={originalEvent:t};if("keypress"!==t.type&&"keydown"!==t.type&&"keyup"!==t.type){var a=s.getLatLng&&(!s._radius||s._radius<=10);r.containerPoint=a?this.latLngToContainerPoint(s.getLatLng()):this.mouseEventToContainerPoint(t),r.layerPoint=this.containerPointToLayerPoint(r.containerPoint),r.latlng=a?s.getLatLng():this.layerPointToLatLng(r.layerPoint)}for(var l=0;l<i.length;l++)if(i[l].fire(e,r,!0),r.originalEvent._stopped||!1===i[l].options.bubblingMouseEvents&&-1!==y(this._mouseEvents,e))return}},_draggableMoved:function(t){return(t=t.dragging&&t.dragging.enabled()?t:this).dragging&&t.dragging.moved()||this.boxZoom&&this.boxZoom.moved()},_clearHandlers:function(){for(var t=0,e=this._handlers.length;t<e;t++)this._handlers[t].disable()},whenReady:function(t,e){return this._loaded?t.call(e||this,{target:this}):this.on("load",t,e),this},_getMapPanePos:function(){return Ae(this._mapPane)||new I(0,0)},_moved:function(){var t=this._getMapPanePos();return t&&!t.equals([0,0])},_getTopLeftPoint:function(t,e){return(t&&void 0!==e?this._getNewPixelOrigin(t,e):this.getPixelOrigin()).subtract(this._getMapPanePos())},_getNewPixelOrigin:function(t,e){var i=this.getSize()._divideBy(2);return this.project(t,e)._subtract(i)._add(this._getMapPanePos())._round()},_latLngToNewLayerPoint:function(t,e,i){var o=this._getNewPixelOrigin(i,e);return this.project(t,e)._subtract(o)},_latLngBoundsToNewLayerBounds:function(t,e,i){var o=this._getNewPixelOrigin(i,e);return N([this.project(t.getSouthWest(),e)._subtract(o),this.project(t.getNorthWest(),e)._subtract(o),this.project(t.getSouthEast(),e)._subtract(o),this.project(t.getNorthEast(),e)._subtract(o)])},_getCenterLayerPoint:function(){return this.containerPointToLayerPoint(this.getSize()._divideBy(2))},_getCenterOffset:function(t){return this.latLngToLayerPoint(t).subtract(this._getCenterLayerPoint())},_limitCenter:function(t,e,i){if(!i)return t;var o=this.project(t,e),n=this.getSize().divideBy(2),s=new R(o.subtract(n),o.add(n)),r=this._getBoundsOffset(s,i,e);return r.round().equals([0,0])?t:this.unproject(o.add(r),e)},_limitOffset:function(t,e){if(!e)return t;var i=this.getPixelBounds(),o=new R(i.min.add(t),i.max.add(t));return t.add(this._getBoundsOffset(o,e))},_getBoundsOffset:function(t,e,i){var o=N(this.project(e.getNorthEast(),i),this.project(e.getSouthWest(),i)),n=o.min.subtract(t.min),s=o.max.subtract(t.max);return new I(this._rebound(n.x,-s.x),this._rebound(n.y,-s.y))},_rebound:function(t,e){return t+e>0?Math.round(t-e)/2:Math.max(0,Math.ceil(t))-Math.max(0,Math.floor(e))},_limitZoom:function(t){var e=this.getMinZoom(),i=this.getMaxZoom(),o=bt?this.options.zoomSnap:1;return o&&(t=Math.round(t/o)*o),Math.max(e,Math.min(i,t))},_onPanTransitionStep:function(){this.fire("move")},_onPanTransitionEnd:function(){be(this._mapPane,"leaflet-pan-anim"),this.fire("moveend")},_tryAnimatedPan:function(t,e){var i=this._getCenterOffset(t)._trunc();return!(!0!==(e&&e.animate)&&!this.getSize().contains(i)||(this.panBy(i,e),0))},_createAnimProxy:function(){var t=this._proxy=he("div","leaflet-proxy leaflet-zoom-animated");this._panes.mapPane.appendChild(t),this.on("zoomanim",function(t){var e=re,i=this._proxy.style[e];Ce(this._proxy,this.project(t.center,t.zoom),this.getZoomScale(t.zoom,1)),i===this._proxy.style[e]&&this._animatingZoom&&this._onZoomTransitionEnd()},this),this.on("load moveend",function(){var t=this.getCenter(),e=this.getZoom();Ce(this._proxy,this.project(t,e),this.getZoomScale(e,1))},this),this._on("unload",this._destroyAnimProxy,this)},_destroyAnimProxy:function(){ue(this._proxy),delete this._proxy},_catchTransitionEnd:function(t){this._animatingZoom&&t.propertyName.indexOf("transform")>=0&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName("leaflet-zoom-animated").length},_tryAnimatedZoom:function(t,e,i){if(this._animatingZoom)return!0;if(i=i||{},!this._zoomAnimated||!1===i.animate||this._nothingToAnimate()||Math.abs(e-this._zoom)>this.options.zoomAnimationThreshold)return!1;var o=this.getZoomScale(e),n=this._getCenterOffset(t)._divideBy(1-1/o);return!(!0!==i.animate&&!this.getSize().contains(n)||(A(function(){this._moveStart(!0,!1)._animateZoom(t,e,!0)},this),0))},_animateZoom:function(t,e,i,o){this._mapPane&&(i&&(this._animatingZoom=!0,this._animateToCenter=t,this._animateToZoom=e,ve(this._mapPane,"leaflet-zoom-anim")),this.fire("zoomanim",{center:t,zoom:e,noUpdate:o}),setTimeout(s(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&be(this._mapPane,"leaflet-zoom-anim"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom),A(function(){this._moveEnd(!0)},this))}});function oi(t,e){return new ii(t,e)}var ni=T.extend({options:{position:"topright"},initialize:function(t){m(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var e=this._map;return e&&e.removeControl(this),this.options.position=t,e&&e.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this.remove(),this._map=t;var e=this._container=this.onAdd(t),i=this.getPosition(),o=t._controlCorners[i];return ve(e,"leaflet-control"),-1!==i.indexOf("bottom")?o.insertBefore(e,o.firstChild):o.appendChild(e),this._map.on("unload",this.remove,this),this},remove:function(){return this._map?(ue(this._container),this.onRemove&&this.onRemove(this._map),this._map.off("unload",this.remove,this),this._map=null,this):this},_refocusOnMap:function(t){this._map&&t&&t.screenX>0&&t.screenY>0&&this._map.getContainer().focus()}}),si=function(t){return new ni(t)};ii.include({addControl:function(t){return t.addTo(this),this},removeControl:function(t){return t.remove(),this},_initControlPos:function(){var t=this._controlCorners={},e="leaflet-",i=this._controlContainer=he("div",e+"control-container",this._container);function o(o,n){var s=e+o+" "+e+n;t[o+n]=he("div",s,i)}o("top","left"),o("top","right"),o("bottom","left"),o("bottom","right")},_clearControlPos:function(){for(var t in this._controlCorners)ue(this._controlCorners[t]);ue(this._controlContainer),delete this._controlCorners,delete this._controlContainer}});var ri=ni.extend({options:{collapsed:!0,position:"topright",autoZIndex:!0,hideSingleBase:!1,sortLayers:!1,sortFunction:function(t,e,i,o){return i<o?-1:o<i?1:0}},initialize:function(t,e,i){for(var o in m(this,i),this._layerControlInputs=[],this._layers=[],this._lastZIndex=0,this._handlingClick=!1,t)this._addLayer(t[o],o);for(o in e)this._addLayer(e[o],o,!0)},onAdd:function(t){this._initLayout(),this._update(),this._map=t,t.on("zoomend",this._checkDisabledLayers,this);for(var e=0;e<this._layers.length;e++)this._layers[e].layer.on("add remove",this._onLayerChange,this);return this._container},addTo:function(t){return ni.prototype.addTo.call(this,t),this._expandIfNotCollapsed()},onRemove:function(){this._map.off("zoomend",this._checkDisabledLayers,this);for(var t=0;t<this._layers.length;t++)this._layers[t].layer.off("add remove",this._onLayerChange,this)},addBaseLayer:function(t,e){return this._addLayer(t,e),this._map?this._update():this},addOverlay:function(t,e){return this._addLayer(t,e,!0),this._map?this._update():this},removeLayer:function(t){t.off("add remove",this._onLayerChange,this);var e=this._getLayer(a(t));return e&&this._layers.splice(this._layers.indexOf(e),1),this._map?this._update():this},expand:function(){ve(this._container,"leaflet-control-layers-expanded"),this._section.style.height=null;var t=this._map.getSize().y-(this._container.offsetTop+50);return t<this._section.clientHeight?(ve(this._section,"leaflet-control-layers-scrollbar"),this._section.style.height=t+"px"):be(this._section,"leaflet-control-layers-scrollbar"),this._checkDisabledLayers(),this},collapse:function(){return be(this._container,"leaflet-control-layers-expanded"),this},_initLayout:function(){var t="leaflet-control-layers",e=this._container=he("div",t),i=this.options.collapsed;e.setAttribute("aria-haspopup",!0),Ue(e),qe(e);var o=this._section=he("section",t+"-list");i&&(this._map.on("click",this.collapse,this),nt||Le(e,{mouseenter:this.expand,mouseleave:this.collapse},this));var n=this._layersLink=he("a",t+"-toggle",e);n.href="#",n.title="Layers",Ct?(Le(n,"click",He),Le(n,"click",this.expand,this)):Le(n,"focus",this.expand,this),i||this.expand(),this._baseLayersList=he("div",t+"-base",o),this._separator=he("div",t+"-separator",o),this._overlaysList=he("div",t+"-overlays",o),e.appendChild(o)},_getLayer:function(t){for(var e=0;e<this._layers.length;e++)if(this._layers[e]&&a(this._layers[e].layer)===t)return this._layers[e]},_addLayer:function(t,e,i){this._map&&t.on("add remove",this._onLayerChange,this),this._layers.push({layer:t,name:e,overlay:i}),this.options.sortLayers&&this._layers.sort(s(function(t,e){return this.options.sortFunction(t.layer,e.layer,t.name,e.name)},this)),this.options.autoZIndex&&t.setZIndex&&(this._lastZIndex++,t.setZIndex(this._lastZIndex)),this._expandIfNotCollapsed()},_update:function(){if(!this._container)return this;pe(this._baseLayersList),pe(this._overlaysList),this._layerControlInputs=[];var t,e,i,o,n=0;for(i=0;i<this._layers.length;i++)o=this._layers[i],this._addItem(o),e=e||o.overlay,t=t||!o.overlay,n+=o.overlay?0:1;return this.options.hideSingleBase&&(t=t&&n>1,this._baseLayersList.style.display=t?"":"none"),this._separator.style.display=e&&t?"":"none",this},_onLayerChange:function(t){this._handlingClick||this._update();var e=this._getLayer(a(t.target)),i=e.overlay?"add"===t.type?"overlayadd":"overlayremove":"add"===t.type?"baselayerchange":null;i&&this._map.fire(i,e)},_createRadioElement:function(t,e){var i='<input type="radio" class="leaflet-control-layers-selector" name="'+t+'"'+(e?' checked="checked"':"")+"/>",o=document.createElement("div");return o.innerHTML=i,o.firstChild},_addItem:function(t){var e,i=document.createElement("label"),o=this._map.hasLayer(t.layer);t.overlay?((e=document.createElement("input")).type="checkbox",e.className="leaflet-control-layers-selector",e.defaultChecked=o):e=this._createRadioElement("leaflet-base-layers_"+a(this),o),this._layerControlInputs.push(e),e.layerId=a(t.layer),Le(e,"click",this._onInputClick,this);var n=document.createElement("span");n.innerHTML=" "+t.name;var s=document.createElement("div");return i.appendChild(s),s.appendChild(e),s.appendChild(n),(t.overlay?this._overlaysList:this._baseLayersList).appendChild(i),this._checkDisabledLayers(),i},_onInputClick:function(){var t,e,i=this._layerControlInputs,o=[],n=[];this._handlingClick=!0;for(var s=i.length-1;s>=0;s--)t=i[s],e=this._getLayer(t.layerId).layer,t.checked?o.push(e):t.checked||n.push(e);for(s=0;s<n.length;s++)this._map.hasLayer(n[s])&&this._map.removeLayer(n[s]);for(s=0;s<o.length;s++)this._map.hasLayer(o[s])||this._map.addLayer(o[s]);this._handlingClick=!1,this._refocusOnMap()},_checkDisabledLayers:function(){for(var t,e,i=this._layerControlInputs,o=this._map.getZoom(),n=i.length-1;n>=0;n--)t=i[n],e=this._getLayer(t.layerId).layer,t.disabled=void 0!==e.options.minZoom&&o<e.options.minZoom||void 0!==e.options.maxZoom&&o>e.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expand:function(){return this.expand()},_collapse:function(){return this.collapse()}}),ai=function(t,e,i){return new ri(t,e,i)},li=ni.extend({options:{position:"topleft",zoomInText:"+",zoomInTitle:"Zoom in",zoomOutText:"−",zoomOutTitle:"Zoom out"},onAdd:function(t){var e="leaflet-control-zoom",i=he("div",e+" leaflet-bar"),o=this.options;return this._zoomInButton=this._createButton(o.zoomInText,o.zoomInTitle,e+"-in",i,this._zoomIn),this._zoomOutButton=this._createButton(o.zoomOutText,o.zoomOutTitle,e+"-out",i,this._zoomOut),this._updateDisabled(),t.on("zoomend zoomlevelschange",this._updateDisabled,this),i},onRemove:function(t){t.off("zoomend zoomlevelschange",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(t){!this._disabled&&this._map._zoom<this._map.getMaxZoom()&&this._map.zoomIn(this._map.options.zoomDelta*(t.shiftKey?3:1))},_zoomOut:function(t){!this._disabled&&this._map._zoom>this._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(t.shiftKey?3:1))},_createButton:function(t,e,i,o,n){var s=he("a",i,o);return s.innerHTML=t,s.href="#",s.title=e,s.setAttribute("role","button"),s.setAttribute("aria-label",e),Ue(s),Le(s,"click",He),Le(s,"click",n,this),Le(s,"click",this._refocusOnMap,this),s},_updateDisabled:function(){var t=this._map,e="leaflet-disabled";be(this._zoomInButton,e),be(this._zoomOutButton,e),(this._disabled||t._zoom===t.getMinZoom())&&ve(this._zoomOutButton,e),(this._disabled||t._zoom===t.getMaxZoom())&&ve(this._zoomInButton,e)}});ii.mergeOptions({zoomControl:!0}),ii.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new li,this.addControl(this.zoomControl))});var di=function(t){return new li(t)},ci=ni.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0},onAdd:function(t){var e="leaflet-control-scale",i=he("div",e),o=this.options;return this._addScales(o,e+"-line",i),t.on(o.updateWhenIdle?"moveend":"move",this._update,this),t.whenReady(this._update,this),i},onRemove:function(t){t.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(t,e,i){t.metric&&(this._mScale=he("div",e,i)),t.imperial&&(this._iScale=he("div",e,i))},_update:function(){var t=this._map,e=t.getSize().y/2,i=t.distance(t.containerPointToLatLng([0,e]),t.containerPointToLatLng([this.options.maxWidth,e]));this._updateScales(i)},_updateScales:function(t){this.options.metric&&t&&this._updateMetric(t),this.options.imperial&&t&&this._updateImperial(t)},_updateMetric:function(t){var e=this._getRoundNum(t),i=e<1e3?e+" m":e/1e3+" km";this._updateScale(this._mScale,i,e/t)},_updateImperial:function(t){var e,i,o,n=3.2808399*t;n>5280?(e=n/5280,i=this._getRoundNum(e),this._updateScale(this._iScale,i+" mi",i/e)):(o=this._getRoundNum(n),this._updateScale(this._iScale,o+" ft",o/n))},_updateScale:function(t,e,i){t.style.width=Math.round(this.options.maxWidth*i)+"px",t.innerHTML=e},_getRoundNum:function(t){var e=Math.pow(10,(Math.floor(t)+"").length-1),i=t/e;return e*(i=i>=10?10:i>=5?5:i>=3?3:i>=2?2:1)}}),hi=function(t){return new ci(t)},ui=ni.extend({options:{position:"bottomright",prefix:'<a href="https://leafletjs.com" title="A JS library for interactive maps">Leaflet</a>'},initialize:function(t){m(this,t),this._attributions={}},onAdd:function(t){for(var e in t.attributionControl=this,this._container=he("div","leaflet-control-attribution"),Ue(this._container),t._layers)t._layers[e].getAttribution&&this.addAttribution(t._layers[e].getAttribution());return this._update(),this._container},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t?(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update(),this):this},removeAttribution:function(t){return t?(this._attributions[t]&&(this._attributions[t]--,this._update()),this):this},_update:function(){if(this._map){var t=[];for(var e in this._attributions)this._attributions[e]&&t.push(e);var i=[];this.options.prefix&&i.push(this.options.prefix),t.length&&i.push(t.join(", ")),this._container.innerHTML=i.join(" | ")}}});ii.mergeOptions({attributionControl:!0}),ii.addInitHook(function(){this.options.attributionControl&&(new ui).addTo(this)});var pi=function(t){return new ui(t)};ni.Layers=ri,ni.Zoom=li,ni.Scale=ci,ni.Attribution=ui,si.layers=ai,si.zoom=di,si.scale=hi,si.attribution=pi;var mi=T.extend({initialize:function(t){this._map=t},enable:function(){return this._enabled||(this._enabled=!0,this.addHooks()),this},disable:function(){return this._enabled?(this._enabled=!1,this.removeHooks(),this):this},enabled:function(){return!!this._enabled}});mi.addTo=function(t,e){return t.addHandler(e,this),this};var gi,fi={Events:M},vi=Ct?"touchstart mousedown":"mousedown",bi={mousedown:"mouseup",touchstart:"touchend",pointerdown:"touchend",MSPointerDown:"touchend"},yi={mousedown:"mousemove",touchstart:"touchmove",pointerdown:"touchmove",MSPointerDown:"touchmove"},xi=z.extend({options:{clickTolerance:3},initialize:function(t,e,i,o){m(this,o),this._element=t,this._dragStartTarget=e||t,this._preventOutline=i},enable:function(){this._enabled||(Le(this._dragStartTarget,vi,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(xi._dragging===this&&this.finishDrag(),Re(this._dragStartTarget,vi,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(t){if(!t._simulated&&this._enabled&&(this._moved=!1,!fe(this._element,"leaflet-zoom-anim")&&!(xi._dragging||t.shiftKey||1!==t.which&&1!==t.button&&!t.touches||(xi._dragging=this,this._preventOutline&&De(this._element),Ee(),ee(),this._moving)))){this.fire("down");var e=t.touches?t.touches[0]:t,i=ze(this._element);this._startPoint=new I(e.clientX,e.clientY),this._parentScale=Ie(i),Le(document,yi[t.type],this._onMove,this),Le(document,bi[t.type],this._onUp,this)}},_onMove:function(t){if(!t._simulated&&this._enabled)if(t.touches&&t.touches.length>1)this._moved=!0;else{var e=t.touches&&1===t.touches.length?t.touches[0]:t,i=new I(e.clientX,e.clientY)._subtract(this._startPoint);(i.x||i.y)&&(Math.abs(i.x)+Math.abs(i.y)<this.options.clickTolerance||(i.x/=this._parentScale.x,i.y/=this._parentScale.y,je(t),this._moved||(this.fire("dragstart"),this._moved=!0,this._startPos=Ae(this._element).subtract(i),ve(document.body,"leaflet-dragging"),this._lastTarget=t.target||t.srcElement,window.SVGElementInstance&&this._lastTarget instanceof SVGElementInstance&&(this._lastTarget=this._lastTarget.correspondingUseElement),ve(this._lastTarget,"leaflet-drag-target")),this._newPos=this._startPos.add(i),this._moving=!0,$(this._animRequest),this._lastEvent=t,this._animRequest=A(this._updatePosition,this,!0)))}},_updatePosition:function(){var t={originalEvent:this._lastEvent};this.fire("predrag",t),Se(this._element,this._newPos),this.fire("drag",t)},_onUp:function(t){!t._simulated&&this._enabled&&this.finishDrag()},finishDrag:function(){for(var t in be(document.body,"leaflet-dragging"),this._lastTarget&&(be(this._lastTarget,"leaflet-drag-target"),this._lastTarget=null),yi)Re(document,yi[t],this._onMove,this),Re(document,bi[t],this._onUp,this);Te(),ie(),this._moved&&this._moving&&($(this._animRequest),this.fire("dragend",{distance:this._newPos.distanceTo(this._startPos)})),this._moving=!1,xi._dragging=!1}});function wi(t,e){if(!e||!t.length)return t.slice();var i=e*e;return t=Ci(t=Ai(t,i),i)}function _i(t,e,i){return Math.sqrt(Mi(t,e,i,!0))}function ki(t,e,i){return Mi(t,e,i)}function Ci(t,e){var i=t.length,o=new(typeof Uint8Array!=void 0+""?Uint8Array:Array)(i);o[0]=o[i-1]=1,Si(t,o,e,0,i-1);var n,s=[];for(n=0;n<i;n++)o[n]&&s.push(t[n]);return s}function Si(t,e,i,o,n){var s,r,a,l=0;for(r=o+1;r<=n-1;r++)(a=Mi(t[r],t[o],t[n],!0))>l&&(s=r,l=a);l>i&&(e[s]=1,Si(t,e,i,o,s),Si(t,e,i,s,n))}function Ai(t,e){for(var i=[t[0]],o=1,n=0,s=t.length;o<s;o++)Di(t[o],t[n])>e&&(i.push(t[o]),n=o);return n<s-1&&i.push(t[s-1]),i}function $i(t,e,i,o,n){var s,r,a,l=o?gi:Ti(t,i),d=Ti(e,i);for(gi=d;;){if(!(l|d))return[t,e];if(l&d)return!1;a=Ti(r=Ei(t,e,s=l||d,i,n),i),s===l?(t=r,l=a):(e=r,d=a)}}function Ei(t,e,i,o,n){var s,r,a=e.x-t.x,l=e.y-t.y,d=o.min,c=o.max;return 8&i?(s=t.x+a*(c.y-t.y)/l,r=c.y):4&i?(s=t.x+a*(d.y-t.y)/l,r=d.y):2&i?(s=c.x,r=t.y+l*(c.x-t.x)/a):1&i&&(s=d.x,r=t.y+l*(d.x-t.x)/a),new I(s,r,n)}function Ti(t,e){var i=0;return t.x<e.min.x?i|=1:t.x>e.max.x&&(i|=2),t.y<e.min.y?i|=4:t.y>e.max.y&&(i|=8),i}function Di(t,e){var i=e.x-t.x,o=e.y-t.y;return i*i+o*o}function Mi(t,e,i,o){var n,s=e.x,r=e.y,a=i.x-s,l=i.y-r,d=a*a+l*l;return d>0&&((n=((t.x-s)*a+(t.y-r)*l)/d)>1?(s=i.x,r=i.y):n>0&&(s+=a*n,r+=l*n)),a=t.x-s,l=t.y-r,o?a*a+l*l:new I(s,r)}function zi(t){return!b(t[0])||"object"!=typeof t[0][0]&&void 0!==t[0][0]}function Ii(t){return console.warn("Deprecated use of _flat, please use L.LineUtil.isFlat instead."),zi(t)}var Oi=(Object.freeze||Object)({simplify:wi,pointToSegmentDistance:_i,closestPointOnSegment:ki,clipSegment:$i,_getEdgeIntersection:Ei,_getBitCode:Ti,_sqClosestPointOnSegment:Mi,isFlat:zi,_flat:Ii});function Li(t,e,i){var o,n,s,r,a,l,d,c,h,u=[1,4,2,8];for(n=0,d=t.length;n<d;n++)t[n]._code=Ti(t[n],e);for(r=0;r<4;r++){for(c=u[r],o=[],n=0,s=(d=t.length)-1;n<d;s=n++)a=t[n],l=t[s],a._code&c?l._code&c||((h=Ei(l,a,c,e,i))._code=Ti(h,e),o.push(h)):(l._code&c&&((h=Ei(l,a,c,e,i))._code=Ti(h,e),o.push(h)),o.push(a));t=o}return t}var Pi=(Object.freeze||Object)({clipPolygon:Li}),Ri={project:function(t){return new I(t.lng,t.lat)},unproject:function(t){return new q(t.y,t.x)},bounds:new R([-180,-90],[180,90])},Ni={R:6378137,R_MINOR:6356752.314245179,bounds:new R([-20037508.34279,-15496570.73972],[20037508.34279,18764656.23138]),project:function(t){var e=Math.PI/180,i=this.R,o=t.lat*e,n=this.R_MINOR/i,s=Math.sqrt(1-n*n),r=s*Math.sin(o),a=Math.tan(Math.PI/4-o/2)/Math.pow((1-r)/(1+r),s/2);return o=-i*Math.log(Math.max(a,1e-10)),new I(t.lng*e*i,o)},unproject:function(t){for(var e,i=180/Math.PI,o=this.R,n=this.R_MINOR/o,s=Math.sqrt(1-n*n),r=Math.exp(-t.y/o),a=Math.PI/2-2*Math.atan(r),l=0,d=.1;l<15&&Math.abs(d)>1e-7;l++)e=s*Math.sin(a),e=Math.pow((1-e)/(1+e),s/2),a+=d=Math.PI/2-2*Math.atan(r*e)-a;return new q(a*i,t.x*i/o)}},Bi=(Object.freeze||Object)({LonLat:Ri,Mercator:Ni,SphericalMercator:V}),Fi=o({},H,{code:"EPSG:3395",projection:Ni,transformation:function(){var t=.5/(Math.PI*Ni.R);return Y(t,.5,-t,.5)}()}),qi=o({},H,{code:"EPSG:4326",projection:Ri,transformation:Y(1/180,1,-1/180,.5)}),Ui=o({},j,{projection:Ri,transformation:Y(1,0,-1,0),scale:function(t){return Math.pow(2,t)},zoom:function(t){return Math.log(t)/Math.LN2},distance:function(t,e){var i=e.lng-t.lng,o=e.lat-t.lat;return Math.sqrt(i*i+o*o)},infinite:!0});j.Earth=H,j.EPSG3395=Fi,j.EPSG3857=K,j.EPSG900913=G,j.EPSG4326=qi,j.Simple=Ui;var ji=z.extend({options:{pane:"overlayPane",attribution:null,bubblingMouseEvents:!0},addTo:function(t){return t.addLayer(this),this},remove:function(){return this.removeFrom(this._map||this._mapToAdd)},removeFrom:function(t){return t&&t.removeLayer(this),this},getPane:function(t){return this._map.getPane(t?this.options[t]||t:this.options.pane)},addInteractiveTarget:function(t){return this._map._targets[a(t)]=this,this},removeInteractiveTarget:function(t){return delete this._map._targets[a(t)],this},getAttribution:function(){return this.options.attribution},_layerAdd:function(t){var e=t.target;if(e.hasLayer(this)){if(this._map=e,this._zoomAnimated=e._zoomAnimated,this.getEvents){var i=this.getEvents();e.on(i,this),this.once("remove",function(){e.off(i,this)},this)}this.onAdd(e),this.getAttribution&&e.attributionControl&&e.attributionControl.addAttribution(this.getAttribution()),this.fire("add"),e.fire("layeradd",{layer:this})}}});ii.include({addLayer:function(t){if(!t._layerAdd)throw new Error("The provided object is not a Layer.");var e=a(t);return this._layers[e]||(this._layers[e]=t,t._mapToAdd=this,t.beforeAdd&&t.beforeAdd(this),this.whenReady(t._layerAdd,t)),this},removeLayer:function(t){var e=a(t);return this._layers[e]?(this._loaded&&t.onRemove(this),t.getAttribution&&this.attributionControl&&this.attributionControl.removeAttribution(t.getAttribution()),delete this._layers[e],this._loaded&&(this.fire("layerremove",{layer:t}),t.fire("remove")),t._map=t._mapToAdd=null,this):this},hasLayer:function(t){return!!t&&a(t)in this._layers},eachLayer:function(t,e){for(var i in this._layers)t.call(e,this._layers[i]);return this},_addLayers:function(t){for(var e=0,i=(t=t?b(t)?t:[t]:[]).length;e<i;e++)this.addLayer(t[e])},_addZoomLimit:function(t){!isNaN(t.options.maxZoom)&&isNaN(t.options.minZoom)||(this._zoomBoundLayers[a(t)]=t,this._updateZoomLevels())},_removeZoomLimit:function(t){var e=a(t);this._zoomBoundLayers[e]&&(delete this._zoomBoundLayers[e],this._updateZoomLevels())},_updateZoomLevels:function(){var t=1/0,e=-1/0,i=this._getZoomSpan();for(var o in this._zoomBoundLayers){var n=this._zoomBoundLayers[o].options;t=void 0===n.minZoom?t:Math.min(t,n.minZoom),e=void 0===n.maxZoom?e:Math.max(e,n.maxZoom)}this._layersMaxZoom=e===-1/0?void 0:e,this._layersMinZoom=t===1/0?void 0:t,i!==this._getZoomSpan()&&this.fire("zoomlevelschange"),void 0===this.options.maxZoom&&this._layersMaxZoom&&this.getZoom()>this._layersMaxZoom&&this.setZoom(this._layersMaxZoom),void 0===this.options.minZoom&&this._layersMinZoom&&this.getZoom()<this._layersMinZoom&&this.setZoom(this._layersMinZoom)}});var Hi=ji.extend({initialize:function(t,e){var i,o;if(m(this,e),this._layers={},t)for(i=0,o=t.length;i<o;i++)this.addLayer(t[i])},addLayer:function(t){var e=this.getLayerId(t);return this._layers[e]=t,this._map&&this._map.addLayer(t),this},removeLayer:function(t){var e=t in this._layers?t:this.getLayerId(t);return this._map&&this._layers[e]&&this._map.removeLayer(this._layers[e]),delete this._layers[e],this},hasLayer:function(t){return!!t&&(t in this._layers||this.getLayerId(t)in this._layers)},clearLayers:function(){return this.eachLayer(this.removeLayer,this)},invoke:function(t){var e,i,o=Array.prototype.slice.call(arguments,1);for(e in this._layers)(i=this._layers[e])[t]&&i[t].apply(i,o);return this},onAdd:function(t){this.eachLayer(t.addLayer,t)},onRemove:function(t){this.eachLayer(t.removeLayer,t)},eachLayer:function(t,e){for(var i in this._layers)t.call(e,this._layers[i]);return this},getLayer:function(t){return this._layers[t]},getLayers:function(){var t=[];return this.eachLayer(t.push,t),t},setZIndex:function(t){return this.invoke("setZIndex",t)},getLayerId:function(t){return a(t)}}),Wi=function(t,e){return new Hi(t,e)},Vi=Hi.extend({addLayer:function(t){return this.hasLayer(t)?this:(t.addEventParent(this),Hi.prototype.addLayer.call(this,t),this.fire("layeradd",{layer:t}))},removeLayer:function(t){return this.hasLayer(t)?(t in this._layers&&(t=this._layers[t]),t.removeEventParent(this),Hi.prototype.removeLayer.call(this,t),this.fire("layerremove",{layer:t})):this},setStyle:function(t){return this.invoke("setStyle",t)},bringToFront:function(){return this.invoke("bringToFront")},bringToBack:function(){return this.invoke("bringToBack")},getBounds:function(){var t=new B;for(var e in this._layers){var i=this._layers[e];t.extend(i.getBounds?i.getBounds():i.getLatLng())}return t}}),Zi=function(t){return new Vi(t)},Yi=T.extend({options:{popupAnchor:[0,0],tooltipAnchor:[0,0]},initialize:function(t){m(this,t)},createIcon:function(t){return this._createIcon("icon",t)},createShadow:function(t){return this._createIcon("shadow",t)},_createIcon:function(t,e){var i=this._getIconUrl(t);if(!i){if("icon"===t)throw new Error("iconUrl not set in Icon options (see the docs).");return null}var o=this._createImg(i,e&&"IMG"===e.tagName?e:null);return this._setIconStyles(o,t),o},_setIconStyles:function(t,e){var i=this.options,o=i[e+"Size"];"number"==typeof o&&(o=[o,o]);var n=P(o),s=P("shadow"===e&&i.shadowAnchor||i.iconAnchor||n&&n.divideBy(2,!0));t.className="leaflet-marker-"+e+" "+(i.className||""),s&&(t.style.marginLeft=-s.x+"px",t.style.marginTop=-s.y+"px"),n&&(t.style.width=n.x+"px",t.style.height=n.y+"px")},_createImg:function(t,e){return(e=e||document.createElement("img")).src=t,e},_getIconUrl:function(t){return $t&&this.options[t+"RetinaUrl"]||this.options[t+"Url"]}});function Ki(t){return new Yi(t)}var Gi=Yi.extend({options:{iconUrl:"marker-icon.png",iconRetinaUrl:"marker-icon-2x.png",shadowUrl:"marker-shadow.png",iconSize:[25,41],iconAnchor:[12,41],popupAnchor:[1,-34],tooltipAnchor:[16,-28],shadowSize:[41,41]},_getIconUrl:function(t){return Gi.imagePath||(Gi.imagePath=this._detectIconPath()),(this.options.imagePath||Gi.imagePath)+Yi.prototype._getIconUrl.call(this,t)},_detectIconPath:function(){var t=he("div","leaflet-default-icon-path",document.body),e=ce(t,"background-image")||ce(t,"backgroundImage");return document.body.removeChild(t),e=null===e||0!==e.indexOf("url")?"":e.replace(/^url\(["']?/,"").replace(/marker-icon\.png["']?\)$/,"")}}),Xi=mi.extend({initialize:function(t){this._marker=t},addHooks:function(){var t=this._marker._icon;this._draggable||(this._draggable=new xi(t,t,!0)),this._draggable.on({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).enable(),ve(t,"leaflet-marker-draggable")},removeHooks:function(){this._draggable.off({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).disable(),this._marker._icon&&be(this._marker._icon,"leaflet-marker-draggable")},moved:function(){return this._draggable&&this._draggable._moved},_adjustPan:function(t){var e=this._marker,i=e._map,o=this._marker.options.autoPanSpeed,n=this._marker.options.autoPanPadding,s=Ae(e._icon),r=i.getPixelBounds(),a=i.getPixelOrigin(),l=N(r.min._subtract(a).add(n),r.max._subtract(a).subtract(n));if(!l.contains(s)){var d=P((Math.max(l.max.x,s.x)-l.max.x)/(r.max.x-l.max.x)-(Math.min(l.min.x,s.x)-l.min.x)/(r.min.x-l.min.x),(Math.max(l.max.y,s.y)-l.max.y)/(r.max.y-l.max.y)-(Math.min(l.min.y,s.y)-l.min.y)/(r.min.y-l.min.y)).multiplyBy(o);i.panBy(d,{animate:!1}),this._draggable._newPos._add(d),this._draggable._startPos._add(d),Se(e._icon,this._draggable._newPos),this._onDrag(t),this._panRequest=A(this._adjustPan.bind(this,t))}},_onDragStart:function(){this._oldLatLng=this._marker.getLatLng(),this._marker.closePopup().fire("movestart").fire("dragstart")},_onPreDrag:function(t){this._marker.options.autoPan&&($(this._panRequest),this._panRequest=A(this._adjustPan.bind(this,t)))},_onDrag:function(t){var e=this._marker,i=e._shadow,o=Ae(e._icon),n=e._map.layerPointToLatLng(o);i&&Se(i,o),e._latlng=n,t.latlng=n,t.oldLatLng=this._oldLatLng,e.fire("move",t).fire("drag",t)},_onDragEnd:function(t){$(this._panRequest),delete this._oldLatLng,this._marker.fire("moveend").fire("dragend",t)}}),Qi=ji.extend({options:{icon:new Gi,interactive:!0,keyboard:!0,title:"",alt:"",zIndexOffset:0,opacity:1,riseOnHover:!1,riseOffset:250,pane:"markerPane",shadowPane:"shadowPane",bubblingMouseEvents:!1,draggable:!1,autoPan:!1,autoPanPadding:[50,50],autoPanSpeed:10},initialize:function(t,e){m(this,e),this._latlng=U(t)},onAdd:function(t){this._zoomAnimated=this._zoomAnimated&&t.options.markerZoomAnimation,this._zoomAnimated&&t.on("zoomanim",this._animateZoom,this),this._initIcon(),this.update()},onRemove:function(t){this.dragging&&this.dragging.enabled()&&(this.options.draggable=!0,this.dragging.removeHooks()),delete this.dragging,this._zoomAnimated&&t.off("zoomanim",this._animateZoom,this),this._removeIcon(),this._removeShadow()},getEvents:function(){return{zoom:this.update,viewreset:this.update}},getLatLng:function(){return this._latlng},setLatLng:function(t){var e=this._latlng;return this._latlng=U(t),this.update(),this.fire("move",{oldLatLng:e,latlng:this._latlng})},setZIndexOffset:function(t){return this.options.zIndexOffset=t,this.update()},getIcon:function(){return this.options.icon},setIcon:function(t){return this.options.icon=t,this._map&&(this._initIcon(),this.update()),this._popup&&this.bindPopup(this._popup,this._popup.options),this},getElement:function(){return this._icon},update:function(){if(this._icon&&this._map){var t=this._map.latLngToLayerPoint(this._latlng).round();this._setPos(t)}return this},_initIcon:function(){var t=this.options,e="leaflet-zoom-"+(this._zoomAnimated?"animated":"hide"),i=t.icon.createIcon(this._icon),o=!1;i!==this._icon&&(this._icon&&this._removeIcon(),o=!0,t.title&&(i.title=t.title),"IMG"===i.tagName&&(i.alt=t.alt||"")),ve(i,e),t.keyboard&&(i.tabIndex="0"),this._icon=i,t.riseOnHover&&this.on({mouseover:this._bringToFront,mouseout:this._resetZIndex});var n=t.icon.createShadow(this._shadow),s=!1;n!==this._shadow&&(this._removeShadow(),s=!0),n&&(ve(n,e),n.alt=""),this._shadow=n,t.opacity<1&&this._updateOpacity(),o&&this.getPane().appendChild(this._icon),this._initInteraction(),n&&s&&this.getPane(t.shadowPane).appendChild(this._shadow)},_removeIcon:function(){this.options.riseOnHover&&this.off({mouseover:this._bringToFront,mouseout:this._resetZIndex}),ue(this._icon),this.removeInteractiveTarget(this._icon),this._icon=null},_removeShadow:function(){this._shadow&&ue(this._shadow),this._shadow=null},_setPos:function(t){Se(this._icon,t),this._shadow&&Se(this._shadow,t),this._zIndex=t.y+this.options.zIndexOffset,this._resetZIndex()},_updateZIndex:function(t){this._icon.style.zIndex=this._zIndex+t},_animateZoom:function(t){var e=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center).round();this._setPos(e)},_initInteraction:function(){if(this.options.interactive&&(ve(this._icon,"leaflet-interactive"),this.addInteractiveTarget(this._icon),Xi)){var t=this.options.draggable;this.dragging&&(t=this.dragging.enabled(),this.dragging.disable()),this.dragging=new Xi(this),t&&this.dragging.enable()}},setOpacity:function(t){return this.options.opacity=t,this._map&&this._updateOpacity(),this},_updateOpacity:function(){var t=this.options.opacity;this._icon&&we(this._icon,t),this._shadow&&we(this._shadow,t)},_bringToFront:function(){this._updateZIndex(this.options.riseOffset)},_resetZIndex:function(){this._updateZIndex(0)},_getPopupAnchor:function(){return this.options.icon.options.popupAnchor},_getTooltipAnchor:function(){return this.options.icon.options.tooltipAnchor}});function Ji(t,e){return new Qi(t,e)}var to=ji.extend({options:{stroke:!0,color:"#3388ff",weight:3,opacity:1,lineCap:"round",lineJoin:"round",dashArray:null,dashOffset:null,fill:!1,fillColor:null,fillOpacity:.2,fillRule:"evenodd",interactive:!0,bubblingMouseEvents:!0},beforeAdd:function(t){this._renderer=t.getRenderer(this)},onAdd:function(){this._renderer._initPath(this),this._reset(),this._renderer._addPath(this)},onRemove:function(){this._renderer._removePath(this)},redraw:function(){return this._map&&this._renderer._updatePath(this),this},setStyle:function(t){return m(this,t),this._renderer&&(this._renderer._updateStyle(this),this.options.stroke&&t.hasOwnProperty("weight")&&this._updateBounds()),this},bringToFront:function(){return this._renderer&&this._renderer._bringToFront(this),this},bringToBack:function(){return this._renderer&&this._renderer._bringToBack(this),this},getElement:function(){return this._path},_reset:function(){this._project(),this._update()},_clickTolerance:function(){return(this.options.stroke?this.options.weight/2:0)+this._renderer.options.tolerance}}),eo=to.extend({options:{fill:!0,radius:10},initialize:function(t,e){m(this,e),this._latlng=U(t),this._radius=this.options.radius},setLatLng:function(t){return this._latlng=U(t),this.redraw(),this.fire("move",{latlng:this._latlng})},getLatLng:function(){return this._latlng},setRadius:function(t){return this.options.radius=this._radius=t,this.redraw()},getRadius:function(){return this._radius},setStyle:function(t){var e=t&&t.radius||this._radius;return to.prototype.setStyle.call(this,t),this.setRadius(e),this},_project:function(){this._point=this._map.latLngToLayerPoint(this._latlng),this._updateBounds()},_updateBounds:function(){var t=this._radius,e=this._radiusY||t,i=this._clickTolerance(),o=[t+i,e+i];this._pxBounds=new R(this._point.subtract(o),this._point.add(o))},_update:function(){this._map&&this._updatePath()},_updatePath:function(){this._renderer._updateCircle(this)},_empty:function(){return this._radius&&!this._renderer._bounds.intersects(this._pxBounds)},_containsPoint:function(t){return t.distanceTo(this._point)<=this._radius+this._clickTolerance()}});function io(t,e){return new eo(t,e)}var oo=eo.extend({initialize:function(t,e,i){if("number"==typeof e&&(e=o({},i,{radius:e})),m(this,e),this._latlng=U(t),isNaN(this.options.radius))throw new Error("Circle radius cannot be NaN");this._mRadius=this.options.radius},setRadius:function(t){return this._mRadius=t,this.redraw()},getRadius:function(){return this._mRadius},getBounds:function(){var t=[this._radius,this._radiusY||this._radius];return new B(this._map.layerPointToLatLng(this._point.subtract(t)),this._map.layerPointToLatLng(this._point.add(t)))},setStyle:to.prototype.setStyle,_project:function(){var t=this._latlng.lng,e=this._latlng.lat,i=this._map,o=i.options.crs;if(o.distance===H.distance){var n=Math.PI/180,s=this._mRadius/H.R/n,r=i.project([e+s,t]),a=i.project([e-s,t]),l=r.add(a).divideBy(2),d=i.unproject(l).lat,c=Math.acos((Math.cos(s*n)-Math.sin(e*n)*Math.sin(d*n))/(Math.cos(e*n)*Math.cos(d*n)))/n;(isNaN(c)||0===c)&&(c=s/Math.cos(Math.PI/180*e)),this._point=l.subtract(i.getPixelOrigin()),this._radius=isNaN(c)?0:l.x-i.project([d,t-c]).x,this._radiusY=l.y-r.y}else{var h=o.unproject(o.project(this._latlng).subtract([this._mRadius,0]));this._point=i.latLngToLayerPoint(this._latlng),this._radius=this._point.x-i.latLngToLayerPoint(h).x}this._updateBounds()}});function no(t,e,i){return new oo(t,e,i)}var so=to.extend({options:{smoothFactor:1,noClip:!1},initialize:function(t,e){m(this,e),this._setLatLngs(t)},getLatLngs:function(){return this._latlngs},setLatLngs:function(t){return this._setLatLngs(t),this.redraw()},isEmpty:function(){return!this._latlngs.length},closestLayerPoint:function(t){for(var e,i,o=1/0,n=null,s=Mi,r=0,a=this._parts.length;r<a;r++)for(var l=this._parts[r],d=1,c=l.length;d<c;d++){var h=s(t,e=l[d-1],i=l[d],!0);h<o&&(o=h,n=s(t,e,i))}return n&&(n.distance=Math.sqrt(o)),n},getCenter:function(){if(!this._map)throw new Error("Must add layer to map before using getCenter()");var t,e,i,o,n,s,r,a=this._rings[0],l=a.length;if(!l)return null;for(t=0,e=0;t<l-1;t++)e+=a[t].distanceTo(a[t+1])/2;if(0===e)return this._map.layerPointToLatLng(a[0]);for(t=0,o=0;t<l-1;t++)if(n=a[t],s=a[t+1],(o+=i=n.distanceTo(s))>e)return r=(o-e)/i,this._map.layerPointToLatLng([s.x-r*(s.x-n.x),s.y-r*(s.y-n.y)])},getBounds:function(){return this._bounds},addLatLng:function(t,e){return e=e||this._defaultShape(),t=U(t),e.push(t),this._bounds.extend(t),this.redraw()},_setLatLngs:function(t){this._bounds=new B,this._latlngs=this._convertLatLngs(t)},_defaultShape:function(){return zi(this._latlngs)?this._latlngs:this._latlngs[0]},_convertLatLngs:function(t){for(var e=[],i=zi(t),o=0,n=t.length;o<n;o++)i?(e[o]=U(t[o]),this._bounds.extend(e[o])):e[o]=this._convertLatLngs(t[o]);return e},_project:function(){var t=new R;this._rings=[],this._projectLatlngs(this._latlngs,this._rings,t),this._bounds.isValid()&&t.isValid()&&(this._rawPxBounds=t,this._updateBounds())},_updateBounds:function(){var t=this._clickTolerance(),e=new I(t,t);this._pxBounds=new R([this._rawPxBounds.min.subtract(e),this._rawPxBounds.max.add(e)])},_projectLatlngs:function(t,e,i){var o,n,s=t[0]instanceof q,r=t.length;if(s){for(n=[],o=0;o<r;o++)n[o]=this._map.latLngToLayerPoint(t[o]),i.extend(n[o]);e.push(n)}else for(o=0;o<r;o++)this._projectLatlngs(t[o],e,i)},_clipPoints:function(){var t=this._renderer._bounds;if(this._parts=[],this._pxBounds&&this._pxBounds.intersects(t))if(this.options.noClip)this._parts=this._rings;else{var e,i,o,n,s,r,a,l=this._parts;for(e=0,o=0,n=this._rings.length;e<n;e++)for(i=0,s=(a=this._rings[e]).length;i<s-1;i++)(r=$i(a[i],a[i+1],t,i,!0))&&(l[o]=l[o]||[],l[o].push(r[0]),r[1]===a[i+1]&&i!==s-2||(l[o].push(r[1]),o++))}},_simplifyPoints:function(){for(var t=this._parts,e=this.options.smoothFactor,i=0,o=t.length;i<o;i++)t[i]=wi(t[i],e)},_update:function(){this._map&&(this._clipPoints(),this._simplifyPoints(),this._updatePath())},_updatePath:function(){this._renderer._updatePoly(this)},_containsPoint:function(t,e){var i,o,n,s,r,a,l=this._clickTolerance();if(!this._pxBounds||!this._pxBounds.contains(t))return!1;for(i=0,s=this._parts.length;i<s;i++)for(o=0,n=(r=(a=this._parts[i]).length)-1;o<r;n=o++)if((e||0!==o)&&_i(t,a[n],a[o])<=l)return!0;return!1}});function ro(t,e){return new so(t,e)}so._flat=Ii;var ao=so.extend({options:{fill:!0},isEmpty:function(){return!this._latlngs.length||!this._latlngs[0].length},getCenter:function(){if(!this._map)throw new Error("Must add layer to map before using getCenter()");var t,e,i,o,n,s,r,a,l,d=this._rings[0],c=d.length;if(!c)return null;for(s=r=a=0,t=0,e=c-1;t<c;e=t++)i=d[t],o=d[e],n=i.y*o.x-o.y*i.x,r+=(i.x+o.x)*n,a+=(i.y+o.y)*n,s+=3*n;return l=0===s?d[0]:[r/s,a/s],this._map.layerPointToLatLng(l)},_convertLatLngs:function(t){var e=so.prototype._convertLatLngs.call(this,t),i=e.length;return i>=2&&e[0]instanceof q&&e[0].equals(e[i-1])&&e.pop(),e},_setLatLngs:function(t){so.prototype._setLatLngs.call(this,t),zi(this._latlngs)&&(this._latlngs=[this._latlngs])},_defaultShape:function(){return zi(this._latlngs[0])?this._latlngs[0]:this._latlngs[0][0]},_clipPoints:function(){var t=this._renderer._bounds,e=this.options.weight,i=new I(e,e);if(t=new R(t.min.subtract(i),t.max.add(i)),this._parts=[],this._pxBounds&&this._pxBounds.intersects(t))if(this.options.noClip)this._parts=this._rings;else for(var o,n=0,s=this._rings.length;n<s;n++)(o=Li(this._rings[n],t,!0)).length&&this._parts.push(o)},_updatePath:function(){this._renderer._updatePoly(this,!0)},_containsPoint:function(t){var e,i,o,n,s,r,a,l,d=!1;if(!this._pxBounds||!this._pxBounds.contains(t))return!1;for(n=0,a=this._parts.length;n<a;n++)for(s=0,r=(l=(e=this._parts[n]).length)-1;s<l;r=s++)i=e[s],o=e[r],i.y>t.y!=o.y>t.y&&t.x<(o.x-i.x)*(t.y-i.y)/(o.y-i.y)+i.x&&(d=!d);return d||so.prototype._containsPoint.call(this,t,!0)}});function lo(t,e){return new ao(t,e)}var co=Vi.extend({initialize:function(t,e){m(this,e),this._layers={},t&&this.addData(t)},addData:function(t){var e,i,o,n=b(t)?t:t.features;if(n){for(e=0,i=n.length;e<i;e++)((o=n[e]).geometries||o.geometry||o.features||o.coordinates)&&this.addData(o);return this}var s=this.options;if(s.filter&&!s.filter(t))return this;var r=ho(t,s);return r?(r.feature=vo(t),r.defaultOptions=r.options,this.resetStyle(r),s.onEachFeature&&s.onEachFeature(t,r),this.addLayer(r)):this},resetStyle:function(t){return t.options=o({},t.defaultOptions),this._setLayerStyle(t,this.options.style),this},setStyle:function(t){return this.eachLayer(function(e){this._setLayerStyle(e,t)},this)},_setLayerStyle:function(t,e){t.setStyle&&("function"==typeof e&&(e=e(t.feature)),t.setStyle(e))}});function ho(t,e){var i,o,n,s,r="Feature"===t.type?t.geometry:t,a=r?r.coordinates:null,l=[],d=e&&e.pointToLayer,c=e&&e.coordsToLatLng||uo;if(!a&&!r)return null;switch(r.type){case"Point":return i=c(a),d?d(t,i):new Qi(i);case"MultiPoint":for(n=0,s=a.length;n<s;n++)i=c(a[n]),l.push(d?d(t,i):new Qi(i));return new Vi(l);case"LineString":case"MultiLineString":return o=po(a,"LineString"===r.type?0:1,c),new so(o,e);case"Polygon":case"MultiPolygon":return o=po(a,"Polygon"===r.type?1:2,c),new ao(o,e);case"GeometryCollection":for(n=0,s=r.geometries.length;n<s;n++){var h=ho({geometry:r.geometries[n],type:"Feature",properties:t.properties},e);h&&l.push(h)}return new Vi(l);default:throw new Error("Invalid GeoJSON object.")}}function uo(t){return new q(t[1],t[0],t[2])}function po(t,e,i){for(var o,n=[],s=0,r=t.length;s<r;s++)o=e?po(t[s],e-1,i):(i||uo)(t[s]),n.push(o);return n}function mo(t,e){return e="number"==typeof e?e:6,void 0!==t.alt?[h(t.lng,e),h(t.lat,e),h(t.alt,e)]:[h(t.lng,e),h(t.lat,e)]}function go(t,e,i,o){for(var n=[],s=0,r=t.length;s<r;s++)n.push(e?go(t[s],e-1,i,o):mo(t[s],o));return!e&&i&&n.push(n[0]),n}function fo(t,e){return t.feature?o({},t.feature,{geometry:e}):vo(e)}function vo(t){return"Feature"===t.type||"FeatureCollection"===t.type?t:{type:"Feature",properties:{},geometry:t}}var bo={toGeoJSON:function(t){return fo(this,{type:"Point",coordinates:mo(this.getLatLng(),t)})}};function yo(t,e){return new co(t,e)}Qi.include(bo),oo.include(bo),eo.include(bo),so.include({toGeoJSON:function(t){var e=!zi(this._latlngs);return fo(this,{type:(e?"Multi":"")+"LineString",coordinates:go(this._latlngs,e?1:0,!1,t)})}}),ao.include({toGeoJSON:function(t){var e=!zi(this._latlngs),i=e&&!zi(this._latlngs[0]),o=go(this._latlngs,i?2:e?1:0,!0,t);return e||(o=[o]),fo(this,{type:(i?"Multi":"")+"Polygon",coordinates:o})}}),Hi.include({toMultiPoint:function(t){var e=[];return this.eachLayer(function(i){e.push(i.toGeoJSON(t).geometry.coordinates)}),fo(this,{type:"MultiPoint",coordinates:e})},toGeoJSON:function(t){var e=this.feature&&this.feature.geometry&&this.feature.geometry.type;if("MultiPoint"===e)return this.toMultiPoint(t);var i="GeometryCollection"===e,o=[];return this.eachLayer(function(e){if(e.toGeoJSON){var n=e.toGeoJSON(t);if(i)o.push(n.geometry);else{var s=vo(n);"FeatureCollection"===s.type?o.push.apply(o,s.features):o.push(s)}}}),i?fo(this,{geometries:o,type:"GeometryCollection"}):{type:"FeatureCollection",features:o}}});var xo=yo,wo=ji.extend({options:{opacity:1,alt:"",interactive:!1,crossOrigin:!1,errorOverlayUrl:"",zIndex:1,className:""},initialize:function(t,e,i){this._url=t,this._bounds=F(e),m(this,i)},onAdd:function(){this._image||(this._initImage(),this.options.opacity<1&&this._updateOpacity()),this.options.interactive&&(ve(this._image,"leaflet-interactive"),this.addInteractiveTarget(this._image)),this.getPane().appendChild(this._image),this._reset()},onRemove:function(){ue(this._image),this.options.interactive&&this.removeInteractiveTarget(this._image)},setOpacity:function(t){return this.options.opacity=t,this._image&&this._updateOpacity(),this},setStyle:function(t){return t.opacity&&this.setOpacity(t.opacity),this},bringToFront:function(){return this._map&&me(this._image),this},bringToBack:function(){return this._map&&ge(this._image),this},setUrl:function(t){return this._url=t,this._image&&(this._image.src=t),this},setBounds:function(t){return this._bounds=F(t),this._map&&this._reset(),this},getEvents:function(){var t={zoom:this._reset,viewreset:this._reset};return this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},getBounds:function(){return this._bounds},getElement:function(){return this._image},_initImage:function(){var t="IMG"===this._url.tagName,e=this._image=t?this._url:he("img");ve(e,"leaflet-image-layer"),this._zoomAnimated&&ve(e,"leaflet-zoom-animated"),this.options.className&&ve(e,this.options.className),e.onselectstart=c,e.onmousemove=c,e.onload=s(this.fire,this,"load"),e.onerror=s(this._overlayOnError,this,"error"),(this.options.crossOrigin||""===this.options.crossOrigin)&&(e.crossOrigin=!0===this.options.crossOrigin?"":this.options.crossOrigin),this.options.zIndex&&this._updateZIndex(),t?this._url=e.src:(e.src=this._url,e.alt=this.options.alt)},_animateZoom:function(t){var e=this._map.getZoomScale(t.zoom),i=this._map._latLngBoundsToNewLayerBounds(this._bounds,t.zoom,t.center).min;Ce(this._image,i,e)},_reset:function(){var t=this._image,e=new R(this._map.latLngToLayerPoint(this._bounds.getNorthWest()),this._map.latLngToLayerPoint(this._bounds.getSouthEast())),i=e.getSize();Se(t,e.min),t.style.width=i.x+"px",t.style.height=i.y+"px"},_updateOpacity:function(){we(this._image,this.options.opacity)},_updateZIndex:function(){this._image&&void 0!==this.options.zIndex&&null!==this.options.zIndex&&(this._image.style.zIndex=this.options.zIndex)},_overlayOnError:function(){this.fire("error");var t=this.options.errorOverlayUrl;t&&this._url!==t&&(this._url=t,this._image.src=t)}}),_o=function(t,e,i){return new wo(t,e,i)},ko=wo.extend({options:{autoplay:!0,loop:!0,keepAspectRatio:!0},_initImage:function(){var t="VIDEO"===this._url.tagName,e=this._image=t?this._url:he("video");if(ve(e,"leaflet-image-layer"),this._zoomAnimated&&ve(e,"leaflet-zoom-animated"),e.onselectstart=c,e.onmousemove=c,e.onloadeddata=s(this.fire,this,"load"),t){for(var i=e.getElementsByTagName("source"),o=[],n=0;n<i.length;n++)o.push(i[n].src);this._url=i.length>0?o:[e.src]}else{b(this._url)||(this._url=[this._url]),!this.options.keepAspectRatio&&e.style.hasOwnProperty("objectFit")&&(e.style.objectFit="fill"),e.autoplay=!!this.options.autoplay,e.loop=!!this.options.loop;for(var r=0;r<this._url.length;r++){var a=he("source");a.src=this._url[r],e.appendChild(a)}}}});function Co(t,e,i){return new ko(t,e,i)}var So=wo.extend({_initImage:function(){var t=this._image=this._url;ve(t,"leaflet-image-layer"),this._zoomAnimated&&ve(t,"leaflet-zoom-animated"),t.onselectstart=c,t.onmousemove=c}});function Ao(t,e,i){return new So(t,e,i)}var $o=ji.extend({options:{offset:[0,7],className:"",pane:"popupPane"},initialize:function(t,e){m(this,t),this._source=e},onAdd:function(t){this._zoomAnimated=t._zoomAnimated,this._container||this._initLayout(),t._fadeAnimated&&we(this._container,0),clearTimeout(this._removeTimeout),this.getPane().appendChild(this._container),this.update(),t._fadeAnimated&&we(this._container,1),this.bringToFront()},onRemove:function(t){t._fadeAnimated?(we(this._container,0),this._removeTimeout=setTimeout(s(ue,void 0,this._container),200)):ue(this._container)},getLatLng:function(){return this._latlng},setLatLng:function(t){return this._latlng=U(t),this._map&&(this._updatePosition(),this._adjustPan()),this},getContent:function(){return this._content},setContent:function(t){return this._content=t,this.update(),this},getElement:function(){return this._container},update:function(){this._map&&(this._container.style.visibility="hidden",this._updateContent(),this._updateLayout(),this._updatePosition(),this._container.style.visibility="",this._adjustPan())},getEvents:function(){var t={zoom:this._updatePosition,viewreset:this._updatePosition};return this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},isOpen:function(){return!!this._map&&this._map.hasLayer(this)},bringToFront:function(){return this._map&&me(this._container),this},bringToBack:function(){return this._map&&ge(this._container),this},_prepareOpen:function(t,e,i){if(e instanceof ji||(i=e,e=t),e instanceof Vi)for(var o in t._layers){e=t._layers[o];break}if(!i)if(e.getCenter)i=e.getCenter();else{if(!e.getLatLng)throw new Error("Unable to get source layer LatLng.");i=e.getLatLng()}return this._source=e,this.update(),i},_updateContent:function(){if(this._content){var t=this._contentNode,e="function"==typeof this._content?this._content(this._source||this):this._content;if("string"==typeof e)t.innerHTML=e;else{for(;t.hasChildNodes();)t.removeChild(t.firstChild);t.appendChild(e)}this.fire("contentupdate")}},_updatePosition:function(){if(this._map){var t=this._map.latLngToLayerPoint(this._latlng),e=P(this.options.offset),i=this._getAnchor();this._zoomAnimated?Se(this._container,t.add(i)):e=e.add(t).add(i);var o=this._containerBottom=-e.y,n=this._containerLeft=-Math.round(this._containerWidth/2)+e.x;this._container.style.bottom=o+"px",this._container.style.left=n+"px"}},_getAnchor:function(){return[0,0]}}),Eo=$o.extend({options:{maxWidth:300,minWidth:50,maxHeight:null,autoPan:!0,autoPanPaddingTopLeft:null,autoPanPaddingBottomRight:null,autoPanPadding:[5,5],keepInView:!1,closeButton:!0,autoClose:!0,closeOnEscapeKey:!0,className:""},openOn:function(t){return t.openPopup(this),this},onAdd:function(t){$o.prototype.onAdd.call(this,t),t.fire("popupopen",{popup:this}),this._source&&(this._source.fire("popupopen",{popup:this},!0),this._source instanceof to||this._source.on("preclick",Fe))},onRemove:function(t){$o.prototype.onRemove.call(this,t),t.fire("popupclose",{popup:this}),this._source&&(this._source.fire("popupclose",{popup:this},!0),this._source instanceof to||this._source.off("preclick",Fe))},getEvents:function(){var t=$o.prototype.getEvents.call(this);return(void 0!==this.options.closeOnClick?this.options.closeOnClick:this._map.options.closePopupOnClick)&&(t.preclick=this._close),this.options.keepInView&&(t.moveend=this._adjustPan),t},_close:function(){this._map&&this._map.closePopup(this)},_initLayout:function(){var t="leaflet-popup",e=this._container=he("div",t+" "+(this.options.className||"")+" leaflet-zoom-animated"),i=this._wrapper=he("div",t+"-content-wrapper",e);if(this._contentNode=he("div",t+"-content",i),Ue(i),qe(this._contentNode),Le(i,"contextmenu",Fe),this._tipContainer=he("div",t+"-tip-container",e),this._tip=he("div",t+"-tip",this._tipContainer),this.options.closeButton){var o=this._closeButton=he("a",t+"-close-button",e);o.href="#close",o.innerHTML="×",Le(o,"click",this._onCloseButtonClick,this)}},_updateLayout:function(){var t=this._contentNode,e=t.style;e.width="",e.whiteSpace="nowrap";var i=t.offsetWidth;i=Math.min(i,this.options.maxWidth),i=Math.max(i,this.options.minWidth),e.width=i+1+"px",e.whiteSpace="",e.height="";var o=t.offsetHeight,n=this.options.maxHeight,s="leaflet-popup-scrolled";n&&o>n?(e.height=n+"px",ve(t,s)):be(t,s),this._containerWidth=this._container.offsetWidth},_animateZoom:function(t){var e=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center),i=this._getAnchor();Se(this._container,e.add(i))},_adjustPan:function(){if(this.options.autoPan){this._map._panAnim&&this._map._panAnim.stop();var t=this._map,e=parseInt(ce(this._container,"marginBottom"),10)||0,i=this._container.offsetHeight+e,o=this._containerWidth,n=new I(this._containerLeft,-i-this._containerBottom);n._add(Ae(this._container));var s=t.layerPointToContainerPoint(n),r=P(this.options.autoPanPadding),a=P(this.options.autoPanPaddingTopLeft||r),l=P(this.options.autoPanPaddingBottomRight||r),d=t.getSize(),c=0,h=0;s.x+o+l.x>d.x&&(c=s.x+o-d.x+l.x),s.x-c-a.x<0&&(c=s.x-a.x),s.y+i+l.y>d.y&&(h=s.y+i-d.y+l.y),s.y-h-a.y<0&&(h=s.y-a.y),(c||h)&&t.fire("autopanstart").panBy([c,h])}},_onCloseButtonClick:function(t){this._close(),He(t)},_getAnchor:function(){return P(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}}),To=function(t,e){return new Eo(t,e)};ii.mergeOptions({closePopupOnClick:!0}),ii.include({openPopup:function(t,e,i){return t instanceof Eo||(t=new Eo(i).setContent(t)),e&&t.setLatLng(e),this.hasLayer(t)?this:(this._popup&&this._popup.options.autoClose&&this.closePopup(),this._popup=t,this.addLayer(t))},closePopup:function(t){return t&&t!==this._popup||(t=this._popup,this._popup=null),t&&this.removeLayer(t),this}}),ji.include({bindPopup:function(t,e){return t instanceof Eo?(m(t,e),this._popup=t,t._source=this):(this._popup&&!e||(this._popup=new Eo(e,this)),this._popup.setContent(t)),this._popupHandlersAdded||(this.on({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(t,e){return this._popup&&this._map&&(e=this._popup._prepareOpen(this,t,e),this._map.openPopup(this._popup,e)),this},closePopup:function(){return this._popup&&this._popup._close(),this},togglePopup:function(t){return this._popup&&(this._popup._map?this.closePopup():this.openPopup(t)),this},isPopupOpen:function(){return!!this._popup&&this._popup.isOpen()},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},getPopup:function(){return this._popup},_openPopup:function(t){var e=t.layer||t.target;this._popup&&this._map&&(He(t),e instanceof to?this.openPopup(t.layer||t.target,t.latlng):this._map.hasLayer(this._popup)&&this._popup._source===e?this.closePopup():this.openPopup(e,t.latlng))},_movePopup:function(t){this._popup.setLatLng(t.latlng)},_onKeyPress:function(t){13===t.originalEvent.keyCode&&this._openPopup(t)}});var Do=$o.extend({options:{pane:"tooltipPane",offset:[0,0],direction:"auto",permanent:!1,sticky:!1,interactive:!1,opacity:.9},onAdd:function(t){$o.prototype.onAdd.call(this,t),this.setOpacity(this.options.opacity),t.fire("tooltipopen",{tooltip:this}),this._source&&this._source.fire("tooltipopen",{tooltip:this},!0)},onRemove:function(t){$o.prototype.onRemove.call(this,t),t.fire("tooltipclose",{tooltip:this}),this._source&&this._source.fire("tooltipclose",{tooltip:this},!0)},getEvents:function(){var t=$o.prototype.getEvents.call(this);return Ct&&!this.options.permanent&&(t.preclick=this._close),t},_close:function(){this._map&&this._map.closeTooltip(this)},_initLayout:function(){var t="leaflet-tooltip "+(this.options.className||"")+" leaflet-zoom-"+(this._zoomAnimated?"animated":"hide");this._contentNode=this._container=he("div",t)},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(t){var e=this._map,i=this._container,o=e.latLngToContainerPoint(e.getCenter()),n=e.layerPointToContainerPoint(t),s=this.options.direction,r=i.offsetWidth,a=i.offsetHeight,l=P(this.options.offset),d=this._getAnchor();"top"===s?t=t.add(P(-r/2+l.x,-a+l.y+d.y,!0)):"bottom"===s?t=t.subtract(P(r/2-l.x,-l.y,!0)):"center"===s?t=t.subtract(P(r/2+l.x,a/2-d.y+l.y,!0)):"right"===s||"auto"===s&&n.x<o.x?(s="right",t=t.add(P(l.x+d.x,d.y-a/2+l.y,!0))):(s="left",t=t.subtract(P(r+d.x-l.x,a/2-d.y-l.y,!0))),be(i,"leaflet-tooltip-right"),be(i,"leaflet-tooltip-left"),be(i,"leaflet-tooltip-top"),be(i,"leaflet-tooltip-bottom"),ve(i,"leaflet-tooltip-"+s),Se(i,t)},_updatePosition:function(){var t=this._map.latLngToLayerPoint(this._latlng);this._setPosition(t)},setOpacity:function(t){this.options.opacity=t,this._container&&we(this._container,t)},_animateZoom:function(t){var e=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center);this._setPosition(e)},_getAnchor:function(){return P(this._source&&this._source._getTooltipAnchor&&!this.options.sticky?this._source._getTooltipAnchor():[0,0])}}),Mo=function(t,e){return new Do(t,e)};ii.include({openTooltip:function(t,e,i){return t instanceof Do||(t=new Do(i).setContent(t)),e&&t.setLatLng(e),this.hasLayer(t)?this:this.addLayer(t)},closeTooltip:function(t){return t&&this.removeLayer(t),this}}),ji.include({bindTooltip:function(t,e){return t instanceof Do?(m(t,e),this._tooltip=t,t._source=this):(this._tooltip&&!e||(this._tooltip=new Do(e,this)),this._tooltip.setContent(t)),this._initTooltipInteractions(),this._tooltip.options.permanent&&this._map&&this._map.hasLayer(this)&&this.openTooltip(),this},unbindTooltip:function(){return this._tooltip&&(this._initTooltipInteractions(!0),this.closeTooltip(),this._tooltip=null),this},_initTooltipInteractions:function(t){if(t||!this._tooltipHandlersAdded){var e=t?"off":"on",i={remove:this.closeTooltip,move:this._moveTooltip};this._tooltip.options.permanent?i.add=this._openTooltip:(i.mouseover=this._openTooltip,i.mouseout=this.closeTooltip,this._tooltip.options.sticky&&(i.mousemove=this._moveTooltip),Ct&&(i.click=this._openTooltip)),this[e](i),this._tooltipHandlersAdded=!t}},openTooltip:function(t,e){return this._tooltip&&this._map&&(e=this._tooltip._prepareOpen(this,t,e),this._map.openTooltip(this._tooltip,e),this._tooltip.options.interactive&&this._tooltip._container&&(ve(this._tooltip._container,"leaflet-clickable"),this.addInteractiveTarget(this._tooltip._container))),this},closeTooltip:function(){return this._tooltip&&(this._tooltip._close(),this._tooltip.options.interactive&&this._tooltip._container&&(be(this._tooltip._container,"leaflet-clickable"),this.removeInteractiveTarget(this._tooltip._container))),this},toggleTooltip:function(t){return this._tooltip&&(this._tooltip._map?this.closeTooltip():this.openTooltip(t)),this},isTooltipOpen:function(){return this._tooltip.isOpen()},setTooltipContent:function(t){return this._tooltip&&this._tooltip.setContent(t),this},getTooltip:function(){return this._tooltip},_openTooltip:function(t){var e=t.layer||t.target;this._tooltip&&this._map&&this.openTooltip(e,this._tooltip.options.sticky?t.latlng:void 0)},_moveTooltip:function(t){var e,i,o=t.latlng;this._tooltip.options.sticky&&t.originalEvent&&(e=this._map.mouseEventToContainerPoint(t.originalEvent),i=this._map.containerPointToLayerPoint(e),o=this._map.layerPointToLatLng(i)),this._tooltip.setLatLng(o)}});var zo=Yi.extend({options:{iconSize:[12,12],html:!1,bgPos:null,className:"leaflet-div-icon"},createIcon:function(t){var e=t&&"DIV"===t.tagName?t:document.createElement("div"),i=this.options;if(i.html instanceof Element?(pe(e),e.appendChild(i.html)):e.innerHTML=!1!==i.html?i.html:"",i.bgPos){var o=P(i.bgPos);e.style.backgroundPosition=-o.x+"px "+-o.y+"px"}return this._setIconStyles(e,"icon"),e},createShadow:function(){return null}});function Io(t){return new zo(t)}Yi.Default=Gi;var Oo=ji.extend({options:{tileSize:256,opacity:1,updateWhenIdle:yt,updateWhenZooming:!0,updateInterval:200,zIndex:1,bounds:null,minZoom:0,maxZoom:void 0,maxNativeZoom:void 0,minNativeZoom:void 0,noWrap:!1,pane:"tilePane",className:"",keepBuffer:2},initialize:function(t){m(this,t)},onAdd:function(){this._initContainer(),this._levels={},this._tiles={},this._resetView(),this._update()},beforeAdd:function(t){t._addZoomLimit(this)},onRemove:function(t){this._removeAllTiles(),ue(this._container),t._removeZoomLimit(this),this._container=null,this._tileZoom=void 0},bringToFront:function(){return this._map&&(me(this._container),this._setAutoZIndex(Math.max)),this},bringToBack:function(){return this._map&&(ge(this._container),this._setAutoZIndex(Math.min)),this},getContainer:function(){return this._container},setOpacity:function(t){return this.options.opacity=t,this._updateOpacity(),this},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},isLoading:function(){return this._loading},redraw:function(){return this._map&&(this._removeAllTiles(),this._update()),this},getEvents:function(){var t={viewprereset:this._invalidateAll,viewreset:this._resetView,zoom:this._resetView,moveend:this._onMoveEnd};return this.options.updateWhenIdle||(this._onMove||(this._onMove=l(this._onMoveEnd,this.options.updateInterval,this)),t.move=this._onMove),this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},createTile:function(){return document.createElement("div")},getTileSize:function(){var t=this.options.tileSize;return t instanceof I?t:new I(t,t)},_updateZIndex:function(){this._container&&void 0!==this.options.zIndex&&null!==this.options.zIndex&&(this._container.style.zIndex=this.options.zIndex)},_setAutoZIndex:function(t){for(var e,i=this.getPane().children,o=-t(-1/0,1/0),n=0,s=i.length;n<s;n++)e=i[n].style.zIndex,i[n]!==this._container&&e&&(o=t(o,+e));isFinite(o)&&(this.options.zIndex=o+t(-1,1),this._updateZIndex())},_updateOpacity:function(){if(this._map&&!et){we(this._container,this.options.opacity);var t=+new Date,e=!1,i=!1;for(var o in this._tiles){var n=this._tiles[o];if(n.current&&n.loaded){var s=Math.min(1,(t-n.loaded)/200);we(n.el,s),s<1?e=!0:(n.active?i=!0:this._onOpaqueTile(n),n.active=!0)}}i&&!this._noPrune&&this._pruneTiles(),e&&($(this._fadeFrame),this._fadeFrame=A(this._updateOpacity,this))}},_onOpaqueTile:c,_initContainer:function(){this._container||(this._container=he("div","leaflet-layer "+(this.options.className||"")),this._updateZIndex(),this.options.opacity<1&&this._updateOpacity(),this.getPane().appendChild(this._container))},_updateLevels:function(){var t=this._tileZoom,e=this.options.maxZoom;if(void 0!==t){for(var i in this._levels)this._levels[i].el.children.length||i===t?(this._levels[i].el.style.zIndex=e-Math.abs(t-i),this._onUpdateLevel(i)):(ue(this._levels[i].el),this._removeTilesAtZoom(i),this._onRemoveLevel(i),delete this._levels[i]);var o=this._levels[t],n=this._map;return o||((o=this._levels[t]={}).el=he("div","leaflet-tile-container leaflet-zoom-animated",this._container),o.el.style.zIndex=e,o.origin=n.project(n.unproject(n.getPixelOrigin()),t).round(),o.zoom=t,this._setZoomTransform(o,n.getCenter(),n.getZoom()),c(o.el.offsetWidth),this._onCreateLevel(o)),this._level=o,o}},_onUpdateLevel:c,_onRemoveLevel:c,_onCreateLevel:c,_pruneTiles:function(){if(this._map){var t,e,i=this._map.getZoom();if(i>this.options.maxZoom||i<this.options.minZoom)this._removeAllTiles();else{for(t in this._tiles)(e=this._tiles[t]).retain=e.current;for(t in this._tiles)if((e=this._tiles[t]).current&&!e.active){var o=e.coords;this._retainParent(o.x,o.y,o.z,o.z-5)||this._retainChildren(o.x,o.y,o.z,o.z+2)}for(t in this._tiles)this._tiles[t].retain||this._removeTile(t)}}},_removeTilesAtZoom:function(t){for(var e in this._tiles)this._tiles[e].coords.z===t&&this._removeTile(e)},_removeAllTiles:function(){for(var t in this._tiles)this._removeTile(t)},_invalidateAll:function(){for(var t in this._levels)ue(this._levels[t].el),this._onRemoveLevel(t),delete this._levels[t];this._removeAllTiles(),this._tileZoom=void 0},_retainParent:function(t,e,i,o){var n=Math.floor(t/2),s=Math.floor(e/2),r=i-1,a=new I(+n,+s);a.z=+r;var l=this._tileCoordsToKey(a),d=this._tiles[l];return d&&d.active?(d.retain=!0,!0):(d&&d.loaded&&(d.retain=!0),r>o&&this._retainParent(n,s,r,o))},_retainChildren:function(t,e,i,o){for(var n=2*t;n<2*t+2;n++)for(var s=2*e;s<2*e+2;s++){var r=new I(n,s);r.z=i+1;var a=this._tileCoordsToKey(r),l=this._tiles[a];l&&l.active?l.retain=!0:(l&&l.loaded&&(l.retain=!0),i+1<o&&this._retainChildren(n,s,i+1,o))}},_resetView:function(t){var e=t&&(t.pinch||t.flyTo);this._setView(this._map.getCenter(),this._map.getZoom(),e,e)},_animateZoom:function(t){this._setView(t.center,t.zoom,!0,t.noUpdate)},_clampZoom:function(t){var e=this.options;return void 0!==e.minNativeZoom&&t<e.minNativeZoom?e.minNativeZoom:void 0!==e.maxNativeZoom&&e.maxNativeZoom<t?e.maxNativeZoom:t},_setView:function(t,e,i,o){var n=this._clampZoom(Math.round(e));(void 0!==this.options.maxZoom&&n>this.options.maxZoom||void 0!==this.options.minZoom&&n<this.options.minZoom)&&(n=void 0);var s=this.options.updateWhenZooming&&n!==this._tileZoom;o&&!s||(this._tileZoom=n,this._abortLoading&&this._abortLoading(),this._updateLevels(),this._resetGrid(),void 0!==n&&this._update(t),i||this._pruneTiles(),this._noPrune=!!i),this._setZoomTransforms(t,e)},_setZoomTransforms:function(t,e){for(var i in this._levels)this._setZoomTransform(this._levels[i],t,e)},_setZoomTransform:function(t,e,i){var o=this._map.getZoomScale(i,t.zoom),n=t.origin.multiplyBy(o).subtract(this._map._getNewPixelOrigin(e,i)).round();bt?Ce(t.el,n,o):Se(t.el,n)},_resetGrid:function(){var t=this._map,e=t.options.crs,i=this._tileSize=this.getTileSize(),o=this._tileZoom,n=this._map.getPixelWorldBounds(this._tileZoom);n&&(this._globalTileRange=this._pxBoundsToTileRange(n)),this._wrapX=e.wrapLng&&!this.options.noWrap&&[Math.floor(t.project([0,e.wrapLng[0]],o).x/i.x),Math.ceil(t.project([0,e.wrapLng[1]],o).x/i.y)],this._wrapY=e.wrapLat&&!this.options.noWrap&&[Math.floor(t.project([e.wrapLat[0],0],o).y/i.x),Math.ceil(t.project([e.wrapLat[1],0],o).y/i.y)]},_onMoveEnd:function(){this._map&&!this._map._animatingZoom&&this._update()},_getTiledPixelBounds:function(t){var e=this._map,i=e._animatingZoom?Math.max(e._animateToZoom,e.getZoom()):e.getZoom(),o=e.getZoomScale(i,this._tileZoom),n=e.project(t,this._tileZoom).floor(),s=e.getSize().divideBy(2*o);return new R(n.subtract(s),n.add(s))},_update:function(t){var e=this._map;if(e){var i=this._clampZoom(e.getZoom());if(void 0===t&&(t=e.getCenter()),void 0!==this._tileZoom){var o=this._getTiledPixelBounds(t),n=this._pxBoundsToTileRange(o),s=n.getCenter(),r=[],a=this.options.keepBuffer,l=new R(n.getBottomLeft().subtract([a,-a]),n.getTopRight().add([a,-a]));if(!(isFinite(n.min.x)&&isFinite(n.min.y)&&isFinite(n.max.x)&&isFinite(n.max.y)))throw new Error("Attempted to load an infinite number of tiles");for(var d in this._tiles){var c=this._tiles[d].coords;c.z===this._tileZoom&&l.contains(new I(c.x,c.y))||(this._tiles[d].current=!1)}if(Math.abs(i-this._tileZoom)>1)this._setView(t,i);else{for(var h=n.min.y;h<=n.max.y;h++)for(var u=n.min.x;u<=n.max.x;u++){var p=new I(u,h);if(p.z=this._tileZoom,this._isValidTile(p)){var m=this._tiles[this._tileCoordsToKey(p)];m?m.current=!0:r.push(p)}}if(r.sort(function(t,e){return t.distanceTo(s)-e.distanceTo(s)}),0!==r.length){this._loading||(this._loading=!0,this.fire("loading"));var g=document.createDocumentFragment();for(u=0;u<r.length;u++)this._addTile(r[u],g);this._level.el.appendChild(g)}}}}},_isValidTile:function(t){var e=this._map.options.crs;if(!e.infinite){var i=this._globalTileRange;if(!e.wrapLng&&(t.x<i.min.x||t.x>i.max.x)||!e.wrapLat&&(t.y<i.min.y||t.y>i.max.y))return!1}if(!this.options.bounds)return!0;var o=this._tileCoordsToBounds(t);return F(this.options.bounds).overlaps(o)},_keyToBounds:function(t){return this._tileCoordsToBounds(this._keyToTileCoords(t))},_tileCoordsToNwSe:function(t){var e=this._map,i=this.getTileSize(),o=t.scaleBy(i),n=o.add(i);return[e.unproject(o,t.z),e.unproject(n,t.z)]},_tileCoordsToBounds:function(t){var e=this._tileCoordsToNwSe(t),i=new B(e[0],e[1]);return this.options.noWrap||(i=this._map.wrapLatLngBounds(i)),i},_tileCoordsToKey:function(t){return t.x+":"+t.y+":"+t.z},_keyToTileCoords:function(t){var e=t.split(":"),i=new I(+e[0],+e[1]);return i.z=+e[2],i},_removeTile:function(t){var e=this._tiles[t];e&&(ue(e.el),delete this._tiles[t],this.fire("tileunload",{tile:e.el,coords:this._keyToTileCoords(t)}))},_initTile:function(t){ve(t,"leaflet-tile");var e=this.getTileSize();t.style.width=e.x+"px",t.style.height=e.y+"px",t.onselectstart=c,t.onmousemove=c,et&&this.options.opacity<1&&we(t,this.options.opacity),nt&&!st&&(t.style.WebkitBackfaceVisibility="hidden")},_addTile:function(t,e){var i=this._getTilePos(t),o=this._tileCoordsToKey(t),n=this.createTile(this._wrapCoords(t),s(this._tileReady,this,t));this._initTile(n),this.createTile.length<2&&A(s(this._tileReady,this,t,null,n)),Se(n,i),this._tiles[o]={el:n,coords:t,current:!0},e.appendChild(n),this.fire("tileloadstart",{tile:n,coords:t})},_tileReady:function(t,e,i){e&&this.fire("tileerror",{error:e,tile:i,coords:t});var o=this._tileCoordsToKey(t);(i=this._tiles[o])&&(i.loaded=+new Date,this._map._fadeAnimated?(we(i.el,0),$(this._fadeFrame),this._fadeFrame=A(this._updateOpacity,this)):(i.active=!0,this._pruneTiles()),e||(ve(i.el,"leaflet-tile-loaded"),this.fire("tileload",{tile:i.el,coords:t})),this._noTilesToLoad()&&(this._loading=!1,this.fire("load"),et||!this._map._fadeAnimated?A(this._pruneTiles,this):setTimeout(s(this._pruneTiles,this),250)))},_getTilePos:function(t){return t.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(t){var e=new I(this._wrapX?d(t.x,this._wrapX):t.x,this._wrapY?d(t.y,this._wrapY):t.y);return e.z=t.z,e},_pxBoundsToTileRange:function(t){var e=this.getTileSize();return new R(t.min.unscaleBy(e).floor(),t.max.unscaleBy(e).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var t in this._tiles)if(!this._tiles[t].loaded)return!1;return!0}});function Lo(t){return new Oo(t)}var Po=Oo.extend({options:{minZoom:0,maxZoom:18,subdomains:"abc",errorTileUrl:"",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1},initialize:function(t,e){this._url=t,(e=m(this,e)).detectRetina&&$t&&e.maxZoom>0&&(e.tileSize=Math.floor(e.tileSize/2),e.zoomReverse?(e.zoomOffset--,e.minZoom++):(e.zoomOffset++,e.maxZoom--),e.minZoom=Math.max(0,e.minZoom)),"string"==typeof e.subdomains&&(e.subdomains=e.subdomains.split("")),nt||this.on("tileunload",this._onTileRemove)},setUrl:function(t,e){return this._url===t&&void 0===e&&(e=!0),this._url=t,e||this.redraw(),this},createTile:function(t,e){var i=document.createElement("img");return Le(i,"load",s(this._tileOnLoad,this,e,i)),Le(i,"error",s(this._tileOnError,this,e,i)),(this.options.crossOrigin||""===this.options.crossOrigin)&&(i.crossOrigin=!0===this.options.crossOrigin?"":this.options.crossOrigin),i.alt="",i.setAttribute("role","presentation"),i.src=this.getTileUrl(t),i},getTileUrl:function(t){var e={r:$t?"@2x":"",s:this._getSubdomain(t),x:t.x,y:t.y,z:this._getZoomForUrl()};if(this._map&&!this._map.options.crs.infinite){var i=this._globalTileRange.max.y-t.y;this.options.tms&&(e.y=i),e["-y"]=i}return v(this._url,o(e,this.options))},_tileOnLoad:function(t,e){et?setTimeout(s(t,this,null,e),0):t(null,e)},_tileOnError:function(t,e,i){var o=this.options.errorTileUrl;o&&e.getAttribute("src")!==o&&(e.src=o),t(i,e)},_onTileRemove:function(t){t.tile.onload=null},_getZoomForUrl:function(){var t=this._tileZoom,e=this.options.maxZoom;return this.options.zoomReverse&&(t=e-t),t+this.options.zoomOffset},_getSubdomain:function(t){var e=Math.abs(t.x+t.y)%this.options.subdomains.length;return this.options.subdomains[e]},_abortLoading:function(){var t,e;for(t in this._tiles)this._tiles[t].coords.z!==this._tileZoom&&((e=this._tiles[t].el).onload=c,e.onerror=c,e.complete||(e.src=x,ue(e),delete this._tiles[t]))},_removeTile:function(t){var e=this._tiles[t];if(e)return at||e.el.setAttribute("src",x),Oo.prototype._removeTile.call(this,t)},_tileReady:function(t,e,i){if(this._map&&(!i||i.getAttribute("src")!==x))return Oo.prototype._tileReady.call(this,t,e,i)}});function Ro(t,e){return new Po(t,e)}var No=Po.extend({defaultWmsParams:{service:"WMS",request:"GetMap",layers:"",styles:"",format:"image/jpeg",transparent:!1,version:"1.1.1"},options:{crs:null,uppercase:!1},initialize:function(t,e){this._url=t;var i=o({},this.defaultWmsParams);for(var n in e)n in this.options||(i[n]=e[n]);var s=(e=m(this,e)).detectRetina&&$t?2:1,r=this.getTileSize();i.width=r.x*s,i.height=r.y*s,this.wmsParams=i},onAdd:function(t){this._crs=this.options.crs||t.options.crs,this._wmsVersion=parseFloat(this.wmsParams.version);var e=this._wmsVersion>=1.3?"crs":"srs";this.wmsParams[e]=this._crs.code,Po.prototype.onAdd.call(this,t)},getTileUrl:function(t){var e=this._tileCoordsToNwSe(t),i=this._crs,o=N(i.project(e[0]),i.project(e[1])),n=o.min,s=o.max,r=(this._wmsVersion>=1.3&&this._crs===qi?[n.y,n.x,s.y,s.x]:[n.x,n.y,s.x,s.y]).join(","),a=Po.prototype.getTileUrl.call(this,t);return a+g(this.wmsParams,a,this.options.uppercase)+(this.options.uppercase?"&BBOX=":"&bbox=")+r},setParams:function(t,e){return o(this.wmsParams,t),e||this.redraw(),this}});function Bo(t,e){return new No(t,e)}Po.WMS=No,Ro.wms=Bo;var Fo=ji.extend({options:{padding:.1,tolerance:0},initialize:function(t){m(this,t),a(this),this._layers=this._layers||{}},onAdd:function(){this._container||(this._initContainer(),this._zoomAnimated&&ve(this._container,"leaflet-zoom-animated")),this.getPane().appendChild(this._container),this._update(),this.on("update",this._updatePaths,this)},onRemove:function(){this.off("update",this._updatePaths,this),this._destroyContainer()},getEvents:function(){var t={viewreset:this._reset,zoom:this._onZoom,moveend:this._update,zoomend:this._onZoomEnd};return this._zoomAnimated&&(t.zoomanim=this._onAnimZoom),t},_onAnimZoom:function(t){this._updateTransform(t.center,t.zoom)},_onZoom:function(){this._updateTransform(this._map.getCenter(),this._map.getZoom())},_updateTransform:function(t,e){var i=this._map.getZoomScale(e,this._zoom),o=Ae(this._container),n=this._map.getSize().multiplyBy(.5+this.options.padding),s=this._map.project(this._center,e),r=this._map.project(t,e).subtract(s),a=n.multiplyBy(-i).add(o).add(n).subtract(r);bt?Ce(this._container,a,i):Se(this._container,a)},_reset:function(){for(var t in this._update(),this._updateTransform(this._center,this._zoom),this._layers)this._layers[t]._reset()},_onZoomEnd:function(){for(var t in this._layers)this._layers[t]._project()},_updatePaths:function(){for(var t in this._layers)this._layers[t]._update()},_update:function(){var t=this.options.padding,e=this._map.getSize(),i=this._map.containerPointToLayerPoint(e.multiplyBy(-t)).round();this._bounds=new R(i,i.add(e.multiplyBy(1+2*t)).round()),this._center=this._map.getCenter(),this._zoom=this._map.getZoom()}}),qo=Fo.extend({getEvents:function(){var t=Fo.prototype.getEvents.call(this);return t.viewprereset=this._onViewPreReset,t},_onViewPreReset:function(){this._postponeUpdatePaths=!0},onAdd:function(){Fo.prototype.onAdd.call(this),this._draw()},_initContainer:function(){var t=this._container=document.createElement("canvas");Le(t,"mousemove",l(this._onMouseMove,32,this),this),Le(t,"click dblclick mousedown mouseup contextmenu",this._onClick,this),Le(t,"mouseout",this._handleMouseOut,this),this._ctx=t.getContext("2d")},_destroyContainer:function(){$(this._redrawRequest),delete this._ctx,ue(this._container),Re(this._container),delete this._container},_updatePaths:function(){if(!this._postponeUpdatePaths){for(var t in this._redrawBounds=null,this._layers)this._layers[t]._update();this._redraw()}},_update:function(){if(!this._map._animatingZoom||!this._bounds){Fo.prototype._update.call(this);var t=this._bounds,e=this._container,i=t.getSize(),o=$t?2:1;Se(e,t.min),e.width=o*i.x,e.height=o*i.y,e.style.width=i.x+"px",e.style.height=i.y+"px",$t&&this._ctx.scale(2,2),this._ctx.translate(-t.min.x,-t.min.y),this.fire("update")}},_reset:function(){Fo.prototype._reset.call(this),this._postponeUpdatePaths&&(this._postponeUpdatePaths=!1,this._updatePaths())},_initPath:function(t){this._updateDashArray(t),this._layers[a(t)]=t;var e=t._order={layer:t,prev:this._drawLast,next:null};this._drawLast&&(this._drawLast.next=e),this._drawLast=e,this._drawFirst=this._drawFirst||this._drawLast},_addPath:function(t){this._requestRedraw(t)},_removePath:function(t){var e=t._order,i=e.next,o=e.prev;i?i.prev=o:this._drawLast=o,o?o.next=i:this._drawFirst=i,delete t._order,delete this._layers[a(t)],this._requestRedraw(t)},_updatePath:function(t){this._extendRedrawBounds(t),t._project(),t._update(),this._requestRedraw(t)},_updateStyle:function(t){this._updateDashArray(t),this._requestRedraw(t)},_updateDashArray:function(t){if("string"==typeof t.options.dashArray){var e,i,o=t.options.dashArray.split(/[, ]+/),n=[];for(i=0;i<o.length;i++){if(e=Number(o[i]),isNaN(e))return;n.push(e)}t.options._dashArray=n}else t.options._dashArray=t.options.dashArray},_requestRedraw:function(t){this._map&&(this._extendRedrawBounds(t),this._redrawRequest=this._redrawRequest||A(this._redraw,this))},_extendRedrawBounds:function(t){if(t._pxBounds){var e=(t.options.weight||0)+1;this._redrawBounds=this._redrawBounds||new R,this._redrawBounds.extend(t._pxBounds.min.subtract([e,e])),this._redrawBounds.extend(t._pxBounds.max.add([e,e]))}},_redraw:function(){this._redrawRequest=null,this._redrawBounds&&(this._redrawBounds.min._floor(),this._redrawBounds.max._ceil()),this._clear(),this._draw(),this._redrawBounds=null},_clear:function(){var t=this._redrawBounds;if(t){var e=t.getSize();this._ctx.clearRect(t.min.x,t.min.y,e.x,e.y)}else this._ctx.clearRect(0,0,this._container.width,this._container.height)},_draw:function(){var t,e=this._redrawBounds;if(this._ctx.save(),e){var i=e.getSize();this._ctx.beginPath(),this._ctx.rect(e.min.x,e.min.y,i.x,i.y),this._ctx.clip()}this._drawing=!0;for(var o=this._drawFirst;o;o=o.next)t=o.layer,(!e||t._pxBounds&&t._pxBounds.intersects(e))&&t._updatePath();this._drawing=!1,this._ctx.restore()},_updatePoly:function(t,e){if(this._drawing){var i,o,n,s,r=t._parts,a=r.length,l=this._ctx;if(a){for(l.beginPath(),i=0;i<a;i++){for(o=0,n=r[i].length;o<n;o++)s=r[i][o],l[o?"lineTo":"moveTo"](s.x,s.y);e&&l.closePath()}this._fillStroke(l,t)}}},_updateCircle:function(t){if(this._drawing&&!t._empty()){var e=t._point,i=this._ctx,o=Math.max(Math.round(t._radius),1),n=(Math.max(Math.round(t._radiusY),1)||o)/o;1!==n&&(i.save(),i.scale(1,n)),i.beginPath(),i.arc(e.x,e.y/n,o,0,2*Math.PI,!1),1!==n&&i.restore(),this._fillStroke(i,t)}},_fillStroke:function(t,e){var i=e.options;i.fill&&(t.globalAlpha=i.fillOpacity,t.fillStyle=i.fillColor||i.color,t.fill(i.fillRule||"evenodd")),i.stroke&&0!==i.weight&&(t.setLineDash&&t.setLineDash(e.options&&e.options._dashArray||[]),t.globalAlpha=i.opacity,t.lineWidth=i.weight,t.strokeStyle=i.color,t.lineCap=i.lineCap,t.lineJoin=i.lineJoin,t.stroke())},_onClick:function(t){for(var e,i,o=this._map.mouseEventToLayerPoint(t),n=this._drawFirst;n;n=n.next)(e=n.layer).options.interactive&&e._containsPoint(o)&&!this._map._draggableMoved(e)&&(i=e);i&&(Ge(t),this._fireEvent([i],t))},_onMouseMove:function(t){if(this._map&&!this._map.dragging.moving()&&!this._map._animatingZoom){var e=this._map.mouseEventToLayerPoint(t);this._handleMouseHover(t,e)}},_handleMouseOut:function(t){var e=this._hoveredLayer;e&&(be(this._container,"leaflet-interactive"),this._fireEvent([e],t,"mouseout"),this._hoveredLayer=null)},_handleMouseHover:function(t,e){for(var i,o,n=this._drawFirst;n;n=n.next)(i=n.layer).options.interactive&&i._containsPoint(e)&&(o=i);o!==this._hoveredLayer&&(this._handleMouseOut(t),o&&(ve(this._container,"leaflet-interactive"),this._fireEvent([o],t,"mouseover"),this._hoveredLayer=o)),this._hoveredLayer&&this._fireEvent([this._hoveredLayer],t)},_fireEvent:function(t,e,i){this._map._fireDOMEvent(e,i||e.type,t)},_bringToFront:function(t){var e=t._order;if(e){var i=e.next,o=e.prev;i&&(i.prev=o,o?o.next=i:i&&(this._drawFirst=i),e.prev=this._drawLast,this._drawLast.next=e,e.next=null,this._drawLast=e,this._requestRedraw(t))}},_bringToBack:function(t){var e=t._order;if(e){var i=e.next,o=e.prev;o&&(o.next=i,i?i.prev=o:o&&(this._drawLast=o),e.prev=null,e.next=this._drawFirst,this._drawFirst.prev=e,this._drawFirst=e,this._requestRedraw(t))}}});function Uo(t){return Et?new qo(t):null}var jo=function(){try{return document.namespaces.add("lvml","urn:schemas-microsoft-com:vml"),function(t){return document.createElement("<lvml:"+t+' class="lvml">')}}catch(t){return function(t){return document.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}}}(),Ho={_initContainer:function(){this._container=he("div","leaflet-vml-container")},_update:function(){this._map._animatingZoom||(Fo.prototype._update.call(this),this.fire("update"))},_initPath:function(t){var e=t._container=jo("shape");ve(e,"leaflet-vml-shape "+(this.options.className||"")),e.coordsize="1 1",t._path=jo("path"),e.appendChild(t._path),this._updateStyle(t),this._layers[a(t)]=t},_addPath:function(t){var e=t._container;this._container.appendChild(e),t.options.interactive&&t.addInteractiveTarget(e)},_removePath:function(t){var e=t._container;ue(e),t.removeInteractiveTarget(e),delete this._layers[a(t)]},_updateStyle:function(t){var e=t._stroke,i=t._fill,o=t.options,n=t._container;n.stroked=!!o.stroke,n.filled=!!o.fill,o.stroke?(e||(e=t._stroke=jo("stroke")),n.appendChild(e),e.weight=o.weight+"px",e.color=o.color,e.opacity=o.opacity,o.dashArray?e.dashStyle=b(o.dashArray)?o.dashArray.join(" "):o.dashArray.replace(/( *, *)/g," "):e.dashStyle="",e.endcap=o.lineCap.replace("butt","flat"),e.joinstyle=o.lineJoin):e&&(n.removeChild(e),t._stroke=null),o.fill?(i||(i=t._fill=jo("fill")),n.appendChild(i),i.color=o.fillColor||o.color,i.opacity=o.fillOpacity):i&&(n.removeChild(i),t._fill=null)},_updateCircle:function(t){var e=t._point.round(),i=Math.round(t._radius),o=Math.round(t._radiusY||i);this._setPath(t,t._empty()?"M0 0":"AL "+e.x+","+e.y+" "+i+","+o+" 0,23592600")},_setPath:function(t,e){t._path.v=e},_bringToFront:function(t){me(t._container)},_bringToBack:function(t){ge(t._container)}},Wo=Dt?jo:X,Vo=Fo.extend({getEvents:function(){var t=Fo.prototype.getEvents.call(this);return t.zoomstart=this._onZoomStart,t},_initContainer:function(){this._container=Wo("svg"),this._container.setAttribute("pointer-events","none"),this._rootGroup=Wo("g"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){ue(this._container),Re(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_onZoomStart:function(){this._update()},_update:function(){if(!this._map._animatingZoom||!this._bounds){Fo.prototype._update.call(this);var t=this._bounds,e=t.getSize(),i=this._container;this._svgSize&&this._svgSize.equals(e)||(this._svgSize=e,i.setAttribute("width",e.x),i.setAttribute("height",e.y)),Se(i,t.min),i.setAttribute("viewBox",[t.min.x,t.min.y,e.x,e.y].join(" ")),this.fire("update")}},_initPath:function(t){var e=t._path=Wo("path");t.options.className&&ve(e,t.options.className),t.options.interactive&&ve(e,"leaflet-interactive"),this._updateStyle(t),this._layers[a(t)]=t},_addPath:function(t){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(t._path),t.addInteractiveTarget(t._path)},_removePath:function(t){ue(t._path),t.removeInteractiveTarget(t._path),delete this._layers[a(t)]},_updatePath:function(t){t._project(),t._update()},_updateStyle:function(t){var e=t._path,i=t.options;e&&(i.stroke?(e.setAttribute("stroke",i.color),e.setAttribute("stroke-opacity",i.opacity),e.setAttribute("stroke-width",i.weight),e.setAttribute("stroke-linecap",i.lineCap),e.setAttribute("stroke-linejoin",i.lineJoin),i.dashArray?e.setAttribute("stroke-dasharray",i.dashArray):e.removeAttribute("stroke-dasharray"),i.dashOffset?e.setAttribute("stroke-dashoffset",i.dashOffset):e.removeAttribute("stroke-dashoffset")):e.setAttribute("stroke","none"),i.fill?(e.setAttribute("fill",i.fillColor||i.color),e.setAttribute("fill-opacity",i.fillOpacity),e.setAttribute("fill-rule",i.fillRule||"evenodd")):e.setAttribute("fill","none"))},_updatePoly:function(t,e){this._setPath(t,Q(t._parts,e))},_updateCircle:function(t){var e=t._point,i=Math.max(Math.round(t._radius),1),o="a"+i+","+(Math.max(Math.round(t._radiusY),1)||i)+" 0 1,0 ",n=t._empty()?"M0 0":"M"+(e.x-i)+","+e.y+o+2*i+",0 "+o+2*-i+",0 ";this._setPath(t,n)},_setPath:function(t,e){t._path.setAttribute("d",e)},_bringToFront:function(t){me(t._path)},_bringToBack:function(t){ge(t._path)}});function Zo(t){return Tt||Dt?new Vo(t):null}Dt&&Vo.include(Ho),ii.include({getRenderer:function(t){var e=t.options.renderer||this._getPaneRenderer(t.options.pane)||this.options.renderer||this._renderer;return e||(e=this._renderer=this._createRenderer()),this.hasLayer(e)||this.addLayer(e),e},_getPaneRenderer:function(t){if("overlayPane"===t||void 0===t)return!1;var e=this._paneRenderers[t];return void 0===e&&(e=this._createRenderer({pane:t}),this._paneRenderers[t]=e),e},_createRenderer:function(t){return this.options.preferCanvas&&Uo(t)||Zo(t)}});var Yo=ao.extend({initialize:function(t,e){ao.prototype.initialize.call(this,this._boundsToLatLngs(t),e)},setBounds:function(t){return this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return[(t=F(t)).getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}});function Ko(t,e){return new Yo(t,e)}Vo.create=Wo,Vo.pointsToPath=Q,co.geometryToLayer=ho,co.coordsToLatLng=uo,co.coordsToLatLngs=po,co.latLngToCoords=mo,co.latLngsToCoords=go,co.getFeature=fo,co.asFeature=vo,ii.mergeOptions({boxZoom:!0});var Go=mi.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._resetStateTimeout=0,t.on("unload",this._destroy,this)},addHooks:function(){Le(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){Re(this._container,"mousedown",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){ue(this._pane),delete this._pane},_resetState:function(){this._resetStateTimeout=0,this._moved=!1},_clearDeferredResetState:function(){0!==this._resetStateTimeout&&(clearTimeout(this._resetStateTimeout),this._resetStateTimeout=0)},_onMouseDown:function(t){if(!t.shiftKey||1!==t.which&&1!==t.button)return!1;this._clearDeferredResetState(),this._resetState(),ee(),Ee(),this._startPoint=this._map.mouseEventToContainerPoint(t),Le(document,{contextmenu:He,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(t){this._moved||(this._moved=!0,this._box=he("div","leaflet-zoom-box",this._container),ve(this._container,"leaflet-crosshair"),this._map.fire("boxzoomstart")),this._point=this._map.mouseEventToContainerPoint(t);var e=new R(this._point,this._startPoint),i=e.getSize();Se(this._box,e.min),this._box.style.width=i.x+"px",this._box.style.height=i.y+"px"},_finish:function(){this._moved&&(ue(this._box),be(this._container,"leaflet-crosshair")),ie(),Te(),Re(document,{contextmenu:He,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(t){if((1===t.which||1===t.button)&&(this._finish(),this._moved)){this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(s(this._resetState,this),0);var e=new B(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point));this._map.fitBounds(e).fire("boxzoomend",{boxZoomBounds:e})}},_onKeyDown:function(t){27===t.keyCode&&this._finish()}});ii.addInitHook("addHandler","boxZoom",Go),ii.mergeOptions({doubleClickZoom:!0});var Xo=mi.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(t){var e=this._map,i=e.getZoom(),o=e.options.zoomDelta,n=t.originalEvent.shiftKey?i-o:i+o;"center"===e.options.doubleClickZoom?e.setZoom(n):e.setZoomAround(t.containerPoint,n)}});ii.addInitHook("addHandler","doubleClickZoom",Xo),ii.mergeOptions({dragging:!0,inertia:!st,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0});var Qo=mi.extend({addHooks:function(){if(!this._draggable){var t=this._map;this._draggable=new xi(t._mapPane,t._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),this._draggable.on("predrag",this._onPreDragLimit,this),t.options.worldCopyJump&&(this._draggable.on("predrag",this._onPreDragWrap,this),t.on("zoomend",this._onZoomEnd,this),t.whenReady(this._onZoomEnd,this))}ve(this._map._container,"leaflet-grab leaflet-touch-drag"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){be(this._map._container,"leaflet-grab"),be(this._map._container,"leaflet-touch-drag"),this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},moving:function(){return this._draggable&&this._draggable._moving},_onDragStart:function(){var t=this._map;if(t._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity){var e=F(this._map.options.maxBounds);this._offsetLimit=N(this._map.latLngToContainerPoint(e.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(e.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))}else this._offsetLimit=null;t.fire("movestart").fire("dragstart"),t.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(t){if(this._map.options.inertia){var e=this._lastTime=+new Date,i=this._lastPos=this._draggable._absPos||this._draggable._newPos;this._positions.push(i),this._times.push(e),this._prunePositions(e)}this._map.fire("move",t).fire("drag",t)},_prunePositions:function(t){for(;this._positions.length>1&&t-this._times[0]>50;)this._positions.shift(),this._times.shift()},_onZoomEnd:function(){var t=this._map.getSize().divideBy(2),e=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=e.subtract(t).x,this._worldWidth=this._map.getPixelWorldBounds().getSize().x},_viscousLimit:function(t,e){return t-(t-e)*this._viscosity},_onPreDragLimit:function(){if(this._viscosity&&this._offsetLimit){var t=this._draggable._newPos.subtract(this._draggable._startPos),e=this._offsetLimit;t.x<e.min.x&&(t.x=this._viscousLimit(t.x,e.min.x)),t.y<e.min.y&&(t.y=this._viscousLimit(t.y,e.min.y)),t.x>e.max.x&&(t.x=this._viscousLimit(t.x,e.max.x)),t.y>e.max.y&&(t.y=this._viscousLimit(t.y,e.max.y)),this._draggable._newPos=this._draggable._startPos.add(t)}},_onPreDragWrap:function(){var t=this._worldWidth,e=Math.round(t/2),i=this._initialWorldOffset,o=this._draggable._newPos.x,n=(o-e+i)%t+e-i,s=(o+e+i)%t-e-i,r=Math.abs(n+i)<Math.abs(s+i)?n:s;this._draggable._absPos=this._draggable._newPos.clone(),this._draggable._newPos.x=r},_onDragEnd:function(t){var e=this._map,i=e.options,o=!i.inertia||this._times.length<2;if(e.fire("dragend",t),o)e.fire("moveend");else{this._prunePositions(+new Date);var n=this._lastPos.subtract(this._positions[0]),s=(this._lastTime-this._times[0])/1e3,r=i.easeLinearity,a=n.multiplyBy(r/s),l=a.distanceTo([0,0]),d=Math.min(i.inertiaMaxSpeed,l),c=a.multiplyBy(d/l),h=d/(i.inertiaDeceleration*r),u=c.multiplyBy(-h/2).round();u.x||u.y?(u=e._limitOffset(u,e.options.maxBounds),A(function(){e.panBy(u,{duration:h,easeLinearity:r,noMoveStart:!0,animate:!0})})):e.fire("moveend")}}});ii.addInitHook("addHandler","dragging",Qo),ii.mergeOptions({keyboard:!0,keyboardPanDelta:80});var Jo=mi.extend({keyCodes:{left:[37],right:[39],down:[40],up:[38],zoomIn:[187,107,61,171],zoomOut:[189,109,54,173]},initialize:function(t){this._map=t,this._setPanDelta(t.options.keyboardPanDelta),this._setZoomDelta(t.options.zoomDelta)},addHooks:function(){var t=this._map._container;t.tabIndex<=0&&(t.tabIndex="0"),Le(t,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.on({focus:this._addHooks,blur:this._removeHooks},this)},removeHooks:function(){this._removeHooks(),Re(this._map._container,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.off({focus:this._addHooks,blur:this._removeHooks},this)},_onMouseDown:function(){if(!this._focused){var t=document.body,e=document.documentElement,i=t.scrollTop||e.scrollTop,o=t.scrollLeft||e.scrollLeft;this._map._container.focus(),window.scrollTo(o,i)}},_onFocus:function(){this._focused=!0,this._map.fire("focus")},_onBlur:function(){this._focused=!1,this._map.fire("blur")},_setPanDelta:function(t){var e,i,o=this._panKeys={},n=this.keyCodes;for(e=0,i=n.left.length;e<i;e++)o[n.left[e]]=[-1*t,0];for(e=0,i=n.right.length;e<i;e++)o[n.right[e]]=[t,0];for(e=0,i=n.down.length;e<i;e++)o[n.down[e]]=[0,t];for(e=0,i=n.up.length;e<i;e++)o[n.up[e]]=[0,-1*t]},_setZoomDelta:function(t){var e,i,o=this._zoomKeys={},n=this.keyCodes;for(e=0,i=n.zoomIn.length;e<i;e++)o[n.zoomIn[e]]=t;for(e=0,i=n.zoomOut.length;e<i;e++)o[n.zoomOut[e]]=-t},_addHooks:function(){Le(document,"keydown",this._onKeyDown,this)},_removeHooks:function(){Re(document,"keydown",this._onKeyDown,this)},_onKeyDown:function(t){if(!(t.altKey||t.ctrlKey||t.metaKey)){var e,i=t.keyCode,o=this._map;if(i in this._panKeys)o._panAnim&&o._panAnim._inProgress||(e=this._panKeys[i],t.shiftKey&&(e=P(e).multiplyBy(3)),o.panBy(e),o.options.maxBounds&&o.panInsideBounds(o.options.maxBounds));else if(i in this._zoomKeys)o.setZoom(o.getZoom()+(t.shiftKey?3:1)*this._zoomKeys[i]);else{if(27!==i||!o._popup||!o._popup.options.closeOnEscapeKey)return;o.closePopup()}He(t)}}});ii.addInitHook("addHandler","keyboard",Jo),ii.mergeOptions({scrollWheelZoom:!0,wheelDebounceTime:40,wheelPxPerZoomLevel:60});var tn=mi.extend({addHooks:function(){Le(this._map._container,"mousewheel",this._onWheelScroll,this),this._delta=0},removeHooks:function(){Re(this._map._container,"mousewheel",this._onWheelScroll,this)},_onWheelScroll:function(t){var e=Ze(t),i=this._map.options.wheelDebounceTime;this._delta+=e,this._lastMousePos=this._map.mouseEventToContainerPoint(t),this._startTime||(this._startTime=+new Date);var o=Math.max(i-(+new Date-this._startTime),0);clearTimeout(this._timer),this._timer=setTimeout(s(this._performZoom,this),o),He(t)},_performZoom:function(){var t=this._map,e=t.getZoom(),i=this._map.options.zoomSnap||0;t._stop();var o=this._delta/(4*this._map.options.wheelPxPerZoomLevel),n=4*Math.log(2/(1+Math.exp(-Math.abs(o))))/Math.LN2,s=i?Math.ceil(n/i)*i:n,r=t._limitZoom(e+(this._delta>0?s:-s))-e;this._delta=0,this._startTime=null,r&&("center"===t.options.scrollWheelZoom?t.setZoom(e+r):t.setZoomAround(this._lastMousePos,e+r))}});ii.addInitHook("addHandler","scrollWheelZoom",tn),ii.mergeOptions({tap:!0,tapTolerance:15});var en=mi.extend({addHooks:function(){Le(this._map._container,"touchstart",this._onDown,this)},removeHooks:function(){Re(this._map._container,"touchstart",this._onDown,this)},_onDown:function(t){if(t.touches){if(je(t),this._fireClick=!0,t.touches.length>1)return this._fireClick=!1,void clearTimeout(this._holdTimeout);var e=t.touches[0],i=e.target;this._startPos=this._newPos=new I(e.clientX,e.clientY),i.tagName&&"a"===i.tagName.toLowerCase()&&ve(i,"leaflet-active"),this._holdTimeout=setTimeout(s(function(){this._isTapValid()&&(this._fireClick=!1,this._onUp(),this._simulateEvent("contextmenu",e))},this),1e3),this._simulateEvent("mousedown",e),Le(document,{touchmove:this._onMove,touchend:this._onUp},this)}},_onUp:function(t){if(clearTimeout(this._holdTimeout),Re(document,{touchmove:this._onMove,touchend:this._onUp},this),this._fireClick&&t&&t.changedTouches){var e=t.changedTouches[0],i=e.target;i&&i.tagName&&"a"===i.tagName.toLowerCase()&&be(i,"leaflet-active"),this._simulateEvent("mouseup",e),this._isTapValid()&&this._simulateEvent("click",e)}},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_onMove:function(t){var e=t.touches[0];this._newPos=new I(e.clientX,e.clientY),this._simulateEvent("mousemove",e)},_simulateEvent:function(t,e){var i=document.createEvent("MouseEvents");i._simulated=!0,e.target._simulatedClick=!0,i.initMouseEvent(t,!0,!0,window,1,e.screenX,e.screenY,e.clientX,e.clientY,!1,!1,!1,!1,0,null),e.target.dispatchEvent(i)}});Ct&&!kt&&ii.addInitHook("addHandler","tap",en),ii.mergeOptions({touchZoom:Ct&&!st,bounceAtZoomLimits:!0});var on=mi.extend({addHooks:function(){ve(this._map._container,"leaflet-touch-zoom"),Le(this._map._container,"touchstart",this._onTouchStart,this)},removeHooks:function(){be(this._map._container,"leaflet-touch-zoom"),Re(this._map._container,"touchstart",this._onTouchStart,this)},_onTouchStart:function(t){var e=this._map;if(t.touches&&2===t.touches.length&&!e._animatingZoom&&!this._zooming){var i=e.mouseEventToContainerPoint(t.touches[0]),o=e.mouseEventToContainerPoint(t.touches[1]);this._centerPoint=e.getSize()._divideBy(2),this._startLatLng=e.containerPointToLatLng(this._centerPoint),"center"!==e.options.touchZoom&&(this._pinchStartLatLng=e.containerPointToLatLng(i.add(o)._divideBy(2))),this._startDist=i.distanceTo(o),this._startZoom=e.getZoom(),this._moved=!1,this._zooming=!0,e._stop(),Le(document,"touchmove",this._onTouchMove,this),Le(document,"touchend",this._onTouchEnd,this),je(t)}},_onTouchMove:function(t){if(t.touches&&2===t.touches.length&&this._zooming){var e=this._map,i=e.mouseEventToContainerPoint(t.touches[0]),o=e.mouseEventToContainerPoint(t.touches[1]),n=i.distanceTo(o)/this._startDist;if(this._zoom=e.getScaleZoom(n,this._startZoom),!e.options.bounceAtZoomLimits&&(this._zoom<e.getMinZoom()&&n<1||this._zoom>e.getMaxZoom()&&n>1)&&(this._zoom=e._limitZoom(this._zoom)),"center"===e.options.touchZoom){if(this._center=this._startLatLng,1===n)return}else{var r=i._add(o)._divideBy(2)._subtract(this._centerPoint);if(1===n&&0===r.x&&0===r.y)return;this._center=e.unproject(e.project(this._pinchStartLatLng,this._zoom).subtract(r),this._zoom)}this._moved||(e._moveStart(!0,!1),this._moved=!0),$(this._animRequest);var a=s(e._move,e,this._center,this._zoom,{pinch:!0,round:!1});this._animRequest=A(a,this,!0),je(t)}},_onTouchEnd:function(){this._moved&&this._zooming?(this._zooming=!1,$(this._animRequest),Re(document,"touchmove",this._onTouchMove),Re(document,"touchend",this._onTouchEnd),this._map.options.zoomAnimation?this._map._animateZoom(this._center,this._map._limitZoom(this._zoom),!0,this._map.options.zoomSnap):this._map._resetView(this._center,this._map._limitZoom(this._zoom))):this._zooming=!1}});ii.addInitHook("addHandler","touchZoom",on),ii.BoxZoom=Go,ii.DoubleClickZoom=Xo,ii.Drag=Qo,ii.Keyboard=Jo,ii.ScrollWheelZoom=tn,ii.Tap=en,ii.TouchZoom=on,Object.freeze=i,t.version=e,t.Control=ni,t.control=si,t.Browser=zt,t.Evented=z,t.Mixin=fi,t.Util=E,t.Class=T,t.Handler=mi,t.extend=o,t.bind=s,t.stamp=a,t.setOptions=m,t.DomEvent=ti,t.DomUtil=Oe,t.PosAnimation=ei,t.Draggable=xi,t.LineUtil=Oi,t.PolyUtil=Pi,t.Point=I,t.point=P,t.Bounds=R,t.bounds=N,t.Transformation=Z,t.transformation=Y,t.Projection=Bi,t.LatLng=q,t.latLng=U,t.LatLngBounds=B,t.latLngBounds=F,t.CRS=j,t.GeoJSON=co,t.geoJSON=yo,t.geoJson=xo,t.Layer=ji,t.LayerGroup=Hi,t.layerGroup=Wi,t.FeatureGroup=Vi,t.featureGroup=Zi,t.ImageOverlay=wo,t.imageOverlay=_o,t.VideoOverlay=ko,t.videoOverlay=Co,t.SVGOverlay=So,t.svgOverlay=Ao,t.DivOverlay=$o,t.Popup=Eo,t.popup=To,t.Tooltip=Do,t.tooltip=Mo,t.Icon=Yi,t.icon=Ki,t.DivIcon=zo,t.divIcon=Io,t.Marker=Qi,t.marker=Ji,t.TileLayer=Po,t.tileLayer=Ro,t.GridLayer=Oo,t.gridLayer=Lo,t.SVG=Vo,t.svg=Zo,t.Renderer=Fo,t.Canvas=qo,t.canvas=Uo,t.Path=to,t.CircleMarker=eo,t.circleMarker=io,t.Circle=oo,t.circle=no,t.Polyline=so,t.polyline=ro,t.Polygon=ao,t.polygon=lo,t.Rectangle=Yo,t.rectangle=Ko,t.Map=ii,t.map=oi;var nn=window.L;t.noConflict=function(){return window.L=nn,this},window.L=t}(xC.exports)),xC.exports);const _C={weight:1,opacity:1,color:"white",fillOpacity:.7,fillColor:"#2387ca"},kC={weight:3,color:"white",fillOpacity:1,fillColor:"#2387ca"},CC=()=>_C;class SC extends dt{static get styles(){return a`
|
|
16411
16413
|
:host {
|
|
16412
16414
|
display: block;
|
|
16413
16415
|
padding: 0px;
|
|
@@ -16442,11 +16444,11 @@ function(t){return(e,i,o)=>((t,e,i)=>(i.configurable=!0,i.enumerable=!0,Reflect.
|
|
|
16442
16444
|
color: var(--color-link-primary);
|
|
16443
16445
|
cursor: pointer;
|
|
16444
16446
|
}
|
|
16445
|
-
`}constructor(){super(),this.osmId="",this.endpoint="",this.hovered=null,this.path=[],this.renderedMap=null,this.states=null,this.paths={},this.lastHovered=null}getRenderRoot(){return this.renderRoot}getEndpoint(){return this.endpoint+(this.endpoint.endsWith("/")?"":"/")}refreshMap(){const t=(t,e)=>{this.paths[t.properties.osm_id]=e,e.on({click:t=>{const e=t.target.feature.properties;if(e.osm_id!==this.path[this.path.length-1].osm_id){const i=t.originalEvent;i.stopPropagation(),i.preventDefault(),this.onFeatureClicked&&this.onFeatureClicked(e),this.hovered=null,this.path.push(e),this.osmId=e.osm_id,this.refreshMap()}},mouseover:t=>{const e=t.target.feature.properties;e.osm_id!==this.path[this.path.length-1].osm_id&&(t.target.setStyle(
|
|
16447
|
+
`}constructor(){super(),this.osmId="",this.endpoint="",this.hovered=null,this.path=[],this.renderedMap=null,this.states=null,this.paths={},this.lastHovered=null}getRenderRoot(){return this.renderRoot}getEndpoint(){return this.endpoint+(this.endpoint.endsWith("/")?"":"/")}refreshMap(){const t=(t,e)=>{this.paths[t.properties.osm_id]=e,e.on({click:t=>{const e=t.target.feature.properties;if(e.osm_id!==this.path[this.path.length-1].osm_id){const i=t.originalEvent;i.stopPropagation(),i.preventDefault(),this.onFeatureClicked&&this.onFeatureClicked(e),this.hovered=null,this.path.push(e),this.osmId=e.osm_id,this.refreshMap()}},mouseover:t=>{const e=t.target.feature.properties;e.osm_id!==this.path[this.path.length-1].osm_id&&(t.target.setStyle(kC),this.hovered=e)},mouseout:t=>{t.target.setStyle(_C),this.hovered=null}})};pe(this.getEndpoint()+"geometry/"+this.osmId+"/").then(e=>{this.states&&this.renderedMap.removeLayer(this.states);const i=e.json;0===this.path.length&&(this.path=[{name:i.name,osm_id:this.osmId,level:0}]),this.states=wC.geoJSON(i.geometry,{style:CC,onEachFeature:t}),this.renderedMap.fitBounds(this.states.getBounds(),{}),this.states.addTo(this.renderedMap)})}updated(t){if(t.has("hovered")&&(this.lastHovered&&this.lastHovered.setStyle(_C),this.hovered)){const t=this.paths[this.hovered.osm_id];this.lastHovered=t,t&&t.setStyle(kC)}if(t.has("feature")&&this.feature&&(this.hovered=null,0!==this.path.length&&this.path[this.path.length-1].osm_id===this.feature.osm_id||this.path.push(this.feature)),t.has("osmId")){const t=[];for(const e of this.path)if(t.push(e),e.osm_id===this.osmId){this.onFeatureClicked&&this.onFeatureClicked(e);break}this.path=t,this.refreshMap()}}firstUpdated(t){const e=this.getRenderRoot().getElementById("alias-map");this.renderedMap=wC.map(e,{attributionControl:!1,scrollWheelZoom:!1,zoomControl:!1}).setView([0,1],4),this.renderedMap.dragging.disable(),this.renderedMap.doubleClickZoom.disable(),this.refreshMap(),super.firstUpdated(t)}handleClickedBreadcrumb(t){this.osmId=t.currentTarget.getAttribute("data-osmid");const e=[];for(const t of this.path)if(e.push(t),t.osm_id===this.osmId){this.onFeatureClicked&&this.onFeatureClicked(t);break}this.path=e,this.refreshMap()}render(){return this.osmId?W`
|
|
16446
16448
|
<link
|
|
16447
16449
|
rel="stylesheet"
|
|
16448
16450
|
href="https://unpkg.com/leaflet@1.5.1/dist/leaflet.css"
|
|
16449
16451
|
/>
|
|
16450
16452
|
<div id="alias-map"></div>
|
|
16451
|
-
`:W`<div>No osm map id</div>`}}t([mt()],
|
|
16453
|
+
`:W`<div>No osm map id</div>`}}t([mt()],SC.prototype,"feature",void 0),t([mt()],SC.prototype,"osmId",void 0),t([mt()],SC.prototype,"endpoint",void 0),t([mt()],SC.prototype,"onFeatureClicked",void 0),t([mt()],SC.prototype,"hovered",void 0),t([mt()],SC.prototype,"path",void 0),vC("leaflet-map",SC),vC("alias-editor",bC)}();
|
|
16452
16454
|
//# sourceMappingURL=temba-components.js.map
|